Tom Wijsman <tom...@gentoo.org> wrote: > > Useless triggers are the problem; why are the rev bumps needed, why are > dependencies forgotten, ...?
It is not only about *forgotten* dependencies: It is whenever something is restructured, a new project appears, etc. Some examples: 1. Package foo/bar splits into foo/bar-base and foo/bar-gui. Should all the packages depending on foo/bar be recompiled, just because the dependency must be relaxed? 2. Package foo/bar-base and foo/bar-gui merge to foo/bar. In this case the dependency needs to be strengthened, but technically a recompile should not be necessary (perhaps there are exceptions where it is necessary for newer versions, but these should be rare; in any case, the developer should know what is "correct"). 3. Package foo/bar was forked to foo/baz, both providing the same ABI. Maybe a new virtual is introduced in gentoo, or maybe the alternative dependency should be directly added in all ebuilds. Absolutely no reason to force a rebuild, but with static dependencies and without a bump, the user is not able to change to the new foo/baz. 4. Package foo/bar was forked to foo/baz, both providing the same API but not the same ABI. This is a problematic situation, but it is so with and without dynamic/static dependencies: Even if a user once reemerges a package depending on it, he may nevertheless later replace foo/bar by foo/baz and gets a broken system despite all dependencies are satisfied all of the time. Actually, 4. is an example why subslotting can *never* fully replace revdep-rebuild. Although 4. touches also a different problem, actually the triggering of a rebuild in case 4., just because a new alternative is available, is completely useless. (*If* one wants to fix 4., one must introduce an extended dependency syntax, and this would have problems with virtuals etc.) Probably there are many more examples than 1.-4, but I hope that the point becomes clear: Whenever packages split, merge, or can substitute each other, dependency changes are necessary, and rebuilds caused by these are unnecessary. Unfortunately, such things happen *very* frequently... Nobody is to blame for this; the PM just should be ready to deal with such situations without unnecessary rebuilds, be it by dynamic deps or by a mechanism to avoid recompilation.