summaryrefslogtreecommitdiff
path: root/gnu/packages/patches
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/patches')
-rw-r--r--gnu/packages/patches/qtbase-find-tools-in-PATH.patch49
-rw-r--r--gnu/packages/patches/qtbase-qmake-fix-includedir.patch29
-rw-r--r--gnu/packages/patches/qtbase-use-TZDIR.patch141
3 files changed, 78 insertions, 141 deletions
diff --git a/gnu/packages/patches/qtbase-find-tools-in-PATH.patch b/gnu/packages/patches/qtbase-find-tools-in-PATH.patch
new file mode 100644
index 0000000000..d5e38b09be
--- /dev/null
+++ b/gnu/packages/patches/qtbase-find-tools-in-PATH.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 <[email protected]>
+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
+
diff --git a/gnu/packages/patches/qtbase-qmake-fix-includedir.patch b/gnu/packages/patches/qtbase-qmake-fix-includedir.patch
new file mode 100644
index 0000000000..766689c4fd
--- /dev/null
+++ b/gnu/packages/patches/qtbase-qmake-fix-includedir.patch
@@ -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 <[email protected]>
+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
+
diff --git a/gnu/packages/patches/qtbase-use-TZDIR.patch b/gnu/packages/patches/qtbase-use-TZDIR.patch
deleted file mode 100644
index 98bf7493e9..0000000000
--- a/gnu/packages/patches/qtbase-use-TZDIR.patch
+++ /dev/null
@@ -1,141 +0,0 @@
-From 1075606f8b2f9e153c82f8e50cbd69cea9c72e87 Mon Sep 17 00:00:00 2001
-From: Edward Welbourne <[email protected]>
-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
-