qt6.qtbase: allow find qt tools in QTTOOLSPATH
This commit is contained in:
parent
12d74ff027
commit
9bc545612e
@ -47,6 +47,7 @@ let
|
||||
./patches/0004-qtbase-fix-locating-tzdir-on-NixOS.patch
|
||||
./patches/0005-qtbase-deal-with-a-font-face-at-index-0-as-Regular-f.patch
|
||||
./patches/0006-qtbase-qt-cmake-always-use-cmake-from-path.patch
|
||||
./patches/0007-qtbase-find-qt-tools-in-QTTOOLSPATH.patch
|
||||
];
|
||||
};
|
||||
env = callPackage ./qt-env.nix { };
|
||||
|
@ -49,6 +49,20 @@ else # Only set up Qt once.
|
||||
}
|
||||
envBuildHostHooks+=(qmakePathHook)
|
||||
|
||||
export QTTOOLSPATH=
|
||||
|
||||
declare -Ag qttoolsPathSeen=()
|
||||
qtToolsHook() {
|
||||
# Skip this path if we have seen it before.
|
||||
# MUST use 'if' because 'qttoolsPathSeen[$]' may be unset.
|
||||
if [ -n "${qttoolsPathSeen[$1]-}" ]; then return; fi
|
||||
qttoolsPathSeen[$1]=1
|
||||
if [ -d "$1/libexec" ]; then
|
||||
QTTOOLSPATH="${QTTOOLSPATH}${QTTOOLSPATH:+:}$1/libexec"
|
||||
fi
|
||||
}
|
||||
envBuildHostHooks+=(qtToolsHook)
|
||||
|
||||
postPatchMkspecs() {
|
||||
# Prevent this hook from running multiple times
|
||||
dontPatchMkspecs=1
|
||||
|
@ -0,0 +1,46 @@
|
||||
From 31d808a7b0d52a01c3f2875202cd29410a94b39a Mon Sep 17 00:00:00 2001
|
||||
From: rewine <luhongxu@deepin.org>
|
||||
Date: Wed, 29 Mar 2023 11:51:33 +0800
|
||||
Subject: [PATCH] qtbase-find-tools-in-PATH
|
||||
|
||||
1. find qt's tools in `QTTOOLSPATH` env
|
||||
qt assumes that all components use the same install prefix
|
||||
we can't get the real prefix for qttools when build qtbase
|
||||
we will add /libexec to `QTTOOLSPATH` in qtToolsHook
|
||||
find_path will also search in 'PATH' by default
|
||||
see `CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH`
|
||||
|
||||
2. disable tool_dependencies_enabled
|
||||
We can guarantee the build order of qt components in nixpkgs
|
||||
tools in qttools always build before qtdoc
|
||||
qdoc_bin is not a build target now, since we find it in `QTTOOLSPATH`
|
||||
|
||||
---
|
||||
cmake/QtDocsHelpers.cmake | 11 ++++++++---
|
||||
1 file changed, 8 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/cmake/QtDocsHelpers.cmake b/cmake/QtDocsHelpers.cmake
|
||||
index 48ed5a32..9409d22d 100644
|
||||
--- a/cmake/QtDocsHelpers.cmake
|
||||
+++ b/cmake/QtDocsHelpers.cmake
|
||||
@@ -47,9 +47,14 @@ function(qt_internal_add_docs)
|
||||
set(doc_tools_libexec "${QT_BUILD_INTERNALS_RELOCATABLE_INSTALL_PREFIX}/${INSTALL_LIBEXECDIR}")
|
||||
endif()
|
||||
|
||||
- set(qdoc_bin "${doc_tools_bin}/qdoc${CMAKE_EXECUTABLE_SUFFIX}")
|
||||
- set(qtattributionsscanner_bin "${doc_tools_libexec}/qtattributionsscanner${CMAKE_EXECUTABLE_SUFFIX}")
|
||||
- set(qhelpgenerator_bin "${doc_tools_libexec}/qhelpgenerator${CMAKE_EXECUTABLE_SUFFIX}")
|
||||
+ set(tool_dependencies_enabled FALSE)
|
||||
+
|
||||
+ find_path(qdoc_path name qdoc PATHS ENV QTTOOLSPATH)
|
||||
+ find_path(qtattributionsscanner_path name qtattributionsscanner PATHS ENV QTTOOLSPATH)
|
||||
+ find_path(qhelpgenerator_path name qhelpgenerator PATHS ENV QTTOOLSPATH)
|
||||
+ set(qdoc_bin "${qdoc_path}/qdoc${CMAKE_EXECUTABLE_SUFFIX}")
|
||||
+ set(qtattributionsscanner_bin "${qtattributionsscanner_path}/qtattributionsscanner${CMAKE_EXECUTABLE_SUFFIX}")
|
||||
+ set(qhelpgenerator_bin "${qhelpgenerator_path}/qhelpgenerator${CMAKE_EXECUTABLE_SUFFIX}")
|
||||
|
||||
get_target_property(target_type ${target} TYPE)
|
||||
if (NOT target_type STREQUAL "INTERFACE_LIBRARY")
|
||||
--
|
||||
2.38.1
|
||||
|
Loading…
Reference in New Issue
Block a user