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