summary refs log tree commit diff
path: root/pkgs/development/libraries
diff options
context:
space:
mode:
authorThomas Tuegel <ttuegel@mailbox.org>2017-05-14 13:55:42 -0500
committerThomas Tuegel <ttuegel@mailbox.org>2017-05-14 13:55:42 -0500
commitfabd48272faa45e07a6bae085903f98ff013b66e (patch)
tree4ee5359669533a6e42ce3addf2563cf6b479eaa3 /pkgs/development/libraries
parent8a68e4c7f6ae76f3a872142e452370fc300bb429 (diff)
parent7c338b7df8e35fab4c08a494bff6018f8fb1be72 (diff)
downloadnixpkgs-fabd48272faa45e07a6bae085903f98ff013b66e.tar
nixpkgs-fabd48272faa45e07a6bae085903f98ff013b66e.tar.gz
nixpkgs-fabd48272faa45e07a6bae085903f98ff013b66e.tar.bz2
nixpkgs-fabd48272faa45e07a6bae085903f98ff013b66e.tar.lz
nixpkgs-fabd48272faa45e07a6bae085903f98ff013b66e.tar.xz
nixpkgs-fabd48272faa45e07a6bae085903f98ff013b66e.tar.zst
nixpkgs-fabd48272faa45e07a6bae085903f98ff013b66e.zip
Merge branch 'qt--qpa-plugin-path'
Diffstat (limited to 'pkgs/development/libraries')
-rw-r--r--pkgs/development/libraries/qt-5/5.6/qtbase/default.nix2
-rw-r--r--pkgs/development/libraries/qt-5/5.6/qtbase/nix-profiles-library-paths.patch20
-rw-r--r--pkgs/development/libraries/qt-5/5.6/qtbase/qpa-platform-plugin-path.patch43
-rw-r--r--pkgs/development/libraries/qt-5/5.6/qtbase/series2
-rw-r--r--pkgs/development/libraries/qt-5/5.8/qtbase/default.nix2
-rw-r--r--pkgs/development/libraries/qt-5/5.8/qtbase/nix-profiles-library-paths.patch20
-rw-r--r--pkgs/development/libraries/qt-5/5.8/qtbase/qpa-platform-plugin-path.patch43
-rw-r--r--pkgs/development/libraries/qt-5/5.8/qtbase/qpa-plugin-path.patch15
-rw-r--r--pkgs/development/libraries/qt-5/5.8/qtbase/series3
9 files changed, 133 insertions, 17 deletions
diff --git a/pkgs/development/libraries/qt-5/5.6/qtbase/default.nix b/pkgs/development/libraries/qt-5/5.6/qtbase/default.nix
index b26fc7faf9d..289a1bbac6c 100644
--- a/pkgs/development/libraries/qt-5/5.6/qtbase/default.nix
+++ b/pkgs/development/libraries/qt-5/5.6/qtbase/default.nix
@@ -104,6 +104,8 @@ stdenv.mkDerivation {
         -importdir $out/lib/qt5/imports \
         -qmldir $out/lib/qt5/qml \
         -docdir $out/share/doc/qt5"
+
+    NIX_CFLAGS_COMPILE+=" -DNIXPKGS_QPA_PLATFORM_PLUGIN_PATH=\"''${!outputLib}/lib/qt5/plugins/platforms\""
   '';
 
   prefixKey = "-prefix ";
diff --git a/pkgs/development/libraries/qt-5/5.6/qtbase/nix-profiles-library-paths.patch b/pkgs/development/libraries/qt-5/5.6/qtbase/nix-profiles-library-paths.patch
new file mode 100644
index 00000000000..68163fc0c31
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.6/qtbase/nix-profiles-library-paths.patch
@@ -0,0 +1,20 @@
+Index: qtbase-opensource-src-5.6.2/src/corelib/kernel/qcoreapplication.cpp
+===================================================================
+--- qtbase-opensource-src-5.6.2.orig/src/corelib/kernel/qcoreapplication.cpp
++++ qtbase-opensource-src-5.6.2/src/corelib/kernel/qcoreapplication.cpp
+@@ -2533,6 +2533,15 @@ QStringList QCoreApplication::libraryPat
+         QStringList *app_libpaths = new QStringList;
+         coreappdata()->app_libpaths.reset(app_libpaths);
+ 
++        // Add library paths derived from NIX_PROFILES.
++        const QByteArrayList profiles = qgetenv("NIX_PROFILES").split(' ');
++        const QString plugindir = QString::fromLatin1("/lib/qt5/plugins");
++        for (const QByteArray &profile: profiles) {
++            if (!profile.isEmpty()) {
++                app_libpaths->append(QFile::decodeName(profile) + plugindir);
++            }
++        }
++
+         const QByteArray libPathEnv = qgetenv("QT_PLUGIN_PATH");
+         if (!libPathEnv.isEmpty()) {
+             QStringList paths = QFile::decodeName(libPathEnv).split(QDir::listSeparator(), QString::SkipEmptyParts);
diff --git a/pkgs/development/libraries/qt-5/5.6/qtbase/qpa-platform-plugin-path.patch b/pkgs/development/libraries/qt-5/5.6/qtbase/qpa-platform-plugin-path.patch
new file mode 100644
index 00000000000..32d9dcad622
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.6/qtbase/qpa-platform-plugin-path.patch
@@ -0,0 +1,43 @@
+Index: qtbase-opensource-src-5.6.2/src/gui/kernel/qplatformintegrationfactory.cpp
+===================================================================
+--- qtbase-opensource-src-5.6.2.orig/src/gui/kernel/qplatformintegrationfactory.cpp
++++ qtbase-opensource-src-5.6.2/src/gui/kernel/qplatformintegrationfactory.cpp
+@@ -67,9 +67,10 @@ QPlatformIntegration *QPlatformIntegrati
+     // Try loading the plugin from platformPluginPath first:
+     if (!platformPluginPath.isEmpty()) {
+         QCoreApplication::addLibraryPath(platformPluginPath);
+-        if (QPlatformIntegration *ret = loadIntegration(directLoader(), platform, paramList, argc, argv))
+-            return ret;
+     }
++    QCoreApplication::addLibraryPath(QStringLiteral(NIXPKGS_QPA_PLATFORM_PLUGIN_PATH));
++    if (QPlatformIntegration *ret = loadIntegration(directLoader(), platform, paramList, argc, argv))
++        return ret;
+     if (QPlatformIntegration *ret = loadIntegration(loader(), platform, paramList, argc, argv))
+         return ret;
+ #else
+@@ -95,15 +96,16 @@ QStringList QPlatformIntegrationFactory:
+     QStringList list;
+     if (!platformPluginPath.isEmpty()) {
+         QCoreApplication::addLibraryPath(platformPluginPath);
+-        list = directLoader()->keyMap().values();
+-        if (!list.isEmpty()) {
+-            const QString postFix = QStringLiteral(" (from ")
+-                                    + QDir::toNativeSeparators(platformPluginPath)
+-                                    + QLatin1Char(')');
+-            const QStringList::iterator end = list.end();
+-            for (QStringList::iterator it = list.begin(); it != end; ++it)
+-                (*it).append(postFix);
+-        }
++    }
++    QCoreApplication::addLibraryPath(QStringLiteral(NIXPKGS_QPA_PLATFORM_PLUGIN_PATH));
++    list = directLoader()->keyMap().values();
++    if (!list.isEmpty()) {
++        const QString postFix = QStringLiteral(" (from ")
++            + QDir::toNativeSeparators(platformPluginPath)
++            + QLatin1Char(')');
++        const QStringList::iterator end = list.end();
++        for (QStringList::iterator it = list.begin(); it != end; ++it)
++            (*it).append(postFix);
+     }
+     list.append(loader()->keyMap().values());
+     return list;
diff --git a/pkgs/development/libraries/qt-5/5.6/qtbase/series b/pkgs/development/libraries/qt-5/5.6/qtbase/series
index 9ef8c998c66..3527a91c84d 100644
--- a/pkgs/development/libraries/qt-5/5.6/qtbase/series
+++ b/pkgs/development/libraries/qt-5/5.6/qtbase/series
@@ -4,5 +4,7 @@ dlopen-libXcursor.patch
 dlopen-openssl.patch
 dlopen-dbus.patch
 xdg-config-dirs.patch
+nix-profiles-library-paths.patch
 compose-search-path.patch
 libressl.patch
+qpa-platform-plugin-path.patch
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 88684d9a753..ee6399c2bd4 100644
--- a/pkgs/development/libraries/qt-5/5.8/qtbase/default.nix
+++ b/pkgs/development/libraries/qt-5/5.8/qtbase/default.nix
@@ -128,7 +128,7 @@ stdenv.mkDerivation {
         -qmldir $out/lib/qt5/qml \
         -docdir $out/share/doc/qt5"
 
-    NIX_CFLAGS_COMPILE+=" -DNIXPKGS_QPA_PLATFORM_PLUGIN_PATH=\"''${!outputLib}/lib/qt5/plugins\""
+    NIX_CFLAGS_COMPILE+=" -DNIXPKGS_QPA_PLATFORM_PLUGIN_PATH=\"''${!outputLib}/lib/qt5/plugins/platforms\""
   '';
 
 
diff --git a/pkgs/development/libraries/qt-5/5.8/qtbase/nix-profiles-library-paths.patch b/pkgs/development/libraries/qt-5/5.8/qtbase/nix-profiles-library-paths.patch
new file mode 100644
index 00000000000..553c71d0ace
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.8/qtbase/nix-profiles-library-paths.patch
@@ -0,0 +1,20 @@
+Index: qtbase-opensource-src-5.8.0/src/corelib/kernel/qcoreapplication.cpp
+===================================================================
+--- qtbase-opensource-src-5.8.0.orig/src/corelib/kernel/qcoreapplication.cpp
++++ qtbase-opensource-src-5.8.0/src/corelib/kernel/qcoreapplication.cpp
+@@ -2476,6 +2476,15 @@ QStringList QCoreApplication::libraryPat
+         QStringList *app_libpaths = new QStringList;
+         coreappdata()->app_libpaths.reset(app_libpaths);
+ 
++        // Add library paths derived from NIX_PROFILES.
++        const QByteArrayList profiles = qgetenv("NIX_PROFILES").split(' ');
++        const QString plugindir = QString::fromLatin1("/lib/qt5/plugins");
++        for (const QByteArray &profile: profiles) {
++            if (!profile.isEmpty()) {
++                app_libpaths->append(QFile::decodeName(profile) + plugindir);
++            }
++        }
++
+         const QByteArray libPathEnv = qgetenv("QT_PLUGIN_PATH");
+         if (!libPathEnv.isEmpty()) {
+             QStringList paths = QFile::decodeName(libPathEnv).split(QDir::listSeparator(), QString::SkipEmptyParts);
diff --git a/pkgs/development/libraries/qt-5/5.8/qtbase/qpa-platform-plugin-path.patch b/pkgs/development/libraries/qt-5/5.8/qtbase/qpa-platform-plugin-path.patch
new file mode 100644
index 00000000000..270116e1978
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.8/qtbase/qpa-platform-plugin-path.patch
@@ -0,0 +1,43 @@
+Index: qtbase-opensource-src-5.8.0/src/gui/kernel/qplatformintegrationfactory.cpp
+===================================================================
+--- qtbase-opensource-src-5.8.0.orig/src/gui/kernel/qplatformintegrationfactory.cpp
++++ qtbase-opensource-src-5.8.0/src/gui/kernel/qplatformintegrationfactory.cpp
+@@ -62,9 +62,10 @@ QPlatformIntegration *QPlatformIntegrati
+     // Try loading the plugin from platformPluginPath first:
+     if (!platformPluginPath.isEmpty()) {
+         QCoreApplication::addLibraryPath(platformPluginPath);
+-        if (QPlatformIntegration *ret = qLoadPlugin<QPlatformIntegration, QPlatformIntegrationPlugin>(directLoader(), platform, paramList, argc, argv))
+-            return ret;
+     }
++    QCoreApplication::addLibraryPath(QStringLiteral(NIXPKGS_QPA_PLATFORM_PLUGIN_PATH));
++    if (QPlatformIntegration *ret = qLoadPlugin<QPlatformIntegration, QPlatformIntegrationPlugin>(directLoader(), platform, paramList, argc, argv))
++        return ret;
+ #else
+     Q_UNUSED(platformPluginPath);
+ #endif
+@@ -84,15 +85,16 @@ QStringList QPlatformIntegrationFactory:
+ #ifndef QT_NO_LIBRARY
+     if (!platformPluginPath.isEmpty()) {
+         QCoreApplication::addLibraryPath(platformPluginPath);
+-        list = directLoader()->keyMap().values();
+-        if (!list.isEmpty()) {
+-            const QString postFix = QLatin1String(" (from ")
+-                                    + QDir::toNativeSeparators(platformPluginPath)
+-                                    + QLatin1Char(')');
+-            const QStringList::iterator end = list.end();
+-            for (QStringList::iterator it = list.begin(); it != end; ++it)
+-                (*it).append(postFix);
+-        }
++    }
++    QCoreApplication::addLibraryPath(QStringLiteral(NIXPKGS_QPA_PLATFORM_PLUGIN_PATH));
++    list = directLoader()->keyMap().values();
++    if (!list.isEmpty()) {
++        const QString postFix = QLatin1String(" (from ")
++            + QDir::toNativeSeparators(platformPluginPath)
++            + QLatin1Char(')');
++        const QStringList::iterator end = list.end();
++        for (QStringList::iterator it = list.begin(); it != end; ++it)
++            (*it).append(postFix);
+     }
+ #else
+     Q_UNUSED(platformPluginPath);
diff --git a/pkgs/development/libraries/qt-5/5.8/qtbase/qpa-plugin-path.patch b/pkgs/development/libraries/qt-5/5.8/qtbase/qpa-plugin-path.patch
deleted file mode 100644
index 6d40ed19c00..00000000000
--- a/pkgs/development/libraries/qt-5/5.8/qtbase/qpa-plugin-path.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Index: qtbase-opensource-src-5.8.0/src/gui/kernel/qguiapplication.cpp
-===================================================================
---- qtbase-opensource-src-5.8.0.orig/src/gui/kernel/qguiapplication.cpp
-+++ qtbase-opensource-src-5.8.0/src/gui/kernel/qguiapplication.cpp
-@@ -1217,6 +1217,10 @@ void QGuiApplicationPrivate::createPlatf
- 
-     // Load the platform integration
-     QString platformPluginPath = QString::fromLocal8Bit(qgetenv("QT_QPA_PLATFORM_PLUGIN_PATH"));
-+    if (!platformPluginPath.isEmpty()) {
-+        platformPluginPath.append(QStringLiteral(":"));
-+    }
-+    platformPluginPath.append(QStringLiteral(NIXPKGS_QPA_PLATFORM_PLUGIN_PATH));
- 
- 
-     QByteArray platformName;
diff --git a/pkgs/development/libraries/qt-5/5.8/qtbase/series b/pkgs/development/libraries/qt-5/5.8/qtbase/series
index 0378ca1f503..47400cf7aa3 100644
--- a/pkgs/development/libraries/qt-5/5.8/qtbase/series
+++ b/pkgs/development/libraries/qt-5/5.8/qtbase/series
@@ -2,8 +2,9 @@ dlopen-resolv.patch
 tzdir.patch
 dlopen-libXcursor.patch
 xdg-config-dirs.patch
+nix-profiles-library-paths.patch
 libressl.patch
-qpa-plugin-path.patch
+qpa-platform-plugin-path.patch
 dlopen-gl.patch
 compose-search-path.patch
 cmake-paths.patch