octave-app / octave-app

The Octave.app distribution
https://octave-app.org
170 stars 14 forks source link

octproj 1.1.5 build fails under 4.4.1-u1: can't find proj library #163

Open apjanke opened 4 years ago

apjanke commented 4 years ago
>> pkg install -forge octproj
In file included from projwrap.c:19:
./projwrap.h:26:9: fatal error: 'proj_api.h' file not found
#include<proj_api.h>
        ^~~~~~~~~~~~
1 error generated.
make: *** [compile] Error 1
mkoctfile -c projwrap.c -o projwrap.o

pkg: error running `make' for the octproj package.
error: called from
    configure_make at line 99 column 9
    install at line 184 column 7
    pkg at line 437 column 9
>>

Basic problem here is that it needs the proj 5.x library. That's not bundled in Octave.app, and we don't currently supply an easy standard way for pulling in the libraries from a "system" Homebrew or MacPorts installation.

References

Relates to the whole issue of how to make Homebrew tools and libraries readily available in Octave.app for use in building native extensions etc., as discussed in these issues.

apjanke commented 4 years ago

This needed the proj system package installed.

Once I did that, installing proj 6.3.0, I'm getting a different build failure:

>> pkg install -forge octproj
In file included from projwrap.c:19:
In file included from ./projwrap.h:26:
/usr/local/include/proj_api.h:37:2: error: 'To use the proj_api.h you must define the macro ACCEPT_USE_OF_DEPRECATED_PROJ_API_H'
#error 'To use the proj_api.h you must define the macro ACCEPT_USE_OF_DEPRECATED_PROJ_API_H'
 ^
1 error generated.
make: *** [compile] Error 1
mkoctfile -c projwrap.c -o projwrap.o

pkg: error running `make' for the octproj package.
error: called from
    configure_make at line 99 column 9
    install at line 184 column 7
    pkg at line 437 column 9
>>
apjanke commented 4 years ago

Known issue: octproj only supports Proj 5.x, and Homebrew is now shipping Proj 6.x. Already reported upstream: https://savannah.gnu.org/bugs/index.php?56039

apjanke commented 4 years ago

I added a proj@5 formula, but that probably still needs some work, since it is keg-only, and octproj won't know how to find that. https://github.com/octave-app/homebrew-octave-app/commit/9585d018c601b7951dc09d349638dfbcef6baa5e

apjanke commented 1 month ago

I dropped the proj@5 dependency in Octave.app, because it's just too big.

Or so I thought. I looked at it again today, and it's only 11 MB. So maybe it's fine to put it back in and try this after all.

[Cellar] $ pwd
/usr/local/Cellar
[Cellar] $ du -sh proj@5
 11M    proj@5
[Cellar] $

For the time being, users can install proj@5 into their regular Homebrew, and figure out how to get it on their path for pkg install octproj to use.

UPDATE: This wasn't quite right. The unversioned proj dependency was really big, but proj@5 is relatively small. I had changed the dependency to regular proj, and then removed that because it was too big. So now Octave.app, since 8.x, are not shipping any proj package.

[Formula] $ pwd
/Users/janke/repos/homebrew-octave-app/Formula
[Formula] $ grep -rn proj@ *
octave-octapp@4.4.1.rb:71:  depends_on "proj@5"   # octproj package
octave-octapp@5.1.0.rb:75:  depends_on "proj@5"   # octproj package
octave-octapp@5.2.0.rb:75:  depends_on "proj@5"   # for octproj OF package
octave-octapp@6.1.0.rb:76:  depends_on "proj@5"   # for octproj OF package
octave-octapp@6.2.0.rb:77:  depends_on "proj@5"   # octproj OF package
octave-octapp@6.3.0.rb:77:  depends_on "proj@5"   # octproj OF package
octave-octapp@6.4.0.rb:75:  depends_on "proj@5"   # octproj OF package
proj@5.rb:6:# a proj@7 versioned formula, but no proj@5. But it also looks like octproj now works with
proj@5.rb:7:# the current proj versions, so this proj@5 formula is not used for Octave.app versions as
[Formula] $

TODO