[oe] [meta-qt5][jansa/qt5-5.2.0] libQt5*.la references OE build directories

Jacob Kroon jacob.kroon at gmail.com
Sat Jan 18 10:03:09 UTC 2014


Hi Andreas and Martin,

On Tue, Jan 14, 2014 at 1:03 AM, Jacob Kroon <jacob.kroon at gmail.com> wrote:

>
> On Mon, 13 Jan 2014, Martin Jansa wrote:
>
>  On Mon, Jan 13, 2014 at 01:58:25AM +0100, Jacob Kroon wrote:
>>
>>> Hi,
>>>
>>> I'm seeing what I believe is a problem with the *.la files in the Qt5
>>> dev-packages.
>>> The files references paths in my OE build environment, like so:
>>>
>>> ...
>>> # Libraries that this one depends upon.
>>> dependency_libs='-lQt5Gui
>>> -L/home/jkroon/Projects/oe-devel/build/tmp-eglibc/
>>> sysroots/wandboard-solo/usr/lib
>>> -lQt5Core -lpthread '
>>> ...
>>> # Directory that this library needs to be installed in:
>>> libdir='/home/jkroon/Projects/oe-devel/build/tmp-eglibc/
>>> sysroots/wandboard-solo/usr'
>>> ...
>>>
>>> I noticed this since my Qt5 autotools project wouldn't link properly when
>>> using the SDK, unless I first removed all libQt5*.la files.
>>>
>>> I'm not quite sure where to look for the problem so any pointers would be
>>> appreciated.
>>>
>>
>> Probably bad rebase on my side, please compare
>>
>> mkspecs/features/qt_module.prf in 5.1.1 and 5.2.0
>>
>> changed in:
>> https://github.com/meta-qt5/meta-qt5/blob/master/recipes-
>> qt/qt5/qtbase-5.1.1/0008-qt_module-Fix-pkgconfig-replacement.patch
>> and
>> https://github.com/meta-qt5/meta-qt5/blob/jansa/qt5-5.2.0/
>> recipes-qt/qt5/qtbase/0005-qt_module-Fix-pkgconfig-replacement.patch
>>
>> Or better in meta-qt5's qtbase repo:
>> https://github.com/meta-qt5/qtbase/blob/b5.1.1/mkspecs/
>> features/qt_module.prf
>> https://github.com/meta-qt5/qtbase/blob/b5.2.0/mkspecs/
>> features/qt_module.prf
>>
>>
> I tried building Qt 5.1.1 from master again, the .la-files do look better,
> "libdir" looks correct (taken from libQt5Svg.la):
>
> <snip>
>
> # Directory that this library needs to be installed in:
> libdir='/usr/lib'
> </snip>
>
> however
>
> <snip>
>
> dependency_libs='-lQt5Gui -L/home/jkroon/Projects/oe-
> devel/build/tmp-eglibc/sysroots/wandboard-solo/usr/lib -lQt5Core
> -lpthread '
> </snip>
>
> Dunno wether this is a problem or not, I never tried building the project
> with 5.1.1 using the SDK.
>
> Will hopefully have some time tomorrow to look at the links you sent.
>
> Thanks,
>
> Jacob
>

I'm trying to get the .la-files for Qt5 dev-packages correct.

What I've come up with so far is attached in the patch (to be applied in
top of "jansa-qt5-5.2.0", b8a236df79c25802c1f2eb2525e8a534e73e608e)

With the patch applied I can still build both an image and an SDK, and also
the resulting SDK can be used to build my QT5 autotools projects. But I get
these warnings when building for instance "qtxmlpatterns":

WARNING: QA Issue: qtxmlpatterns: The compile log indicates that host
include and/or library paths were used.

With my patch applied,
recipes-qt/qt5/qtbase/0005-qt_module-Fix-pkgconfig-replacement.patch looks
like this:

--- qtbase-opensource-src-5.2.0.orig/mkspecs/features/qt_module.prf
+++ qtbase-opensource-src-5.2.0/mkspecs/features/qt_module.prf
@@ -135,30 +135,36 @@ load(qt_installs)
     rplbase = $$dirname(_QMAKE_SUPER_CACHE_)/[^/][^/]*
 else: \
     rplbase = $$MODULE_BASE_OUTDIR
