aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuli Piippo <samuli.piippo@qt.io>2022-06-02 04:36:49 +0000
committerSamuli Piippo <samuli.piippo@qt.io>2022-06-09 08:20:49 +0000
commit08352251e6f37b7dbae17e3293df5dcb812585b9 (patch)
tree2ae3c63d632a0c63010c49492b54d1b7294cadd0
parentf9b57ed9d727bd648062dccc848a3ce067d42cb9 (diff)
SDK: make sure initial qt host path is absolute
__qt_toolchain_initial_qt_host_path is assigned to QT_HOST_PATH and then to CMAKE_FIND_ROOT_PATH. Problems occurs if that path is relative. CMake doesn't do relative path resolving by default in find_package, when doing sub-prefix checking between find root path and prefix path. Patch the qt.toochain.cmake so that it always uses absolute path for __qt_toolchain_initial_qt_host_path, but make it still based on its own location. Fixes: QTBUG-103818 Change-Id: I1cce126c243c017b1cecd14a0fd616cb0328fe6d Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit ea541e308f90109e0a07a055fd8e955d271c7b88) Reviewed-by: Pasi Petäjäjärvi <pasi.petajajarvi@qt.io>
-rw-r--r--recipes-qt/qt6/qtbase/0004-Do-not-use-QT_TOOLCHAIN_RELOCATABLE-paths-in-qt.tool.patch29
-rw-r--r--recipes-qt/qt6/qtbase/0004-Fix-qt.toolchain.cmake-for-SDK-use.patch47
-rw-r--r--recipes-qt/qt6/qtbase_git.bb3
3 files changed, 48 insertions, 31 deletions
diff --git a/recipes-qt/qt6/qtbase/0004-Do-not-use-QT_TOOLCHAIN_RELOCATABLE-paths-in-qt.tool.patch b/recipes-qt/qt6/qtbase/0004-Do-not-use-QT_TOOLCHAIN_RELOCATABLE-paths-in-qt.tool.patch
deleted file mode 100644
index 7aa108e..0000000
--- a/recipes-qt/qt6/qtbase/0004-Do-not-use-QT_TOOLCHAIN_RELOCATABLE-paths-in-qt.tool.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From c15033fd4df14b08fc28ec8da61c990801c7e411 Mon Sep 17 00:00:00 2001
-From: Samuli Piippo <samuli.piippo@qt.io>
-Date: Thu, 16 Dec 2021 13:10:48 +0200
-Subject: [PATCH] Do not use QT_TOOLCHAIN_RELOCATABLE paths in
- qt.toolchain.cmake
-
-The calculated paths for QT_TOOLCHAIN_RELOCATABLE paths point to
-host sysroot which must not be used when cross-compiling other projects.
-
-Upstream-Status: Inappropriate [embedded specific]
----
- cmake/qt.toolchain.cmake.in | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/cmake/qt.toolchain.cmake.in b/cmake/qt.toolchain.cmake.in
-index 5e9acd66b8..451de99633 100644
---- a/cmake/qt.toolchain.cmake.in
-+++ b/cmake/qt.toolchain.cmake.in
-@@ -68,8 +68,8 @@ get_filename_component(QT_TOOLCHAIN_RELOCATABLE_CMAKE_DIR "${CMAKE_CURRENT_LIST_
- # Instead of collapsing the search prefix (which is the case when one is a subdir of the other),
- # it concatenates them creating an invalid path. Workaround it by setting the root path to the
- # Qt install prefix, and the prefix path to the lib/cmake subdir.
--list(PREPEND CMAKE_PREFIX_PATH "${QT_TOOLCHAIN_RELOCATABLE_CMAKE_DIR}")
--list(PREPEND CMAKE_FIND_ROOT_PATH "${QT_TOOLCHAIN_RELOCATABLE_INSTALL_PREFIX}")
-+#list(PREPEND CMAKE_PREFIX_PATH "${QT_TOOLCHAIN_RELOCATABLE_CMAKE_DIR}")
-+#list(PREPEND CMAKE_FIND_ROOT_PATH "${QT_TOOLCHAIN_RELOCATABLE_INSTALL_PREFIX}")
-
- # Let CMake load our custom platform modules.
- # CMake-provided platform modules take precedence.
diff --git a/recipes-qt/qt6/qtbase/0004-Fix-qt.toolchain.cmake-for-SDK-use.patch b/recipes-qt/qt6/qtbase/0004-Fix-qt.toolchain.cmake-for-SDK-use.patch
new file mode 100644
index 0000000..81caf15
--- /dev/null
+++ b/recipes-qt/qt6/qtbase/0004-Fix-qt.toolchain.cmake-for-SDK-use.patch
@@ -0,0 +1,47 @@
+From e3f59a24add346248842a8f28971621469c9161f Mon Sep 17 00:00:00 2001
+From: Samuli Piippo <samuli.piippo@qt.io>
+Date: Thu, 16 Dec 2021 13:10:48 +0200
+Subject: [PATCH] Fix qt.toolchain.cmake for SDK use
+
+Set initial host path based on the location of the qt.toolchain.cmake file.
+This helps us avoid need to relocate the file in SDK.
+
+The calculated paths for QT_TOOLCHAIN_RELOCATABLE paths point to
+host sysroot which must not be used when cross-compiling other projects.
+
+Change-Id: I52aa2a10d2a13fd27d6bf8b4af6dc1833c7a286a
+Upstream-Status: Inappropriate [embedded specific]
+---
+ cmake/qt.toolchain.cmake.in | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/cmake/qt.toolchain.cmake.in b/cmake/qt.toolchain.cmake.in
+index c565e923ff..a917c65d89 100644
+--- a/cmake/qt.toolchain.cmake.in
++++ b/cmake/qt.toolchain.cmake.in
+@@ -70,8 +70,8 @@ get_filename_component(QT_TOOLCHAIN_RELOCATABLE_CMAKE_DIR "${CMAKE_CURRENT_LIST_
+ # Instead of collapsing the search prefix (which is the case when one is a subdir of the other),
+ # it concatenates them creating an invalid path. Workaround it by setting the root path to the
+ # Qt install prefix, and the prefix path to the lib/cmake subdir.
+-list(PREPEND CMAKE_PREFIX_PATH "${QT_TOOLCHAIN_RELOCATABLE_CMAKE_DIR}")
+-list(PREPEND CMAKE_FIND_ROOT_PATH "${QT_TOOLCHAIN_RELOCATABLE_INSTALL_PREFIX}")
++#list(PREPEND CMAKE_PREFIX_PATH "${QT_TOOLCHAIN_RELOCATABLE_CMAKE_DIR}")
++#list(PREPEND CMAKE_FIND_ROOT_PATH "${QT_TOOLCHAIN_RELOCATABLE_INSTALL_PREFIX}")
+
+ # Let CMake load our custom platform modules.
+ # CMake-provided platform modules take precedence.
+@@ -156,10 +156,10 @@ endif()
+ # Set up QT_HOST_PATH and do sanity checks.
+ # A host path is required when cross-compiling but optional when doing a native build.
+ set(__qt_toolchain_host_path_required "@qt_host_path_required@")
+-set(__qt_toolchain_initial_qt_host_path
+- "@qt_host_path_absolute@")
+-set(__qt_toolchain_initial_qt_host_path_cmake_dir
+- "@qt_host_path_cmake_dir_absolute@")
++get_filename_component(__qt_toolchain_initial_qt_host_path
++ "${CMAKE_CURRENT_LIST_DIR}/../../.." ABSOLUTE)
++get_filename_component(__qt_toolchain_initial_qt_host_path_cmake_dir
++ "${CMAKE_CURRENT_LIST_DIR}/../../../lib/cmake" ABSOLUTE)
+
+ # QT_HOST_PATH precedence:
+ # - cache variable / command line option
diff --git a/recipes-qt/qt6/qtbase_git.bb b/recipes-qt/qt6/qtbase_git.bb
index ef28636..ebdf17b 100644
--- a/recipes-qt/qt6/qtbase_git.bb
+++ b/recipes-qt/qt6/qtbase_git.bb
@@ -19,7 +19,7 @@ SRC_URI += "\
file://0001-Add-linux-oe-g-platform.patch \
file://0002-qlibraryinfo-allow-to-set-qt.conf-from-the-outside-u.patch \
file://0003-tests-disable-failing-tests.patch \
- file://0004-Do-not-use-QT_TOOLCHAIN_RELOCATABLE-paths-in-qt.tool.patch \
+ file://0004-Fix-qt.toolchain.cmake-for-SDK-use.patch \
"
DEPENDS += "\
@@ -168,7 +168,6 @@ EOF
RELPATH=${@os.path.relpath(d.getVar('prefix') + '/share/cmake/Qt6Toolchain.cmake', d.getVar('QT6_INSTALL_LIBDIR') + '/cmake/Qt6')}
sed -i ${D}${QT6_INSTALL_LIBDIR}/cmake/Qt6/qt.toolchain.cmake \
- -e 's|${RECIPE_SYSROOT_NATIVE}|\${CMAKE_CURRENT_LIST_DIR}/../../../..|' \
-e "s|/.*/toolchain.cmake|\${CMAKE_CURRENT_LIST_DIR}/$RELPATH|"
}