mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-02-19 17:39:34 +00:00
qtbase: search platform plugin paths before other plugin paths
This commit is contained in:
parent
88a5082edf
commit
7c338b7df8
pkgs/development/libraries/qt-5
|
@ -104,6 +104,8 @@ stdenv.mkDerivation {
|
||||||
-importdir $out/lib/qt5/imports \
|
-importdir $out/lib/qt5/imports \
|
||||||
-qmldir $out/lib/qt5/qml \
|
-qmldir $out/lib/qt5/qml \
|
||||||
-docdir $out/share/doc/qt5"
|
-docdir $out/share/doc/qt5"
|
||||||
|
|
||||||
|
NIX_CFLAGS_COMPILE+=" -DNIXPKGS_QPA_PLATFORM_PLUGIN_PATH=\"''${!outputLib}/lib/qt5/plugins/platforms\""
|
||||||
'';
|
'';
|
||||||
|
|
||||||
prefixKey = "-prefix ";
|
prefixKey = "-prefix ";
|
||||||
|
|
|
@ -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;
|
|
@ -7,3 +7,4 @@ xdg-config-dirs.patch
|
||||||
nix-profiles-library-paths.patch
|
nix-profiles-library-paths.patch
|
||||||
compose-search-path.patch
|
compose-search-path.patch
|
||||||
libressl.patch
|
libressl.patch
|
||||||
|
qpa-platform-plugin-path.patch
|
||||||
|
|
|
@ -128,7 +128,7 @@ stdenv.mkDerivation {
|
||||||
-qmldir $out/lib/qt5/qml \
|
-qmldir $out/lib/qt5/qml \
|
||||||
-docdir $out/share/doc/qt5"
|
-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\""
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@ 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.orig/src/corelib/kernel/qcoreapplication.cpp
|
||||||
+++ qtbase-opensource-src-5.8.0/src/corelib/kernel/qcoreapplication.cpp
|
+++ qtbase-opensource-src-5.8.0/src/corelib/kernel/qcoreapplication.cpp
|
||||||
@@ -2476,7 +2476,17 @@ QStringList QCoreApplication::libraryPat
|
@@ -2476,6 +2476,15 @@ QStringList QCoreApplication::libraryPat
|
||||||
QStringList *app_libpaths = new QStringList;
|
QStringList *app_libpaths = new QStringList;
|
||||||
coreappdata()->app_libpaths.reset(app_libpaths);
|
coreappdata()->app_libpaths.reset(app_libpaths);
|
||||||
|
|
||||||
|
@ -16,7 +16,5 @@ Index: qtbase-opensource-src-5.8.0/src/corelib/kernel/qcoreapplication.cpp
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
const QByteArray libPathEnv = qgetenv("QT_PLUGIN_PATH");
|
const QByteArray libPathEnv = qgetenv("QT_PLUGIN_PATH");
|
||||||
+ qunsetenv("QT_PLUGIN_PATH"); // do not propagate to child processes
|
|
||||||
if (!libPathEnv.isEmpty()) {
|
if (!libPathEnv.isEmpty()) {
|
||||||
QStringList paths = QFile::decodeName(libPathEnv).split(QDir::listSeparator(), QString::SkipEmptyParts);
|
QStringList paths = QFile::decodeName(libPathEnv).split(QDir::listSeparator(), QString::SkipEmptyParts);
|
||||||
for (QStringList::const_iterator it = paths.constBegin(); it != paths.constEnd(); ++it) {
|
|
||||||
|
|
|
@ -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);
|
|
@ -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;
|
|
|
@ -4,7 +4,7 @@ dlopen-libXcursor.patch
|
||||||
xdg-config-dirs.patch
|
xdg-config-dirs.patch
|
||||||
nix-profiles-library-paths.patch
|
nix-profiles-library-paths.patch
|
||||||
libressl.patch
|
libressl.patch
|
||||||
qpa-plugin-path.patch
|
qpa-platform-plugin-path.patch
|
||||||
dlopen-gl.patch
|
dlopen-gl.patch
|
||||||
compose-search-path.patch
|
compose-search-path.patch
|
||||||
cmake-paths.patch
|
cmake-paths.patch
|
||||||
|
|
Loading…
Reference in a new issue