[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.
Regards,
Marton
More information about the ffmpeg-devel
mailing list