After a @world update, emerge outputs: !!! existing preserved libs: >>> package: sci-physics/bullet-2.81 * - /usr/lib64/libLinearMath.so.2.80 * used by /usr/bin/blender (media-gfx/blender-2.64a) * - /usr/lib64/libBulletCollision.so.2.80 * used by /usr/bin/blender (media-gfx/blender-2.64a) * - /usr/lib64/libBulletSoftBody.so.2.80 * used by /usr/bin/blender (media-gfx/blender-2.64a) * - /usr/lib64/libBulletDynamics.so.2.80 * used by /usr/bin/blender (media-gfx/blender-2.64a) >>> package: media-libs/openexr-2.0.0 * - /usr/lib64/libIlmImf.so.6 * - /usr/lib64/libIlmImf.so.6.0.0 * used by /usr/bin/blender (media-gfx/blender-2.64a) >>> package: media-libs/ilmbase-2.0.0 * - /usr/lib64/libHalf.so.6 * - /usr/lib64/libHalf.so.6.0.0 * used by /usr/bin/blender (media-gfx/blender-2.64a) * used by /usr/lib64/libIlmImf.so.6 (media-libs/openexr-2.0.0) * used by /usr/lib64/libIlmImf.so.6.0.0 (media-libs/openexr-2.0.0) * - /usr/lib64/libIex.so.6 * - /usr/lib64/libIex.so.6.0.0 * used by /usr/bin/blender (media-gfx/blender-2.64a) * used by /usr/lib64/libIlmImf.so.6 (media-libs/openexr-2.0.0) * used by /usr/lib64/libIlmImf.so.6.0.0 (media-libs/openexr-2.0.0) * - /usr/lib64/libIlmThread.so.6 * - /usr/lib64/libIlmThread.so.6.0.0 * used by /usr/lib64/libIlmImf.so.6 (media-libs/openexr-2.0.0) * used by /usr/lib64/libIlmImf.so.6.0.0 (media-libs/openexr-2.0.0) Use emerge @preserved-rebuild to rebuild packages using these libraries * After world updates, it is important to remove obsolete packages with * emerge --depclean. Refer to `man emerge` for more information. But openexr does not actually depend on the preserved ilmbase libraries anymore, so it will not actually be rebuild: ernie ~ # emerge -a @preserved-rebuild These are the packages that would be merged, in order: Calculating dependencies ... done! [ebuild R #] media-gfx/blender-2.64a What happens seems to be that blender depends on preserved-libs from openexr, which depends on preserved-libs of ilmbase. Hence it would be nice if the openexr libs could be marked in the list as being preserved themselves, so that it becomes immediately clear that the only *actual* user is blender. Reproducible: Always
The PreservedLibraryConsumerSet that implements @preserved-rebuild is smart enough to exclude preserved libraries when searching for packages to rebuild. We can use similar logic to enhance the display_preserved_libs function.
(In reply to comment #1) > The PreservedLibraryConsumerSet that implements @preserved-rebuild is smart > enough to exclude preserved libraries when searching for packages to > rebuild. We can use similar logic to enhance the display_preserved_libs > function. If it is simple, maybe you can skip the display of indirectly preserved libs by default and display something like "There are more. To see them use --verbose" at the end. That might reduce the noise a bit.
This is fixed in git: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=523618c10f92e78221cb1a5b26dfc51e945ad323 With this patch, the output that you posted would look like this instead: >>> package: sci-physics/bullet-2.81 * - /usr/lib64/libLinearMath.so.2.80 * used by /usr/bin/blender (media-gfx/blender-2.64a) * - /usr/lib64/libBulletCollision.so.2.80 * used by /usr/bin/blender (media-gfx/blender-2.64a) * - /usr/lib64/libBulletSoftBody.so.2.80 * used by /usr/bin/blender (media-gfx/blender-2.64a) * - /usr/lib64/libBulletDynamics.so.2.80 * used by /usr/bin/blender (media-gfx/blender-2.64a) >>> package: media-libs/openexr-2.0.0 * - /usr/lib64/libIlmImf.so.6 * - /usr/lib64/libIlmImf.so.6.0.0 * used by /usr/bin/blender (media-gfx/blender-2.64a) >>> package: media-libs/ilmbase-2.0.0 * - /usr/lib64/libHalf.so.6 * - /usr/lib64/libHalf.so.6.0.0 * used by /usr/bin/blender (media-gfx/blender-2.64a) * - /usr/lib64/libIex.so.6 * - /usr/lib64/libIex.so.6.0.0 * used by /usr/bin/blender (media-gfx/blender-2.64a) * - /usr/lib64/libIlmThread.so.6 * - /usr/lib64/libIlmThread.so.6.0.0 * used by /usr/lib64/libIlmImf.so.6 (preserved) * used by /usr/lib64/libIlmImf.so.6.0.0 (preserved)
Fixed up version of the patch: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=8f990c85819c8f5f1c6dba89ab17fa4e122cfba0
This is fixed in 2.1.11.56 and 2.2.0_alpha167.