summary refs log tree commit diff
path: root/pkgs/development/libraries/qt-6
diff options
context:
space:
mode:
authorgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>2022-11-08 12:01:29 +0000
committerGitHub <noreply@github.com>2022-11-08 12:01:29 +0000
commit6e1c7f74c7fd8c29c625f63c0e0a608b33e1d2a1 (patch)
treedf81ece143c93f1da4e4e57598be58bba16fed63 /pkgs/development/libraries/qt-6
parentc35a930454f97d7fe134c71a7ffa75faa1d89aea (diff)
parentf8b1eb8f697d8b34583f7d87a3fae958e0064545 (diff)
Merge master into staging-next
Diffstat (limited to 'pkgs/development/libraries/qt-6')
-rw-r--r--pkgs/development/libraries/qt-6/default.nix6
-rw-r--r--pkgs/development/libraries/qt-6/modules/qtmultimedia.nix6
-rw-r--r--pkgs/development/libraries/qt-6/patches/qtbase-tzdir.patch48
3 files changed, 58 insertions, 2 deletions
diff --git a/pkgs/development/libraries/qt-6/default.nix b/pkgs/development/libraries/qt-6/default.nix
index 754436cb0b962..5d17df8028d2e 100644
--- a/pkgs/development/libraries/qt-6/default.nix
+++ b/pkgs/development/libraries/qt-6/default.nix
@@ -17,6 +17,9 @@
 , writeText
 , gstreamer
 , gst-plugins-base
+, gst-plugins-good
+, gst-libav
+, gst-vaapi
 , gtk3
 , dconf
 , buildPackages
@@ -51,6 +54,7 @@ let
         inherit bison cups harfbuzz libGL dconf gtk3 developerBuild cmake;
         patches = [
           ./patches/qtbase-qmake-pkg-config.patch
+          ./patches/qtbase-tzdir.patch
         ];
       };
 
@@ -66,7 +70,7 @@ let
       qtlanguageserver = callPackage ./modules/qtlanguageserver.nix { };
       qtlottie = callPackage ./modules/qtlottie.nix { };
       qtmultimedia = callPackage ./modules/qtmultimedia.nix {
-        inherit gstreamer gst-plugins-base;
+        inherit gstreamer gst-plugins-base gst-plugins-good gst-libav gst-vaapi;
       };
       qtnetworkauth = callPackage ./modules/qtnetworkauth.nix { };
       qtpositioning = callPackage ./modules/qtpositioning.nix { };
diff --git a/pkgs/development/libraries/qt-6/modules/qtmultimedia.nix b/pkgs/development/libraries/qt-6/modules/qtmultimedia.nix
index 5e6dace906dcd..bfd33cadf395f 100644
--- a/pkgs/development/libraries/qt-6/modules/qtmultimedia.nix
+++ b/pkgs/development/libraries/qt-6/modules/qtmultimedia.nix
@@ -9,6 +9,9 @@
 , alsa-lib
 , gstreamer
 , gst-plugins-base
+, gst-plugins-good
+, gst-libav
+, gst-vaapi
 , libpulseaudio
 , wayland
 , elfutils
@@ -20,5 +23,6 @@ qtModule {
   pname = "qtmultimedia";
   qtInputs = [ qtbase qtdeclarative qtsvg qtshadertools ];
   nativeBuildInputs = [ pkg-config ];
-  buildInputs = [ gstreamer gst-plugins-base libpulseaudio elfutils libunwind alsa-lib wayland orc ];
+  buildInputs = [ libpulseaudio elfutils libunwind alsa-lib wayland orc ];
+  propagatedBuildInputs = [ gstreamer gst-plugins-base gst-plugins-good gst-libav gst-vaapi ];
 }
diff --git a/pkgs/development/libraries/qt-6/patches/qtbase-tzdir.patch b/pkgs/development/libraries/qt-6/patches/qtbase-tzdir.patch
new file mode 100644
index 0000000000000..fc36130c7aad5
--- /dev/null
+++ b/pkgs/development/libraries/qt-6/patches/qtbase-tzdir.patch
@@ -0,0 +1,48 @@
+diff --git a/src/corelib/time/qtimezoneprivate_tz.cpp b/src/corelib/time/qtimezoneprivate_tz.cpp
+index 627a4a81..a5f50acc 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");
+ 
+@@ -727,18 +731,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;
+             }
+         }
+     }