Gentoo Archives: gentoo-soc

From: Lucian Poston <lucianposton@×××××.com>
To: gentoo-soc@l.g.o
Cc: Marius Mauch <google-soc@××××××.de>
Subject: [gentoo-soc] Progress Report - Revdep-rebuild
Date: Mon, 11 Aug 2008 23:12:28
Message-Id: c4cdc1420808111612q5fb9ebauc1aa56c58f388d3@mail.gmail.com
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

Attachments

File name MIME type
libs.py.2.2_rc6.patch text/x-patch
vartree.py.2.2_rc6.patch text/x-patch
sets.conf.2.2_rc6.patch text/x-patch