Gentoo Archives: gentoo-dev

From: "Michał Górny" <mgorny@g.o>
To: gentoo-dev@l.g.o
Cc: Wes <anomaly256@×××××.com>
Subject: [gentoo-dev] Quick RFC: USE=libav vs FFMPEG_IMPL=libav|ffmpeg
Date: Mon, 02 Feb 2015 14:06:52
Message-Id: 20150202150640.51b6e951@pomiot.lan
1 Hi, everyone.
2
3 Just after the news item got published, user Wes mailed me with
4 a suggestion. While I think someone mentioned it earlier
5 in the bikesheds over ffmpeg, I have completely forgotten about it
6 and now I'd like to reconsider it. For this reason, I've reverted
7 the news item while it's still fresh and p.masked the revbumps.
8
9 The idea is that instead of having USE=libav (that's tangential to
10 USE=ffmpeg and confusing) to use a USE_EXPAND like FFMPEG_IMPL taking
11 either ffmpeg or libav. Now, why...
12
13
14 First of all, one of the key points in my news item is that users need
15 to keep consistent state of USE=libav throughout all the packages. Wes
16 pointed out that users are more likely to consider a dedicated variable
17 (USE_EXPAND) in make.conf global than a regular USE flag. Which makes
18 it more likely for them to end up in terrible state full of blockers.
19
20 Secondly, it avoids the confusion of having USE=ffmpeg and USE=libav
21 being used for completely different purposes. This is not only
22 confusing by users who need to set USE='ffmpeg libav' if they want
23 libav, but also confusing to developers who may end up using the two
24 flags to signify the two implementations. Think of the mess of USE='gtk
25 gtk3'.
26
27 FFMPEG_IMPL feels like a natural extension of USE=ffmpeg. USE=ffmpeg
28 tells to use ffmpeg or a replacement, FFMPEG_IMPL tells what will
29 exactly get used. Much less confusion.
30
31 Thirdly, this opens space for having more than two different
32 implementations in the future without having to reset the system. Maybe
33 this isn't something worth considering but -- as I see it -- the first
34 big fork starts a precedent, and both current versions suck :).
35
36 Fourthly, there's the case of implicity. Right now USE=-libav implies
37 ffmpeg. Therefore, USE=-* implies ffmpeg as well -- which is kinda
38 weird since it's supposedly the non-default. With this solution, USE=-*
39 will result in explicit error asking user to select an implementation.
40
41 As for the downsides:
42
43 1. there is a number of non-meaningful flag combinations.
44 FFMPEG_IMPL='', FFMPEG_IMPL='ffmpeg libav'. They will have to be
45 blocked via REQUIRED_USE='^^ ( ffmpeg_impl_ffmpeg ffmpeg_impl_libav )'.
46
47 2. There is some more work to get ebuilds correct (REQUIRED_USE).
48 However, this is a minor issue compared to the potential mistakes in
49 interpretation of USE='ffmpeg' and USE='libav'.
50
51
52 What are your thoughts?
53
54 --
55 Best regards,
56 Michał Górny

Replies