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

Reply via email to