summary refs log tree commit diff
path: root/gnu/packages/patches/qtbase-use-TZDIR.patch
diff options
context:
space:
mode:
authorZheng Junjie <zhengjunjie@iscas.ac.cn>2024-03-13 16:57:55 +0800
committerMaxim Cournoyer <maxim.cournoyer@gmail.com>2024-04-03 18:05:06 -0400
commit074ddc321c00cfb1bd1a784ce6ee60a20e518bcd (patch)
treec51ec5b8270b8282abc18207c1245fd3a519da80 /gnu/packages/patches/qtbase-use-TZDIR.patch
parent629614c7a3f9283306939402f1ff46914f327c21 (diff)
downloadguix-074ddc321c00cfb1bd1a784ce6ee60a20e518bcd.tar.gz
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>
Diffstat (limited to 'gnu/packages/patches/qtbase-use-TZDIR.patch')
-rw-r--r--gnu/packages/patches/qtbase-use-TZDIR.patch141
1 files changed, 0 insertions, 141 deletions
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 <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
-