Gentoo Archives: gentoo-dev

From: "Michał Górny" <mgorny@g.o>
To: Andrew Savchenko <bircoph@g.o>
Cc: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] Fw: [gentoo-automated-testing] BROKEN: repository became broken!
Date: Fri, 17 Jun 2016 21:23:10
Message-Id: 20160617232248.5e874e13.mgorny@gentoo.org
In Reply to: Re: [gentoo-dev] Fw: [gentoo-automated-testing] BROKEN: repository became broken! by Andrew Savchenko
1 On Sat, 18 Jun 2016 00:06:10 +0300
2 Andrew Savchenko <bircoph@g.o> wrote:
3
4 > On Fri, 17 Jun 2016 19:42:18 +0200 Michał Górny wrote:
5 > > Hello,
6 > >
7 > > Since this is a major issue involving a lot of packages, and it needs
8 > > to be fixed *quickly*, I'm forwarding the new check results to
9 > > gentoo-dev.
10 > >
11 > > If the below list contains your package, please fix it ASAP. I will
12 > > file bugs for the remaining packages then.
13 > >
14 > > Long story short, using := operator inside || () conditional blocks is
15 > > completely forbidden and triggers random misbehavior inside package
16 > > managers (Portage doesn't do exactly what you think it does).
17 >
18 > Please explain in more details why this is forbidden. man 5 ebuild
19 > contains nothing about this, I can't find anything in PMS also. If
20 > package manager misbehaves this doesn't automatically imply that
21 > ebuilds are broken (and not PM).
22
23 It was explained already. PMS doesn't permit it. It doesn't make *any*
24 sense, so the author didn't even bother explicitly saying it's
25 forbidden. Package manager can't not misbehave if something can't be
26 implemented.
27
28 > > Consider it your priority to either replace the || () block with
29 > > a working solution (e.g. USE flags), or remove the := operator.
30 >
31 > What if package contains:
32 > || ( cat/foo:= cat/bar:= )
33 > That is, it can work with either foo or bar, but needs to be
34 > rebuild on subslot changes.
35
36 No, that's not what it means. It means 'the package can work with
37 either cat/foo:= or cat/bar:=, and you can switch between the two
38 *without* rebuilding'. That's what || () means.
39
40 How are you going to combine that with := that binds it to a specific
41 slot/subslot? This is illogical.
42
43 > Are you suggesting to add USE flags
44 > for each alternative under each || () clause? This is ridiculous
45 > if foo and bar are drop-in replacements of one another. And
46 > dropping := will just break stuff if foo or bar contain more than
47 > single subslot.
48
49 That is the only legitimate option I know if packages are not
50 ABI-compatible. If they are, then you are supposed to create a proper
51 virtual (see libudev for example) rather than assume some := fairies
52 will magically match slots of two different packages.
53
54 But as I said, this was all explained before. More than once. But then,
55 why bother searching... it's better if you complain all the time,
56 and expect others to do a lot of work to satisfy you.
57
58 --
59 Best regards,
60 Michał Górny
61 <http://dev.gentoo.org/~mgorny/>

Replies