Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 350064 - [lisp overlay] dev-scheme/guile-1.9.12 fails to build with USE=threads when dev-libs/boehm-gc-7.1[-threads] is installed -- dependency error
Summary: [lisp overlay] dev-scheme/guile-1.9.12 fails to build with USE=threads when d...
Status: RESOLVED OBSOLETE
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Development (show other bugs)
Hardware: All Linux
: High normal (vote)
Assignee: Scheme Project
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 355355
  Show dependency tree
 
Reported: 2010-12-29 18:28 UTC by nefercheprure
Modified: 2012-09-26 20:46 UTC (History)
0 users

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description nefercheprure 2010-12-29 18:28:23 UTC
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
Comment 1 Panagiotis Christopoulos (RETIRED) gentoo-dev 2010-12-29 18:50:19 UTC
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. 
Comment 2 nefercheprure 2010-12-31 08:17:31 UTC
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.
Comment 3 Dmitry Dzhus 2011-04-01 21:43:20 UTC
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.
Comment 4 Dmitry Dzhus 2011-04-01 21:55:52 UTC
(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.
Comment 5 Marijn Schouten (RETIRED) gentoo-dev 2011-04-07 16:20:20 UTC
I reported this issue upstream. It is still relevant for guile-2.0.0 in main tree.
Comment 6 Cyprien Nicolas (fulax) 2012-09-26 20:46:08 UTC
(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 :-)