I am using a multilib profile with SYMLINK_LIB=no. Now my /lib and /usr/lib have 32-bit libraries, while /lib64 and /usr/lib64 have 64-bit ones. However all "fake" dynamic lib scripts in /usr/lib installed by app-emulation/emul-linux-x86-baselibs are pointing to /lib32, which does not exist. app-emulation/wine for example fails to compile with an "unable to find /lib32/libz.so.1" message. > cat /usr/lib/libz.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 ( elf32-i386 ) GROUP ( /lib32/libz.so.1 ) Other files are the same: > q list -e app-emulation/emul-linux-x86-baselibs | grep /usr/lib/[^/]*.so$ | xargs file | awk -F: '/ASCII/ {print $1}' | xargs -n1 sed -ne '$p' GROUP ( /lib32/libacl.so.1 ) GROUP ( /lib32/libbz2.so.1 ) GROUP ( /lib32/libncurses.so.5 ) GROUP ( /lib32/libz.so.1 ) GROUP ( /lib32/libreadline.so.6 ) GROUP ( /lib32/libwrap.so ) GROUP ( /lib32/libss.so.2 ) GROUP ( /lib32/libpam.so.0 ) GROUP ( /lib32/libattr.so.1 ) GROUP ( /lib32/libhistory.so.6 ) GROUP ( /lib32/libcrack.so.2 ) GROUP ( /lib32/libkeyutils.so.1 ) GROUP ( /lib32/libgpm.so.1 ) GROUP ( /lib32/libuuid.so.1 ) GROUP ( /lib32/libncursesw.so.5 ) GROUP ( /lib32/libtirpc.so.1 ) GROUP ( /lib32/libpamc.so.0 ) GROUP ( /lib32/libblkid.so.1 ) GROUP ( /lib32/libpwdb.so.0 ) GROUP ( /lib32/libcom_err.so.2 ) GROUP ( /lib32/libpcre.so.1 ) GROUP ( /lib32/libe2p.so.2 ) GROUP ( /lib32/libmount.so.1 ) GROUP ( /lib32/libpam_misc.so.0 ) GROUP ( /lib32/libext2fs.so.2 )
Which profile is this? Something that Gentoo provides, or your own custom profile? Please attach the output of "emerge --info".
After thinking further, it seems that app-emulation/emul-linux-x86-* ebuild are fundamentally incompatible with your profile: 1. All pkgconfig files are going to contain paths with /lib32 or /usr/lib32 in them; 2. All plugins (e.g. for alsa, gdk-pixbuf, pango, pulseaudio, etc.) will be loaded (or in your case, will fail to load) from hard-coded directories under /usr/lib32; 3. Various binaries provided in emul-linux-x86-* have rpaths under /usr/lib32 Fixing all of that would be a lot of work and the result would be very fragile. If you want to change the filesystem layout from Gentoo's defaults, instead of pre-compiled binaries from app-emulation/emul-linux-x86-*, you will probably need to use native multilib ebuilds (you will need to switch to unstable ACCEPT_KEYWORDS and set ABI_X86="32 64" in make.conf).
(In reply to Alexandre Rostovtsev from comment #2) > After thinking further, it seems that app-emulation/emul-linux-x86-* ebuild > are fundamentally incompatible with your profile: > > 1. All pkgconfig files are going to contain paths with /lib32 or /usr/lib32 > in them; > 2. All plugins (e.g. for alsa, gdk-pixbuf, pango, pulseaudio, etc.) will be > loaded (or in your case, will fail to load) from hard-coded directories > under /usr/lib32; > 3. Various binaries provided in emul-linux-x86-* have rpaths under /usr/lib32 > > Fixing all of that would be a lot of work and the result would be very > fragile. > > If you want to change the filesystem layout from Gentoo's defaults, instead > of pre-compiled binaries from app-emulation/emul-linux-x86-*, you will > probably need to use native multilib ebuilds (you will need to switch to > unstable ACCEPT_KEYWORDS and set ABI_X86="32 64" in make.conf). Okay, you reasoning makes sense and you are offering a reasonable alternative. Thanks. Feel free to reject this ticket. Regarding the profile (just to wrap it up); it inherits the following: default/linux/amd64/13.0/desktop/gnome/systemd features/multilib And the custom part looks like this: > grep -T . *.* make.defaults :SYMLINK_LIB="no" package.mask :# Kill everything that uses ruby20 - too broken package.mask :=dev-lang/ruby-2.0* package.mask :=virtual/rubygems-6 package.mask :=virtual/ruby-ssl-3 package.use.mask :sys-apps/acl -nfs use.mask :ruby_targets_ruby20 And I am using paludis so "emerge --info" would be irrelevant.
(In reply to Alexandre Rostovtsev from comment #2) > > If you want to change the filesystem layout from Gentoo's defaults, instead > of pre-compiled binaries from app-emulation/emul-linux-x86-*, you will > probably need to use native multilib ebuilds (you will need to switch to > unstable ACCEPT_KEYWORDS and set ABI_X86="32 64" in make.conf). I just want to confirm that the native multilib works really well. Thank you! I did have to keyword a lot of packages, and I also had to unmask the abi_x86_32 flag for even more packages (they had it masked in profiles/default/linux/amd64/13.0/package.use.stable.mask). But once that was done, it worked GREAT! Thanks.