summary refs log tree commit diff
path: root/pkgs/development/libraries/kde-frameworks-5.13/kinit/0001-kinit-libpath.patch
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/libraries/kde-frameworks-5.13/kinit/0001-kinit-libpath.patch')
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.13/kinit/0001-kinit-libpath.patch42
1 files changed, 42 insertions, 0 deletions
diff --git a/pkgs/development/libraries/kde-frameworks-5.13/kinit/0001-kinit-libpath.patch b/pkgs/development/libraries/kde-frameworks-5.13/kinit/0001-kinit-libpath.patch
new file mode 100644
index 00000000000..9c76079a382
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.13/kinit/0001-kinit-libpath.patch
@@ -0,0 +1,42 @@
+From 723c9b1268a04127647a1c20eebe9804150566dd Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@gmail.com>
+Date: Sat, 13 Jun 2015 08:57:55 -0500
+Subject: [PATCH] kinit libpath
+
+---
+ src/kdeinit/kinit.cpp | 18 ++++++++++--------
+ 1 file changed, 10 insertions(+), 8 deletions(-)
+
+diff --git a/src/kdeinit/kinit.cpp b/src/kdeinit/kinit.cpp
+index 9e775b6..0ac5646 100644
+--- a/src/kdeinit/kinit.cpp
++++ b/src/kdeinit/kinit.cpp
+@@ -660,15 +660,17 @@ static pid_t launch(int argc, const char *_name, const char *args,
+         if (!libpath.isEmpty()) {
+             if (!l.load()) {
+                 if (libpath_relative) {
+-                    // NB: Because Qt makes the actual dlopen() call, the
+-                    //     RUNPATH of kdeinit is *not* respected - see
+-                    //     https://sourceware.org/bugzilla/show_bug.cgi?id=13945
+-                    //     - so we try hacking it in ourselves
+-                    QString install_lib_dir = QFile::decodeName(
+-                            CMAKE_INSTALL_PREFIX "/" LIB_INSTALL_DIR "/");
+-                    libpath = install_lib_dir + libpath;
+-                    l.setFileName(libpath);
++                  // Use QT_PLUGIN_PATH to find shared library directories
++                  // For KF5, the plugin path is /lib/qt5/plugins/, so kdeinit5
++                  // shared libraries should be in /lib/qt5/plugins/../../
++                  const QRegExp pathSepRegExp(QString::fromLatin1("[:\b]"));
++                  const QString up = QString::fromLocal8Bit("/../../");
++                  const QStringList paths = QString::fromLocal8Bit(qgetenv("QT_PLUGIN_PATH")).split(pathSepRegExp, QString::KeepEmptyParts);
++                  Q_FOREACH (const QString &path, paths) {
++                    l.setFileName(path + up + libpath);
+                     l.load();
++                    if (l.isLoaded()) break;
++                  }
+                 }
+             }
+             if (!l.isLoaded()) {
+-- 
+2.4.2
+