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>master
parent
629614c7a3
commit
074ddc321c
|
@ -1965,10 +1965,11 @@ dist_patch_DATA = \
|
||||||
%D%/packages/patches/qemu-fix-agent-paths.patch \
|
%D%/packages/patches/qemu-fix-agent-paths.patch \
|
||||||
%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-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-moc-ignore-gcc-macro.patch \
|
||||||
%D%/packages/patches/qtbase-qmake-use-libname.patch \
|
%D%/packages/patches/qtbase-qmake-use-libname.patch \
|
||||||
%D%/packages/patches/qtbase-5-use-TZDIR.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/qtscript-disable-tests.patch \
|
||||||
%D%/packages/patches/quagga-reproducible-build.patch \
|
%D%/packages/patches/quagga-reproducible-build.patch \
|
||||||
%D%/packages/patches/quickswitch-fix-dmenu-check.patch \
|
%D%/packages/patches/quickswitch-fix-dmenu-check.patch \
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 @@
|
||||||
#:use-module (gnu packages bash)
|
#:use-module (gnu packages bash)
|
||||||
#:use-module (gnu packages base)
|
#:use-module (gnu packages base)
|
||||||
#:use-module (gnu packages bison)
|
#:use-module (gnu packages bison)
|
||||||
|
#:use-module (gnu packages crypto)
|
||||||
#:use-module (gnu packages check)
|
#:use-module (gnu packages check)
|
||||||
#:use-module (gnu packages cmake)
|
#:use-module (gnu packages cmake)
|
||||||
#:use-module (gnu packages compression)
|
#:use-module (gnu packages compression)
|
||||||
|
@ -714,27 +715,26 @@ developers using C++ or QML, a CSS & JavaScript like language.")
|
||||||
(package
|
(package
|
||||||
(inherit qtbase-5)
|
(inherit qtbase-5)
|
||||||
(name "qtbase")
|
(name "qtbase")
|
||||||
(version "6.5.2")
|
(version "6.6.2")
|
||||||
(source (origin
|
(source (origin
|
||||||
(inherit (package-source qtbase-5))
|
(inherit (package-source qtbase-5))
|
||||||
(uri (qt-url name version))
|
(uri (qt-url name version))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"0s8jwzdcv97dfy8n3jjm8zzvllv380l73mwdva7rs2nqnhlwgd1x"))
|
"0yv78bwqzy975854h53rbiilsms62f3v02i3jqz7v8ajk1ml56xq"))
|
||||||
(modules '((guix build utils)))
|
(modules '((guix build utils)))
|
||||||
(snippet
|
(snippet
|
||||||
;; corelib uses bundled harfbuzz, md4, md5, sha3
|
;; corelib uses bundled harfbuzz, md4, md5, sha3
|
||||||
'(with-directory-excursion "src/3rdparty"
|
'(with-directory-excursion "src/3rdparty"
|
||||||
(for-each delete-file-recursively
|
(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"
|
(list "double-conversion" "freetype" "harfbuzz-ng"
|
||||||
"libpng" "libjpeg" "sqlite" "xcb" "zlib"))))
|
"pcre2" "md4c" "libpng" "libjpeg"
|
||||||
(patches (search-patches "qtbase-use-TZDIR.patch"
|
"sqlite" "xcb" "zlib"))))
|
||||||
"qtbase-moc-ignore-gcc-macro.patch"
|
(patches (search-patches "qtbase-moc-ignore-gcc-macro.patch"
|
||||||
"qtbase-absolute-runpath.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)
|
(build-system cmake-build-system)
|
||||||
(arguments
|
(arguments
|
||||||
(substitute-keyword-arguments (package-arguments qtbase-5)
|
(substitute-keyword-arguments (package-arguments qtbase-5)
|
||||||
|
@ -812,6 +812,12 @@ developers using C++ or QML, a CSS & JavaScript like language.")
|
||||||
"qmake/library/qmakebuiltins.cpp")
|
"qmake/library/qmakebuiltins.cpp")
|
||||||
(("/bin/sh")
|
(("/bin/sh")
|
||||||
(search-input-file inputs "bin/bash")))
|
(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"
|
(substitute* "src/corelib/CMakeLists.txt"
|
||||||
(("/bin/ls")
|
(("/bin/ls")
|
||||||
(search-input-file inputs "bin/ls")))))
|
(search-input-file inputs "bin/ls")))))
|
||||||
|
@ -874,6 +880,24 @@ developers using C++ or QML, a CSS & JavaScript like language.")
|
||||||
(string-join
|
(string-join
|
||||||
(append
|
(append
|
||||||
(list
|
(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".
|
;; The 'tst_moc' test fails with "'fi.exists()' returned FALSE".
|
||||||
"tst_moc"
|
"tst_moc"
|
||||||
|
|
||||||
|
@ -1044,6 +1068,7 @@ developers using C++ or QML, a CSS & JavaScript like language.")
|
||||||
bash-minimal
|
bash-minimal
|
||||||
coreutils-minimal
|
coreutils-minimal
|
||||||
md4c
|
md4c
|
||||||
|
libb2
|
||||||
libice
|
libice
|
||||||
libsm
|
libsm
|
||||||
libxcb
|
libxcb
|
||||||
|
|
Reference in New Issue