1 |
Ian Stakenvicius <axs@g.o> wrote: |
2 |
> |
3 |
> Keeping every single dependency around and valid just so that pkg_*rm |
4 |
> can completely cleanly seems like so much overkill, though.. |
5 |
|
6 |
It is not only overkill, it would require a merging strategy which |
7 |
AFAIK portage currently does not use and which would lead to blockers: |
8 |
|
9 |
If you really want to guarantee that all := dependencies are |
10 |
satisfied in the moment of unmerging, you need to do the following. |
11 |
|
12 |
Assume foo depends on bar:=. Now if bar gets an upgrade, first |
13 |
foo must be unmerged, then bar must be upgraded, and then |
14 |
foo must be reemerged. |
15 |
|
16 |
If you have a circular dependency of := chains, an upgrade |
17 |
is impossible forever: You would manually have to break this |
18 |
chain by setting some useflags exactly in the same way as |
19 |
you did when you manages to install the chain for the first time. |
20 |
Otherwise, you will just miss the possibly avilable updates |
21 |
forever. |
22 |
|
23 |
The problems if you really want to guarantee that all |
24 |
dependencies are still installed when unmerging a package |
25 |
are hardly reasonably solvable. |
26 |
|
27 |
One should better make a rule that if an ebuild has such a |
28 |
special requirement that it needs a certain version for |
29 |
being unmerged, it must block all other versions |
30 |
(one could make a syntax for the := case or even disallow |
31 |
this case for such ebuilds) instead of letting the PM jump |
32 |
through hoops for the "normal" cases. |