From 5a8295e5965a2c86062e5d554e8b8cdec3082716 Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Thu, 18 May 2017 08:01:54 -0500 Subject: [PATCH] qtbase: setup required environment in GTK3 platform theme plugin --- .../libraries/qt-5/5.8/default.nix | 1 + .../libraries/qt-5/5.8/qtbase/default.nix | 8 ++++- .../libraries/qt-5/5.8/qtbase/qgtk-env.patch | 36 +++++++++++++++++++ .../libraries/qt-5/5.8/qtbase/series | 1 + 4 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/libraries/qt-5/5.8/qtbase/qgtk-env.patch diff --git a/pkgs/development/libraries/qt-5/5.8/default.nix b/pkgs/development/libraries/qt-5/5.8/default.nix index b7d141fd5a2..57728ad13ce 100644 --- a/pkgs/development/libraries/qt-5/5.8/default.nix +++ b/pkgs/development/libraries/qt-5/5.8/default.nix @@ -94,6 +94,7 @@ let qtbase = callPackage ./qtbase { inherit (srcs.qtbase) src version; inherit bison cups harfbuzz mesa; + inherit dconf gtk3; inherit developerBuild decryptSslTraffic; }; diff --git a/pkgs/development/libraries/qt-5/5.8/qtbase/default.nix b/pkgs/development/libraries/qt-5/5.8/qtbase/default.nix index 008eb1e3709..64e208a22b0 100644 --- a/pkgs/development/libraries/qt-5/5.8/qtbase/default.nix +++ b/pkgs/development/libraries/qt-5/5.8/qtbase/default.nix @@ -7,7 +7,7 @@ # darwin support darwin, libiconv, libcxx, - dbus, fontconfig, freetype, glib, gtk3, harfbuzz, icu, libX11, libXcomposite, + dbus, dconf, fontconfig, freetype, glib, gtk3, harfbuzz, icu, libX11, libXcomposite, libXcursor, libXext, libXi, libXrender, libinput, libjpeg, libpng, libtiff, libxcb, libxkbcommon, libxml2, libxslt, openssl, pcre16, sqlite, udev, xcbutil, xcbutilimage, xcbutilkeysyms, xcbutilrenderutil, xcbutilwm, xlibs, @@ -147,6 +147,12 @@ stdenv.mkDerivation { ++ lib.optional mesaSupported ''-DNIXPKGS_MESA_GL="${mesa.out}/lib/libGL"'' + ++ lib.optionals (!stdenv.isDarwin) + [ + ''-DNIXPKGS_QGTK3_XDG_DATA_DIRS="${gtk3}/share/gsettings-schemas/${gtk3.name}"'' + ''-DNIXPKGS_QGTK3_GIO_EXTRA_MODULES="${dconf.lib}/lib/gio/modules"'' + ] + ++ lib.optionals stdenv.isDarwin [ "-D__MAC_OS_X_VERSION_MAX_ALLOWED=1090" diff --git a/pkgs/development/libraries/qt-5/5.8/qtbase/qgtk-env.patch b/pkgs/development/libraries/qt-5/5.8/qtbase/qgtk-env.patch new file mode 100644 index 00000000000..6a22b203afc --- /dev/null +++ b/pkgs/development/libraries/qt-5/5.8/qtbase/qgtk-env.patch @@ -0,0 +1,36 @@ +Index: qtbase-opensource-src-5.8.0/src/plugins/platformthemes/gtk3/main.cpp +=================================================================== +--- qtbase-opensource-src-5.8.0.orig/src/plugins/platformthemes/gtk3/main.cpp ++++ qtbase-opensource-src-5.8.0/src/plugins/platformthemes/gtk3/main.cpp +@@ -39,6 +39,7 @@ + + #include + #include "qgtk3theme.h" ++#include + + QT_BEGIN_NAMESPACE + +@@ -54,8 +55,22 @@ public: + QPlatformTheme *QGtk3ThemePlugin::create(const QString &key, const QStringList ¶ms) + { + Q_UNUSED(params); +- if (!key.compare(QLatin1String(QGtk3Theme::name), Qt::CaseInsensitive)) ++ if (!key.compare(QLatin1String(QGtk3Theme::name), Qt::CaseInsensitive)) { ++ ++#ifdef NIXPKGS_QGTK3_XDG_DATA_DIRS ++ QStringList XDG_DATA_DIRS = QFile::decodeName(qgetenv("XDG_DATA_DIRS")).split(':'); ++ XDG_DATA_DIRS << QStringLiteral(NIXPKGS_QGTK3_XDG_DATA_DIRS); ++ qputenv("XDG_DATA_DIRS", QFile::encodeName(XDG_DATA_DIRS.join(':'))); ++#endif ++ ++#ifdef NIXPKGS_QGTK3_GIO_EXTRA_MODULES ++ QStringList GIO_EXTRA_MODULES = QFile::decodeName(qgetenv("GIO_EXTRA_MODULES")).split(':'); ++ GIO_EXTRA_MODULES << QStringLiteral(NIXPKGS_QGTK3_GIO_EXTRA_MODULES); ++ qputenv("GIO_EXTRA_MODULES", QFile::encodeName(GIO_EXTRA_MODULES.join(':'))); ++#endif ++ + return new QGtk3Theme; ++ } + + return 0; + } diff --git a/pkgs/development/libraries/qt-5/5.8/qtbase/series b/pkgs/development/libraries/qt-5/5.8/qtbase/series index 47400cf7aa3..03f5e6b1002 100644 --- a/pkgs/development/libraries/qt-5/5.8/qtbase/series +++ b/pkgs/development/libraries/qt-5/5.8/qtbase/series @@ -8,3 +8,4 @@ qpa-platform-plugin-path.patch dlopen-gl.patch compose-search-path.patch cmake-paths.patch +qgtk-env.patch