Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 416465

Summary: dev-libs/protobuf-2.4.1 - google/protobuf/stubs/ error: #error "No suitable threading library available."
Product: Gentoo/Alt Reporter: EEva <eeva+gentoo_bugzilla>
Component: Prefix SupportAssignee: Gentoo Prefix <prefix>
Severity: normal CC: tdalman
Priority: Normal    
Version: unspecified   
Hardware: x86   
OS: Linux   
Package list:
Runtime testing required: ---
Attachments: build.log
Failing config.log

Description EEva 2012-05-18 08:22:37 UTC
When attempting to emerge "=dev-libs/protobuf-2.4.1", build fails.
The pthread stubs are installed.

Configure spits out two noticeable warnings:
checking for the pthreads library -lpthreads... no
checking whether pthreads work without any flags... yes
checking for joinable pthread attribute... PTHREAD_CREATE_JOINABLE
checking if more special flags are required for pthreads... -D_THREAD_SAFE
checking whether to check for GCC pthread/shared inconsistencies... no
checking whether -pthread is sufficient with -shared... no
checking whether -lpthread fixes that... no
checking whether -lc_r fixes that... no
configure: WARNING: Impossible to determine how to use pthreads with shared libraries
checking whether what we have so far is sufficient with -nostdlib... no
checking whether -lpthread saves the day... no
configure: WARNING: Impossible to determine how to use pthreads with shared libraries and -nostdlib

Reproducible: Always

Steps to Reproduce:
1.emerge "=dev-libs/protobuf-2.4.1"
2.Watch it fail

Portage (prefix/darwin/macos/10.6/x64, gcc-4.2.1, unavailable, 10.8.0 i386)
System uname: Darwin-10.8.0-i386-64bit
Timestamp of tree: Thu, 17 May 2012 18:53:19 +0000
distcc 3.1-toolwhip.1 i386-apple-darwin10.0 [disabled]
app-shells/bash:      4.2_p20::gentoo_prefix
dev-lang/python:      2.7.3-r2::gentoo_prefix
dev-util/cmake:       2.8.8-r2::gentoo_prefix
dev-util/pkgconfig:   0.26::gentoo_prefix
sys-devel/autoconf:   2.68::gentoo_prefix
sys-devel/automake:   1.11.5::gentoo_prefix
sys-devel/gcc-config: 1.5-r2::gentoo_prefix
sys-devel/libtool:    2.4.2::gentoo_prefix
sys-devel/make:       3.82-r4::gentoo_prefix
Repositories: gentoo_prefix
Installed sets: 
ACCEPT_KEYWORDS="** ~x64-macos"
CFLAGS="-O2 -pipe -march=nocona"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/portage /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c"
CXXFLAGS="-O2 -pipe -march=nocona"
FEATURES="assume-digests binpkg-logs collision-protect distlocks ebuild-locks fixlafiles force-prefix news nostrip parallel-fetch preserve-libs protect-owned sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
USE="aqua coreaudio cracklib cxx mmx mmxext modules ncurses nls objc objc++ prefix readline sse sse2 ssl unicode x64-macos zlib" 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" CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" ELIBC="Darwin" 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" KERNEL="Darwin" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" PHP_TARGETS="php5-3" PYTHON_TARGETS="python2_7" RUBY_TARGETS="ruby18" USERLAND="GNU" 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"
Comment 1 EEva 2012-05-18 08:23:26 UTC
Created attachment 312165 [details]
Comment 2 Rafał Mużyło 2012-05-18 17:28:23 UTC
As you've noticed yourself, config.log required.
Comment 3 Mike Lewis 2012-08-12 19:18:22 UTC
I can confirm this.  It seems to not be able to find pthread.h which isn't installed by prefix.
Comment 4 Mike Lewis 2012-08-12 19:28:08 UTC
I just looked into this more.

This error is happening when compiling because HAVE_PTHREAD isn't defined.

Went to the config.log, and it seems it isn't finding the pthread library during config (Even if we supply -L/usr/lib -I/usr/include)

The logs say

configure:16142: checking for the pthreads library -lpthreads
configure:16175: x86_64-apple-darwin12-gcc -o conftest -I/usr/include -L/usr/lib   -L/usr/lib conftest.c -lpthreads -lz  >&5
ld: library not found for -lpthreads

This is funny because I have "libpthread.dyld" not "libpthreads.dyld" in my /usr/lib.

I think patching the config script to look for -lpthread would work.  Perhaps it is just a typo.
Comment 5 Mike Lewis 2012-08-12 19:30:06 UTC
Sorry, my bad... I don't think my last comment is correct.  Will just attach my config.log.
Comment 6 Mike Lewis 2012-08-12 19:30:39 UTC
Created attachment 321148 [details]
Failing config.log
Comment 7 Mike Lewis 2012-08-12 19:38:30 UTC
Figured it out:

"-Wl,-z,defs" is causing the pthread check to fail. When I removed it from the configure file, it works.

This isn't a proper fix but it isolates the problem.

--- configure	2012-08-12 12:36:22.000000000 -0700
+++ /Users/mike/foo/configure	2012-08-12 12:36:00.000000000 -0700
@@ -16315,7 +16315,7 @@
 	# FIXME: -fPIC is required for -shared on many architectures,
 	# so we specify it here, but the right way would probably be to
 	# properly detect whether it is actually required.
-	CFLAGS="-shared -fPIC -Wl,-z,defs $CFLAGS $PTHREAD_CFLAGS"
Comment 8 Mike Lewis 2012-08-12 20:04:52 UTC
And for a fix:

--- /sb/usr/portage/dev-libs/protobuf/protobuf-2.4.1.ebuild	2012-08-09 07:08:44.000000000 -0700
+++ dev-libs/protobuf/protobuf-2.4.1.ebuild	2012-08-12 13:04:17.000000000 -0700
@@ -43,6 +43,10 @@
 		python_convert_shebangs -r 2 .
+	if [[ ${CHOST} == *-darwin* ]] ; then
+		sed -i 's/-Wl,-z,defs //' configure
+	fi  
 src_configure() {
Comment 9 Rafał Mużyło 2012-08-12 20:08:50 UTC
The error in config.log is:
configure:16523: x86_64-apple-darwin12-gcc -o conftest -nostdlib -shared -fPIC -Wl,-z,defs -I/usr/include -L/usr/lib -D_THREAD_SAFE   -L/usr/lib conftest.c -lpthread -lc_r  -lz  -lc >&5
ld: unknown option: -z

so binutils complain, but seems prefix specific, as sys-devel/binutils shouldn't have this problem.
Comment 10 Fabian Groffen gentoo-dev 2012-08-12 20:11:24 UTC
well, it's just passing a GNU ld specific flag to a non-GNU ld (linker)

it's true that this only happens in Prefix

we do have test-flag stuff
Comment 11 Fabian Groffen gentoo-dev 2017-11-15 17:41:13 UTC
This was fixed in recent versions, thanks.