Gentoo Archives: gentoo-dev

From: "Michał Górny" <mgorny@g.o>
To: Alexis Ballier <aballier@g.o>
Cc: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] RFC: USE=libav as replacement for broken || ( libav:= ffmpeg:= )
Date: Tue, 20 Jan 2015 21:44:08
Message-Id: 20150120224352.1796ea17@pomiocik
In Reply to: Re: [gentoo-dev] RFC: USE=libav as replacement for broken || ( libav:= ffmpeg:= ) by Alexis Ballier
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

Replies