mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 21:38:07 -05:00
gnu: qtbase: Fix qmake link directives.
* gnu/packages/qt.scm (qtbase) [origin]: Add patch, specifying patches explicitly. [arguments] <phases>: Augment LIBRARY_PATH in check phase. * gnu/packages/patches/qtbase-qmake-use-libname.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it.
This commit is contained in:
parent
d43b53c476
commit
7c3df13f22
3 changed files with 64 additions and 1 deletions
|
@ -1870,6 +1870,7 @@ dist_patch_DATA = \
|
||||||
%D%/packages/patches/qrcodegen-cpp-make-install.patch \
|
%D%/packages/patches/qrcodegen-cpp-make-install.patch \
|
||||||
%D%/packages/patches/qtbase-absolute-runpath.patch \
|
%D%/packages/patches/qtbase-absolute-runpath.patch \
|
||||||
%D%/packages/patches/qtbase-moc-ignore-gcc-macro.patch \
|
%D%/packages/patches/qtbase-moc-ignore-gcc-macro.patch \
|
||||||
|
%D%/packages/patches/qtbase-qmake-use-libname.patch \
|
||||||
%D%/packages/patches/qtbase-use-TZDIR.patch \
|
%D%/packages/patches/qtbase-use-TZDIR.patch \
|
||||||
%D%/packages/patches/qtscript-disable-tests.patch \
|
%D%/packages/patches/qtscript-disable-tests.patch \
|
||||||
%D%/packages/patches/quagga-reproducible-build.patch \
|
%D%/packages/patches/quagga-reproducible-build.patch \
|
||||||
|
|
53
gnu/packages/patches/qtbase-qmake-use-libname.patch
Normal file
53
gnu/packages/patches/qtbase-qmake-use-libname.patch
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
Patch retrieved from NixOS
|
||||||
|
https://raw.githubusercontent.com/NixOS/nixpkgs/master/pkgs/development/libraries/qt-6/patches/0001-qtbase-qmake-always-use-libname-instead-of-absolute-.patch
|
||||||
|
|
||||||
|
From 8880bc263a366aeb82056f0bf3f1b17b6ec26900 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Nick Cao <nickcao@nichi.co>
|
||||||
|
Date: Thu, 13 Apr 2023 23:42:29 +0800
|
||||||
|
Subject: [PATCH 1/6] qtbase: qmake: always use libname instead of absolute
|
||||||
|
path in qmake files
|
||||||
|
|
||||||
|
In generated qmake files, absolute paths to qt libraries are embedded
|
||||||
|
and then used in linker flags. However as the libraries can be provided
|
||||||
|
by qt modules other than the one currently being built, the ebedded
|
||||||
|
paths can be incorrect.
|
||||||
|
---
|
||||||
|
cmake/QtFinishPrlFile.cmake | 7 ++++---
|
||||||
|
cmake/QtGenerateLibHelpers.cmake | 3 ---
|
||||||
|
2 files changed, 4 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/cmake/QtFinishPrlFile.cmake b/cmake/QtFinishPrlFile.cmake
|
||||||
|
index 32169e418c..4e754af367 100644
|
||||||
|
--- a/cmake/QtFinishPrlFile.cmake
|
||||||
|
+++ b/cmake/QtFinishPrlFile.cmake
|
||||||
|
@@ -61,9 +61,10 @@ foreach(line ${lines})
|
||||||
|
endif()
|
||||||
|
list(APPEND adjusted_libs "-framework" "${CMAKE_MATCH_1}")
|
||||||
|
else()
|
||||||
|
- # Not a framework, transform the Qt module into relocatable relative path.
|
||||||
|
- qt_strip_library_version_suffix(relative_lib "${relative_lib}")
|
||||||
|
- list(APPEND adjusted_libs "$$[QT_INSTALL_LIBS]/${relative_lib}")
|
||||||
|
+ # Not a framework, extract the library name and prepend an -l to make
|
||||||
|
+ # it relocatable.
|
||||||
|
+ qt_transform_absolute_library_paths_to_link_flags(lib_with_link_flag "${lib}")
|
||||||
|
+ list(APPEND adjusted_libs "${lib_with_link_flag}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
diff --git a/cmake/QtGenerateLibHelpers.cmake b/cmake/QtGenerateLibHelpers.cmake
|
||||||
|
index e3f4bbf881..f8bd26acc7 100644
|
||||||
|
--- a/cmake/QtGenerateLibHelpers.cmake
|
||||||
|
+++ b/cmake/QtGenerateLibHelpers.cmake
|
||||||
|
@@ -70,9 +70,6 @@ function(qt_transform_absolute_library_paths_to_link_flags out_var library_path_
|
||||||
|
string(TOLOWER "${dir}" dir_lower)
|
||||||
|
# If library_path isn't in default link directories, we should add it to link flags.
|
||||||
|
list(FIND IMPLICIT_LINK_DIRECTORIES_LOWER "${dir_lower}" index)
|
||||||
|
- if(${index} EQUAL -1)
|
||||||
|
- list(APPEND out_list "-L\"${dir}\"")
|
||||||
|
- endif()
|
||||||
|
list(APPEND out_list "${lib_name_with_link_flag}")
|
||||||
|
else()
|
||||||
|
list(APPEND out_list "${library_path}")
|
||||||
|
--
|
||||||
|
2.39.2
|
||||||
|
|
|
@ -609,7 +609,11 @@ (define-public qtbase
|
||||||
;; are required by some internal bootstrap target
|
;; are required by some internal bootstrap target
|
||||||
;; used for the tools.
|
;; used for the tools.
|
||||||
(list "double-conversion" "freetype" "harfbuzz-ng"
|
(list "double-conversion" "freetype" "harfbuzz-ng"
|
||||||
"libpng" "libjpeg" "sqlite" "xcb" "zlib"))))))
|
"libpng" "libjpeg" "sqlite" "xcb" "zlib"))))
|
||||||
|
(patches (search-patches "qtbase-use-TZDIR.patch"
|
||||||
|
"qtbase-moc-ignore-gcc-macro.patch"
|
||||||
|
"qtbase-absolute-runpath.patch"
|
||||||
|
"qtbase-qmake-use-libname.patch"))))
|
||||||
(build-system cmake-build-system)
|
(build-system cmake-build-system)
|
||||||
(arguments
|
(arguments
|
||||||
(substitute-keyword-arguments (package-arguments qtbase-5)
|
(substitute-keyword-arguments (package-arguments qtbase-5)
|
||||||
|
@ -716,6 +720,11 @@ (define-public qtbase
|
||||||
(string-append #$output
|
(string-append #$output
|
||||||
":" (getenv "CMAKE_PREFIX_PATH")))
|
":" (getenv "CMAKE_PREFIX_PATH")))
|
||||||
(setenv "QMAKEPATH" (string-append #$output "/lib/qt6"))
|
(setenv "QMAKEPATH" (string-append #$output "/lib/qt6"))
|
||||||
|
;; It is necessary to augment LIBRARY_PATH with that of the
|
||||||
|
;; freshly installed qtbase because of the
|
||||||
|
;; 'qtbase-qmake-use-libname.patch' patch.
|
||||||
|
(setenv "LIBRARY_PATH" (string-append #$output "/lib:"
|
||||||
|
(getenv "LIBRARY_PATH")))
|
||||||
(setenv "QML2_IMPORT_PATH"
|
(setenv "QML2_IMPORT_PATH"
|
||||||
(string-append #$output "/lib/qt6/qml"))
|
(string-append #$output "/lib/qt6/qml"))
|
||||||
(setenv "QT_PLUGIN_PATH"
|
(setenv "QT_PLUGIN_PATH"
|
||||||
|
|
Loading…
Reference in a new issue