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

Submitted by Guo, Yejun on Aug. 7, 2019, 2:44 a.m.

Details

Message ID 1565145867-16610-1-git-send-email-yejun.guo@intel.com
State New
Headers show

Commit Message

Guo, Yejun Aug. 7, 2019, 2:44 a.m.
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@intel.com>
---
 tests/dnn/Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Zhong Li Aug. 16, 2019, 2:20 p.m.
> From: ffmpeg-devel [mailto:ffmpeg-devel-bounces@ffmpeg.org] On Behalf

> Of Guo, Yejun

> Sent: Wednesday, August 7, 2019 10:44 AM

> To: ffmpeg-devel@ffmpeg.org

> Cc: Guo, Yejun <yejun.guo@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@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
Pedro Arthur Aug. 19, 2019, 2:38 p.m.
Em sex, 16 de ago de 2019 às 11:20, Li, Zhong <zhong.li@intel.com> escreveu:
>
> > From: ffmpeg-devel [mailto:ffmpeg-devel-bounces@ffmpeg.org] On Behalf
> > Of Guo, Yejun
> > Sent: Wednesday, August 7, 2019 10:44 AM
> > To: ffmpeg-devel@ffmpeg.org
> > Cc: Guo, Yejun <yejun.guo@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@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

Pushed, thanks.

> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

Patch hide | download patch | download mbox

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