1 |
This is an idea. |
2 |
Everytime you update python, perl to a major version, you have to run |
3 |
perl-cleaner/python-updater to re-emerge all packages that depend on |
4 |
previous version. The situation is probably similar to kernel |
5 |
packages. When you re-compile and install new kernel, you need to |
6 |
re-emerge kernel packages to make sure it work properly. I'd rather a |
7 |
consistent approach to solve these problems instead seperate updater |
8 |
for separate programs such as python-updater, perl-cleaner. |
9 |
|
10 |
The idea is to use a number to identify compatibility. Those versions |
11 |
which have the same number are expected to work well with other |
12 |
installed programs. If the number is different, then all other depend |
13 |
programs should be re-emerged. |
14 |
|
15 |
When portage merge a package (A) to system, it allow the package to |
16 |
specify a number (or string, whatever) to specify a compatibility |
17 |
number. When other packages (e.g B) that depend on package A are |
18 |
merged, it will keep A's special number in /var/db/pkg. If package A |
19 |
is re-emerged and break compatibility, this number should change. |
20 |
Otherwise, this number remains the same. |
21 |
Those program like perl-cleaner, python-updater may benefit from these |
22 |
numbers. It may check for numbers stored in /var/db/pkg's B and number |
23 |
in A's. If these numbers differ, B should be re-emerged. |
24 |
As for python, all python 2.4's number should be "2.4" and python |
25 |
2.2.x should be "2.2". Perl is similar. As for kernel, the number |
26 |
should be timestamp. Suppose i can feed a kernel ebuild with a config |
27 |
file :), then everytime i change config, re-emege kernel, |
28 |
compatibility number should change. That's the signature for, say, |
29 |
kernel-updater to update all kernel packages. |
30 |
|
31 |
To implement this feature, ebuild should provide a function, say, |
32 |
pkg_version() that return compatibility number. Portage should store |
33 |
this number in /var/db/pkg. Also, when emerge an ebuild, portage |
34 |
should store current compatibility numbers of all direct dependencies. |
35 |
The rest of work is left to perl-cleaner, python-updater, |
36 |
kernel-updater ..., checking compatibility numbers and update packages |
37 |
appropriately. |
38 |
|
39 |
How about this? |
40 |
-- |
41 |
Bi Cờ Lao |
42 |
|
43 |
-- |
44 |
gentoo-portage-dev@g.o mailing list |