* QA Notice: The following shared libraries lack a SONAME * /var/tmp/portage/sys-libs/db-4.5.20_p2/image/usr/lib64/libdb_cxx-4.5.so Portage 2.1.2.7 (default-linux/amd64/2006.1/desktop, gcc-4.1.2, glibc-2.5-r3, 2.6.20-gentoo-r7 x86_64) ================================================================= System uname: 2.6.20-gentoo-r7 x86_64 AMD Athlon(tm) 64 Processor 3000+ Gentoo Base System release 1.12.9 Timestamp of tree: Sat, 23 Jun 2007 07:20:01 +0000 ccache version 2.4 [enabled] dev-java/java-config: 1.3.7, 2.0.32 dev-lang/python: 2.4.4-r4 dev-python/pycrypto: 2.0.1-r5 dev-util/ccache: 2.4-r7 sys-apps/sandbox: 1.2.17 sys-devel/autoconf: 2.13, 2.61 sys-devel/automake: 1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2, 1.10 sys-devel/binutils: 2.16.1-r3 sys-devel/gcc-config: 1.3.16 sys-devel/libtool: 1.5.22 virtual/os-headers: 2.6.17-r2 ACCEPT_KEYWORDS="amd64" AUTOCLEAN="yes" CBUILD="x86_64-pc-linux-gnu" CFLAGS="-march=athlon64 -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/X11/xkb /usr/share/config" CONFIG_PROTECT_MASK="/etc/env.d /etc/env.d/java/ /etc/gconf /etc/php/apache2-php4/ext-active/ /etc/php/apache2-php5/ext-active/ /etc/php/cgi-php4/ext-active/ /etc/php/cgi-php5/ext-active/ /etc/php/cli-php4/ext-active/ /etc/php/cli-php5/ext-active/ /etc/revdep-rebuild /etc/splash /etc/terminfo" CXXFLAGS="-march=athlon64 -O2 -pipe" DISTDIR="/usr/portage/distfiles" FEATURES="ccache collision-protect distlocks fixpackages metadata-transfer parallel-fetch sandbox sfperms strict userfetch userpriv usersandbox" GENTOO_MIRRORS="http://gentoo.intergenia.de http://gentoo.inf.elte.hu/ http://gentoo.po.opole.pl http://gentoo.prz.rzeszow.pl http://ftp.belnet.be/mirror/rsync.gentoo.org/gentoo/ http://gentoo.zie.pg.gda.pl http://ftp-stud.fht-esslingen.de/pub/Mirrors/gentoo/ http://src.gentoo.pl http://gentoo.tiscali.nl/ http://ftp.uni-erlangen.de/pub/mirrors/gentoo http://distfiles.gentoo.org" LANG="en_US.utf8" LC_ALL="en_US.utf8" LINGUAS="en pl" MAKEOPTS="-j2" PKGDIR="/usr/portage/packages" PORTAGE_RSYNC_EXTRA_OPTS="--human-readable --progress" PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --delete-after --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --filter=H_**/files/digest-*" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/usr/local/portage" SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage" USE="X acl acpi alsa amd64 apache2 arts audiofile berkdb bitmap-fonts browserplugin bzip2 cairo caps cdparanoia cdr cli cracklib crypt ctype cups curl dbus dri dvd dvdr dvdread emboss encode exif expat fam ffmpeg firefox foomaticdb force-cgi-redirect fortran ftp gdbm gif gimp gimpprint glut gmp gstreamer gtk gtk2 hal iconv ipv6 isdnlog java javascript jpeg kde lame libg++ mad midi mikmod mmap mng mono mozilla mp3 mpeg mudflap ncurses nls nptl nptlonly nsplugin nvidia ogg oggvorbis opengl openmp oss pam pcre pdf perl php png ppds pppd python qt3 quicktime readline reflection samba scanner sdl session slang soap spell spl sqlite ssl suhosin svg tcpd theora thunderbird tiff truetype truetype-fonts type1-fonts unicode usb utempter utf8 vorbis xattr xcomposite xml xorg xv xvid zip zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mulaw multi null plug rate route share shm softvol" ELIBC="glibc" INPUT_DEVICES="evdev keyboard mouse" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="en pl" USERLAND="GNU" VIDEO_CARDS="nvidia nv" Unset: CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LDFLAGS, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS
Do you still have this bug? If so, could you attach an emerge log? On my system (x86) the library has the right soname.
Interesting, but indeed this (lacking SONAME) does not happen on x86. Yet it still does on amd64, with or without ccache. Will attach emerge logs for both arches in a moment...
Created attachment 143291 [details] emerge-amd64.log This is the log for amd64, QA error with SONAME.
Created attachment 143292 [details] emerge-db-x86.log This is the log for x86, warning is not present. Including for reference.
I can't reproduce it on amd64 either. I'm using a testing configuration though with newer binutils, gcc and glibc. I'm suspecting this is a bug in the toolchain.
Reproducible here on amd64(All stable system(well, almost)). Also you might want to check out bug #204213 which shows the same warning in the :2.3 SLOT. Portage 2.1.4.4 (default-linux/amd64/2007.0/desktop, gcc-4.1.2, glibc-2.6.1-r0, 2.6.23-gentoo-r8 x86_64) ================================================================= System uname: 2.6.23-gentoo-r8 x86_64 AMD Athlon(tm) 64 Processor 3400+ Timestamp of tree: Sun, 24 Feb 2008 01:47:01 +0000 ccache version 2.4 [enabled] app-shells/bash: 3.2_p17-r1 dev-java/java-config: 1.3.7, 2.1.4 dev-lang/python: 2.4.4-r6 dev-python/pycrypto: 2.0.1-r6 dev-util/ccache: 2.4-r7 sys-apps/baselayout: 1.12.11.1 sys-apps/sandbox: 1.2.18.1-r2 sys-devel/autoconf: 2.13, 2.61-r1 sys-devel/automake: 1.5, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2, 1.10 sys-devel/binutils: 2.18-r1 sys-devel/gcc-config: 1.4.0-r4 sys-devel/libtool: 1.5.26 virtual/os-headers: 2.6.23-r3 ACCEPT_KEYWORDS="amd64" CBUILD="x86_64-pc-linux-gnu" CFLAGS="-march=athlon64 -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/X11/xkb /usr/share/config" CONFIG_PROTECT_MASK="/etc/env.d /etc/env.d/java/ /etc/fonts/fonts.conf /etc/gconf /etc/revdep-rebuild /etc/splash /etc/terminfo /etc/udev/rules.d" CXXFLAGS="-march=athlon64 -O2 -pipe" DISTDIR="/distfiles" FEATURES="buildpkg ccache collision-protect distlocks metadata-transfer multilib-strict nostrip parallel-fetch sandbox sfperms strict test unmerge-orphans userfetch userpriv" GENTOO_MIRRORS="http://distfiles.gentoo.org http://distro.ibiblio.org/pub/linux/distributions/gentoo" MAKEOPTS="-j2" PKGDIR="/usr/portage/packages" 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="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/usr/portage/local/enlightenment /overlay" SYNC="rsync://kv80/gentoo-portage" USE="X acl acpi aim alsa amd64 arts bash-completion berkdb bitmap-fonts branding cairo cdr cli cracklib crypt cups dbus dri dvd dvdr dvdread eds emboss encode esd evo fam firefox fortran gdbm gif gpm gstreamer hal iconv imap ipv6 isdnlog jpeg kde kerberos mad midi mikmod mmx mp3 mpeg mudflap mysql mysqli ncurses nls nptl nptlonly nvidia ogg opengl openmp oss pam pcre pdf perl png pppd python qt qt3 qt3support qt4 quicktime readline reflection sdl session spell spl sqlite3 sse sse2 ssl svg tcpd tiff truetype truetype-fonts type1-fonts unicode vim vim-syntax vorbis xine xml xorg xv zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter 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 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" ELIBC="glibc" INPUT_DEVICES="keyboard mouse evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" USERLAND="GNU" VIDEO_CARDS="nvidia" Unset: CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LANG, LC_ALL, LDFLAGS, LINGUAS, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
gcc/ld does not just randomly drop SONAMEs ... i doubt it is a bug in the toolchain ... and if look at the output, libdb_cxx-4.5.so is not linked with -Wl,-shared in the amd64 log file post the config.log file from both builds
Created attachment 144600 [details] config.log.x86
Created attachment 144601 [details] config.log.amd64
One thing that I notice in the log is linking to /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/../../../../lib64/crti.o a file that (normally automatically linked) is only needed for apps, not for libraries. The libtool command also does have a -shared in it, as well as the g++ command.
sorry, i meant -soname, not -shared libtool will parse out the toolchain and do all the linking parts by hand rather than letting the compiler driver determine them ... that is why you see crti.o in there. and no, crti.o is not just for apps. you're thinking of crt1.o.
I can reproduce the same issue also with sys-libs/db-4.6.21_p1: QA Notice: The following shared libraries lack a SONAME /var/tmp/portage/sys-libs/db-4.6.21_p1/image/usr/lib64/libdb_cxx-4.6.so
running ./libtool --debug for the cxx case shows that libtool is getting it's input from somewhere else entirely. The libtool they include has multiple definitions of archive_cmds: archive_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib" archive_cmds="\$CC -shared -nostdlib \$predep_objects \$libobjs \$deplibs \$postdep_objects \$compiler_flags -o \$lib" archive_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib" The middle one is used for CXX stuff for some reason, and notice that it excludes any soname parameter. Using eautoreconf (and suitable AT_M4DIR), I end up with this right after econf finishes: ./libtool: line 463: CDPATH: command not found ./libtool: line 1148: func_opt_split: command not found libtool: Version mismatch error. This is libtool 2.2.4, but the libtool: definition of this LT_INIT comes from an older release. libtool: You should recreate aclocal.m4 with macros from libtool 2.2.4 libtool: and run autoconf again.
I figured out the evil that upstream had in their build system. I'm working on fixing all of the 4.x SLOTS now.
All 4.x SLOTS are now fixed in the latest ~arch ebuilds.
Well, I don't know about others, but at least db-4.5.20_p2-r1.ebuild (rev1.1) is broken. It results in: configure: creating ./config.status ./config.status: line 1138: db_cxx.h:/var/tmp/portage/sys-libs/db-4.5.20_p2-r1/work/db-4.5.20/build_unix/../dist/../dbinc/db_cxx.in: No such file or directory ./config.status: line 1139: db_int.h:/var/tmp/portage/sys-libs/db-4.5.20_p2-r1/work/db-4.5.20/build_unix/../dist/../dbinc/db_int.in: No such file or directory ./config.status: line 1140: clib_port.h:/var/tmp/portage/sys-libs/db-4.5.20_p2-r1/work/db-4.5.20/build_unix/../dist/../dist/clib_port.h: No such file or directory ./config.status: line 1141: include.tcl:/var/tmp/portage/sys-libs/db-4.5.20_p2-r1/work/db-4.5.20/build_unix/../dist/../test/include.tcl: No such file or directory ./config.status: line 1142: db.h:/var/tmp/portage/sys-libs/db-4.5.20_p2-r1/work/db-4.5.20/build_unix/../dist/../dbinc/db.in:/var/tmp/portage/sys-libs/db-4.5.20_p2-r1/work/db-4.5.20/build_unix/../dist/../dbinc_auto/ext_prot.in: No such file or directory ./config.status: line 1143: db_185.h:/var/tmp/portage/sys-libs/db-4.5.20_p2-r1/work/db-4.5.20/build_unix/../dist/../dbinc/db_185.in:/var/tmp/portage/sys-libs/db-4.5.20_p2-r1/work/db-4.5.20/build_unix/../dist/../dbinc_auto/ext_185_prot.in: No such file or directory ./config.status: line 1144: db185_int.h:/var/tmp/portage/sys-libs/db-4.5.20_p2-r1/work/db-4.5.20/build_unix/../dist/../db185/db185_int.in:/var/tmp/portage/sys-libs/db-4.5.20_p2-r1/work/db-4.5.20/build_unix/../dist/../dbinc_auto/ext_185_prot.in: No such file or directory config.status: creating Makefile /bin/sh ./libtool --mode=compile i686-pc-linux-gnu-gcc -c -I. -I/var/tmp/portage/sys-libs/db-4.5.20_p2-r1/work/db-4.5.20/build_unix/../dist/.. -D_GNU_SOURCE -D_REENTRANT -I/opt/sun-jdk-1.6.0.07/include -I/opt/sun-jdk-1.6.0.07/include/linux -O2 -march=athlon -mtune=athlon -pipe /var/tmp/portage/sys-libs/db-4.5.20_p2-r1/work/db-4.5.20/build_unix/../dist/../db185/db185.c
This time, following may actually make a difference: app-shells/bash: 3.2_p33 dev-java/java-config: 1.3.7, 2.1.6 sys-apps/sandbox: 1.2.18.1-r2 sys-devel/autoconf: 2.13, 2.62 sys-devel/automake: 1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2, 1.10.1-r1 sys-devel/binutils: 2.18-r3 sys-devel/gcc-config: 1.4.0-r4 sys-devel/libtool: 2.2.4
Rafał Mużyło: please include your full emerge --info (best to open a new bug I think).
Well, OK, I'll open a new bug. But full 'emerge --info' most probably won't help more, than the part I already posted, cause I'm in x86, but having several dozen of lines in package.keywords (plus a few in package.unmask). For one libtool 2 and baselayout 2 were ~x86, last time I checked.