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

Marvin Scholz epirat07 at gmail.com
Sun Feb 3 17:57:33 EET 2019



On 3 Feb 2019, at 16:24, Marton Balint wrote:

> 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?

I agree that when explicitly enabling something, it should be enabled
or cause an error, this is what all build systems I have worked with
do and definitely would be the behavior I would expect from FFmpegs
configure script.

>
>> 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
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


More information about the ffmpeg-devel mailing list