On Sat, Jul 26, 2014 at 12:14 PM, Ciaran McCreesh <ciaran.mccre...@googlemail.com> wrote: > On Sat, 26 Jul 2014 16:05:58 +0000 (UTC) > Martin Vaeth <mar...@mvath.de> wrote: >> Ciaran McCreesh <ciaran.mccre...@googlemail.com> wrote: >> > Your solution fails spectacularly in the following ways: > >> > * Introduction of :=3D dependencies >> >> This is not a "minor update" in dependencies >> and thus requires a revbump. > > So what is a "minor update", and what are you planning to do to prevent > what you call "useless rebuilds" when := dependencies are introduced? >
Picking this to illustrate my point, not to endorse a particular implementation here... This is what I'm getting at when I argue that we don't need a solution to every possible problem. If we only accept solutions that handle conditional dependencies, IUSE changes, new eclass inherits, dep additions, dep removals, etc, then it does seem likely to me that we'll never find a good solution. On the other hand, if we can come up with something that RELIABLY fixes things for 3/4ths of these, then that is probably good enough. I'm not certain at this point that even such a partial solution doesn't exist, but the fact that any particular solution doesn't handle every possible case isn't automatically a reason to reject it. Preventing unnecessary rebuilds is a worthwhile goal, even if we can't get 100% of the way there. If you don't care whatsoever about unnecessary rebuilds then we can simplify things tremendously - just have the package manager default to --emptytree on all operations. Sure, it might cause a "few" unnecessary ebuilds but whether your package manager attempts to support dynamic deps or not you'll certainly have an up-to-date dependency cache. Rich