To build autogen-5.8.8, guile has to be compiled with deprecated (+discouraged or guile don't compile) and result in a segfault of autogen during build: make[4]: Entering directory `/var/tmp/portage/sys-devel/autogen-5.8.8/work/autogen-5.8.8/getdefs' top_builddir=.. top_srcdir=.. PATH=`cd ../columns >/dev/null && pwd`:$PATH ; export top_builddir top_srcdir PATH ; /var/tmp/portage/sys-devel/autogen-5.8.8/work/autogen-5.8.8/agen5/autogen -L../autoopts ./opts.def AutoGen aborting on signal 11 (Segmentation fault) in state DONE processing template > on line 312 for function Text (17) /bin/sh: line 1: 32658 Aborted /var/tmp/portage/sys-devel/autogen-5.8.8/work/autogen-5.8.8/agen5/autogen -L../autoopts ./opts.def make[4]: *** [opts.h] Error 134 Btw, this is working with guile-1.8.1 (with borked econfigure) Reproducible: Always Steps to Reproduce: 1. emerge guile with +deprecated and +discouraged 2. emerge autogen 3. profit! Actual Results: AutoGen aborting on signal 11 (Segmentation fault) in state DONE Expected Results: Autogen merged
Created attachment 108319 [details, diff] Patch to guile ebuild This patch allowed me to compile guile and autogen without segfault
btw, some version (after patched guile emerge): # emerge guile autogen -pv These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild R ] dev-scheme/guile-1.8.1-r2 USE="deprecated discouraged nls -debug -debug-freelist -debug-malloc -elisp -networking -regex -threads" 0 kB [1] [ebuild R ] sys-devel/autogen-5.8.8 0 kB Total: 2 packages (2 reinstalls), Size of downloads: 0 kB Portage overlays: [1] /usr/local/portage
so autogen needs to make sure guile is built with USE="discouraged deprecated -threads" ?
*** Bug 164206 has been marked as a duplicate of this bug. ***
I forgot a '\' in guile-1.8.1 ebuild causing almost all econf options to be ignored. This caused (among others) deprecated, discouraged and threads to be on regardless of use flags. Pierre's patch is wrong. The config option is "--with-threads". By effectively removing it, threads are built by default regardless of use flag.
Thx to point out, didn't look that far: so it means guile without thread don't work well since autogen will segfault (and possibly others) side note: typo in autogen-5.8.8 --> dec-scheme instead if dev-scheme !!! ERROR: sys-devel/autogen-5.8.8 failed. Call stack: ebuild.sh, line 1627: Called dyn_setup ebuild.sh, line 699: Called qa_call 'pkg_setup' ebuild.sh, line 38: Called pkg_setup autogen-5.8.8.ebuild, line 21: Called built_with_use '--missing' 'false' 'dec-scheme/guile' 'deprecated' eutils.eclass, line 1647: Called die
the typo was fixed sometime ago so what is the combination autogen needs ? USE="deprecated discouraged threads" ?
discouraged is now implied by deprecated, see bug 164206.
Just tested -r1: correct flags should be "+deprecated +threads" and it works fine Just I have some doubt for other packages: This will work for autogen but I don't have a clue for other package using a -thread guile: They may start to segfault as well
No matter if I set deprecated and/or threads or nothinh as extra USE flag, guile-1.8.1-r1 won't compile right. rm -f .libs/guileS.c .libs/guile.nm .libs/guile.nmS .libs/guile.nmT x86_64-pc-linux-gnu-gcc -march=athlon64 -O2 -pipe -msse3 -Wall -Wmissing-prototypes -o .libs/guile .libs/guileS.o guile-guile.o -Wl,--export-dynamic ./.libs/libguile.so /usr/lib64/libgmp.so -lcrypt -lm /usr/lib64/libltdl.so ./.libs/libguile.so: undefined reference to `scm_keyword_dash_symbol' ./.libs/libguile.so: undefined reference to `SCM_SYMBOLP' collect2: ld returned 1 exit status make[3]: *** [guile] Error 1 make[3]: Leaving directory `/var/tmp/portage/dev-scheme/guile-1.8.1-r1/work/guile-1.8.1/libguile' make[2]: *** [all] Error 2 make[2]: Leaving directory `/var/tmp/portage/dev-scheme/guile-1.8.1-r1/work/guile-1.8.1/libguile' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/var/tmp/portage/dev-scheme/guile-1.8.1-r1/work/guile-1.8.1' make: *** [all] Error 2
Just to be sure, did you also set +discouraged (Looks like the change didn't hit your ebuild) since if found these def's in discouraged and deprecated files: guile-1.8.1 $ find . -iname \*.[ch] | xargs grep -H SCM_SYMBOLP ./libguile/discouraged.h:#define SCM_SYMBOLP scm_is_symbol ./libguile/deprecated.c: if (SCM_SYMBOLP (obj)) ./libguile/deprecated.c: if (SCM_SYMBOLP (obj)) ./libguile/deprecated.h:#define SCM_XEVALCAR(x, env) (SCM_SYMBOLP (SCM_CAR (x)) and guile-1.8.1 $ find . -iname \*.[ch] | xargs grep -H scm_keyword_dash_symbol ./libguile/discouraged.c:SCM_DEFINE (scm_keyword_dash_symbol, "keyword-dash-symbol", 1, 0, 0, ./libguile/discouraged.c:#define FUNC_NAME s_scm_keyword_dash_symbol ./libguile/discouraged.h:SCM_API SCM scm_keyword_dash_symbol (SCM keyword); ./libguile/deprecated.c: return scm_keyword_dash_symbol (keyword);
It indeed seems that change didn't hit my ebuild yet. Adding discouraged solved the problem. Thanks :)
autogen ebuild now checks those flags as well