diff mbox series

[v2,2/2] appstream: add qt6 PACKAGECONFIG option

Message ID 20240731152858.3340807-2-marc.ferland@sonatest.com
State Accepted, archived
Commit 95b9227eabec5ace9c6a69695758b8f9c37ffa75
Headers show
Series [v2,1/2] appstream: refresh patch | expand

Commit Message

Marc Ferland July 31, 2024, 3:28 p.m. UTC
From: Marc Ferland <marc.ferland@sonatest.com>

This will enable building the libAppStreamQt library. This is required
by the 'discover' application from the meta-kde layer.

Signed-off-by: Marc Ferland <marc.ferland@sonatest.com>
---
Changes in v2:
 - Add signed-off-by line in PACKAGE_PREFIX patch

 .../0002-Do-not-build-qt-tests.patch          | 34 +++++++++++++
 ...IX_DIR-in-qt-cmake-AppStreamQtConfig.patch | 51 +++++++++++++++++++
 .../appstream/appstream_1.0.3.bb              |  9 ++++
 3 files changed, 94 insertions(+)
 create mode 100644 meta/recipes-support/appstream/appstream/0002-Do-not-build-qt-tests.patch
 create mode 100644 meta/recipes-support/appstream/appstream/0003-Fix-PACKAGE_PREFIX_DIR-in-qt-cmake-AppStreamQtConfig.patch

Comments

Ross Burton Aug. 5, 2024, 11:40 a.m. UTC | #1
On 31 Jul 2024, at 16:28, Marc Ferland via lists.openembedded.org <marc.ferland=gmail.com@lists.openembedded.org> wrote:
> +Fixes the following build failure:
> +
> +| In file included from /home/marc/mnt/yocto-kde/build/tmp/work/x86_64-linux/appstream-native/1.0.3/recipe-sysroot-native/usr/include/QtTest/QtTest:11,
> +|                  from ../AppStream-1.0.3/qt/tests/asqt-pool-test.cpp:21:
> +| ../AppStream-1.0.3/qt/tests/asqt-pool-test.cpp: In function ‘int main(int, char**)’:
> +| ../AppStream-1.0.3/qt/tests/asqt-pool-test.cpp:117:1: error: expected primary-expression before ‘)’ token
> +|   117 | QTEST_MAIN(PoolReadTest)
> +|       | ^~~~~~~~~~
> +
> +Upstream-Status: Inappropriate [oe-specific]

Is this actually OE-specific, and if so how? It smells like this is a genuine problem in the test code.

Ross
Marc Ferland Aug. 6, 2024, 1:53 a.m. UTC | #2
On Mon, Aug 5, 2024 at 7:40 AM Ross Burton <Ross.Burton@arm.com> wrote:
>
> On 31 Jul 2024, at 16:28, Marc Ferland via lists.openembedded.org <marc.ferland=gmail.com@lists.openembedded.org> wrote:
> > +Fixes the following build failure:
> > +
> > +| In file included from /home/marc/mnt/yocto-kde/build/tmp/work/x86_64-linux/appstream-native/1.0.3/recipe-sysroot-native/usr/include/QtTest/QtTest:11,
> > +|                  from ../AppStream-1.0.3/qt/tests/asqt-pool-test.cpp:21:
> > +| ../AppStream-1.0.3/qt/tests/asqt-pool-test.cpp: In function ‘int main(int, char**)’:
> > +| ../AppStream-1.0.3/qt/tests/asqt-pool-test.cpp:117:1: error: expected primary-expression before ‘)’ token
> > +|   117 | QTEST_MAIN(PoolReadTest)
> > +|       | ^~~~~~~~~~
> > +
> > +Upstream-Status: Inappropriate [oe-specific]
>
> Is this actually OE-specific, and if so how? It smells like this is a genuine problem in the test code.
>
To be honest, I thought that since this was test code, disabling it
would be the easiest thing to do... but it does bring in one more
patch to the layer.

I just opened a ticket upstream: https://github.com/ximion/appstream/issues/644

I'll update my patch accordingly.

Marc
diff mbox series

Patch

