Fails to upgrade: * ERROR: dev-libs/libusbx-1.0.16-r1::gentoo failed (install phase): * unable to read SONAME from libusb-1.0.so * * Call stack: * ebuild.sh, line 93: Called src_install * environment, line 2110: Called gen_usr_ldscript '-a' 'usb-1.0' * environment, line 1293: Called die * The specific snippet of code: * [[ -z ${tlib} ]] && die "unable to read SONAME from ${lib}"; * Reproducible: Always Portage 2.2.0_alpha191 (default/linux/amd64/13.0/no-multilib, gcc-4.8.1, glibc-2.17, 3.10.1-pf x86_64) ================================================================= System Settings ================================================================= System uname: Linux-3.10.1-pf-x86_64-Pentium-R-_Dual-Core_CPU_E5200_@_2.50GHz-with-gentoo-2.2 KiB Mem: 3080152 total, 1488004 free KiB Swap: 0 total, 0 free Timestamp of tree: Thu, 01 Aug 2013 13:15:01 +0000 ld GNU gold (GNU Binutils 2.23.1) 1.11 app-shells/bash: 4.2_p45 dev-lang/python: 2.7.5-r1, 3.2.5-r1, 3.3.2-r1 dev-util/cmake: 2.8.11.1 dev-util/pkgconfig: 0.28 sys-apps/baselayout: 2.2 sys-apps/sandbox: 2.6-r1 sys-devel/autoconf: 2.13, 2.69 sys-devel/automake: 1.11.6, 1.13.4, 1.14 sys-devel/binutils: 2.23.1 sys-devel/gcc: 4.8.1 sys-devel/gcc-config: 1.8 sys-devel/libtool: 2.4.2 sys-devel/make: 3.82-r4 sys-kernel/linux-headers: 3.9 (virtual/os-headers) sys-libs/glibc: 2.17 Repositories: gentoo rorgoroth Installed sets: @gamelibs ACCEPT_KEYWORDS="amd64 ~amd64" ACCEPT_LICENSE="* -@EULA" CBUILD="x86_64-pc-linux-gnu" CFLAGS="-O2 -march=native -pipe" CHOST="x86_64-pc-linux-gnu" CONFIG_PROTECT="/etc" CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo" CXXFLAGS="-O2 -march=native -pipe" DISTDIR="/usr/portage/distfiles" FCFLAGS="-O2 -pipe" FEATURES="assume-digests binpkg-logs config-protect-if-modified distlocks ebuild-locks fixlafiles merge-sync news parallel-fetch preserve-libs protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync" FFLAGS="-O2 -pipe" GENTOO_MIRRORS="http://mirror.qubenet.net/mirror/gentoo/ http://212.219.56.132/sites/www.ibiblio.org/gentoo/ http://212.219.56.139/sites/www.ibiblio.org/gentoo/ http://212.219.56.133/sites/www.ibiblio.org/gentoo/ http://mirrors.linuxant.fr/distfiles.gentoo.org/" LANG="en_GB.UTF-8" LDFLAGS="-Wl,-O1 -Wl,--as-needed" MAKEOPTS="-j1" PKGDIR="/usr/portage/packages" 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="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/usr/local/portage" SYNC="rsync://rsync.uk.gentoo.org/gentoo-portage" USE="X \ acl alsa amd64 apng berkdb bzip2 cairo cli corefonts cracklib crypt curl cxx dbus dri exif fftw fontconfig fortran gdbm gif gles2 gtk gudev hwdb iconv icu introspection jpeg jpeg2k jpg keymap llvm lzma lzo minizip mmx mmxext modules mp3 mp4 mpd mudflap ncurses nls nptl ogg opengl openmp opus pam pango pcre pdf png policykit pulseaudio python rar readline sdl session smp smpeg sse sse2 ssl ssse3 svg systemd tcpd theora threads truetype udev unicode vaapi vdpau vorbis vpx webp x264 xcb xpm xvid zip zlib zsh-completion" ABI_X86="64" ALSA_CARDS="hda-intel" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd 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 author" CAMERAS="ptp2" 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="evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LINGUAS="en_GB" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-4" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7 python3_2" RUBY_TARGETS="ruby19 ruby18" USERLAND="GNU" VIDEO_CARDS="nvidia" 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, INSTALL_MASK, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, USE_PYTHON
Created attachment 354830 [details] build.log
Try # emerge -C virtual/libusb:0 virtual/libusb:1 dev-libs/libusb-compat dev-libs/libusb dev-libs/libusbx # emerge -1 virtual/libusb:0 virtual/libusb:1
and: do you have scanelf installed ?
(In reply to Samuli Suominen from comment #2) Unfortunately that produces the same error. (In reply to Alexis Ballier from comment #3) I do indeed, app-misc/pax-utils-0.7 to be precise.
what are the contents of /var/tmp/portage/dev-libs/libusbx-1.0.16-r1/image//usr/lib/ ? what happens if you 'cd' there and type: scanelf -qF'%S#F' libusb-1.0.so
ls output: libusb-1.0.la libusb-1.0.so libusb-1.0.so.0 libusb-1.0.so.0.1.0 pkgconfig scanelf -qF'%S#F' libusb-1.0.so output: libusb-1.0.so.0
It should look like this. Post your result here for comparison. $ cat /usr/lib64/libusb.so /* GNU ld script Since Gentoo has critical dynamic libraries in /lib, and the static versions in /usr/lib, we need to have a "fake" dynamic lib in /usr/lib, otherwise we run into linking problems. This "fake" dynamic lib is a linker script that redirects the linker to the real lib. And yes, this works in the cross- compiling scenario as the sysroot-ed linker will prepend the real path. See bug http://bugs.gentoo.org/4411 for more info. */ OUTPUT_FORMAT ( elf64-x86-64 ) GROUP ( /lib64/libusb-0.1.so.4 ) $ objdump -p /lib64/libusb-0.1.so.4 |grep -i soname SONAME libusb-0.1.so.4
(In reply to Samuli Suominen from comment #7) > It should look like this. Post your result here for comparison. > > $ cat /usr/lib64/libusb.so > /* GNU ld script > Since Gentoo has critical dynamic libraries in /lib, and the static > versions > in /usr/lib, we need to have a "fake" dynamic lib in /usr/lib, otherwise > we > run into linking problems. This "fake" dynamic lib is a linker script > that > redirects the linker to the real lib. And yes, this works in the cross- > compiling scenario as the sysroot-ed linker will prepend the real path. > > See bug http://bugs.gentoo.org/4411 for more info. > */ > OUTPUT_FORMAT ( elf64-x86-64 ) > GROUP ( /lib64/libusb-0.1.so.4 ) > > $ objdump -p /lib64/libusb-0.1.so.4 |grep -i soname > SONAME libusb-0.1.so.4 Well, output of all four commands, for both libusb-compat and libusb or libusbx $ cat /usr/lib64/libusb-1.0.so /* GNU ld script Since Gentoo has critical dynamic libraries in /lib, and the static versions in /usr/lib, we need to have a "fake" dynamic lib in /usr/lib, otherwise we run into linking problems. This "fake" dynamic lib is a linker script that redirects the linker to the real lib. And yes, this works in the cross- compiling scenario as the sysroot-ed linker will prepend the real path. See bug http://bugs.gentoo.org/4411 for more info. */ OUTPUT_FORMAT ( elf64-x86-64 ) GROUP ( /lib64/libusb-1.0.so.0 ) $ objdump -p /lib64/libusb-1.0.so.0 |grep -i soname SONAME libusb-1.0.so.0
(In reply to Samuli Suominen from comment #7) > It should look like this. Post your result here for comparison. it dies before creating the ldscript I think. see gen_usr_ldscript in toolchain-funcs.eclass. scanelf returns the correct value please attach: /var/tmp/portage/dev-libs/libusbx-1.0.16-r1/temp/eclass-debug.log and /var/tmp/portage/dev-libs/libusbx-1.0.16-r1/temp/environment
(In reply to Samuli Suominen from comment #8) Hmm... I actually don't have any of those files. After your commands earlier I have 0 libusb packages installed and cant get any of them installed again, trying to install libusb or libusbx both give the same error. (In reply to Alexis Ballier from comment #9) Okay I shall.
Created attachment 354842 [details] eclass-debug.log
Created attachment 354844 [details] environment
@mgorny: there seems to be a problem for no-multilib amd64. Look at that environment file, he gets: declare -x ABI="64" which is certainly wrong and confuses get_libdir
(In reply to Alexis Ballier from comment #13) Ah! I removed it from my make.conf and now we are all good and everything is installed and updated. Was this a mistake on my part having just 64? I admittedly did a fresh install a short time ago and re-used some portage config files, I just removed the 32 since I no longer needed it.
(In reply to Ray Griffin from comment #14) > (In reply to Alexis Ballier from comment #13) > Ah! > I removed it from my make.conf and now we are all good and everything is > installed and updated. > > Was this a mistake on my part having just 64? I admittedly did a fresh > install a short time ago and re-used some portage config files, I just > removed the 32 since I no longer needed it. wait, did you set the 'ABI' variable ? or ABI_X86?
(In reply to Alexis Ballier from comment #15) Yup. It's wrong, isn't it. I set it during the big fuss about it and have just tracked down the forum topic I got it from. I can't believe after quite some time only now it has shown up. Please accept my apologies for accidentally wasting your time :|
(In reply to Ray Griffin from comment #16) > (In reply to Alexis Ballier from comment #15) > > Yup. > It's wrong, isn't it. I set it during the big fuss about it and have just > tracked down the forum topic I got it from. I can't believe after quite some > time only now it has shown up. Please accept my apologies for accidentally > wasting your time :| so if you set the 'ABI' variable this is certainly wrong and will break all kind of things in your system, the bug is invalid. if you had set ABI_X86 and ABI got set by some hidden mechanism this is a problem we should fix since setting ABI_X86="64" as your emerge --info shows is not invalid. was you emerge --info up to date ?
(In reply to Alexis Ballier from comment #17) >so if you set the 'ABI' variable this is certainly wrong and will break all kind of things in your system, the bug is invalid. ABI= is what I saw in the forums and what I put in my make.conf at the time. >if you had set ABI_X86 and ABI got set by some hidden mechanism this is a problem we should fix since setting ABI_X86="64" as your emerge --info shows is not invalid. >was you emerge --info up to date ? Yeah it was up to date, that is confusing, now I look ABI_X86="64" is set, not in my make.conf though as mentioned above, so the good news is that ABI_X86="64" is getting set correctly by default I guess. I shall mark as invalid, thank you both for the help.
(In reply to Ray Griffin from comment #18) good, thanks! > (In reply to Alexis Ballier from comment #17) > >so if you set the 'ABI' variable this is certainly wrong and will break all kind of things in your system, the bug is invalid. > ABI= is what I saw in the forums and what I put in my make.conf at the time. please flame the one who posted this for me :)
(In reply to Alexis Ballier from comment #19) I would if I felt like dragging up an old-ish thread up, I have however filed a request for it to be edited/fixed/cleaned in case others come across it in the future ;)