Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 461908

Summary: sys-apps/portage-2.2.0_alpha166 should mark preserved users in preserved-libs
Product: Portage Development Reporter: Dennis Schridde <dschridde+gentoobugs>
Component: CoreAssignee: Portage team <dev-portage>
Status: RESOLVED FIXED    
Severity: enhancement CC: esigra
Priority: Normal Keywords: InVCS
Version: 2.2   
Hardware: All   
OS: Linux   
Whiteboard:
Package list:
Runtime testing required: ---
Bug Depends on:    
Bug Blocks: 240323, 462382    

Description Dennis Schridde 2013-03-16 08:50:05 UTC
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
Comment 1 Zac Medico gentoo-dev 2013-03-16 16:58:13 UTC
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.
Comment 2 Dennis Schridde 2013-03-16 18:58:58 UTC
(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.
Comment 3 Zac Medico gentoo-dev 2013-03-18 23:38:49 UTC
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)
Comment 5 Zac Medico gentoo-dev 2013-03-19 22:42:20 UTC
This is fixed in 2.1.11.56 and 2.2.0_alpha167.