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/>
pgpm4YpILHzBo.pgp
Description: OpenPGP digital signature