>>>>> 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

Attachment: pgp0p2G4iqYOl.pgp
Description: PGP signature

Reply via email to