diff --git a/meta/recipes-support/appstream/appstream/0002-Do-not-build-qt-tests.patch b/meta/recipes-support/appstream/appstream/0002-Do-not-build-qt-tests.patch
new file mode 100644
index 0000000000..9a725ab8e4
--- /dev/null
+++ b/meta/recipes-support/appstream/appstream/0002-Do-not-build-qt-tests.patch
@@ -0,0 +1,34 @@ 
+From a7721cf4f412fbe18fe15127bea7b1457b99f684 Mon Sep 17 00:00:00 2001
+From: Marc Ferland <marc.ferland@sonatest.com>
+Date: Fri, 26 Jul 2024 15:41:00 -0400
+Subject: [PATCH] Do not build qt/tests
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Fixes the following build failure:
+
+| In file included from /home/marc/mnt/yocto-kde/build/tmp/work/x86_64-linux/appstream-native/1.0.3/recipe-sysroot-native/usr/include/QtTest/QtTest:11,
+|                  from ../AppStream-1.0.3/qt/tests/asqt-pool-test.cpp:21:
+| ../AppStream-1.0.3/qt/tests/asqt-pool-test.cpp: In function ‘int main(int, char**)’:
+| ../AppStream-1.0.3/qt/tests/asqt-pool-test.cpp:117:1: error: expected primary-expression before ‘)’ token
+|   117 | QTEST_MAIN(PoolReadTest)
+|       | ^~~~~~~~~~
+
+Upstream-Status: Inappropriate [oe-specific]
+
+Signed-off-by: Marc Ferland <marc.ferland@sonatest.com>
+---
+ qt/meson.build | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/qt/meson.build b/qt/meson.build
+index 1909bcf7..c3ca20fb 100644
+--- a/qt/meson.build
++++ b/qt/meson.build
+@@ -148,5 +148,3 @@ install_data (
+ 
+ # end of Qt version loop
+ endforeach
+-
+-subdir('tests/')
diff --git a/meta/recipes-support/appstream/appstream/0003-Fix-PACKAGE_PREFIX_DIR-in-qt-cmake-AppStreamQtConfig.patch b/meta/recipes-support/appstream/appstream/0003-Fix-PACKAGE_PREFIX_DIR-in-qt-cmake-AppStreamQtConfig.patch
new file mode 100644
index 0000000000..e522a92e14
--- /dev/null
+++ b/meta/recipes-support/appstream/appstream/0003-Fix-PACKAGE_PREFIX_DIR-in-qt-cmake-AppStreamQtConfig.patch
@@ -0,0 +1,51 @@ 
+From c36b6226479a20ebd910f355deddb9d5c7571213 Mon Sep 17 00:00:00 2001
+From: Marc Ferland <marc.ferland@sonatest.com>
+Date: Mon, 29 Jul 2024 09:35:51 -0400
+Subject: [PATCH] Fix PACKAGE_PREFIX_DIR in qt/cmake/AppStreamQtConfig.cmake.in
+
+PACKAGE_PREFIX_DIR points to an invalid directory. This breaks
+librairies linking to appstream-qt.
+
+For example, when building the 'discover' package from the meta-kde
+layer we get the following build error:
+
+| CMake Error in libdiscover/CMakeLists.txt:
+|   Imported target "AppStreamQt" includes non-existent path
+|
+|     "/path/to/build/tmp/work/core2-64-poky-linux/discover/6.1.3/recipe-sysroot/include/"
+|
+|   in its INTERFACE_INCLUDE_DIRECTORIES.  Possible reasons include:
+|
+|   * The path was deleted, renamed, or moved to another location.
+|
+|   * An install or uninstall procedure did not complete successfully.
+|
+|   * The installation package was faulty and references files it does not
+|   provide.
+
+The path above should've been:
+
+    /path/to/build/tmp/work/core2-64-poky-linux/discover/6.1.3/recipe-sysroot/usr/include/
+
+instead of:
+
+    /path/to/build/tmp/work/core2-64-poky-linux/discover/6.1.3/recipe-sysroot/include/
+
+Upstream-Status: Inappropriate [upstream ticket https://github.com/ximion/appstream/issues/643]
+
+Signed-off-by: Marc Ferland <marc.ferland@sonatest.com>
+---
+ qt/cmake/AppStreamQtConfig.cmake.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/qt/cmake/AppStreamQtConfig.cmake.in b/qt/cmake/AppStreamQtConfig.cmake.in
+index 63df65f2..5ab2d0ec 100644
+--- a/qt/cmake/AppStreamQtConfig.cmake.in
++++ b/qt/cmake/AppStreamQtConfig.cmake.in
+@@ -1,5 +1,5 @@
+ 
+-get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../../" ABSOLUTE)
++get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE)
+ 
+ # Use original install prefix when loaded through a "/usr move"
+ # cross-prefix symbolic link such as /lib -> /usr/lib.
diff --git a/meta/recipes-support/appstream/appstream_1.0.3.bb b/meta/recipes-support/appstream/appstream_1.0.3.bb
index 625e85a0ae..092d85d1a0 100644
--- a/meta/recipes-support/appstream/appstream_1.0.3.bb
+++ b/meta/recipes-support/appstream/appstream_1.0.3.bb
@@ -27,6 +27,8 @@  GIDOCGEN_MESON_OPTION = "apidocs"
 SRC_URI = " \
 	https://www.freedesktop.org/software/appstream/releases/AppStream-${PV}.tar.xz \
 	file://0001-remove-hardcoded-path.patch \
+	file://0002-Do-not-build-qt-tests.patch \
+	file://0003-Fix-PACKAGE_PREFIX_DIR-in-qt-cmake-AppStreamQtConfig.patch \
 "
 SRC_URI[sha256sum] = "5ab6f6cf644e7875a9508593962e56bb430f4e59ae0bf03be6be7029deb6baa4"
 
@@ -36,9 +38,16 @@  PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
 
 PACKAGECONFIG[systemd] = "-Dsystemd=true,-Dsystemd=false,systemd"
 PACKAGECONFIG[stemming] = "-Dstemming=true,-Dstemming=false,libstemmer"
+PACKAGECONFIG[qt6] = "-Dqt=true,-Dqt=false,qtbase"
 
 FILES:${PN} += "${datadir}"
 
 EXTRA_OEMESON += "${@bb.utils.contains('GI_DATA_ENABLED', 'True', '-Dvapi=true', '-Dvapi=false', d)}"
 
 BBCLASSEXTEND = "native"
+
+# Fix meson not finding the Qt build tools in cross-compilation
+# setups. See: https://github.com/mesonbuild/meson/issues/13018
+do_configure:prepend:class-target() {
+    export PATH=${STAGING_DIR_NATIVE}${libexecdir}:$PATH
+}