Duncan <1i5t5.dun...@cox.net> wrote: > > 1) Foo incorrectly deps on bar > 2) User installs foo with the incorrect dep > 3) Foo maintainer detects the error > 4) Due to dynamic-deps, portage depcleans bar. > 5) Since nothing in the tree needs bar, it is removed. > 6) Finally, foo is removed from tree. > > ** User isn't ready to get rid of foo yet, but user's dep-tree just blew > up
This is the problem of orphaned (without maintained ebuilds) packages: Both, dynamic and static deps break on the similar situation for different reasons. The above describes one problem which you get in this case with dynamic deps; to get a similar problem with static deps, you need a slightly different situation: 1-3 as above, 4 is skipped (due to static deps). 5) bar is split into bar-base and bar-gui. 6) as above (foo is removed from the tree). Now the static deps will keep in bar forever, omitting that the packages in the tree can install bar-base or bar-gui. The user's dep-tree blows up through blockers or merge conflict which cannot be resolved. I repeat once more: For packages no longer maintained in the tree, there is no secure way to treat them always correctly; "no longer maintained" means exactly this. Either the user should remove them, or he should take full responsibility by maintaining them by himself in his overlay. Choosing a strategy (dynamic or static deps) should not concentrate on users who refuse to choose this only reasonable solution - as excpected, they get a solution which works sometimes, but they have to keep the pieces when it breaks, no matter which strategy is decided. > What's worse, the usual trick of digging the ebuild out of vardb and > putting it in the user's overlay to shut portage up and let the user keep > foo doesn't work, because the vardb ebuild has an unsatisfied dep. This is not so bad: The user has to put a corrected ebuild into his overlay and must reemerge the package (currently, the latter could be skipped with dynamic deps). In fact, no matter whether you have static or dynamic deps, this is the only way to cleanly avoid the problems if you want to keep a package installed which is not maintained anymore: *You* must maintain it. There simply is no magic which can avoid this.