List Archive: gentoo-soc
A new method, listBrokenLibtoolLibraries, was added to
MissingLibraryConsumerSet which basically checks that all dependencies
in libtool libraries exist on the filesystem. It appears to work well.
LinkageMap.listBrokenDependencies has been rewritten as
LinkageMap.listBrokenBinaries in order to make the method more
readable and more efficient. I implemented a cache within the method
as a class to avoid multiple calls to os.path.isfile and
os.path.realpath for the same file.
I had another idea for filtering packages without using masks.
Starting with the set of binaries in PATH variables and shared library
directories, the providers of those binaries will be added to the set,
and their providers will be added, etc. The resulting set will be the
set of ancestors of the original binaries. This is implemented in
LinkageMap.listProvidersForReachableBinaries (wonderful name, I know),
but so far it has not worked well in testing. It misses binaries in
various paths. For example, on my system it only
finds about 2400 binaries (compare that to over 5000 that were found
using the previous method). This new method is disabled for now until
(if) I can get it to perform as well as LinkageMap.listBrokenBinaries.
Lastly, the files have been integrated into 2.2_rc6, revdep.py is
merged into libs.py, and patches have been added into the repository
(I should have done this long ago :/ ). To test it out, you want to
apply the two patches to /usr/lib/portage/pym/portage/dbapi/vartree.py
and /usr/lib/portage/pym/portage/sets/libs.py in portage-2.2_rc6 and
add the contents of sets.conf in the repository to
/etc/portage/sets.conf. The goods are at
http://repo.or.cz/w/revdep-rebuild-reimplementation.git?a=tree for
anyone interested.
Lucian
|
|