[FFmpeg-devel] [PATCH V2] FATE/dnn: let fate/dnn tests depend on ffmpeg static libraries

Li, Zhong zhong.li at intel.com
Fri Aug 16 17:20:36 EEST 2019


> From: ffmpeg-devel [mailto:ffmpeg-devel-bounces at ffmpeg.org] On Behalf
> Of Guo, Yejun
> Sent: Wednesday, August 7, 2019 10:44 AM
> To: ffmpeg-devel at ffmpeg.org
> Cc: Guo, Yejun <yejun.guo at intel.com>
> Subject: [FFmpeg-devel] [PATCH V2] FATE/dnn: let fate/dnn tests depend on
> ffmpeg static libraries
> 
> background:
> DNN (deep neural network) is a sub module of libavfilter, and FATE/dnn is
> unit test for the DNN module, one unit test for one dnn layer.
> The unit tests are not based on the APIs exported by libavfilter, they just
> directly call into the functions within DNN submodule.
> 
> There is an issue when run the following command:
> build$ ../ffmpeg/configure --disable-static --enable-shared make make
> fate-dnn-layer-pad
> 
> And part of error message:
> tests/dnn/dnn-layer-pad-test.o: In function `test_with_mode_symmetric':
> /work/media/ffmpeg/build/src/tests/dnn/dnn-layer-pad-test.c:73:
> undefined reference to `dnn_execute_layer_pad'
> 
> The root cause is that function dnn_execute_layer_pad is a LOCAL symbol in
> libavfilter.so, and so the linker could not find it when build
> dnn-layer-pad-test.
> To check it, just run: readelf -s libavfilter/libavfilter.so | grep dnn
> 
> So, add dependency in fate/dnn Makefile with ffmpeg static libraries.
> This is the same method used in fate/checkasm
> 
> Signed-off-by: Guo, Yejun <yejun.guo at intel.com>
> ---
>  tests/dnn/Makefile | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/tests/dnn/Makefile b/tests/dnn/Makefile index b2e6680..0e050ea
> 100644
> --- a/tests/dnn/Makefile
> +++ b/tests/dnn/Makefile
> @@ -4,8 +4,8 @@ DNNTESTOBJS  :=
> $(DNNTESTOBJS:%=$(DNNTESTSDIR)%)
> $(DNNTESTPROGS:%=$(DNNTESTSDIR)  DNNTESTPROGS :=
> $(DNNTESTPROGS:%=$(DNNTESTSDIR)/%-test$(EXESUF))
>  -include $(wildcard $(DNNTESTOBJS:.o=.d))
> 
> -$(DNNTESTPROGS): %$(EXESUF): %.o $(FF_DEP_LIBS)
> -	$(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $(filter %.o,$^)
> $(FF_EXTRALIBS) $(ELIBS)
> +$(DNNTESTPROGS): %$(EXESUF): %.o $(FF_STATIC_DEP_LIBS)
> +	$(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $(filter %.o,$^)
> +$(FF_STATIC_DEP_LIBS) $(ELIBS)
> 
>  testclean::
>  	$(RM) $(addprefix $(DNNTESTSDIR)/,$(CLEANSUFFIXES)
> *-test$(EXESUF))
> --
> 2.7.4

LGTM && Verified

IMHO this is a high priority patch since currently FATE is broken now if build with dynamic link


More information about the ffmpeg-devel mailing list