>>>>> On Sun, 5 Apr 2015, Michał Górny wrote: > This is quite a Portage patch topic but since devs are known to be > unhappy about any change, I would like to start a bikeshed first.
> The idea is to make repoman/pcheck complain if the newest ebuild > matched by version+slot restriction of dependency atom can't satisfy > the USE dependency, or in other words, whenever the USE restriction > forces lower version of package being installed. > For example, let's assume the following: > a. foo-1 has USE=bar, > b. bar-1 depends on foo[bar], > c. foo-2 no longer has USE=bar. > In the usual scenario this means that bar-1 will silently lock foo > at version 1. Since this is quite implicit, users don't notice > the problem and left unnoticed for a long time, it starts to hurt > bad at some point. Is "foo[bar]" even a legal dependency, if there are versions of foo that don't have the bar flag in their IUSE? (PMS doesn't seem to be entirely clear about this: "... it is an error for a use dependency to be applied to an ebuild which does not have the flag in question in IUSE_REFERENCEABLE.") So yes, make repoman shout about it. Loudly. :) > With the added check, after step (c) above repoman/pcheck would warn > on bar-1 that 'foo[bar]' dependency forces lower version than plain > 'foo'. Since version and slot restrictions will be taken into > consideration, it will possible to silence the warning by using: > <foo-2[bar] > explicitly, if the dependency can't be fixed for foo-2 properly. > While not improving the final result a lot, it will at least give an > explicit '<' or '=' atom that can be easily found with grep when > considering old version removal. > What are your thoughts? How are you going to treat "foo[bar(-)]" and "foo[bar(+)]"? Ulrich
pgp0p2G4iqYOl.pgp
Description: PGP signature