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