Created attachment 399156 [details] Console output / build log Hi, I had dev-java/oracle-jre-bin-1.8.0.40 installed before bug 543182 (not sure what they have changed). After a normal world update, I run "emerge --depclean" which cleaned up a lot of packages on my system. Now I am in a preserved libs loop: <<< See the attachment >>> ...now I am stuck in a preserved lib loop. Packages like - x11-libs/cairo - media-libs/harfbuzz - media-gfx/graphite2 - ... are not installed (I think they were installed but removed by `emerge --depclean`) # emerge --info Portage 2.2.18 (python 3.4.3-final-0, default/linux/amd64/13.0, gcc-4.9.2, glibc-2.20-r2, 3.19.1-gentoo x86_64) ================================================================= System uname: Linux-3.19.1-gentoo-x86_64-Intel-R-_Core-TM-_i7-3770K_CPU_@_3.50GHz-with-gentoo-2.2 KiB Mem: 4026204 total, 3253256 free KiB Swap: 1048572 total, 1048572 free Timestamp of repository gentoo: Tue, 17 Mar 2015 17:45:01 +0000 Timestamp of repository poly-c: Mon, 16 Mar 2015 23:00:50 +0000 sh bash 4.3_p33-r2 ld GNU ld (Gentoo 2.25 p1.0) 2.25 app-shells/bash: 4.3_p33-r2::gentoo dev-java/java-config: 2.2.0::gentoo dev-lang/perl: 5.20.2::gentoo dev-lang/python: 2.7.9-r2::gentoo, 3.4.3::gentoo dev-util/cmake: 3.1.0::gentoo dev-util/pkgconfig: 0.28-r2::gentoo sys-apps/baselayout: 2.2::gentoo sys-apps/openrc: 0.13.11::gentoo sys-apps/sandbox: 2.6-r1::gentoo sys-devel/autoconf: 2.69::gentoo sys-devel/automake: 1.14.1::gentoo, 1.15::gentoo sys-devel/binutils: 2.25::gentoo sys-devel/gcc: 4.9.2::gentoo sys-devel/gcc-config: 1.8::gentoo sys-devel/libtool: 2.4.6-r1::gentoo sys-devel/make: 4.1-r1::gentoo sys-kernel/linux-headers: 3.19::gentoo (virtual/os-headers) sys-libs/glibc: 2.20-r2::gentoo
I was going to try this out but then fell into a very similar hole by mistake. I had both icedtea and icedtea-bin installed. I removed icedtea and was left with this. !!! existing preserved libs: >>> package: dev-java/icedtea-7.2.5.4 * - /usr/lib64/icedtea7/jre/lib/amd64/libjava.so * used by /opt/icedtea-bin-7.2.5.3/jre/lib/amd64/headless/libmawt.so (dev-java/icedtea-bin-7.2.5.3) * used by /opt/icedtea-bin-7.2.5.3/jre/lib/amd64/xawt/libmawt.so (dev-java/icedtea-bin-7.2.5.3) * - /usr/lib64/icedtea7/jre/lib/amd64/libawt.so * used by /opt/icedtea-bin-7.2.5.3/jre/lib/amd64/headless/libmawt.so (dev-java/icedtea-bin-7.2.5.3) * used by /opt/icedtea-bin-7.2.5.3/jre/lib/amd64/xawt/libmawt.so (dev-java/icedtea-bin-7.2.5.3) * - /usr/lib64/icedtea7/jre/lib/amd64/libverify.so It's even more stupid in this case because all three of those files are also provided by icedtea-bin anyway! I'm thinking that the preserved lib checks need to exclude directories given in QA_PREBUILT. I'll try to look into this more soon.
Another way around this that already works would be to add RESTRICT="preserve-libs". It's a bit more heavy-handed than my earlier suggestion but is still appropriate for Oracle and icedtea-bin. Unfortunately the Oracle ebuilds have already just been bumped and marked stable. I'll think about whether I could add this line anyway. icedtea-bin is due a bump so I'll definitely add it there ASAP.
(In reply to James Le Cuirot from comment #1) > !!! existing preserved libs: > >>> package: dev-java/icedtea-7.2.5.4 > * - /usr/lib64/icedtea7/jre/lib/amd64/libjava.so > * used by /opt/icedtea-bin-7.2.5.3/jre/lib/amd64/headless/libmawt.so > (dev-java/icedtea-bin-7.2.5.3) > * used by /opt/icedtea-bin-7.2.5.3/jre/lib/amd64/xawt/libmawt.so > (dev-java/icedtea-bin-7.2.5.3) > * - /usr/lib64/icedtea7/jre/lib/amd64/libawt.so > * used by /opt/icedtea-bin-7.2.5.3/jre/lib/amd64/headless/libmawt.so > (dev-java/icedtea-bin-7.2.5.3) > * used by /opt/icedtea-bin-7.2.5.3/jre/lib/amd64/xawt/libmawt.so > (dev-java/icedtea-bin-7.2.5.3) > * - /usr/lib64/icedtea7/jre/lib/amd64/libverify.so Using patchelf --set-rpath could allow these links to resolve properly without triggering preserve-libs.
This is fixed in 1.8.0.51. I was going to backport the fix to 1.7 but we need to drop this as it's vulnerable. Note that the X flag has changed to awt to better reflect what it actually does. Also note the new javafx flag.