When dev-libs/boehm-gc is installed with USE=-threads, dev-scheme/guile-1.9.12 fails to build with the following error message: CCLD guile ./.libs/libguile-2.0.so: undefined reference to `GC_pthread_create' ./.libs/libguile-2.0.so: undefined reference to `GC_pthread_sigmask' ./.libs/libguile-2.0.so: undefined reference to `GC_pthread_detach' collect2: ld returned 1 exit status make[3]: *** [guile] Error 1 make[3]: Leaving directory `/mnt/spare/portage-tmp/portage/dev-scheme/guile-1.9.12/work/guile-1.9.12/libguile' make[2]: *** [all] Error 2 make[2]: Leaving directory `/mnt/spare/portage-tmp/portage/dev-scheme/guile-1.9.12/work/guile-1.9.12/libguile' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/mnt/spare/portage-tmp/portage/dev-scheme/guile-1.9.12/work/guile-1.9.12' make: *** [all] Error 2 emake failed I have found on the internet, that the cause for the error is that the boehm-gc was not configured with thread support. Viz this conversation transcript here: http://rotty.yi.org/irclogs/freenode/%23guile/2010-09-08/ or this message here http://osdir.com/ml/guile-devel-gnu/2009-09/msg00148.html My suggestion is to add dev-libs/boehm-gc to dev-scheme/guile dependencies in a manner, that captures this dependency: DEPEND="... dev-libs/boehm-gc[threads?]" Reproducible: Always Steps to Reproduce: 1. USE=-threads emerge dev-libs/boehm-gc 2. USE=threads emerge =dev-scheme/guile-1.9.12 Actual Results: guile fails to build Expected Results: guile builds successfully OR guile complains that dev-scheme/guile[threads] is incompatible with dev-libs/boehm-gc[-threads] Portage 2.1.9.24 (default/linux/amd64/10.0/desktop, gcc-4.4.4, glibc-2.11.2-r3, 2.6.33-gentoo x86_64) ================================================================= System Settings ================================================================= System uname: Linux-2.6.33-gentoo-x86_64-Intel-R-_Core-TM-2_Duo_CPU_T5450_@_1.66GHz-with-gentoo-1.12.14 Timestamp of tree: Sat, 18 Dec 2010 09:45:03 +0000 ccache version 2.4 [disabled] app-shells/bash: 4.1_p7 dev-java/java-config: 1.3.7-r1, 2.1.11-r1 dev-lang/python: 2.4.6, 2.5.4-r3, 2.6.5-r3, 3.1.2-r4 dev-util/ccache: 2.4-r7 dev-util/cmake: 2.8.1-r2 sys-apps/baselayout: 1.12.14-r1 sys-apps/sandbox: 2.3-r1 sys-devel/autoconf: 2.13, 2.65-r1 sys-devel/automake: 1.5, 1.7.9-r1, 1.8.5-r3, 1.9.6-r3, 1.10.3, 1.11.1 sys-devel/binutils: 2.20.1-r1 sys-devel/gcc: 3.4.6-r2, 4.1.2, 4.3.4, 4.4.4-r2 sys-devel/gcc-config: 1.4.1 sys-devel/libtool: 2.2.10 sys-devel/make: 3.81-r2 virtual/os-headers: 2.6.30-r1 (sys-kernel/linux-headers) ACCEPT_KEYWORDS="amd64" ACCEPT_LICENSE="* -@EULA dlj-1.1 sun-bcla-java-vm AdobeFlash-10.1" CBUILD="x86_64-pc-linux-gnu" CFLAGS="-march=nocona -O2 -pipe" CHOST="x86_64-pc-linux-gnu" CONFIG_PROTECT="/etc /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/share/config /var/lib/hsqldb" CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/ /etc/eselect/postgresql /etc/fonts/fonts.conf /etc/gconf /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c" CXXFLAGS="-march=nocona -O2 -pipe" DISTDIR="/usr/portage/distfiles" FEATURES="assume-digests binpkg-logs distlocks fixlafiles fixpackages metadata-transfer news parallel-fetch protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox" GENTOO_MIRRORS="http://127.0.0.1:8080/ http://ftp.fi.muni.cz/pub/linux/gentoo/ http://gentoo.supp.name/ http://gentoo.mirror.web4u.cz/ http://distfiles.gentoo.org http://www.ibiblio.org/pub/Linux/distributions/gentoo" LDFLAGS="-Wl,-O1 -Wl,--as-needed" LINGUAS="en cs" MAKEOPTS="-j2" PKGDIR="/usr/portage/packages" PORTAGE_CONFIGROOT="/" PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages" PORTAGE_TMPDIR="/mnt/spare/portage-tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/usr/portage/local/layman/lisp /usr/portage/local/layman/x11 /usr/portage/local/layman/java-overlay /usr/portage/local/layman/kde-sunset /usr/portage/local/layman/sunrise /usr/portage/local/layman/science /usr/local/portage" SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage" USE="X a52 aac acl acpi alsa amd64 berkdb branding bzip2 cairo cdr cli consolekit cracklib crypt cups cxx dbus djvu dri dts dvd dvdr emboss encode exif fam firefox flac fortran gdbm gif gpm gtk hyperspec iconv ipv6 java jpeg jpeg2k kde lcms ldap libnotify mad mikmod mmx mng modules mp3 mp4 mpeg mudflap multilib ncurses nls nptl nptlonly nsplugin ogg opengl openmp pam pango pcre pdf perl png ppds pppd python qt3support qt4 readline sdl session spell sse sse2 ssl startup-notification svg sysfs tcpd theora tiff truetype unicode usb vorbis x264 xcb xml xorg xulrunner xv xvid zlib" ALSA_CARDS="hda-intel" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CAMERAS="canon" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ubx" INPUT_DEVICES="keyboard mouse synaptics evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="en cs" PHP_TARGETS="php5-2" RUBY_TARGETS="ruby18" USERLAND="GNU" VIDEO_CARDS="i810 vesa intel" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account" Unset: CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, LANG, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
I've masked by keywords the guile ebuilds in the lisp overlay cause they 're not well tested yet. The lisp overlay is considered experimental so users are advised to use it with caution. Thank you for your report. I will test your case sometime in the near future.
I have tried adding dev-libs/boehm-gc threads into /etc/portage/package.use. Now dev-scheme/guile-1.9.12 emerges correctly and seems to work normally. I will probably try emerging dev-scheme/guile-1.9.12 with USE=-threads in a few days as time permits.
I've tried building =boehm-gc-7.2_alpha4-r1 without threads. With threads, =guile-1.9.14 fails with errors mentioned by bug reporter. Without threads, =guile-1.9.14 fails with this error: SNARF net_db.doc SNARF socket.doc SNARF regex-posix.doc CCLD libguile-2.0.la CCLD guile GEN guile-procedures.texi 0x80cff50 is not a GC visible pointer location GC_is_visible test failed /bin/sh: line 1: 23323 Broken pipe cat alist.doc arbiters.doc array-handle.doc array-map.doc arrays.doc async.doc backtrace.doc boolean.doc bitvectors.doc bytevectors.doc chars.doc control.doc continuations.doc debug.doc deprecated.doc deprecation.doc dynl.doc dynwind.doc eq.doc error.doc eval.doc evalext.doc expand.doc extensions.doc feature.doc fluids.doc foreign.doc fports.doc gc-malloc.doc gc.doc gettext.doc generalized-arrays.doc generalized-vectors.doc goops.doc gsubr.doc guardians.doc hash.doc hashtab.doc hooks.doc i18n.doc init.doc ioext.doc keywords.doc list.doc load.doc macros.doc mallocs.doc memoize.doc modules.doc numbers.doc objprop.doc options.doc pairs.doc ports.doc print.doc procprop.doc procs.doc promises.doc properties.doc r6rs-ports.doc random.doc rdelim.doc read.doc root.doc rw.doc scmsigs.doc script.doc simpos.doc smob.doc sort.doc srcprop.doc srfi-1.doc srfi-4.doc srfi-13.doc srfi-14.doc srfi-60.doc stackchk.doc stacks.doc stime.doc strings.doc strorder.doc strports.doc struct.doc symbols.doc threads.doc throw.doc trees.doc uniform.doc values.doc variable.doc vectors.doc version.doc vports.doc weaks.doc dynl.doc filesys.doc posix.doc net_db.doc socket.doc regex-posix.doc 23324 Aborted | GUILE_AUTO_COMPILE=0 ../meta/uninstalled-env guile-tools snarf-check-and-output-texi > guile-procedures.texi make[3]: *** [guile-procedures.texi] Error 1 make[3]: Leaving directory `/var/tmp/portage/dev-scheme/guile-1.9.14/work/guile-1.9.14/libguile' make[2]: *** [all] Error 2 make[2]: Leaving directory `/var/tmp/portage/dev-scheme/guile-1.9.14/work/guile-1.9.14/libguile' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/var/tmp/portage/dev-scheme/guile-1.9.14/work/guile-1.9.14' make: *** [all] Ошибка 2 emake failed This behaviour persists with guile-2.0.0. When libgc is built w/o threads, guile-2.0 fails to build both with and without threads with the same error: SNARF socket.doc SNARF regex-posix.doc CCLD libguile-2.0.la CCLD guile ./.libs/libguile-2.0.so: undefined reference to `scm_stat' ./.libs/libguile-2.0.so: undefined reference to `scm_i_locale_mutex' ./.libs/libguile-2.0.so: undefined reference to `scm_ttyname' ./.libs/libguile-2.0.so: undefined reference to `scm_canonicalize_path' ./.libs/libguile-2.0.so: undefined reference to `scm_i_relativize_path' collect2: ld returned 1 exit status make[3]: *** [guile] Error 1 make[3]: Leaving directory `/var/tmp/portage/dev-scheme/guile-2.0.0/work/guile-2.0.0/libguile' make[2]: *** [all] Error 2 make[2]: Leaving directory `/var/tmp/portage/dev-scheme/guile-2.0.0/work/guile-2.0.0/libguile' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/var/tmp/portage/dev-scheme/guile-2.0.0/work/guile-2.0.0' make: *** [all] Ошибка 2 emake failed Long story short, I think that `>=dev-libs/boehm-gc-7.0[threads]` in DEPEND is our way.
(In reply to comment #3) > SNARF socket.doc > SNARF regex-posix.doc > CCLD libguile-2.0.la > CCLD guile > ./.libs/libguile-2.0.so: undefined reference to `scm_stat' > ./.libs/libguile-2.0.so: undefined reference to `scm_i_locale_mutex' > ./.libs/libguile-2.0.so: undefined reference to `scm_ttyname' > ./.libs/libguile-2.0.so: undefined reference to `scm_canonicalize_path' > ./.libs/libguile-2.0.so: undefined reference to `scm_i_relativize_path' This one was actually caused by attempting to build without POSIX modules. Guile 2.0 still fails to build w/o threaded boehm-gc anyways, with error as in 1.9.14.
I reported this issue upstream. It is still relevant for guile-2.0.0 in main tree.
(In reply to comment #3) > I've tried building =boehm-gc-7.2_alpha4-r1 without threads. > > With threads, =guile-1.9.14 fails with errors mentioned by bug reporter. > Without threads, =guile-1.9.14 fails with this error: > > SNARF net_db.doc > SNARF socket.doc > SNARF regex-posix.doc > CCLD libguile-2.0.la > CCLD guile > GEN guile-procedures.texi > 0x80cff50 is not a GC visible pointer location > GC_is_visible test failed > /bin/sh: line 1: 23323 Broken pipe cat alist.doc (...) > Long story short, I think that `>=dev-libs/boehm-gc-7.0[threads]` in DEPEND > is our way. I cannot reproduce this issue anymore using guile-2.0.6[-threads] and boehm-gc-7.1-r1[-threads] It seems it has been fixed somehow :-)