mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-01-14 08:54:46 +00:00
5aa78f89f0
Apart from the previous ones, two new patches are added. One for reducing the runtime closure size by removing reference to cmake, the other for fixing the linker flags in generated qmake files.
61 lines
2.8 KiB
Diff
61 lines
2.8 KiB
Diff
From d612c1d7161f95864b9383df84b16d8c24fbcc9b Mon Sep 17 00:00:00 2001
|
|
From: Nick Cao <nickcao@nichi.co>
|
|
Date: Fri, 14 Apr 2023 09:35:25 +0800
|
|
Subject: [PATCH 4/6] qtbase: fix locating tzdir on NixOS
|
|
|
|
---
|
|
src/corelib/time/qtimezoneprivate_tz.cpp | 27 +++++++++++++++---------
|
|
1 file changed, 17 insertions(+), 10 deletions(-)
|
|
|
|
diff --git a/src/corelib/time/qtimezoneprivate_tz.cpp b/src/corelib/time/qtimezoneprivate_tz.cpp
|
|
index e87e34f76d..39bd79d4a4 100644
|
|
--- a/src/corelib/time/qtimezoneprivate_tz.cpp
|
|
+++ b/src/corelib/time/qtimezoneprivate_tz.cpp
|
|
@@ -51,7 +51,11 @@ typedef QHash<QByteArray, QTzTimeZone> QTzTimeZoneHash;
|
|
// Parse zone.tab table, assume lists all installed zones, if not will need to read directories
|
|
static QTzTimeZoneHash loadTzTimeZones()
|
|
{
|
|
- QString path = QStringLiteral("/usr/share/zoneinfo/zone.tab");
|
|
+ // Try TZDIR first, in case we're running on NixOS.
|
|
+ QString path = QFile::decodeName(qgetenv("TZDIR")) + QStringLiteral("/zone.tab");
|
|
+ // Fallback to traditional paths in case we are not on NixOS.
|
|
+ if (!QFile::exists(path))
|
|
+ path = QStringLiteral("/usr/share/zoneinfo/zone.tab");
|
|
if (!QFile::exists(path))
|
|
path = QStringLiteral("/usr/lib/zoneinfo/zone.tab");
|
|
|
|
@@ -729,18 +733,21 @@ QTzTimeZoneCacheEntry QTzTimeZoneCache::findEntry(const QByteArray &ianaId)
|
|
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));
|
|
+ // Try TZDIR first, in case we're running on NixOS
|
|
+ tzif.setFileName(QFile::decodeName(qgetenv("TZDIR")) + QStringLiteral("/") + QString::fromLocal8Bit(ianaId));
|
|
if (!tzif.open(QIODevice::ReadOnly)) {
|
|
- tzif.setFileName("/usr/lib/zoneinfo/"_L1 + QString::fromLocal8Bit(ianaId));
|
|
+ tzif.setFileName(QLatin1String("/usr/share/zoneinfo/") + 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;
|
|
+ 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;
|
|
}
|
|
- return ret;
|
|
}
|
|
}
|
|
}
|
|
--
|
|
2.39.2
|
|
|