Including the updated patches and ebuild for asymptote-1.33 for testing Reproducible: Always
Created attachment 127787 [details] asymptote-1.33 ebuild
Created attachment 127789 [details] configure.ac patch
Created attachment 127791 [details] makefile patch This required a manual merge from the 1.29 version
Thanks for updating the patches. However if I try to emerge with this ebuild, I get the following error during the configure-run: checking gc.h presence... no checking for gc.h... no configure: error: Boehm Garbage Collector header file not found !!! Please attach the following file when filing a report to bugs.gentoo.org: !!! /var/tmp/portage/media-gfx/asymptote-1.33/work/asymptote-1.33/config.log It seems that boehm-gc has changed the location of the header-files, as gc.h is now in a sub-directory: $ equery f boehm-gc [ Searching for packages matching boehm-gc... ] * Contents of dev-libs/boehm-gc-7.0: ... /usr/include/gc/ec.h I need to check how the configure-scripts need to be adjusted to compile with the boehm-gc flag enabled, any suggestions what changed since 1.29? There I could emerge asymptote without problem.
sorry, wrong statement about location of gc.h, I have no information if this changed or not! Furthermore here is the excerpt from config.log: configure:4872: checking gc.h usability configure:4889: i686-pc-linux-gnu-g++ -c -march=i686 -O3 -pipe -fomit-frame-pointer -DHAVE_SYS_TYPES _H conftest.cpp >&5 conftest.cpp:54:16: error: gc.h: No such file or directory so it seems it does not set the include-path for some reason. I'm not an autotools specialist to see why this fails now.
Sorry, I forgot to try compiling with that option enabled. I can get asymptote to compile with the boehm-gc if I edit the configure file to use <gc/gc.h> instead of <gc.h> when it does the tests for whether gc.h is available and asymptote seems to work after that for its general duties compiling asy files. This may be an upstream bug. I will look at the same place later today hopefully in the 1.29 code to see what it does differently and get back to you.
I have the same problem with the 1.29 release. I tried and downgraded boehm-gc to release 6.8 and found, that the 6.8 release installed a /usr/include/gc.h file beside the /usr/include/gc/gc.h file. The two files don't differ. The /usr/include/gc.h file though is no longer installed with the 7.0 release of boehm-gc.
asymptote-1.29 no longer compiles (some time ago it compiled OK). The reason is the same - Boehm gc is not found. I don't know what exactly changed - gc.h is now in /usr/include/gc, was it in /usr/include in earlier versions of libgc? Or maybe autoconf version changed. I investigated what configure is doing. The line which fails is $CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5 where (in my case) $CXX = g++ $CXXFLAGS = -g -O2 $CPPFLAGS = -DHAVE_SYS_TYPES_H $ac_ext = cpp A little earlier, configure defines $INCL = /usr/include/gc but it is not used when running the test. The corresponding statement in configure.ac is AC_CHECK_LIB([gc],[GC_malloc],[...],[...]) It does not mention $INCL. I am not an autoconf expert; is $INCL a magic name which is taken into account by AC_CHECK_LIB automatically? Or it should be explicitly mentioned in the AC_CHECK_LIB invocation somehow? In any case, no version of asymptote is compilable now (I also tried asymptote-1.33 and updated the patches, as done in the current bug; probably, my version and the version here are identical).
(In reply to comment #8) > asymptote-1.29 no longer compiles (some time ago it compiled OK). The reason is > the same - Boehm gc is not found. I don't know what exactly changed - gc.h is > now in /usr/include/gc, was it in /usr/include in earlier versions of libgc? I think this is the most likely case. > A little earlier, configure defines > $INCL = /usr/include/gc > but it is not used when running the test. The corresponding statement in > configure.ac is > AC_CHECK_LIB([gc],[GC_malloc],[...],[...]) > It does not mention $INCL. I am not an autoconf expert; is $INCL a magic name > which is taken into account by AC_CHECK_LIB automatically? Or it should be > explicitly mentioned in the AC_CHECK_LIB invocation somehow? AC_CHECK_LIB doesn't really need to, it checks /usr/lib/libgc.so for the symbol GC_malloc. It doesn't need to know where the header file for that symbol is located, that is what the encapsulating AC_CHECK_HEADER command does. INCL is used later on "AC_SUBST(INCL)" which includes it on the compile command as "-I/usr/include/gc" > In any case, no version of asymptote is compilable now (I also tried > asymptote-1.33 and updated the patches, as done in the current bug; probably, > my version and the version here are identical). > The only solution I see is patching the line which says AC_CHECK_HEADER([gc.h], to say AC_CHECK_HEADER([gc/gc.h], This doesn't seem like a big hack to me, especially as it seems the upstream developers favour the method which has the boehm gc source tar ball to work with in order to get a static garbage collector as opposed to a dynamic one. It would be worth however mentioning the issue to them I think if boehm-gc have changed their method, as opposed to just Gentoo developers favouring the gc/gc.h method which we should cope with ourselves.
Created attachment 128497 [details, diff] Updated patch to fix boehm-gc header file not found error
Created attachment 128499 [details, diff] Updated patch to fix boehm-gc header file not found error Slight change to avoid a bad documentation path, which is supposed to be patched by the ebuild
I have now added 1.33 with the patches from this bug. I also set 1.29 to "<boehm-gc-7.0" to force it to use the older version of boehm-gc. All other versions are obsolete and will be removed soon as there are newer ones with same KEYWORDs. Please give it a try and reopen this ticket or report new ones if something does not work for you.