1 |
Dnia 2015-01-20, o godz. 09:13:19 |
2 |
Alexis Ballier <aballier@g.o> napisał(a): |
3 |
|
4 |
> > For this reason, I would like to employ the solution used by Exherbo. |
5 |
> > More specifically, use: |
6 |
> > |
7 |
> > libav? ( media-libs/libav:= ) |
8 |
> > !libav? ( media-libs/ffmpeg:= ) |
9 |
> > |
10 |
> > This has two advantages: |
11 |
> > |
12 |
> > 1. gives users more explicit control over whether they want to use |
13 |
> > libav or ffmpeg. Since the two have mutual blockers, right now random |
14 |
> > packages could have tried to force you to switch from one to the |
15 |
> > other. However, most often Portage would just give you terribly |
16 |
> > unreadable blockers. |
17 |
> |
18 |
> This sounds good to me; there are a few things to consider though: |
19 |
> |
20 |
> - Whatever default useflag is enabled, people will have "terribly |
21 |
> unreadable blockers" if they use the other implementation. It is even |
22 |
> worse if you want to follow upstreams in their preferred |
23 |
> implementation: some want libav, others ffmpeg... |
24 |
|
25 |
It's no better than it is now. I don't see any obvious solution, except |
26 |
maybe for fake flags that would shout loudly at users, like USE=libav |
27 |
with matching pkg_pretend() telling to change the global flag. As I see |
28 |
it, this problem has no solution unless we're going to make the two |
29 |
co-installable. |
30 |
|
31 |
> - This is hidden by the proposal but it enforces that a package has |
32 |
> equal visibility of both implementations (while the || requires only |
33 |
> one); libav tends to have a faster code cleaning rate and thus a |
34 |
> slower unmasking rate in gentoo. I agree with that requirement but |
35 |
> this might end-up being unpractical since this means packages |
36 |
> keywording and stabilization will have the slowest pace: mpv has been |
37 |
> masked for 4 months and counting for this reason. |
38 |
|
39 |
It will *at least* make those issues explicit and visible to repoman. |
40 |
Rather than discovered via users hitting impossible dep trees. |
41 |
|
42 |
> - What to do with packages like mplayer that haven't been building |
43 |
> against libav for a year or so ? |
44 |
|
45 |
I don't know. pkg_pretend() like suggested above? |
46 |
|
47 |
> - ffmpeg dep is media-video/ffmpeg:0= (not media-libs but more |
48 |
> importantly the :0=) |
49 |
|
50 |
Those were just proof-of-concept examples, I didn't take care to write |
51 |
them correctly ;P. |
52 |
|
53 |
> > 2. Subslots work correctly. Rebuilds are forced when the chosen |
54 |
> > library is upgraded. Moreover, USE flag change causes a rebuild when |
55 |
> > user decides to change the ffmpeg provider. |
56 |
> |
57 |
> No offense, but this argument is complete crap. You should rather fix |
58 |
> portage bugs than propose to introduce tree-wide changes to hide them... |
59 |
> More precisely: || ( a:= b c:= d ) is perfectly defined (in the "what |
60 |
> it means" sense, not in PMS sense). When the package is built, if 'a' is |
61 |
> satisfied then a (and its subslot) is added to the subslot list of the |
62 |
> package; ditto for c. You end up with a list of subslot deps, that you |
63 |
> can store in vdb or whatever, and use that to decide when to rebuild |
64 |
> the package. |
65 |
|
66 |
Following a specification is not a bug. I could argue here a lot but... |
67 |
just implement it. And return to us when you do. We had an item for |
68 |
this for EAPI 6, and it was removed because nobody volunteered to |
69 |
implement it. In fact, nobody even were able to fully specify what it |
70 |
should do... but if you want to discuss that, please start a new |
71 |
thread, possibly at the -pms list. |
72 |
|
73 |
-- |
74 |
Best regards, |
75 |
Michał Górny |