1 |
Dear list, |
2 |
|
3 |
I hope this can be of use to you. I have written a few hundred lines of |
4 |
python which can parse the dependency lines in the metadata cache. Now it is |
5 |
possible to generate a big list of unsatisfied dependencies, to detect |
6 |
packages which will not merge or run. I still haven't tuned the output so |
7 |
that it is totally optimal, I don't think, but it is better than nothing. |
8 |
|
9 |
The program can be run in several ways, and the source still needs tweaking |
10 |
to make it work differently. I have attached the output for a few different |
11 |
scenarios. |
12 |
|
13 |
output-portage.txt : The run on portage. It detects 7 packages which it |
14 |
thinks will not merge (under certain USE flag conditions). I did this to |
15 |
show that the program produces no false-positives on a system we know should |
16 |
be reasonably polished |
17 |
output-prefix-nouse.txt : A run on prefix, ignoring any dependencies pulled |
18 |
in by use flags. Reveals 40 missing packages which will probably prevent 32 |
19 |
packages from merging (including metacity and nautilus) |
20 |
output-prefix-withuse.txt : A run on prefix, looking at all possible use |
21 |
flag combinations (ignoring those listed in use.mask. As darkside was saying |
22 |
on IRC, this could be used to detect new use flags which should obviously go |
23 |
in use.mask). This finds 219 packages which will probably not merge or run, |
24 |
and 347 packages missing from prefix. |
25 |
|
26 |
I know grobian had some idea of making this run nightly (It's nice and fast |
27 |
now, ~5 seconds with a warm disk cache, ~30 to run on the main portage |
28 |
tree). I'm happy to help out however I can to get this happening, just let |
29 |
me know what you need of it. |
30 |
|
31 |
I have various ideas of how it might be improved. |
32 |
|
33 |
* The only part of the dependency detection still missing is the OR-wise |
34 |
dependencies. This should not affect many packages, but does mean that the |
35 |
list is not quite complete. |
36 |
* When a missing dependency is found, it would be pretty easy to go and look |
37 |
at the graph of the required packages from portage, and generate a list of |
38 |
packages which would need to be pulled in to fix it. |
39 |
* Output could be prettier. I don't know exactly what is most useful yet |
40 |
though. |
41 |
|
42 |
Please, let me know what you think. |
43 |
|
44 |
Cheers, |
45 |
|
46 |
- Pete |