1 |
The following patchs add a library dependency rebuilder as a package |
2 |
set, @missing-rebuild, to portage-2.2_rc6. Similar to the --library |
3 |
flag in revdep-rebuild, the user can additionally emerge the set of |
4 |
packages containing consumers of libraries matched by a (python) |
5 |
regular expression; however, until a better solution is found, the |
6 |
regexp must be passed through the LIBRARY environment variable to |
7 |
enable that feature. |
8 |
|
9 |
Known issues: I expect some false positives. I've inserted hard coded |
10 |
directory/library masks for those I've found. I noticed a situation |
11 |
that required a second emerge due to a provider package satisfying 3 |
12 |
conditions: 1) the package is installed and an updated version is |
13 |
available in its slot, 2) the updated version is in the set due to a |
14 |
dependency of another package (or it may contains a broken binary), |
15 |
and 3) a consumer package of a library within the updated package is |
16 |
emerged before the updated dependency is emerged, causing a package to |
17 |
be compiled against the old library before the library version |
18 |
changes. I guess that if a package is already installed, it is not |
19 |
necessarily placed before its consumer packages in the merge order. |
20 |
|
21 |
Attached are patches for pym/portage/dbapi/vartree.py, |
22 |
pym/portage/sets/libs.py and /usr/share/portage/config/sets.conf. |
23 |
These can also be found in the project's repository: |
24 |
http://repo.or.cz/w/revdep-rebuild-reimplementation.git?a=tree;h=refs/heads/rc1;hb=refs/heads/rc1 |
25 |
|
26 |
I warmly welcome all feedback, in particular any suggestions to remove |
27 |
the necessity of directory and library masks in /etc/revdep-rebuild/*, |
28 |
which I've been unable to entirely avoid. |
29 |
|
30 |
Lucian |