On Sat, 18 Jun 2016 00:06:10 +0300
Andrew Savchenko <birc...@gentoo.org> wrote:

> On Fri, 17 Jun 2016 19:42:18 +0200 Michał Górny wrote:
> > Hello,
> > 
> > Since this is a major issue involving a lot of packages, and it needs
> > to be fixed *quickly*, I'm forwarding the new check results to
> > gentoo-dev.
> > 
> > If the below list contains your package, please fix it ASAP. I will
> > file bugs for the remaining packages then.
> > 
> > Long story short, using := operator inside || () conditional blocks is
> > completely forbidden and triggers random misbehavior inside package
> > managers (Portage doesn't do exactly what you think it does).  
> 
> Please explain in more details why this is forbidden. man 5 ebuild
> contains nothing about this, I can't find anything in PMS also. If
> package manager misbehaves this doesn't automatically imply that
> ebuilds are broken (and not PM).

It was explained already. PMS doesn't permit it. It doesn't make *any*
sense, so the author didn't even bother explicitly saying it's
forbidden. Package manager can't not misbehave if something can't be
implemented.

> > Consider it your priority to either replace the || () block with
> > a working solution (e.g. USE flags), or remove the := operator.  
> 
> What if package contains:
>   || ( cat/foo:= cat/bar:= )
> That is, it can work with either foo or bar, but needs to be
> rebuild on subslot changes.

No, that's not what it means. It means 'the package can work with
either cat/foo:= or cat/bar:=, and you can switch between the two
*without* rebuilding'. That's what || () means.

How are you going to combine that with := that binds it to a specific
slot/subslot? This is illogical.

> Are you suggesting to add USE flags
> for each alternative under each || () clause? This is ridiculous
> if foo and bar are drop-in replacements of one another. And
> dropping := will just break stuff if foo or bar contain more than
> single subslot.

That is the only legitimate option I know if packages are not
ABI-compatible. If they are, then you are supposed to create a proper
virtual (see libudev for example) rather than assume some := fairies
will magically match slots of two different packages.

But as I said, this was all explained before. More than once. But then,
why bother searching... it's better if you complain all the time,
and expect others to do a lot of work to satisfy you.

-- 
Best regards,
Michał Górny
<http://dev.gentoo.org/~mgorny/>

Attachment: pgpm4YpILHzBo.pgp
Description: OpenPGP digital signature

Reply via email to