Message ID | 1412167450-26406-1-git-send-email-Vincent.Riera@imgtec.com |
---|---|
State | Rejected |
Headers | show |
Hi Vincente, all, On Wed, Oct 1, 2014 at 2:44 PM, Vicente Olivert Riera <Vincent.Riera@imgtec.com> wrote: > Some opencv modules are forced to build statically (for instance the > "ts" module) because they have a line like this one in their > CMakeLists.txt file: > > set(OPENCV_MODULE_TYPE STATIC) > > That makes a static library get installed and also listed in the "Libs:" > line of the pkgconfig file (opencv.pc) along with all the shared > libraries. That can cause link failures in other packages which link to > opencv, for instance the gst1-plugins-bad package. Here is an example of > the link failure: > > CXXLD libgstopencv.la > > *** Warning: Linking the shared library libgstopencv.la against the > *** static library /usr/lib/libopencv_ts.a is not portable! > mips-linux-gnu-g++: error: /usr/lib/libopencv_ts.a: No such file or > directory > make[4]: *** [libgstopencv.la] Error 1 > > The solution is to not list the static library in the "Libs:" line of > the pkgconfig file and add '-lopencv_ts' instead. > > This issue has been reported upstream: > http://code.opencv.org/issues/3931 > > Fixes: > http://autobuild.buildroot.net/results/e8a/e8a859276db34aff87ef181b0cce98916b0afc90/ > > Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com> > --- > package/opencv/opencv.mk | 8 ++++++++ > 1 files changed, 8 insertions(+), 0 deletions(-) > > diff --git a/package/opencv/opencv.mk b/package/opencv/opencv.mk > index 628624a..949dbfd 100644 > --- a/package/opencv/opencv.mk > +++ b/package/opencv/opencv.mk > @@ -247,4 +247,12 @@ endef > OPENCV_POST_INSTALL_TARGET_HOOKS += OPENCV_CLEAN_INSTALL_DATA > endif > > +ifeq ($(BR2_PACKAGE_OPENCV_LIB_TS),y) > +define OPENCV_FIX_PC_FILE_LIBS > + $(SED) '/^Libs:/s/$${exec_prefix}\/lib\/libopencv_ts.a/-lopencv_ts/' \ > + $(STAGING_DIR)/usr/lib/pkgconfig/opencv.pc > +endef > +OPENCV_POST_INSTALL_TARGET_HOOKS += OPENCV_FIX_PC_FILE_LIBS > +endif > + > $(eval $(cmake-package)) Unfortunately, this patch is not enough :-/ After applying this patch, similar errors [1] can be triggered using this defconfig [2]. I'm working on the code generating the opencv.pc file in the opencv repository. So, stay tuned ;-) Regards, [1] http://code.bulix.org/ecmpin-87146 [2] http://code.bulix.org/782t24-87145
Dear Vicente Olivert Riera, On Wed, 1 Oct 2014 13:44:10 +0100, Vicente Olivert Riera wrote: > Some opencv modules are forced to build statically (for instance the > "ts" module) because they have a line like this one in their > CMakeLists.txt file: > > set(OPENCV_MODULE_TYPE STATIC) > > That makes a static library get installed and also listed in the "Libs:" > line of the pkgconfig file (opencv.pc) along with all the shared > libraries. That can cause link failures in other packages which link to > opencv, for instance the gst1-plugins-bad package. Here is an example of > the link failure: > > CXXLD libgstopencv.la > > *** Warning: Linking the shared library libgstopencv.la against the > *** static library /usr/lib/libopencv_ts.a is not portable! > mips-linux-gnu-g++: error: /usr/lib/libopencv_ts.a: No such file or > directory > make[4]: *** [libgstopencv.la] Error 1 > > The solution is to not list the static library in the "Libs:" line of > the pkgconfig file and add '-lopencv_ts' instead. > > This issue has been reported upstream: > http://code.opencv.org/issues/3931 > > Fixes: > http://autobuild.buildroot.net/results/e8a/e8a859276db34aff87ef181b0cce98916b0afc90/ > > Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com> Following the feedback from Samuel on this patch, I have marked it as Rejected in patchwork. Can you work with Samuel to resubmit a proper fix? Thanks a lot! Thomas
Hi Vicente, Thomas, all, On Sun, Mar 8, 2015 at 4:14 PM, Thomas Petazzoni <thomas.petazzoni@free-electrons.com> wrote: > Dear Vicente Olivert Riera, > > On Wed, 1 Oct 2014 13:44:10 +0100, Vicente Olivert Riera wrote: >> Some opencv modules are forced to build statically (for instance the >> "ts" module) because they have a line like this one in their >> CMakeLists.txt file: >> >> set(OPENCV_MODULE_TYPE STATIC) >> >> That makes a static library get installed and also listed in the "Libs:" >> line of the pkgconfig file (opencv.pc) along with all the shared >> libraries. That can cause link failures in other packages which link to >> opencv, for instance the gst1-plugins-bad package. Here is an example of >> the link failure: >> >> CXXLD libgstopencv.la >> >> *** Warning: Linking the shared library libgstopencv.la against the >> *** static library /usr/lib/libopencv_ts.a is not portable! >> mips-linux-gnu-g++: error: /usr/lib/libopencv_ts.a: No such file or >> directory >> make[4]: *** [libgstopencv.la] Error 1 >> >> The solution is to not list the static library in the "Libs:" line of >> the pkgconfig file and add '-lopencv_ts' instead. >> >> This issue has been reported upstream: >> http://code.opencv.org/issues/3931 >> >> Fixes: >> http://autobuild.buildroot.net/results/e8a/e8a859276db34aff87ef181b0cce98916b0afc90/ >> >> Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com> > > Following the feedback from Samuel on this patch, I have marked it as > Rejected in patchwork. Can you work with Samuel to resubmit a proper > fix? I'll respin the opencv series since opencv 2.4.11 is out and contains some patches (especially the one fixing this) from the opencv-2.4.10 series (which still cleanly applies hopefully, so no big deal :-]) Regards,
diff --git a/package/opencv/opencv.mk b/package/opencv/opencv.mk index 628624a..949dbfd 100644 --- a/package/opencv/opencv.mk +++ b/package/opencv/opencv.mk @@ -247,4 +247,12 @@ endef OPENCV_POST_INSTALL_TARGET_HOOKS += OPENCV_CLEAN_INSTALL_DATA endif +ifeq ($(BR2_PACKAGE_OPENCV_LIB_TS),y) +define OPENCV_FIX_PC_FILE_LIBS + $(SED) '/^Libs:/s/$${exec_prefix}\/lib\/libopencv_ts.a/-lopencv_ts/' \ + $(STAGING_DIR)/usr/lib/pkgconfig/opencv.pc +endef +OPENCV_POST_INSTALL_TARGET_HOOKS += OPENCV_FIX_PC_FILE_LIBS +endif + $(eval $(cmake-package))
Some opencv modules are forced to build statically (for instance the "ts" module) because they have a line like this one in their CMakeLists.txt file: set(OPENCV_MODULE_TYPE STATIC) That makes a static library get installed and also listed in the "Libs:" line of the pkgconfig file (opencv.pc) along with all the shared libraries. That can cause link failures in other packages which link to opencv, for instance the gst1-plugins-bad package. Here is an example of the link failure: CXXLD libgstopencv.la *** Warning: Linking the shared library libgstopencv.la against the *** static library /usr/lib/libopencv_ts.a is not portable! mips-linux-gnu-g++: error: /usr/lib/libopencv_ts.a: No such file or directory make[4]: *** [libgstopencv.la] Error 1 The solution is to not list the static library in the "Libs:" line of the pkgconfig file and add '-lopencv_ts' instead. This issue has been reported upstream: http://code.opencv.org/issues/3931 Fixes: http://autobuild.buildroot.net/results/e8a/e8a859276db34aff87ef181b0cce98916b0afc90/ Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com> --- package/opencv/opencv.mk | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-)