After emerging gnome-base/libgnomekbd-2.24.0 the first time, libgnomekbdui.so.3 is linked against libgnomekbd.so.2, which is removed after the installation. This breaks e.g. gnome-screensaver-dialog. I had to kill gnome-screensaver from the console. Reproducible: Couldn't Reproduce Steps to Reproduce: emerge libgnomekbd Actual Results: When emerging gnome-base/libgnomekbd-2.24.0 the second time, libgnomekbd.so.2 is not present anymore and everything goes fine. Portage 2.1.6.7 (default/linux/x86/2008.0/desktop, gcc-4.1.2, glibc-2.8_p20080602-r1, 2.6.27-gentoo-r7 i686) ================================================================= System uname: Linux-2.6.27-gentoo-r7-i686-Intel-R-_Pentium-R-_M_processor_1.50GHz-with-glibc2.0 Timestamp of tree: Tue, 07 Apr 2009 13:45:02 +0000 app-shells/bash: 3.2_p39 dev-java/java-config: 1.3.7, 2.1.6-r1 dev-lang/python: 2.5.2-r7 dev-util/cmake: 2.6.2-r1 sys-apps/baselayout: 1.12.11.1 sys-apps/sandbox: 1.2.18.1-r2 sys-devel/autoconf: 2.13, 2.63 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.2 sys-devel/binutils: 2.18-r3 sys-devel/gcc-config: 1.4.0-r4 sys-devel/libtool: 1.5.26 virtual/os-headers: 2.6.27-r2 ACCEPT_KEYWORDS="x86" CBUILD="i686-pc-linux-gnu" CFLAGS="-O2 -march=pentium-m -pipe" CHOST="i686-pc-linux-gnu" CONFIG_PROTECT="/etc /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/kde/4.0/env /usr/kde/4.0/share/config /usr/kde/4.0/shutdown /usr/kde/4.2/env /usr/kde/4.2/share/config /usr/kde/4.2/shutdown /usr/share/config /var/bind" CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/ /etc/fonts/fonts.conf /etc/gconf /etc/php/apache2-php5/ext-active/ /etc/php/cgi-php5/ext-active/ /etc/php/cli-php5/ext-active/ /etc/revdep-rebuild /etc/splash /etc/terminfo /etc/texmf/web2c /etc/udev/rules.d" CXXFLAGS="-O2 -march=pentium-m -pipe" DISTDIR="/usr/portage/distfiles" FEATURES="distlocks fixpackages parallel-fetch protect-owned sandbox sfperms strict unmerge-orphans userfetch" GENTOO_MIRRORS="http://mirror.switch.ch/ftp/mirror/gentoo/ ftp://mirror.switch.ch/mirror/gentoo/ ftp://ftp.solnet.ch/mirror/Gentoo http://gentoo.mirror.solnet.ch " LANG="de_CH" LDFLAGS="-Wl,-O1" LINGUAS="de" 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="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/usr/local/portage" SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage" USE="X a52 aac acpi aiglx alsa amr avahi bash-completion berkdb bluetooth branding bzip2 cairo cddb cdr cli cracklib crypt cups curl daap dbus dri dvd dvdr dvdread eds emacs emboss encode esd evo exif exscalibar fam fftw firefox flac fortran galago gdbm gif gimp gimpprint glitz gnome gnome-keyring gphoto2 gpm gstreamer gtk hal howl iconv idn imap ipod irda isdnlog jpeg kde kdeprefix lcms ldap libnotify logrotate mad mbox midi mikmod mmx mng mp3 mpeg mudflap musicbrainz nautilus ncurses network nfs nls nptl nptlonly nsplugin offensive ogg opengl openmp oss pam pcmcia pcre pdf perl png pop ppds pppd python qt3 qt3support qt4 quicktime readline reflection sasl sdl session spell spl sqlite sse sse2 ssl startup-notification svg sysfs t1lib tcpd theora tiff truetype usb v4l v4l2 vcd visualization vorbis wifi win32codecs x86 xml xorg xosd xulrunner xv xvid xvmc zeroconf zlib" ALSA_CARDS="intel8x0" 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 auth_digest authn_anon authn_dbd 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 dbd deflate dir disk_cache env expires ext_filter file_cache filter headers ident imagemap include info log_config logio mem_cache mime mime_magic negotiation proxy proxy_ajp proxy_balancer proxy_connect proxy_http rewrite setenvif so speling status unique_id userdir usertrack vhost_alias" CAMERAS="ptp2" ELIBC="glibc" INPUT_DEVICES="keyboard mouse evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="de" USERLAND="GNU" VIDEO_CARDS="i810 vesa vga intel" Unset: CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, LC_ALL, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
/me bets a buck on libtool 1.5 being the one to blame
I'd like to see a readelf -d of the library or some other proof of that.
I missed to save the library before I emerged again. But I'm sure that ldd said: libgnomekbd.so.2 => not found.
ldd isn't a good source of information for this. It could very well have shown that another lib in the stack needed the old lib and hasn't been recompiled against the new version yet. It wouldn't be the same problem at all.
I've now downgraded to libgnomekbd-2.22.0 and upgraded again, and I could reproduce the error. (BTW: Isn't it quite unlikely that libgnomekbdui depends on something that depends on libgnomekbd although libgnomekbdui and libgnomekbd are in the same package?) $ readelf -d libgnomekbdui.so Dynamic section at offset 0xed64 contains 67 entries: Tag Type Name/Value 0x00000001 (NEEDED) Shared library: [libgtk-x11-2.0.so.0] 0x00000001 (NEEDED) Shared library: [libatk-1.0.so.0] 0x00000001 (NEEDED) Shared library: [libgnomekbd.so.2] 0x00000001 (NEEDED) Shared library: [libgdk-x11-2.0.so.0] 0x00000001 (NEEDED) Shared library: [libgdk_pixbuf-2.0.so.0] 0x00000001 (NEEDED) Shared library: [libgio-2.0.so.0] 0x00000001 (NEEDED) Shared library: [libpangocairo-1.0.so.0] 0x00000001 (NEEDED) Shared library: [libpangoft2-1.0.so.0] 0x00000001 (NEEDED) Shared library: [libpango-1.0.so.0] 0x00000001 (NEEDED) Shared library: [libcairo.so.2] 0x00000001 (NEEDED) Shared library: [libpixman-1.so.0] 0x00000001 (NEEDED) Shared library: [libfontconfig.so.1] 0x00000001 (NEEDED) Shared library: [libfreetype.so.6] 0x00000001 (NEEDED) Shared library: [libexpat.so.1] 0x00000001 (NEEDED) Shared library: [libglitz-glx.so.1] 0x00000001 (NEEDED) Shared library: [libGL.so.1] 0x00000001 (NEEDED) Shared library: [libXmu.so.6] 0x00000001 (NEEDED) Shared library: [libXt.so.6] 0x00000001 (NEEDED) Shared library: [libSM.so.6] 0x00000001 (NEEDED) Shared library: [libICE.so.6] 0x00000001 (NEEDED) Shared library: [libXi.so.6] 0x00000001 (NEEDED) Shared library: [libXext.so.6] 0x00000001 (NEEDED) Shared library: [libglitz.so.1] 0x00000001 (NEEDED) Shared library: [libpng12.so.0] 0x00000001 (NEEDED) Shared library: [libXrender.so.1] 0x00000001 (NEEDED) Shared library: [libgconf-2.so.4] 0x00000001 (NEEDED) Shared library: [libORBit-2.so.0] 0x00000001 (NEEDED) Shared library: [libgmodule-2.0.so.0] 0x00000001 (NEEDED) Shared library: [libgthread-2.0.so.0] 0x00000001 (NEEDED) Shared library: [libpthread.so.0] 0x00000001 (NEEDED) Shared library: [librt.so.1] 0x00000001 (NEEDED) Shared library: [libdbus-glib-1.so.2] 0x00000001 (NEEDED) Shared library: [libnsl.so.1] 0x00000001 (NEEDED) Shared library: [libdbus-1.so.3] 0x00000001 (NEEDED) Shared library: [libxklavier.so.12] 0x00000001 (NEEDED) Shared library: [libxkbfile.so.1] 0x00000001 (NEEDED) Shared library: [libgobject-2.0.so.0] 0x00000001 (NEEDED) Shared library: [libglib-2.0.so.0] 0x00000001 (NEEDED) Shared library: [libxml2.so.2] 0x00000001 (NEEDED) Shared library: [libz.so.1] 0x00000001 (NEEDED) Shared library: [libm.so.6] 0x00000001 (NEEDED) Shared library: [libX11.so.6] 0x00000001 (NEEDED) Shared library: [libXau.so.6] 0x00000001 (NEEDED) Shared library: [libXdmcp.so.6] 0x00000001 (NEEDED) Shared library: [libdl.so.2] 0x00000001 (NEEDED) Shared library: [libc.so.6] 0x0000000e (SONAME) Library soname: [libgnomekbdui.so.3] 0x0000000c (INIT) 0x52b0 0x0000000d (FINI) 0xdc94 0x00000004 (HASH) 0xf4 0x6ffffef5 (GNU_HASH) 0xf8c 0x00000005 (STRTAB) 0x2690 0x00000006 (SYMTAB) 0x12c0 0x0000000a (STRSZ) 8254 (bytes) 0x0000000b (SYMENT) 16 (bytes) 0x00000003 (PLTGOT) 0xfff4 0x00000002 (PLTRELSZ) 2168 (bytes) 0x00000014 (PLTREL) REL 0x00000017 (JMPREL) 0x4a38 0x00000011 (REL) 0x4998 0x00000012 (RELSZ) 160 (bytes) 0x00000013 (RELENT) 8 (bytes) 0x6ffffffe (VERNEED) 0x4948 0x6fffffff (VERNEEDNUM) 2 0x6ffffff0 (VERSYM) 0x46ce 0x6ffffffa (RELCOUNT) 4 0x00000000 (NULL) 0x0
Created attachment 187681 [details] libgnomekbdui.so.3.0.0
ok I've tested this myself and it indeed relinks to .so.2. That sounds like a crazy libtool issue again.
If anyone could post a full build.log, I could take a look at it to make sure that it is indeed a libtool bug. Thanks
Created attachment 187832 [details] build.log
@Marcel, This bug is getting _really_ tricky to track down. Could I ask you to do the following : - FEATURES="keepwork" emerge -1 libgnomekbd - cd /var/tmp/portage/gnome-base/ - tar -cjf libgnomekbd-2.24.0-workdir.tar.bz2 libgnomekbd-2.24.0/ And try to post this file somewhere public so I can really see what's going on on your system. @Gnome, my hunch now is that elibtoolize is actually breaking a perfectly good tarball... Thanks
Oh, btw, I forgot to mention what the bug is in the build.log. Here's what can be found on line 273, starting at column 343 : -L/usr/lib -L/var/tmp/portage/gnome-base/libgnomekbd-2.24.0/image//usr/lib [...] -lgnomekbd So it's quite obvious why libgnomekbdui.so would link to the installed libgnomekbd.so ... Cheers
Created attachment 187879 [details] workdir after installation
I saw that there are two libgnomekbdui.so in libgnomekbd-2.24.0/libgnomekbd/.libs: libgnomekbdui.so.3.0.0 is linked correctly and libgnomekbdui.so.3.0.0T is not
I have no idea what's going on and why this is happening. If I keep digging, I think I may pull my hair out. @Toolchain, could you guys take a look at this? I pretty much narrowed the bug down to the libtool call, but this is way out of my league. It's the first time I see this happening with a _libtool_2.2_ generated tarball. Any help with this would be greatly appreciated. Thanks
the problem is the relinking step during install. libtool puts a -L path for /usr/lib before $D/usr/lib and so when libgnomekbdui gets relinked, it picks up the old lib in /usr/lib rather than the new one in $D/usr/lib. but libtool does this because it's doing what it's told ... i'm pretty sure this is just an error in libgnomekbd. you might want to apply this patch: --- libgnomekbd/Makefile.am +++ libgnomekbd/Makefile.am @@ -33,9 +33,9 @@ libgnomekbd_la_LIBADD = $(common_LIBADD) libgnomekbdui_la_LDFLAGS = $(common_LDFLAGS) -libgnomekbdui_la_LIBADD = $(common_LIBADD) \ - $(GTK_LIBS) \ - libgnomekbd.la +libgnomekbdui_la_LIBADD = libgnomekbd.la \ + $(common_LIBADD) \ + $(GTK_LIBS) libgnomekbd_la_SOURCES = \ gkbd-desktop-config.c \ since you arent already running autotools, it'll be a lot easier to patch Makefile.in ... the change will be exactly the same since libgnomekbdui_la_LIBADD is copied verbatim from Makefile.am to Makefile.in.
Fixed in overlay. Thanks for reporting.
I also applied this to 2.22 and 2.24 ebuilds without a bump. Thanks for reporting and thanks vapier for the solution.
I think this breaks building with libtool-1.5.26, which is still the stable libtool.
ok I'll have a lookg
re-fixed in 2.24 and 2.26. Thanks.