1 |
This week didn't see much movement in the repository due to life |
2 |
happening (moving and lack of internet at new apt). On the plus side, |
3 |
I believe the majority of the work is complete, and I urge everyone to |
4 |
give it a test to help me discover problems. :) |
5 |
|
6 |
I'm happy with the overall results so far. One thing that irks me is |
7 |
the dependence on directory and library masks found in |
8 |
/etc/revdep-rebuild/*. I was really hoping to find a more elegant |
9 |
solution than parsing masks from config files, but all my attempts at |
10 |
a different solution were not successful. Unfortunately, as long as |
11 |
masks are used, there is the potential of false positives for |
12 |
libraries that are not properly masked, which as far as I know is the |
13 |
only major issue. |
14 |
|
15 |
My work over the last week was largely polishing details in |
16 |
docstrings/comments and contemplating final modifications (or future |
17 |
endeavors). During this last week of gsoc, I'm going to (hopefully) |
18 |
improve the performance of LinkageMap and MissingLibraryConsumerSet |
19 |
before the deadline. It was suggested on the gentoo-portage-dev |
20 |
mailing list [1] that efficiency in path comparisons in LinkageMap |
21 |
could be improved by comparing inodes rather than os.path.realpath in |
22 |
python's os.path module, which is what I started to implement |
23 |
recently; however, this appears to require changes outside of the |
24 |
class, which will take time to finalize e.g. during the unmerge |
25 |
process, LinkageMap.rebuild is called after files have been removed |
26 |
but before /var/db/pkg has been correspondingly updated, which is |
27 |
problematic since. I may not get all the kinks worked out of changing |
28 |
LinkageMap before the gsoc deadline, so I'll have something to work on |
29 |
afterwards. :) |
30 |
|
31 |
The attached patches add the library dependency rebuilder as a set, |
32 |
@missing-rebuild, to portage-2.2_rc6. Similar to the --library flag |
33 |
in revdep-rebuild, the user can additionally emerge the set of |
34 |
packages containing consumers of libraries matched by a (python) |
35 |
regular expression; however, until a better solution is found, the |
36 |
regexp must be passed through the LIBRARY environment variable to |
37 |
enable that feature. |
38 |
|
39 |
Attached are patches for |
40 |
/usr/lib/portage/pym/portage/dbapi/vartree.py, |
41 |
/usr/lib/portage/pym/portage/sets/libs.py and |
42 |
/usr/share/portage/config/sets.conf, which can also be found in the |
43 |
repository.[2] After applying the three patches, one can test the set |
44 |
with emerge -p @missing-rebuild. If anyone is brave enough to do so, |
45 |
let me know how it goes! |
46 |
|
47 |
Lucian |
48 |
|
49 |
|
50 |
[1] http://archives.gentoo.org/gentoo-portage-dev/msg_abcbac026ed8670f6dc61bb28be6151e.xml |
51 |
[2] http://repo.or.cz/w/revdep-rebuild-reimplementation.git?a=tree;h=refs/heads/rc1;hb=rc1 |