-include_replace.match = $$rplbase/include
-include_replace.replace = $$[QT_INSTALL_HEADERS/raw]
-include_replace.CONFIG = path
+pkgconfig_include_replace.match = $$rplbase/include
+pkgconfig_include_replace.replace = "\$$\\{includedir}"
+pkgconfig_include_replace.CONFIG = path
+pkgconfig_lib_replace.match = $$rplbase/lib
+pkgconfig_lib_replace.replace = "\$$\\{libdir}"
+pkgconfig_lib_replace.CONFIG = path
 lib_replace.match = $$rplbase/lib
 host_build: \
     lib_replace.replace = $$[QT_HOST_LIBS]
 else: \
     lib_replace.replace = $$[QT_INSTALL_LIBS/raw]
 lib_replace.CONFIG = path
-QMAKE_PRL_INSTALL_REPLACE += include_replace lib_replace
+QMAKE_PRL_INSTALL_REPLACE += lib_replace

 unix|win32-g++* {
    CONFIG += create_pc
    QMAKE_PKGCONFIG_LIBDIR = $$lib_replace.replace
-   QMAKE_PKGCONFIG_INCDIR = $$include_replace.replace
+   QMAKE_PKGCONFIG_INCDIR = $$[QT_INSTALL_HEADERS/raw]
    QMAKE_PKGCONFIG_CFLAGS = -I${includedir}/$$MODULE_INCNAME
    QMAKE_PKGCONFIG_DESTDIR = pkgconfig
-   QMAKE_PKGCONFIG_INSTALL_REPLACE += include_replace lib_replace
+   QMAKE_PKGCONFIG_INSTALL_REPLACE += pkgconfig_include_replace
pkgconfig_lib_replace
 }

 unix {
+   lafile_replace.match = "-L$$[QT_INSTALL_LIBS/raw]"
+   lafile_replace.replace = ""
+   lafile_replace.CONFIG = path
    CONFIG += create_libtool explicitlib
    QMAKE_LIBTOOL_LIBDIR = $$lib_replace.replace
-   QMAKE_LIBTOOL_INSTALL_REPLACE += include_replace lib_replace
+   QMAKE_LIBTOOL_INSTALL_REPLACE += lib_replace lafile_replace
 }

The lafile_replace does the substitution "-L/usr/lib" -> "". Maybe this is
needed for the .prl-files aswell ? Is the QMAKE_PRL_BUILD_DIR needed at all
? With all the sed:ing going on, that path looks phony to me...

>From native "sysroots/x86_64-linux/usr/lib/libQt5Xml.prl":
QMAKE_PRL_BUILD_DIR =
/home/jkroon/Projects/oe-devel/build/tmp-eglibc/work/x86_64-linux/qtbase-native/5.2.0-r0/build/src/xml
QMAKE_PRL_LIBS =
-L/home/jkroon/Projects/oe-devel/build/tmp-eglibc/sysroots/x86_64-linux/usr/lib
-lQt5Core -lpthread

>From native "sysroots/x86_64-linux/usr/lib/libQt5Xml.la":
dependency_libs=' -lQt5Core -lpthread '
libdir='/home/jkroon/Projects/oe-devel/build/tmp-eglibc/sysroots/x86_64-linux/usr/lib'

>From target "sysroots/wandboard-solo/usr/lib/libQt5Xml.prl":
QMAKE_PRL_BUILD_DIR =
/home/jkroon/Projects/oe-devel/build/tmp-eglibc/work/cortexa9hf-vfp-neon-mx6-oe-linux-gnueabi/qtbase/5.2.0-r0/build/src/xml
QMAKE_PRL_LIBS = -L/usr/lib -lQt5Core -lpthread

>From target "sysroots/wandboard-solo/usr/lib/libQt5Xml.la":
dependency_libs=' -lQt5Core -lpthread '
libdir='/usr/lib'

  -- Jacob (very confused)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: fix-la-files.patch
Type: text/x-patch
Size: 4037 bytes
Desc: not available
URL: <http://lists.openembedded.org/pipermail/openembedded-devel/attachments/20140118/a64fd199/attachment-0002.bin>


More information about the Openembedded-devel mailing list