Dnia 2015-04-05, o godz. 19:32:01 Ulrich Mueller <u...@gentoo.org> napisał(a):
> >>>>> 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. :) Well, I would interpret the PMS here as: '[foo?]' restricts to foo-1 even with USE=-foo. Though Portage disagrees here, I guess :). > > > 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(+)]"? Well, bar(-) restricts the possible version as well, so it desires a warning. As for bar(+), it's often the actual solution so no warning for that. -- Best regards, Michał Górny
pgpxpg_buF2T3.pgp
Description: OpenPGP digital signature