From e2fe48756f3edbf1becc31a5c65b7632fd700387 Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Wed, 19 Nov 2014 16:22:54 -0600 Subject: [PATCH] qt5: find timezone table in $TZDIR --- pkgs/development/libraries/qt-5/default.nix | 1 + .../libraries/qt-5/qt-5.3-tzdir.patch | 40 +++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 pkgs/development/libraries/qt-5/qt-5.3-tzdir.patch diff --git a/pkgs/development/libraries/qt-5/default.nix b/pkgs/development/libraries/qt-5/default.nix index fe290fd69fc..cdee9276489 100644 --- a/pkgs/development/libraries/qt-5/default.nix +++ b/pkgs/development/libraries/qt-5/default.nix @@ -46,6 +46,7 @@ stdenv.mkDerivation rec { patches = [ ./glib-2.32.patch + ./qt-5.3-tzdir.patch (substituteAll { src = ./qt-5.2-dlopen-absolute-paths.patch; inherit cups icu libXfixes; diff --git a/pkgs/development/libraries/qt-5/qt-5.3-tzdir.patch b/pkgs/development/libraries/qt-5/qt-5.3-tzdir.patch new file mode 100644 index 00000000000..5434a228a9e --- /dev/null +++ b/pkgs/development/libraries/qt-5/qt-5.3-tzdir.patch @@ -0,0 +1,40 @@ +diff --git a/qtbase/src/corelib/tools/qtimezoneprivate_tz.cpp b/qtbase/src/corelib/tools/qtimezoneprivate_tz.cpp +index b4ea91e..a56a245 100644 +--- a/qtbase/src/corelib/tools/qtimezoneprivate_tz.cpp ++++ b/qtbase/src/corelib/tools/qtimezoneprivate_tz.cpp +@@ -68,7 +68,10 @@ typedef QHash 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"); ++ QString path = qgetenv("TZDIR"); ++ path += "/zone.tab"; ++ if (!QFile::exists(path)) ++ path = QStringLiteral("/usr/share/zoneinfo/zone.tab"); + if (!QFile::exists(path)) + path = QStringLiteral("/usr/lib/zoneinfo/zone.tab"); + +@@ -559,12 +562,18 @@ void QTzTimeZonePrivate::init(const QByteArray &ianaId) + if (!tzif.open(QIODevice::ReadOnly)) + return; + } else { +- // Open named tz, try modern path first, if fails try legacy path +- tzif.setFileName(QLatin1String("/usr/share/zoneinfo/") + QString::fromLocal8Bit(ianaId)); ++ // Try TZDIR first ++ QString zoneinfoDir = qgetenv("TZDIR"); ++ zoneinfoDir += "/" + QString::fromLocal8Bit(ianaId); ++ tzif.setFileName(zoneinfoDir); + if (!tzif.open(QIODevice::ReadOnly)) { +- tzif.setFileName(QLatin1String("/usr/lib/zoneinfo/") + QString::fromLocal8Bit(ianaId)); +- if (!tzif.open(QIODevice::ReadOnly)) +- return; ++ // Open named tz, try modern path first, if fails try legacy path ++ tzif.setFileName(QLatin1String("/usr/share/zoneinfo/") + QString::fromLocal8Bit(ianaId)); ++ if (!tzif.open(QIODevice::ReadOnly)) { ++ tzif.setFileName(QLatin1String("/usr/lib/zoneinfo/") + QString::fromLocal8Bit(ianaId)); ++ if (!tzif.open(QIODevice::ReadOnly)) ++ return; ++ } + } + } +