[FFmpeg-devel] [PATCH] configure: request explicitly enabled components

Marton Balint cus at passwd.hu
Sun Feb 3 17:24:00 EET 2019

On Sun, 3 Feb 2019, Carl Eugen Hoyos wrote:

> 2019-01-28 2:00 GMT+01:00, Marton Balint <cus at passwd.hu>:
>> If we enable a component but a dependant library is disabled, then the
>> enabled
>> component get silently disabled. Requesting all explicitly enabled
>> components
>> allows configure to fail and show the missing dependencies instead of
>> ignoring
>> our request.
>> For example if libdav1d is not availble ./configure
>> --enable-decoder=libdav1d
>> succeeds but the libdav1d decoder will not be enabled. After the patch the
>> configure line will fail with the following message:
>> ERROR: libdav1d_decoder requested, but not all dependencies are satisfied:
>> libdav1d
>> Signed-off-by: Marton Balint <cus at passwd.hu>
>> ---
>>  configure | 1 +
>>  1 file changed, 1 insertion(+)
>> diff --git a/configure b/configure
>> index e1412352fa..1f6c6a7311 100755
>> --- a/configure
>> +++ b/configure
>> @@ -3881,6 +3881,7 @@ for opt do
>>              list=$(filter "$name" $list)
>>              [ "$list" = "" ] && warn "Option $opt did not match anything"
>>              $action $list
>> +            test $action = enable && request $list
> I strongly suspect that this will break regression tests.

You mean fate with different configure options? I didn't find a fate 
instance explicity enabling a certain component. Even if some previously 
used configure commands error out, that is good IMHO because the user will 
know that a certain component won't be included in the build.

> What exactly does this fix?
> If you don't "--enable-libdav1d", you cannot get libdav1d.

That is the point. If I tell configure that I want libdav1d decoder (as in 
--enable-decoder=libdav1d), it should either give it to me or error out. 
It should NOT silently disregard my request. You see the discrepancy:

--enable-libdav1d error out if libdav1d is not available
--enable-decoder=libdav1d does not error out if the libdav1d decoder is 
not available

Also dependencies are often not trivial. Consider that I want the 
blackframe filter:

./configure --enable-filter=blackframe

This succeeds yet it does not enable the filter. Why? Because the filter 
is GPL. How should I know why it got silently disabled if configure does 
not error out?

> Also, configure's console output shows what was
> enabled.

That does not tell you why a component got disabled. It is also 
unreasonable to ask the user to always verify that everything stayed in 
which he explicitly enabled.


More information about the ffmpeg-devel mailing list