When I do emerge -C of a package that have shared libraries needed by someone, those libraries are kept. If I emerge back the same package those libraries are substituted without any error. On many of dev-ada/* packages there are symlink on the /usr/lib directory that point to the true file that is in a subdirectory. During removal of the package both symlink and true file are kept, but emerging back the package portage warns (or error out) saying that the symlinks are not owned by anyone
Please attach a copy of /var/lib/portage/preserved_libs_registry from immediately after the package is unmerged.
Created attachment 512022 [details] preserved_libs_registry I did a cat of the file just before the end of the unmerging and I got { "dev-ada/xmlada:0": [ "dev-ada/xmlada-2017", "7001", [ "/usr/lib/libxmlada_dom.so.18.0w", "/usr/lib/xmlada/xmlada_dom.relocatable/libxmlada_dom.so.18.0w", "/usr/lib/libxmlada_input_sources.so.18.0w", "/usr/lib/xmlada/xmlada_sax.relocatable/libxmlada_sax.so.18.0w", "/usr/lib/libxmlada_sax.so.18.0w", "/usr/lib/xmlada/xmlada_schema.relocatable/libxmlada_schema.so.18.0w", "/usr/lib/libxmlada_unicode.so.18.0w", "/usr/lib/libxmlada_schema.so.18.0w", "/usr/lib/xmlada/xmlada_input.relocatable/libxmlada_input_sources.so.18.0w", "/usr/lib/xmlada/xmlada_unicode.relocatable/libxmlada_unicode.so.18.0w" ] ] } The attached file is instead the final one
This code from bug 406837 removes the symlinks from the preserved_libs_registry: https://gitweb.gentoo.org/proj/portage.git/commit/?id=32d19be14e22ada479963ba8627452f5f2d89b94
Created attachment 512698 [details, diff] PreservedLibsRegistry: fix pruneNonExisting for symlinks to other dirs This patch should fix it. You can apply the patch by saving it in /etc/portage/patches/sys-apps/portage/ and rebuilding portage.
Created attachment 512714 [details, diff] PreservedLibsRegistry: fix pruneNonExisting for symlinks to other dirs Add missing import.
This patch fix my problem. Thanks
The bug has been referenced in the following commit(s): https://gitweb.gentoo.org/proj/portage.git/commit/?id=b9fc8e55f96c17aeece87387226ada1b184d2f77 commit b9fc8e55f96c17aeece87387226ada1b184d2f77 Author: Zac Medico <zmedico@gentoo.org> AuthorDate: 2018-01-02 09:09:34 +0000 Commit: Zac Medico <zmedico@gentoo.org> CommitDate: 2018-01-02 23:02:39 +0000 PreservedLibsRegistry: fix pruneNonExisting for symlinks to other dirs (bug 642672) Fix pruneNonExisting to use the abssymlink function to detect symlinks in the registry that no longer point to a preserved library. The previous code only worked correctly for symlinks pointing to files in the same directory, which failed for packages like dev-ada/xmlada which have symlinks that point into a subdirectory. Fixes: 32d19be14e22 ("pruneNonExisting: handle eselect-opengl symlinks") Tested-by: Tupone Alfredo <tupone@gentoo.org> Bug: https://bugs.gentoo.org/642672 pym/portage/util/_dyn_libs/PreservedLibsRegistry.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)}
Thanks for confirmation!