1 |
On Tue, 20 Jan 2015 22:43:52 +0100 |
2 |
Michał Górny <mgorny@g.o> wrote: |
3 |
|
4 |
> Dnia 2015-01-20, o godz. 09:13:19 |
5 |
> Alexis Ballier <aballier@g.o> napisał(a): |
6 |
> |
7 |
> > > For this reason, I would like to employ the solution used by |
8 |
> > > Exherbo. More specifically, use: |
9 |
> > > |
10 |
> > > libav? ( media-libs/libav:= ) |
11 |
> > > !libav? ( media-libs/ffmpeg:= ) |
12 |
> > > |
13 |
> > > This has two advantages: |
14 |
> > > |
15 |
> > > 1. gives users more explicit control over whether they want to use |
16 |
> > > libav or ffmpeg. Since the two have mutual blockers, right now |
17 |
> > > random packages could have tried to force you to switch from one |
18 |
> > > to the other. However, most often Portage would just give you |
19 |
> > > terribly unreadable blockers. |
20 |
> > |
21 |
> > This sounds good to me; there are a few things to consider though: |
22 |
> > |
23 |
> > - Whatever default useflag is enabled, people will have "terribly |
24 |
> > unreadable blockers" if they use the other implementation. It is |
25 |
> > even worse if you want to follow upstreams in their preferred |
26 |
> > implementation: some want libav, others ffmpeg... |
27 |
> |
28 |
> It's no better than it is now. I don't see any obvious solution, |
29 |
> except maybe for fake flags that would shout loudly at users, like |
30 |
> USE=libav with matching pkg_pretend() telling to change the global |
31 |
> flag. As I see it, this problem has no solution unless we're going to |
32 |
> make the two co-installable. |
33 |
|
34 |
There is indeed no solution I can think of but it is a bit worse than |
35 |
what it is now at first: People that wanted to chose put their |
36 |
implementation in world and were done. With this solution, such people |
37 |
will have to adapt their useflags in make.conf. Don't get me wrong: I'm |
38 |
all for changing it as you suggest (or remi suggests), I'm just saying |
39 |
users might have a hard time finding out what those portage blockers |
40 |
mean and how to fix it. In the long term your proposal is a better |
41 |
solution but the first time will be painful IMHO. |
42 |
|
43 |
|
44 |
> > - This is hidden by the proposal but it enforces that a package has |
45 |
> > equal visibility of both implementations (while the || requires |
46 |
> > only one); libav tends to have a faster code cleaning rate and thus |
47 |
> > a slower unmasking rate in gentoo. I agree with that requirement but |
48 |
> > this might end-up being unpractical since this means packages |
49 |
> > keywording and stabilization will have the slowest pace: mpv has |
50 |
> > been masked for 4 months and counting for this reason. |
51 |
> |
52 |
> It will *at least* make those issues explicit and visible to repoman. |
53 |
> Rather than discovered via users hitting impossible dep trees. |
54 |
|
55 |
They're usually not impossible, but my point was rather: Is this |
56 |
something everyone wants ? |
57 |
|
58 |
|
59 |
> > - What to do with packages like mplayer that haven't been building |
60 |
> > against libav for a year or so ? |
61 |
> |
62 |
> I don't know. pkg_pretend() like suggested above? |
63 |
|
64 |
Me neither. pkg_pretend will be too intrusive into packages I think |
65 |
(and there are quite a few). I remember something that enabled useflags |
66 |
based on if you had a given package installed. |
67 |
/me runs |
68 |
|
69 |
> > > 2. Subslots work correctly. Rebuilds are forced when the chosen |
70 |
> > > library is upgraded. Moreover, USE flag change causes a rebuild |
71 |
> > > when user decides to change the ffmpeg provider. |
72 |
> > |
73 |
> > No offense, but this argument is complete crap. You should rather |
74 |
> > fix portage bugs than propose to introduce tree-wide changes to |
75 |
> > hide them... More precisely: || ( a:= b c:= d ) is perfectly |
76 |
> > defined (in the "what it means" sense, not in PMS sense). When the |
77 |
> > package is built, if 'a' is satisfied then a (and its subslot) is |
78 |
> > added to the subslot list of the package; ditto for c. You end up |
79 |
> > with a list of subslot deps, that you can store in vdb or whatever, |
80 |
> > and use that to decide when to rebuild the package. |
81 |
> |
82 |
> Following a specification is not a bug. I could argue here a lot |
83 |
> but... just implement it. And return to us when you do. We had an |
84 |
> item for this for EAPI 6, and it was removed because nobody |
85 |
> volunteered to implement it. In fact, nobody even were able to fully |
86 |
> specify what it should do... but if you want to discuss that, please |
87 |
> start a new thread, possibly at the -pms list. |
88 |
|
89 |
Above is a simple algorithm that works in all cases. What you're asking |
90 |
me to do is "go beg pms list to allow something they don't want because |
91 |
the subslot/:= spec was poorly written and thought of". I already gave |
92 |
you the solution, don't count on me for the administrative work :=) |
93 |
(NB: everytime I tried to improve/fix something in pms I failed |
94 |
miserably, so that I have no other choice but giving up on this, check |
95 |
bgo) |
96 |
|
97 |
Moreover, when I bumped ffmpeg subslot, portage did rebuild all those |
98 |
packages with || ( := := ) deps properly for me. So, you'll have to be |
99 |
a bit more specific on what goes wrong than 'broken || ( libav:= |
100 |
ffmpeg:= )'... |
101 |
|
102 |
Alexis. |