1 |
Hi all, |
2 |
|
3 |
I've been busy for the past month or two, busy updating some of my |
4 |
systems. In particular, the Yeeloong I have, hasn't seen attention in a |
5 |
very long time. Soon as I update one part however, I find some swath of |
6 |
packages break because of a soname change, anything Python-related stops |
7 |
working because of a move from Python 2.6 to 2.7, or Perl gets updated. |
8 |
|
9 |
Currently we have three packages that handle this separately: |
10 |
- revdep-rebuild (handles packages broken by soname changes, etc) |
11 |
- python-updater (handles Python module rebuilds after upgrading Python) |
12 |
- perl-cleaner (handles Perl module rebuilds after upgrading Perl) |
13 |
|
14 |
My bugbear at the moment, is often a package is broken for more than one |
15 |
reason in my situation, and I find myself having to manhandle the |
16 |
package lists generated by the above three, building each package |
17 |
one-by-one, until I manage to rebuild them all. |
18 |
|
19 |
Or sometimes a package being rebuilt by revdep-rebuild fails because of |
20 |
a Python module, I'll manually merge that module, then play another |
21 |
round of Russian Roulette to see which package gets shot down next. |
22 |
|
23 |
Issues are complicated further when revdep-rebuild or whatever tool, |
24 |
passes the list to Portage, and it fails to calculate dependencies... I |
25 |
just had one before where revdep-rebuild failed because there were no |
26 |
ebuilds to satisfy: |
27 |
|
28 |
sys-devel/gcc:i686-pc-linux-gnu-4.4.5 |
29 |
|
30 |
I've worked around this by picking up the list generated by |
31 |
revdep-rebuild (in /var/cache/... ), and using a bash while read loop to |
32 |
pass each package individually to emerge for building. |
33 |
|
34 |
How well is this cleanup trio working? It works, but I think it could |
35 |
improve. |
36 |
|
37 |
The thing I see is that all three are fixing essentially the same |
38 |
problem: package breakage due to a change in the dependencies. I think |
39 |
there is scope for a single package, or better yet, Portage extension, |
40 |
that handles all three cases. |
41 |
|
42 |
Concept: |
43 |
|
44 |
Tool will be written in separate modules to handle: |
45 |
- ELF soname change breakage |
46 |
- Python module updates |
47 |
- Perl module updates |
48 |
- other checks that can cause broken packages... |
49 |
|
50 |
Each check is run in order, generating a list of packages that should be |
51 |
rebuilt. |
52 |
|
53 |
Having generated this list, it is then evaluated to sort the candidate |
54 |
packages into a suitable order for rebuilding. |
55 |
|
56 |
This is then passed to the package manager... three modes for rebuilds: |
57 |
- All-in-one-hit rebuild: What the tools presently do now. |
58 |
- One-by-one rebuild: For each package in the list, build each one |
59 |
individually... useful if Portage coughs up an error otherwise |
60 |
- Dump the list: allows people to handle it with their own tools |
61 |
|
62 |
I might see if I can rough something up, but that's what I'm thinking |
63 |
of. It has been an irritation for me for quite some time. |
64 |
|
65 |
Thoughts, |
66 |
-- |
67 |
Stuart Longland (aka Redhatter, VK4MSL) .'''. |
68 |
Gentoo Linux/MIPS Cobalt and Docs Developer '.'` : |
69 |
. . . . . . . . . . . . . . . . . . . . . . .'.' |
70 |
http://dev.gentoo.org/~redhatter :.' |
71 |
|
72 |
I haven't lost my mind... |
73 |
...it's backed up on a tape somewhere. |