libtool: link: hppa2.0-unknown-linux-gnu-gcc -mschedule=8000 -march=2.0 -ggdb -Wall -Wformat=2 -O2 -pipe -Wno-comment -pthread -Wl,-O1 -Wl,--hash-style=gnu -Wl,--no-keep-memory -o .libs/fitscopy fitscopy.o -Wl,--as-needed ./.libs/libcfitsio.so -L/usr/lib -lz -lm -pthread ./.libs/libcfitsio.so: undefined reference to `Fitsio_Pthread_Status' ./.libs/libcfitsio.so: undefined reference to `Fitsio_Lock' This is weird. The compiled library does turn out to have both those undefined, even when config.h has _REENTRANT properly defined. Adding -D_REENTRANT makes it magically work as if the config.h had been ignored: --- cfitsio-3.360.ebuild 8 Mar 2015 21:02:42 -0000 1.3 +++ cfitsio-3.360.ebuild 13 Mar 2015 08:10:33 -0000 @@ -6,7 +6,7 @@ EAPI=5 FORTRAN_NEEDED=fortran -inherit autotools-utils fortran-2 +inherit autotools-utils flag-o-matic fortran-2 DESCRIPTION="C and Fortran library for manipulating FITS files" HOMEPAGE="http://heasarc.gsfc.nasa.gov/docs/software/fitsio/fitsio.html" @@ -35,6 +35,7 @@ src_prepare() { } src_configure() { + use threads && append-flags -D_REENTRANT local myeconfargs=( $(use_enable fortran) $(use_enable threads)
Created attachment 398776 [details] sci-libs:cfitsio-3.360:20150313-071924.log Fri 13 Mar 09:18:50 CET 2015 emerge --info cfitsio Portage 2.2.14 (python 3.4.1-final-0, default/linux/hppa/13.0, gcc-4.8.3, glibc-2.19-r1, 3.18.7-gentoo-JeR parisc64) ================================================================= System Settings ================================================================= System uname: Linux-3.18.7-gentoo-JeR-parisc64-PA8800_-Mako-with-gentoo-2.2 KiB Mem: 8231380 total, 4805112 free KiB Swap: 2101676 total, 2101676 free Timestamp of tree: Fri, 13 Mar 2015 04:15:01 +0000 ld GNU ld (Gentoo 2.24 p1.4) 2.24 distcc 3.1 hppa2.0-unknown-linux-gnu [enabled] ccache version 3.1.9 [disabled] app-shells/bash: 4.2_p53 dev-lang/perl: 5.20.1-r4 dev-lang/python: 2.7.9-r1, 3.2.5-r6, 3.3.5-r1, 3.4.1 dev-util/ccache: 3.1.9-r4 dev-util/cmake: 2.8.12.2-r1 dev-util/pkgconfig: 0.28-r1 sys-apps/baselayout: 2.2 sys-apps/openrc: 0.13.11 sys-apps/sandbox: 2.6-r1 sys-devel/autoconf: 2.13, 2.69 sys-devel/automake: 1.9.6-r3, 1.11.6-r1, 1.12.6, 1.13.4 sys-devel/binutils: 2.22-r1, 2.23.1, 2.23.2, 2.24-r3 sys-devel/gcc: 4.6.3, 4.6.4, 4.7.2-r1, 4.7.3-r1, 4.8.1-r1, 4.8.3, 4.8.4, 4.9.2 sys-devel/gcc-config: 1.7.3 sys-devel/libtool: 2.4.4 sys-devel/make: 4.1-r1 sys-kernel/linux-headers: 3.16 (virtual/os-headers) sys-libs/glibc: 2.19-r1 Repositories: gentoo JeR ACCEPT_KEYWORDS="hppa" ACCEPT_LICENSE="*" CBUILD="hppa2.0-unknown-linux-gnu" CFLAGS="-mschedule=8000 -march=2.0 -ggdb -Wall -Wformat=2 -O2 -pipe -Wno-comment" CHOST="hppa2.0-unknown-linux-gnu" CONFIG_PROTECT="/etc /usr/lib/distcc/bin /usr/share/gnupg/qualified.txt /var/bind /var/spool/torque /var/www/localhost/htdocs/wordpress/wp-config.php" CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/php/apache2-php5.3/ext-active/ /etc/php/apache2-php5.4/ext-active/ /etc/php/apache2-php5.5/ext-active/ /etc/php/apache2-php5.6/ext-active/ /etc/php/cgi-php5.3/ext-active/ /etc/php/cgi-php5.4/ext-active/ /etc/php/cgi-php5.5/ext-active/ /etc/php/cgi-php5.6/ext-active/ /etc/php/cli-php5.3/ext-active/ /etc/php/cli-php5.4/ext-active/ /etc/php/cli-php5.5/ext-active/ /etc/php/cli-php5.6/ext-active/ /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="-mschedule=8000 -march=2.0 -ggdb -Wall -Wformat=2 -O2 -pipe" DISTDIR="/world/distfiles" EMERGE_DEFAULT_OPTS="--quiet-build=n --autounmask=n" FCFLAGS="" FEATURES="assume-digests binpkg-logs buildpkg cgroup compressdebug config-protect-if-modified distcc distlocks ebuild-locks fixlafiles merge-sync metadata-transfer news notitles parallel-fetch preserve-libs protect-owned sandbox sfperms splitdebug strict test test-fail-continue unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr" FFLAGS="-mschedule=8000 -march=2.0 -ggdb -Wall -Wformat=2 -O2 -pipe" GENTOO_MIRRORS="http://de-mirror.org/gentoo/ http://gentoo.mneisen.org/ http://mirror.netcologne.de/gentoo/ http://linux.rz.ruhr-uni-bochum.de/download/gentoo-mirror/ http://ftp.halifax.rwth-aachen.de/gentoo/ http://ftp.spline.inf.fu-berlin.de/mirrors/gentoo/ http://ftp.uni-erlangen.de/pub/mirrors/gentoo http://ftp-stud.hs-esslingen.de/pub/Mirrors/gentoo/ http://mirror.leaseweb.com/gentoo/ http://gentoo.tiscali.nl/ http://ftp.snt.utwente.nl/pub/os/linux/gentoo" LANG="en_GB.utf8" LDFLAGS="-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -Wl,--no-keep-memory" MAKEOPTS="-j6" PKGDIR="/keeps/gentoo/packages/karsten" PORTAGE_CONFIGROOT="/" PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages" PORTAGE_TMPDIR="/dev/shm" PORTDIR="/world/gentoo/portage" PORTDIR_OVERLAY="/keeps/gentoo/local" USE="256-color X acl alsa amr anacron apng argyllcms audit bash-completion beautifulsoup3 berkdb bfio bittorrent botan bzip2 cairo canberra cli consolekit coverage cracklib crossdev crypt cups custom-cflags cxx dane dbus declarative dirac directfb distinct-l dlz doc dot dri emacs exceptions exif expat fbcon filecaps firefox firmware foomaticdb fortran frontend-optional g-sorcery gbm gdbm geoip geoloc glep gles1 gles2 gost gpg gpm graphite gsm gstreamer gtk gudev guile hddtemp hppa hwdb iconv idn imlib inotify ipv6 jadetex javascript jingle jit jpeg jpeg2k json kdrive kmod ladspa lasi launch-frontend libav libcaca libcanberra libevent libopts libsoxr libusb libwww lua lzma lzo mad mng mod modplug modules mp3 multislot multitarget munge nagios ncurses netlink nfs nls nptl objc objc++ objc-gc offensive openexr opengl openmp openrc openvg opus oqgraph osmesa oss pam pcre pcre16 php pic pkcs11 png pnm policykit python qt qt3support qt4 readline realtime regression-test rtmp samba sbc schroedinger sctp session smi socks5 speex spell spidermonkey sqlite ssl svg tcl tcpd test tga theora threads tiff tk tokyocabinet truetype unicode unwind v4l vim-syntax vorbis vpx wayland wcwidth x264 xa xattr xcb xft xhtml xkb xml2 xvfb xvid zlib" ALSA_CARDS="ad1889 usb-audio" APACHE2_MODULES="authz_host dir mime alias" CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump author" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CURL_SSL="nss" DRACUT_MODULES="nfs 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 ublox ubx" INPUT_DEVICES="evdev joystick keyboard mouse acecad aiptek calcomp citron digitaledge dmc dynapro elo2300 elographics fpit hyperpen jamstudio magellan microtouch mutouch palmax penmount spaceorb summa tek4957 tslib ur98 void" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LINGUAS="en nl he" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-4 php5-5" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7 python3_3 python3_4" RUBY_TARGETS="ruby19 ruby20" USERLAND="GNU" VIDEO_CARDS="stifb dummy" 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" USE_PYTHON="2.7 3.3" Unset: CPPFLAGS, CTARGET, INSTALL_MASK, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, SYNC ================================================================= Package Settings ================================================================= sci-libs/cfitsio-3.360 was built with the following: USE="doc fortran threads tools -examples -static-libs" CFLAGS="-mschedule=8000 -march=2.0 -ggdb -Wall -Wformat=2 -O2 -pipe -Wno-comment -D_REENTRANT" CXXFLAGS="-mschedule=8000 -march=2.0 -ggdb -Wall -Wformat=2 -O2 -pipe -D_REENTRANT"
That shouldn't be necessary as -pthread is provided during compilation of relevant object. Could you check that you get the following on hppa? $ gcc -pthread -dM -E - < /dev/null | grep ENTR #define _REENTRANT 1
(In reply to Kacper Kowalik (Xarthisius) from comment #2) > That shouldn't be necessary as -pthread is provided during compilation of > relevant object. > > Could you check that you get the following on hppa? > > $ gcc -pthread -dM -E - < /dev/null | grep ENTR > #define _REENTRANT 1 Well, that was the point of the patch really. On HPPA, you don't get that.
(In reply to Jeroen Roovers from comment #3) > (In reply to Kacper Kowalik (Xarthisius) from comment #2) > > That shouldn't be necessary as -pthread is provided during compilation of > > relevant object. > > > > Could you check that you get the following on hppa? > > > > $ gcc -pthread -dM -E - < /dev/null | grep ENTR > > #define _REENTRANT 1 > > Well, that was the point of the patch really. On HPPA, you don't get that. Is it by design? Shouldn't be that fixed system wide for hppa? I mean that's probably not the only package in tree that assumes consistent -pthread behavior.
(In reply to Kacper Kowalik (Xarthisius) from comment #4) that does seem like a failure in the toolchain
specifically, normally gcc has this: $ gcc-4.9.2 -dumpspecs |& grep -A 1 '^[*]cpp:' *cpp: %{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT} but hppa is missing it entirely: $ hppa2.0-unknown-linux-gnu-gcc-4.8.2 -dumpspecs |& grep REENT <nothing> a survey of all the cross-compilers on my system indicates these targets are also broken: microblaze nios2 in addition, the handling of -posix/-D_POSIX_SOURCE is inconsistent for: aarch64 hppa2.0 microblaze nios2 tilegx aarch64
i've fixed the _REENTRANT issue in 4.6.4/4.7.4/4.8.4/4.9.2/5.1.0 for those three arches and i'll send the patches upstream: http://sources.gentoo.org/gentoo/src/patchsets/gcc/4.6.4/gentoo/45_all_linux-pthread-reentrant.patch?rev=1.1 http://sources.gentoo.org/gentoo/src/patchsets/gcc/4.7.4/gentoo/45_all_linux-pthread-reentrant.patch?rev=1.1 http://sources.gentoo.org/gentoo/src/patchsets/gcc/4.8.4/gentoo/45_all_linux-pthread-reentrant.patch?rev=1.1 http://sources.gentoo.org/gentoo/src/patchsets/gcc/4.9.2/gentoo/45_all_linux-pthread-reentrant.patch?rev=1.1 http://sources.gentoo.org/gentoo/src/patchsets/gcc/5.1.0/gentoo/45_all_linux-pthread-reentrant.patch?rev=1.1 maybe i'll work on the _POSIX thing / unify a bit more. not sure.
should be all set now in the tree; thanks for the report! Commit message: Fix hppa/microblaze/nios2 handling of -pthread/-D_REENTRANT http://sources.gentoo.org/sys-devel/gcc/gcc-4.6.4.ebuild?r1=1.18&r2=1.19 http://sources.gentoo.org/sys-devel/gcc/gcc-4.7.4.ebuild?r1=1.13&r2=1.14 http://sources.gentoo.org/sys-devel/gcc/gcc-4.8.4.ebuild?r1=1.14&r2=1.15 http://sources.gentoo.org/sys-devel/gcc/gcc-4.9.2.ebuild?r1=1.18&r2=1.19 http://sources.gentoo.org/sys-devel/gcc/gcc-5.1.0.ebuild?r1=1.3&r2=1.4