mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-11-07 07:26:13 -05:00
gnu: qtbase: Update to 6.6.2.
* gnu/packages/qt.scm (qtbase): Update to 6.6.2. [source]: Unbundle pcre2, md4c. Remove qtbase-use-TZDIR.patch. Add qtbase-find-tools-in-PATH.patch, qtbase-qmake-fix-includedir.patch, [arguments]<#:phases>: Adjust 'patch-more-paths phase, skip tst_selftests test. [inputs]: Add libb2 * gnu/packages/patches/qtbase-use-TZDIR.patch: Remove this. * gnu/packages/patches/qtbase-find-tools-in-PATH.patch: New file. * gnu/packages/patches/qtbase-qmake-fix-includedir.patch: New file. * gnu/local.mk (dist_patch_DATA): Remove qtbase-use-TZDIR.patch. Register qtbase-find-tools-in-PATH.patch, qtbase-qmake-fix-includedir.patch. Change-Id: I72af9c8f2e930bcae18f36ceca18a0a53f5c3e15 Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
This commit is contained in:
parent
629614c7a3
commit
074ddc321c
5 changed files with 114 additions and 151 deletions
|
@ -1965,10 +1965,11 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/qemu-fix-agent-paths.patch \
|
||||
%D%/packages/patches/qrcodegen-cpp-make-install.patch \
|
||||
%D%/packages/patches/qtbase-absolute-runpath.patch \
|
||||
%D%/packages/patches/qtbase-find-tools-in-PATH.patch \
|
||||
%D%/packages/patches/qtbase-qmake-fix-includedir.patch \
|
||||
%D%/packages/patches/qtbase-moc-ignore-gcc-macro.patch \
|
||||
%D%/packages/patches/qtbase-qmake-use-libname.patch \
|
||||
%D%/packages/patches/qtbase-5-use-TZDIR.patch \
|
||||
%D%/packages/patches/qtbase-use-TZDIR.patch \
|
||||
%D%/packages/patches/qtscript-disable-tests.patch \
|
||||
%D%/packages/patches/quagga-reproducible-build.patch \
|
||||
%D%/packages/patches/quickswitch-fix-dmenu-check.patch \
|
||||
|
|
49
gnu/packages/patches/qtbase-find-tools-in-PATH.patch
Normal file
49
gnu/packages/patches/qtbase-find-tools-in-PATH.patch
Normal file
|
@ -0,0 +1,49 @@
|
|||
Patch retrieved from NixOS
|
||||
|
||||
https://github.com/NixOS/nixpkgs/blob/93ecdaa1f34354c9476062dc4fe323b442c087d5/pkgs/development/libraries/qt-6/patches/0006-qtbase-find-tools-in-PATH.patch
|
||||
|
||||
From a8b9fae710a2bd5e743f5e16364eaa8c38dbd784 Mon Sep 17 00:00:00 2001
|
||||
From: rewine <luhongxu@deepin.org>
|
||||
Date: Wed, 29 Mar 2023 11:51:33 +0800
|
||||
Subject: [PATCH 06/11] 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 48ed5a324bf..91d8d41fb1f 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.42.0
|
||||
|
29
gnu/packages/patches/qtbase-qmake-fix-includedir.patch
Normal file
29
gnu/packages/patches/qtbase-qmake-fix-includedir.patch
Normal file
|
@ -0,0 +1,29 @@
|
|||
Patch retrieved from NixOS
|
||||
https://github.com/NixOS/nixpkgs/blob/93ecdaa1f34354c9476062dc4fe323b442c087d5/pkgs/development/libraries/qt-6/patches/0003-qtbase-qmake-fix-includedir-in-generated-pkg-config.patch
|
||||
|
||||
From 6088085d3074316dd74639fc6c1233e5862aff11 Mon Sep 17 00:00:00 2001
|
||||
From: Nick Cao <nickcao@nichi.co>
|
||||
Date: Fri, 14 Apr 2023 09:34:46 +0800
|
||||
Subject: [PATCH 03/11] qtbase: qmake: fix includedir in generated pkg-config
|
||||
|
||||
---
|
||||
qmake/generators/makefile.cpp | 3 +--
|
||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||
|
||||
diff --git a/qmake/generators/makefile.cpp b/qmake/generators/makefile.cpp
|
||||
index 11d2f0ff7df..c78ed0d3485 100644
|
||||
--- a/qmake/generators/makefile.cpp
|
||||
+++ b/qmake/generators/makefile.cpp
|
||||
@@ -3412,8 +3412,7 @@ MakefileGenerator::writePkgConfigFile()
|
||||
<< varGlue("QMAKE_PKGCONFIG_CFLAGS", "", " ", " ")
|
||||
// << varGlue("DEFINES","-D"," -D"," ")
|
||||
;
|
||||
- if (!project->values("QMAKE_DEFAULT_INCDIRS").contains(includeDir))
|
||||
- t << "-I${includedir}";
|
||||
+ t << "-I${includedir}";
|
||||
if (target_mode == TARG_MAC_MODE && project->isActiveConfig("lib_bundle")
|
||||
&& libDir != QLatin1String("/Library/Frameworks")) {
|
||||
t << " -F${libdir}";
|
||||
--
|
||||
2.42.0
|
||||
|
|
@ -1,141 +0,0 @@
|
|||
From 1075606f8b2f9e153c82f8e50cbd69cea9c72e87 Mon Sep 17 00:00:00 2001
|
||||
From: Edward Welbourne <edward.welbourne@qt.io>
|
||||
Date: Mon, 11 Sep 2023 11:41:39 +0200
|
||||
Subject: [PATCH] Support the TZDIR environment variable
|
||||
|
||||
On Linux / glibc, this overrides the default system location for the
|
||||
zone info. So check for files there first. Break out a function to
|
||||
manage the trying of (now three) zoneinfo directories when opening a
|
||||
file by name relative to there.
|
||||
|
||||
Pick-to: 6.6 6.5
|
||||
Task-number: QTBUG-116017
|
||||
Change-Id: I1f97107aabd9015c0a5543639870f1d70654ca67
|
||||
---
|
||||
* Rebased on top of v6.5.2.
|
||||
|
||||
src/corelib/time/qtimezoneprivate_tz.cpp | 73 ++++++++++++++++--------
|
||||
1 file changed, 49 insertions(+), 24 deletions(-)
|
||||
|
||||
diff --git a/src/corelib/time/qtimezoneprivate_tz.cpp b/src/corelib/time/qtimezoneprivate_tz.cpp
|
||||
index 067191d816..a8b2fc894e 100644
|
||||
--- a/src/corelib/time/qtimezoneprivate_tz.cpp
|
||||
+++ b/src/corelib/time/qtimezoneprivate_tz.cpp
|
||||
@@ -51,17 +51,41 @@ typedef QHash<QByteArray, QTzTimeZone> QTzTimeZoneHash;
|
||||
|
||||
static bool isTzFile(const QString &name);
|
||||
|
||||
+// Open a named file under the zone info directory:
|
||||
+static bool openZoneInfo(QString name, QFile *file)
|
||||
+{
|
||||
+ // At least on Linux / glibc (see man 3 tzset), $TZDIR overrides the system
|
||||
+ // default location for zone info:
|
||||
+ const QString tzdir = qEnvironmentVariable("TZDIR");
|
||||
+ if (!tzdir.isEmpty()) {
|
||||
+ file->setFileName(QDir(tzdir).filePath(name));
|
||||
+ if (file->open(QIODevice::ReadOnly))
|
||||
+ return true;
|
||||
+ }
|
||||
+ // Try modern system path first:
|
||||
+ constexpr auto zoneShare = "/usr/share/zoneinfo/"_L1;
|
||||
+ if (tzdir != zoneShare && tzdir != zoneShare.chopped(1)) {
|
||||
+ file->setFileName(zoneShare + name);
|
||||
+ if (file->open(QIODevice::ReadOnly))
|
||||
+ return true;
|
||||
+ }
|
||||
+ // Fall back to legacy system path:
|
||||
+ constexpr auto zoneLib = "/usr/lib/zoneinfo/"_L1;
|
||||
+ if (tzdir != zoneLib && tzdir != zoneLib.chopped(1)) {
|
||||
+ file->setFileName(zoneShare + name);
|
||||
+ if (file->open(QIODevice::ReadOnly))
|
||||
+ return true;
|
||||
+ }
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
// Parse zone.tab table for territory information, read directories to ensure we
|
||||
// find all installed zones (many are omitted from zone.tab; even more from
|
||||
// zone1970.tab).
|
||||
static QTzTimeZoneHash loadTzTimeZones()
|
||||
{
|
||||
- QString path = QStringLiteral("/usr/share/zoneinfo/zone.tab");
|
||||
- if (!QFile::exists(path))
|
||||
- path = QStringLiteral("/usr/lib/zoneinfo/zone.tab");
|
||||
-
|
||||
- QFile tzif(path);
|
||||
- if (!tzif.open(QIODevice::ReadOnly))
|
||||
+ QFile tzif;
|
||||
+ if (!openZoneInfo("zone.tab"_L1, &tzif))
|
||||
return QTzTimeZoneHash();
|
||||
|
||||
QTzTimeZoneHash zonesHash;
|
||||
@@ -91,6 +115,7 @@ static QTzTimeZoneHash loadTzTimeZones()
|
||||
}
|
||||
}
|
||||
|
||||
+ const QString path = tzif.fileName();
|
||||
const qsizetype cut = path.lastIndexOf(u'/');
|
||||
Q_ASSERT(cut > 0);
|
||||
const QDir zoneDir = QDir(path.first(cut));
|
||||
@@ -761,20 +786,13 @@ QTzTimeZoneCacheEntry QTzTimeZoneCache::findEntry(const QByteArray &ianaId)
|
||||
tzif.setFileName(QStringLiteral("/etc/localtime"));
|
||||
if (!tzif.open(QIODevice::ReadOnly))
|
||||
return ret;
|
||||
- } else {
|
||||
- // Open named tz, try modern path first, if fails try legacy path
|
||||
- tzif.setFileName("/usr/share/zoneinfo/"_L1 + QString::fromLocal8Bit(ianaId));
|
||||
- if (!tzif.open(QIODevice::ReadOnly)) {
|
||||
- tzif.setFileName("/usr/lib/zoneinfo/"_L1 + QString::fromLocal8Bit(ianaId));
|
||||
- if (!tzif.open(QIODevice::ReadOnly)) {
|
||||
- // ianaId may be a POSIX rule, taken from $TZ or /etc/TZ
|
||||
- auto check = validatePosixRule(ianaId);
|
||||
- if (check.isValid) {
|
||||
- ret.m_hasDst = check.hasDst;
|
||||
- ret.m_posixRule = ianaId;
|
||||
- }
|
||||
- return ret;
|
||||
- }
|
||||
+ } else if (!openZoneInfo(QString::fromLocal8Bit(ianaId), &tzif)) {
|
||||
+ // ianaId may be a POSIX rule, taken from $TZ or /etc/TZ
|
||||
+ auto check = validatePosixRule(ianaId);
|
||||
+ if (check.isValid) {
|
||||
+ ret.m_hasDst = check.hasDst;
|
||||
+ ret.m_posixRule = ianaId;
|
||||
+ return ret;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1317,7 +1335,8 @@ private:
|
||||
{
|
||||
// On most distros /etc/localtime is a symlink to a real file so extract
|
||||
// name from the path
|
||||
- const auto zoneinfo = "/zoneinfo/"_L1;
|
||||
+ const QString tzdir = qEnvironmentVariable("TZDIR");
|
||||
+ constexpr auto zoneinfo = "/zoneinfo/"_L1;
|
||||
QString path = QStringLiteral("/etc/localtime");
|
||||
long iteration = getSymloopMax();
|
||||
// Symlink may point to another symlink etc. before being under zoneinfo/
|
||||
@@ -1325,9 +1344,15 @@ private:
|
||||
// symlink, like America/Montreal pointing to America/Toronto
|
||||
do {
|
||||
path = QFile::symLinkTarget(path);
|
||||
- int index = path.indexOf(zoneinfo);
|
||||
- if (index >= 0) // Found zoneinfo file; extract zone name from path:
|
||||
- return QStringView{ path }.mid(index + zoneinfo.size()).toUtf8();
|
||||
+ // If it's a zoneinfo file, extract the zone name from its path:
|
||||
+ int index = tzdir.isEmpty() ? -1 : path.indexOf(tzdir);
|
||||
+ if (index >= 0) {
|
||||
+ const auto tail = QStringView{ path }.sliced(index + tzdir.size()).toUtf8();
|
||||
+ return tail.startsWith(u'/') ? tail.sliced(1) : tail;
|
||||
+ }
|
||||
+ index = path.indexOf(zoneinfo);
|
||||
+ if (index >= 0)
|
||||
+ return QStringView{ path }.sliced(index + zoneinfo.size()).toUtf8();
|
||||
} while (!path.isEmpty() && --iteration > 0);
|
||||
|
||||
return QByteArray();
|
||||
|
||||
base-commit: af457a9f0f7eb1a2a7d11f495da508faab91a442
|
||||
--
|
||||
2.41.0
|
||||
|
|
@ -67,6 +67,7 @@ (define-module (gnu packages qt)
|
|||
#:use-module (gnu packages bash)
|
||||
#:use-module (gnu packages base)
|
||||
#:use-module (gnu packages bison)
|
||||
#:use-module (gnu packages crypto)
|
||||
#:use-module (gnu packages check)
|
||||
#:use-module (gnu packages cmake)
|
||||
#:use-module (gnu packages compression)
|
||||
|
@ -714,27 +715,26 @@ (define-public qtbase
|
|||
(package
|
||||
(inherit qtbase-5)
|
||||
(name "qtbase")
|
||||
(version "6.5.2")
|
||||
(version "6.6.2")
|
||||
(source (origin
|
||||
(inherit (package-source qtbase-5))
|
||||
(uri (qt-url name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0s8jwzdcv97dfy8n3jjm8zzvllv380l73mwdva7rs2nqnhlwgd1x"))
|
||||
"0yv78bwqzy975854h53rbiilsms62f3v02i3jqz7v8ajk1ml56xq"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
;; corelib uses bundled harfbuzz, md4, md5, sha3
|
||||
'(with-directory-excursion "src/3rdparty"
|
||||
(for-each delete-file-recursively
|
||||
;; The bundled pcre2 copy is kept, as its headers
|
||||
;; are required by some internal bootstrap target
|
||||
;; used for the tools.
|
||||
(list "double-conversion" "freetype" "harfbuzz-ng"
|
||||
"libpng" "libjpeg" "sqlite" "xcb" "zlib"))))
|
||||
(patches (search-patches "qtbase-use-TZDIR.patch"
|
||||
"qtbase-moc-ignore-gcc-macro.patch"
|
||||
"pcre2" "md4c" "libpng" "libjpeg"
|
||||
"sqlite" "xcb" "zlib"))))
|
||||
(patches (search-patches "qtbase-moc-ignore-gcc-macro.patch"
|
||||
"qtbase-absolute-runpath.patch"
|
||||
"qtbase-qmake-use-libname.patch"))))
|
||||
"qtbase-qmake-use-libname.patch"
|
||||
"qtbase-find-tools-in-PATH.patch"
|
||||
"qtbase-qmake-fix-includedir.patch"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments qtbase-5)
|
||||
|
@ -812,6 +812,12 @@ (define-public qtbase
|
|||
"qmake/library/qmakebuiltins.cpp")
|
||||
(("/bin/sh")
|
||||
(search-input-file inputs "bin/bash")))
|
||||
|
||||
(substitute* "tests/auto/tools/qt_cmake_create/\
|
||||
tst_qt_cmake_create.cpp"
|
||||
(("/bin/sh")
|
||||
(which "sh")))
|
||||
|
||||
(substitute* "src/corelib/CMakeLists.txt"
|
||||
(("/bin/ls")
|
||||
(search-input-file inputs "bin/ls")))))
|
||||
|
@ -874,6 +880,24 @@ (define-public qtbase
|
|||
(string-join
|
||||
(append
|
||||
(list
|
||||
;; The 'tst_selftests' fails with the following error:
|
||||
;; with expansion:
|
||||
;; false
|
||||
;; with messages:
|
||||
;; test := "keyboard"
|
||||
;; arguments := QList("-o", "-,tap")
|
||||
;; Detected locale "C" with character encoding "ANSI_X3.4-1968", which is not UTF-8.
|
||||
;; Qt depends on a UTF-8 locale, but has failed to switch to one.
|
||||
;; If this causes problems, reconfigure your locale. See the locale(1) manual
|
||||
;; for more information.
|
||||
|
||||
;; See https://bugreports.qt.io/browse/QTBUG-113371
|
||||
;; Add glibc-utf8-locales to native-inpus is no help.
|
||||
;; TODO: when core-updates merge, check again.
|
||||
"tst_selftests"
|
||||
|
||||
;; Sometimes it fails.
|
||||
"tst_qsystemsemaphore"
|
||||
;; The 'tst_moc' test fails with "'fi.exists()' returned FALSE".
|
||||
"tst_moc"
|
||||
|
||||
|
@ -1044,6 +1068,7 @@ (define-public qtbase
|
|||
bash-minimal
|
||||
coreutils-minimal
|
||||
md4c
|
||||
libb2
|
||||
libice
|
||||
libsm
|
||||
libxcb
|
||||
|
|
Loading…
Reference in a new issue