diff options
author | Zheng Junjie <zhengjunjie@iscas.ac.cn> | 2024-03-13 16:57:55 +0800 |
---|---|---|
committer | Maxim Cournoyer <maxim.cournoyer@gmail.com> | 2024-04-03 18:05:06 -0400 |
commit | 074ddc321c00cfb1bd1a784ce6ee60a20e518bcd (patch) | |
tree | c51ec5b8270b8282abc18207c1245fd3a519da80 /gnu/packages/patches/qtbase-use-TZDIR.patch | |
parent | 629614c7a3f9283306939402f1ff46914f327c21 (diff) |
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.patch | 141 |
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 - |