all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* [bug#33820] [PATCH 0/9] Adopt NixOS patches for KDE Frameworks
@ 2018-12-21 10:08 Hartmut Goebel
  2018-12-21 10:10 ` [bug#33820] [PATCH 1/9] gnu: kcmutils: Make QDirIterator follow symlinks Hartmut Goebel
       [not found] ` <handler.33820.B.15453865187770.ack@debbugs.gnu.org>
  0 siblings, 2 replies; 11+ messages in thread
From: Hartmut Goebel @ 2018-12-21 10:08 UTC (permalink / raw)
  To: 33820

I reviewed the patches NixOS aplies to KDE, like I did for Qt (see bug
#30340). The changes in this series hold the result. I stepped over these when
trying to make KDE Plasma work.

Most changes are about using store-paths to other packages and for dynamically
loaded libs.  To ease future work, I also added comments about patches we do
not need and why.

Whenenver possible, the "patch" was implemented using `substitute`.

Hartmut Goebel (9):
  gnu: kcmutils: Make QDirIterator follow symlinks.
  gnu: kcmutils: Print plugin name when loading fails.
  gnu: kconfigwidgets: Make QDirIterator follow symlinks.
  gnu: kdelibs4support: Add todo comment for a patch from NixOS.
  gnu: kio: Search 'smbd' on $PATH.
  gnu: kinit: Use the store paths for dynamically loaded libs.
  gnu: kinit: Use LIBRARY_PATH to search for dynamically loaded libs.
  gnu: kpackage: Transfer patches from NixOS.
  gnu: kservice: Transfer patches from NixOS.

 gnu/local.mk                                       |  4 ++
 gnu/packages/kde-frameworks.scm                    | 79 ++++++++++++++++++++--
 .../patches/kinit-kdeinit-extra_libs.patch         | 55 +++++++++++++++
 gnu/packages/patches/kinit-kdeinit-libpath.patch   | 37 ++++++++++
 gnu/packages/patches/kio-search-smbd-on-PATH.patch | 30 ++++++++
 .../patches/kpackage-allow-external-paths.patch    | 13 ++++
 6 files changed, 212 insertions(+), 6 deletions(-)
 create mode 100644 gnu/packages/patches/kinit-kdeinit-extra_libs.patch
 create mode 100644 gnu/packages/patches/kinit-kdeinit-libpath.patch
 create mode 100644 gnu/packages/patches/kio-search-smbd-on-PATH.patch
 create mode 100644 gnu/packages/patches/kpackage-allow-external-paths.patch

-- 
2.13.7

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [bug#33820] [PATCH 1/9] gnu: kcmutils: Make QDirIterator follow symlinks.
  2018-12-21 10:08 [bug#33820] [PATCH 0/9] Adopt NixOS patches for KDE Frameworks Hartmut Goebel
@ 2018-12-21 10:10 ` Hartmut Goebel
  2018-12-21 10:10   ` [bug#33820] [PATCH 2/9] gnu: kcmutils: Print plugin name when loading fails Hartmut Goebel
                     ` (7 more replies)
       [not found] ` <handler.33820.B.15453865187770.ack@debbugs.gnu.org>
  1 sibling, 8 replies; 11+ messages in thread
From: Hartmut Goebel @ 2018-12-21 10:10 UTC (permalink / raw)
  To: 33820

Transfer the NixOS patch "kcmutils-follow-symlinks" for kcmutils as of
2018-02-17.

* gnu/packages/kde-frameworks.scm(kcmutils)<patch>: New phase.
---
 gnu/packages/kde-frameworks.scm | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/kde-frameworks.scm b/gnu/packages/kde-frameworks.scm
index 29f954293..d508624e7 100644
--- a/gnu/packages/kde-frameworks.scm
+++ b/gnu/packages/kde-frameworks.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2016,2017 Hartmut Goebel <h.goebel@crazy-compilers.com>
+;;; Copyright © 2016,2017,2018 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -2110,6 +2110,16 @@ using the XBEL format.")
        ("kservice" ,kservice)))
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch
+           (lambda _
+             (substitute* "src/kpluginselector.cpp"
+               ;; make QDirIterator follow symlinks
+               (("^\\s*(QDirIterator it\\(.*, QDirIterator::Subdirectories)(\\);)" _ a b)
+                (string-append a " | QDirIterator::FollowSymlinks" b)))
+             #t)))))
     (inputs
      `(("kauth" ,kauth)
        ("kcodecs" ,kcodecs)
-- 
2.13.7

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [bug#33820] [PATCH 2/9] gnu: kcmutils: Print plugin name when loading fails.
  2018-12-21 10:10 ` [bug#33820] [PATCH 1/9] gnu: kcmutils: Make QDirIterator follow symlinks Hartmut Goebel
@ 2018-12-21 10:10   ` Hartmut Goebel
  2018-12-21 10:10   ` [bug#33820] [PATCH 3/9] gnu: kconfigwidgets: Make QDirIterator follow symlinks Hartmut Goebel
                     ` (6 subsequent siblings)
  7 siblings, 0 replies; 11+ messages in thread
From: Hartmut Goebel @ 2018-12-21 10:10 UTC (permalink / raw)
  To: 33820

Transfer the NixOS patch "kcmutils-debug-module-loader" for kcmutils as of
2018-02-17.

* gnu/packages/kde-frameworks.scm(kcmutils)<patch>: Add substitute for
  src/kcmoduleloader.cpp.
---
 gnu/packages/kde-frameworks.scm | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/gnu/packages/kde-frameworks.scm b/gnu/packages/kde-frameworks.scm
index d508624e7..3f0eff292 100644
--- a/gnu/packages/kde-frameworks.scm
+++ b/gnu/packages/kde-frameworks.scm
@@ -2119,6 +2119,10 @@ using the XBEL format.")
                ;; make QDirIterator follow symlinks
                (("^\\s*(QDirIterator it\\(.*, QDirIterator::Subdirectories)(\\);)" _ a b)
                 (string-append a " | QDirIterator::FollowSymlinks" b)))
+             (substitute* "src/kcmoduleloader.cpp"
+               ;; print plugin name when loading fails
+               (("^\\s*(qWarning\\(\\) << \"Error loading) (plugin:\")( << loader\\.errorString\\(\\);)" _ a b c)
+                (string-append a " KCM plugin\" << mod.service()->library() << \":\"" c)))
              #t)))))
     (inputs
      `(("kauth" ,kauth)
-- 
2.13.7

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [bug#33820] [PATCH 3/9] gnu: kconfigwidgets: Make QDirIterator follow symlinks.
  2018-12-21 10:10 ` [bug#33820] [PATCH 1/9] gnu: kcmutils: Make QDirIterator follow symlinks Hartmut Goebel
  2018-12-21 10:10   ` [bug#33820] [PATCH 2/9] gnu: kcmutils: Print plugin name when loading fails Hartmut Goebel
@ 2018-12-21 10:10   ` Hartmut Goebel
  2018-12-21 10:10   ` [bug#33820] [PATCH 4/9] gnu: kdelibs4support: Add todo comment for a patch from NixOS Hartmut Goebel
                     ` (5 subsequent siblings)
  7 siblings, 0 replies; 11+ messages in thread
From: Hartmut Goebel @ 2018-12-21 10:10 UTC (permalink / raw)
  To: 33820

Transfer the NixOS patch "qdiriterator-follow-symlinks" for kconfigwidgets as
of 2018-02-17.

* gnu/packages/kde-frameworks.scm(kconfigwidgets)<patch>: New phase.
---
 gnu/packages/kde-frameworks.scm | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/gnu/packages/kde-frameworks.scm b/gnu/packages/kde-frameworks.scm
index 3f0eff292..3c8063799 100644
--- a/gnu/packages/kde-frameworks.scm
+++ b/gnu/packages/kde-frameworks.scm
@@ -2174,6 +2174,13 @@ KCModules can be created with the KConfigWidgets framework.")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'patch
+           (lambda _
+             (substitute* "src/khelpclient.cpp"
+               ;; make QDirIterator follow symlinks
+               (("^\\s*(QDirIterator it\\(.*, QDirIterator::Subdirectories)(\\);)" _ a b)
+                (string-append a " | QDirIterator::FollowSymlinks" b)))
+             #t))
          (add-before 'check 'check-setup
            (lambda _
              ;; make Qt render "offscreen", required for tests
-- 
2.13.7

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [bug#33820] [PATCH 4/9] gnu: kdelibs4support: Add todo comment for a patch from NixOS.
  2018-12-21 10:10 ` [bug#33820] [PATCH 1/9] gnu: kcmutils: Make QDirIterator follow symlinks Hartmut Goebel
  2018-12-21 10:10   ` [bug#33820] [PATCH 2/9] gnu: kcmutils: Print plugin name when loading fails Hartmut Goebel
  2018-12-21 10:10   ` [bug#33820] [PATCH 3/9] gnu: kconfigwidgets: Make QDirIterator follow symlinks Hartmut Goebel
@ 2018-12-21 10:10   ` Hartmut Goebel
  2018-12-21 10:10   ` [bug#33820] [PATCH 5/9] gnu: kio: Search 'smbd' on $PATH Hartmut Goebel
                     ` (4 subsequent siblings)
  7 siblings, 0 replies; 11+ messages in thread
From: Hartmut Goebel @ 2018-12-21 10:10 UTC (permalink / raw)
  To: 33820

* gnu/packages/kde-frameworks.scm(kdelibs4support): Add comment.
---
 gnu/packages/kde-frameworks.scm | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/gnu/packages/kde-frameworks.scm b/gnu/packages/kde-frameworks.scm
index 3c8063799..c73527b43 100644
--- a/gnu/packages/kde-frameworks.scm
+++ b/gnu/packages/kde-frameworks.scm
@@ -3467,6 +3467,8 @@ workspace.")
        ("qtx11extras" ,qtx11extras)))
     ;; FIXME: Use GuixSD ca-bundle.crt in etc/xdg/ksslcalist and
     ;; share/kf5/kssl/ca-bundle.crt
+    ;; TODO: NixOS has nix-kde-include-dir.patch to change std-dir "include"
+    ;; into "@dev@/include/". Think about whether this is needed for us, too.
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-- 
2.13.7

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [bug#33820] [PATCH 5/9] gnu: kio: Search 'smbd' on $PATH.
  2018-12-21 10:10 ` [bug#33820] [PATCH 1/9] gnu: kcmutils: Make QDirIterator follow symlinks Hartmut Goebel
                     ` (2 preceding siblings ...)
  2018-12-21 10:10   ` [bug#33820] [PATCH 4/9] gnu: kdelibs4support: Add todo comment for a patch from NixOS Hartmut Goebel
@ 2018-12-21 10:10   ` Hartmut Goebel
  2018-12-21 10:10   ` [bug#33820] [PATCH 6/9] gnu: kinit: Use the store paths for dynamically loaded libs Hartmut Goebel
                     ` (3 subsequent siblings)
  7 siblings, 0 replies; 11+ messages in thread
From: Hartmut Goebel @ 2018-12-21 10:10 UTC (permalink / raw)
  To: 33820

Transfer the remaining NixOS patch for kio as of 2018-02-17.

* gnu/packages/patches/kio-search-smbd-on-PATH.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/kde-frameworks.scm(kio)<source>: Use it.
---
 gnu/local.mk                                       |  1 +
 gnu/packages/kde-frameworks.scm                    |  6 ++---
 gnu/packages/patches/kio-search-smbd-on-PATH.patch | 30 ++++++++++++++++++++++
 3 files changed, 34 insertions(+), 3 deletions(-)
 create mode 100644 gnu/packages/patches/kio-search-smbd-on-PATH.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 8e1ce88bc..0403f82ba 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -854,6 +854,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/kiki-makefile.patch			\
   %D%/packages/patches/kiki-missing-includes.patch		\
   %D%/packages/patches/kiki-portability-64bit.patch		\
+  %D%/packages/patches/kio-search-smbd-on-PATH.patch		\
   %D%/packages/patches/kmod-module-directory.patch		\
   %D%/packages/patches/kobodeluxe-paths.patch			\
   %D%/packages/patches/kobodeluxe-enemies-pipe-decl.patch	\
diff --git a/gnu/packages/kde-frameworks.scm b/gnu/packages/kde-frameworks.scm
index c73527b43..435b55a49 100644
--- a/gnu/packages/kde-frameworks.scm
+++ b/gnu/packages/kde-frameworks.scm
@@ -2595,7 +2595,8 @@ makes starting KDE applications faster and reduces memory consumption.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0rrsg3g1b204cdp58vxd5dig1ggwyvk1382p1c86vn6w8qbrq27k"))))
+                "0rrsg3g1b204cdp58vxd5dig1ggwyvk1382p1c86vn6w8qbrq27k"))
+              (patches (search-patches "kio-search-smbd-on-PATH.patch"))))
     (build-system cmake-build-system)
     (propagated-inputs
      `(("kbookmarks" ,kbookmarks)
@@ -2638,11 +2639,10 @@ makes starting KDE applications faster and reduces memory consumption.")
        (modify-phases %standard-phases
          (add-after 'unpack 'patch
            (lambda _
-             ;; Better error message (taken from nix)
+             ;; Better error message (taken from NixOS)
              (substitute* "src/kiod/kiod_main.cpp"
                (("(^\\s*qCWarning(KIOD_CATEGORY) << \"Error loading plugin:\")( << loader.errorString();)" _ a b)
                 (string-append a "<< name" b)))
-             ;; TODO: samba-search-path.patch from nix: search smbd on $PATH
              #t))
          (add-before 'check 'check-setup
            (lambda _
diff --git a/gnu/packages/patches/kio-search-smbd-on-PATH.patch b/gnu/packages/patches/kio-search-smbd-on-PATH.patch
new file mode 100644
index 000000000..47e20cfc0
--- /dev/null
+++ b/gnu/packages/patches/kio-search-smbd-on-PATH.patch
@@ -0,0 +1,30 @@
+Adopted from NixOS
+pkgs/development/libraries/kde-frameworks/kio/samba-search-path.patch
+
+===================================================================
+--- kio-5.17.0.orig/src/core/ksambashare.cpp
++++ kio-5.17.0/src/core/ksambashare.cpp
+@@ -67,13 +67,18 @@ KSambaSharePrivate::~KSambaSharePrivate(
+ 
+ bool KSambaSharePrivate::isSambaInstalled()
+ {
+-    if (QFile::exists(QStringLiteral("/usr/sbin/smbd"))
+-            || QFile::exists(QStringLiteral("/usr/local/sbin/smbd"))) {
+-        return true;
++    const QByteArray pathEnv = qgetenv("PATH");
++    if (!pathEnv.isEmpty()) {
++        QLatin1Char pathSep(':');
++        QStringList paths = QFile::decodeName(pathEnv).split(pathSep, QString::SkipEmptyParts);
++        for (QStringList::iterator it = paths.begin(); it != paths.end(); ++it) {
++            it->append("/smbd");
++            if (QFile::exists(*it)) {
++                return true;
++            }
++        }
+     }
+ 
+-    //qDebug() << "Samba is not installed!";
+-
+     return false;
+ }
+ 
-- 
2.13.7

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [bug#33820] [PATCH 6/9] gnu: kinit: Use the store paths for dynamically loaded libs.
  2018-12-21 10:10 ` [bug#33820] [PATCH 1/9] gnu: kcmutils: Make QDirIterator follow symlinks Hartmut Goebel
                     ` (3 preceding siblings ...)
  2018-12-21 10:10   ` [bug#33820] [PATCH 5/9] gnu: kio: Search 'smbd' on $PATH Hartmut Goebel
@ 2018-12-21 10:10   ` Hartmut Goebel
  2018-12-21 10:10   ` [bug#33820] [PATCH 7/9] gnu: kinit: Use LIBRARY_PATH to search " Hartmut Goebel
                     ` (2 subsequent siblings)
  7 siblings, 0 replies; 11+ messages in thread
From: Hartmut Goebel @ 2018-12-21 10:10 UTC (permalink / raw)
  To: 33820

Transfer the NixOS "kdeinit-extra_libs" patch for kinit as of
2018-02-17.

* gnu/packages/patches/kinit-kdeinit-extra_libs.patch: New filee.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/kde-frameworks.scm (kinit)[source]: Use it.
  <patch-paths>: New phase.
  [inputs]: Add kparts, plasma-framework.
---
 gnu/local.mk                                       |  1 +
 gnu/packages/kde-frameworks.scm                    | 18 ++++++-
 .../patches/kinit-kdeinit-extra_libs.patch         | 55 ++++++++++++++++++++++
 3 files changed, 73 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/kinit-kdeinit-extra_libs.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 0403f82ba..783a7c624 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -854,6 +854,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/kiki-makefile.patch			\
   %D%/packages/patches/kiki-missing-includes.patch		\
   %D%/packages/patches/kiki-portability-64bit.patch		\
+  %D%/packages/patches/kinit-kdeinit-extra_libs.patch		\
   %D%/packages/patches/kio-search-smbd-on-PATH.patch		\
   %D%/packages/patches/kmod-module-directory.patch		\
   %D%/packages/patches/kobodeluxe-paths.patch			\
diff --git a/gnu/packages/kde-frameworks.scm b/gnu/packages/kde-frameworks.scm
index 435b55a49..edc2587a9 100644
--- a/gnu/packages/kde-frameworks.scm
+++ b/gnu/packages/kde-frameworks.scm
@@ -2548,8 +2548,22 @@ in applications using the KDE Frameworks.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1rq9b59gdgcpvwd694l8h55sqahpdaky0n7ag5psjlfn5myf1d95"))))
+                "1rq9b59gdgcpvwd694l8h55sqahpdaky0n7ag5psjlfn5myf1d95"))
+              ;; Use the store paths for other packages and dynamically loaded
+              ;; libs
+              (patches (search-patches "kinit-kdeinit-extra_libs.patch"))))
     (build-system cmake-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-paths
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             ;; Set patched-in values:
+             (substitute* "src/kdeinit/kinit.cpp"
+               (("GUIX_PKGS_KF5_KIO") (assoc-ref inputs "kio"))
+               (("GUIX_PKGS_KF5_PARTS") (assoc-ref inputs "kparts"))
+               (("GUIX_PKGS_KF5_PLASMA") (assoc-ref inputs "plasma-framework")))
+             #t)))))
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
        ("pkg-config" ,pkg-config)))
@@ -2567,11 +2581,13 @@ in applications using the KDE Frameworks.")
        ("kitemviews" ,kitemviews)
        ("ki18n" ,ki18n)
        ("kjobwidgets" ,kjobwidgets)
+       ("kparts" ,kparts)
        ("kservice" ,kservice)
        ("kwidgetsaddons" ,kwidgetsaddons)
        ("kwindowsystem" ,kwindowsystem)
        ("kxmlgui" ,kxmlgui)
        ("libcap" ,libcap) ; to install start_kdeinit with CAP_SYS_RESOURCE
+       ("plasma-framework" ,plasma-framework)
        ("qtbase" ,qtbase)
        ("solid" ,solid)))
     (home-page "https://community.kde.org/Frameworks")
diff --git a/gnu/packages/patches/kinit-kdeinit-extra_libs.patch b/gnu/packages/patches/kinit-kdeinit-extra_libs.patch
new file mode 100644
index 000000000..8dcd4d3e9
--- /dev/null
+++ b/gnu/packages/patches/kinit-kdeinit-extra_libs.patch
@@ -0,0 +1,55 @@
+Search the "extra libs" in GUIX_KF5INIT_LIB_PATH (which basically is a
+collection of all /lib directories). We can not hard-code the full path to the
+libsKF5Plasam, since adding palse-workspace
+
+Adopted from NixOS
+pkgs/development/libraries/kde-frameworks/kinit/kdeinit-extra_libs.patch
+
+===================================================================
+--- kinit-5.32.0/src/kdeinit/kinit-5.32.0/src/kdeinit/.orig
++++ kinit-5.32.0/src/kdeinit/kinit.cpp
+@@ -96,11 +96,9 @@
+     "libKF5Parts.5.dylib",
+     "libKF5Plasma.5.dylib"
+ #else
+-    "libKF5KIOCore.so.5",
+-    "libKF5Parts.so.5",
+-//#ifdef __KDE_HAVE_GCC_VISIBILITY // Removed for KF5, we'll see.
+-    "libKF5Plasma.so.5"
+-//#endif
++    "GUIX_PKGS_KF5_KIO/lib/libKF5KIOCore.so.5",
++    "GUIX_PKGS_KF5_PARTS/lib/libKF5Parts.so.5",
++    "GUIX_PKGS_KF5_PLASMA/lib/libKF5Plasma.so.5"
+ #endif
+ };
+ #endif
+@@ -1533,20 +1531,6 @@ static int initXconnection()
+ }
+ #endif
+ 
+-#ifndef Q_OS_OSX
+-// Find a shared lib in the lib dir, e.g. libkio.so.
+-// Completely unrelated to plugins.
+-static QString findSharedLib(const QString &lib)
+-{
+-    QString path = QFile::decodeName(CMAKE_INSTALL_PREFIX "/" LIB_INSTALL_DIR "/") + lib;
+-    if (QFile::exists(path)) {
+-        return path;
+-    }
+-    // We could also look in LD_LIBRARY_PATH, but really, who installs the main libs in different prefixes?
+-    return QString();
+-}
+-#endif
+-
+ extern "C" {
+ 
+     static void secondary_child_handler(int)
+@@ -1689,7 +1693,7 @@
+     if (!d.suicide && qEnvironmentVariableIsEmpty("KDE_IS_PRELINKED")) {
+         const int extrasCount = sizeof(extra_libs) / sizeof(extra_libs[0]);
+         for (int i = 0; i < extrasCount; i++) {
+-            const QString extra = findSharedLib(QString::fromLatin1(extra_libs[i]));
++            const QString extra = QString::fromLatin1(extra_libs[i]);
+             if (!extra.isEmpty()) {
+                 QLibrary l(extra);
+                 l.setLoadHints(QLibrary::ExportExternalSymbolsHint);
-- 
2.13.7

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [bug#33820] [PATCH 7/9] gnu: kinit: Use LIBRARY_PATH to search for dynamically loaded libs.
  2018-12-21 10:10 ` [bug#33820] [PATCH 1/9] gnu: kcmutils: Make QDirIterator follow symlinks Hartmut Goebel
                     ` (4 preceding siblings ...)
  2018-12-21 10:10   ` [bug#33820] [PATCH 6/9] gnu: kinit: Use the store paths for dynamically loaded libs Hartmut Goebel
@ 2018-12-21 10:10   ` Hartmut Goebel
  2018-12-21 10:10   ` [bug#33820] [PATCH 8/9] gnu: kpackage: Transfer patches from NixOS Hartmut Goebel
  2018-12-21 10:10   ` [bug#33820] [PATCH 9/9] gnu: kservice: " Hartmut Goebel
  7 siblings, 0 replies; 11+ messages in thread
From: Hartmut Goebel @ 2018-12-21 10:10 UTC (permalink / raw)
  To: 33820

Transfer the NixOS "kdeinit-libpath" patch for kinit as of
2018-02-17.

* gnu/packages/patches/kinit-kdeinit-libpath.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/kde-frameworks.scm (kinit)[source]: Use it.
---
 gnu/local.mk                                     |  1 +
 gnu/packages/kde-frameworks.scm                  |  3 +-
 gnu/packages/patches/kinit-kdeinit-libpath.patch | 37 ++++++++++++++++++++++++
 3 files changed, 40 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/kinit-kdeinit-libpath.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 783a7c624..dd2a15b14 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -855,6 +855,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/kiki-missing-includes.patch		\
   %D%/packages/patches/kiki-portability-64bit.patch		\
   %D%/packages/patches/kinit-kdeinit-extra_libs.patch		\
+  %D%/packages/patches/kinit-kdeinit-libpath.patch		\
   %D%/packages/patches/kio-search-smbd-on-PATH.patch		\
   %D%/packages/patches/kmod-module-directory.patch		\
   %D%/packages/patches/kobodeluxe-paths.patch			\
diff --git a/gnu/packages/kde-frameworks.scm b/gnu/packages/kde-frameworks.scm
index edc2587a9..c269c4758 100644
--- a/gnu/packages/kde-frameworks.scm
+++ b/gnu/packages/kde-frameworks.scm
@@ -2551,7 +2551,8 @@ in applications using the KDE Frameworks.")
                 "1rq9b59gdgcpvwd694l8h55sqahpdaky0n7ag5psjlfn5myf1d95"))
               ;; Use the store paths for other packages and dynamically loaded
               ;; libs
-              (patches (search-patches "kinit-kdeinit-extra_libs.patch"))))
+              (patches (search-patches "kinit-kdeinit-extra_libs.patch"
+                                       "kinit-kdeinit-libpath.patch"))))
     (build-system cmake-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/patches/kinit-kdeinit-libpath.patch b/gnu/packages/patches/kinit-kdeinit-libpath.patch
new file mode 100644
index 000000000..89cf1a941
--- /dev/null
+++ b/gnu/packages/patches/kinit-kdeinit-libpath.patch
@@ -0,0 +1,37 @@
+Search libraries in GUIX_KF5INIT_LIB_PATH.
+
+Based on an idea by NixOs
+pkgs/development/libraries/kde-frameworks/kinit/kinit-libpath.patch
+
+===================================================================
+--- kinit-5.32.0/src/kdeinit/kinit.cpp.orig	2017-10-22 21:02:20.908765455 +0200
++++ kinit-5.32.0/src/kdeinit/kinit.cpp	2017-10-22 21:03:25.312818248 +0200
+@@ -623,20 +623,18 @@
+             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 "/");
+-                QString orig_libpath = libpath;
+-                libpath = install_lib_dir + libpath;
+-                l.setFileName(libpath);
+-                if (!l.load()) {
+-                    libpath = orig_libpath;
+-                    l.setFileName(libpath);
+-                    l.load();
+-                }
++                // Try to load the library relative to the active profiles.
++                QByteArrayList profiles = qgetenv("LIBRARY_PATH").split(':');
++                for (const QByteArray &profile: profiles) {
++                    if (!profile.isEmpty()) {
++                        l.setFileName(QFile::decodeName(profile) + QStringLiteral("/") + libpath);
++                        if (l.load()) break;
++                    }
++		}
+             } else {
+                 l.load();
+             }
+             if (!l.isLoaded()) {
+                 QString ltdlError(l.errorString());
-- 
2.13.7

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [bug#33820] [PATCH 8/9] gnu: kpackage: Transfer patches from NixOS.
  2018-12-21 10:10 ` [bug#33820] [PATCH 1/9] gnu: kcmutils: Make QDirIterator follow symlinks Hartmut Goebel
                     ` (5 preceding siblings ...)
  2018-12-21 10:10   ` [bug#33820] [PATCH 7/9] gnu: kinit: Use LIBRARY_PATH to search " Hartmut Goebel
@ 2018-12-21 10:10   ` Hartmut Goebel
  2018-12-21 10:10   ` [bug#33820] [PATCH 9/9] gnu: kservice: " Hartmut Goebel
  7 siblings, 0 replies; 11+ messages in thread
From: Hartmut Goebel @ 2018-12-21 10:10 UTC (permalink / raw)
  To: 33820

Transfer the NixOS patches for kpackage as of 2018-02-17:
- Allow external paths.
- Make QDirIterator follow symlinks.

Decided to use a patch for one of the "allow external paths" changes since
'substitute*' seems not to be robust enough.

* gnu/packages/patches/kpackage-allow-external-paths.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/kde-frameworks.scm(kpackage)[source]: Use it. <patch>: New
  phase.
---
 gnu/local.mk                                             |  1 +
 gnu/packages/kde-frameworks.scm                          | 15 ++++++++++++++-
 gnu/packages/patches/kpackage-allow-external-paths.patch | 13 +++++++++++++
 3 files changed, 28 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/kpackage-allow-external-paths.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index dd2a15b14..a7db95c20 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -858,6 +858,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/kinit-kdeinit-libpath.patch		\
   %D%/packages/patches/kio-search-smbd-on-PATH.patch		\
   %D%/packages/patches/kmod-module-directory.patch		\
+  %D%/packages/patches/kpackage-allow-external-paths.patch	\
   %D%/packages/patches/kobodeluxe-paths.patch			\
   %D%/packages/patches/kobodeluxe-enemies-pipe-decl.patch	\
   %D%/packages/patches/kobodeluxe-const-charp-conversion.patch	\
diff --git a/gnu/packages/kde-frameworks.scm b/gnu/packages/kde-frameworks.scm
index c269c4758..65233f72e 100644
--- a/gnu/packages/kde-frameworks.scm
+++ b/gnu/packages/kde-frameworks.scm
@@ -1848,7 +1848,10 @@ covers feedback and persistent events.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1xbfjwxb4gff8gg0hs5m9s0jcnzqk27rs2jr71g5ckhvs5psnkcd"))))
+                "1xbfjwxb4gff8gg0hs5m9s0jcnzqk27rs2jr71g5ckhvs5psnkcd"))
+              ;; Default to: external paths/symlinks can be followed by a
+              ;; package
+              (patches (search-patches "kpackage-allow-external-paths.patch"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
@@ -1863,6 +1866,16 @@ covers feedback and persistent events.")
      `(#:tests? #f ; FIXME: 3/9 tests fail.
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'patch
+           (lambda _
+             ;; Make QDirIterator follow symlinks
+             (substitute* '("src/kpackage/packageloader.cpp"
+                            "src/kpackage/private/packagejobthread.cpp")
+               (("^\\s*(const QDirIterator::IteratorFlags flags = QDirIterator::Subdirectories)(;)" _ a b)
+                (string-append a " | QDirIterator::FollowSymlinks" b))
+               (("^\\s*(QDirIterator it\\(.*, QDirIterator::Subdirectories)(\\);)" _ a b)
+                (string-append a " | QDirIterator::FollowSymlinks" b)))
+             #t))
          (add-before 'check 'check-setup
            (lambda _
              (setenv "HOME" (getcwd))
diff --git a/gnu/packages/patches/kpackage-allow-external-paths.patch b/gnu/packages/patches/kpackage-allow-external-paths.patch
new file mode 100644
index 000000000..c1c9efde7
--- /dev/null
+++ b/gnu/packages/patches/kpackage-allow-external-paths.patch
@@ -0,0 +1,13 @@
+diff --git a/src/kpackage/package.cpp b/src/kpackage/package.cpp
+index 5aec9fd..b15c933 100644
+--- a/src/kpackage/package.cpp
++++ b/src/kpackage/package.cpp
+@@ -820,7 +820,7 @@ PackagePrivate::PackagePrivate()
+     : QSharedData(),
+       fallbackPackage(nullptr),
+       metadata(nullptr),
+-      externalPaths(false),
++      externalPaths(true),
+       valid(false),
+       checkedValid(false)
+ {
-- 
2.13.7

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [bug#33820] [PATCH 9/9] gnu: kservice: Transfer patches from NixOS.
  2018-12-21 10:10 ` [bug#33820] [PATCH 1/9] gnu: kcmutils: Make QDirIterator follow symlinks Hartmut Goebel
                     ` (6 preceding siblings ...)
  2018-12-21 10:10   ` [bug#33820] [PATCH 8/9] gnu: kpackage: Transfer patches from NixOS Hartmut Goebel
@ 2018-12-21 10:10   ` Hartmut Goebel
  7 siblings, 0 replies; 11+ messages in thread
From: Hartmut Goebel @ 2018-12-21 10:10 UTC (permalink / raw)
  To: 33820

Transfer the NixOS patches for kservice as of 2018-02-17.
- Make QDirIterator follow symlinks.
- Normalize path, but don't resolve symlinks.

* gnu/packages/kde-frameworks.scm(kservice)<patch>: New phase.
---
 gnu/packages/kde-frameworks.scm | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/gnu/packages/kde-frameworks.scm b/gnu/packages/kde-frameworks.scm
index 65233f72e..645252288 100644
--- a/gnu/packages/kde-frameworks.scm
+++ b/gnu/packages/kde-frameworks.scm
@@ -3000,6 +3000,20 @@ typed.")
      `(#:tests? #f ; FIXME: 6/10 tests fail.
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'patch
+           ;; Adopted from NixOS' patches "qdiriterator-follow-symlinks" and
+           ;; "no-canonicalize-path".
+           (lambda _
+             (substitute* "src/sycoca/kbuildsycoca.cpp"
+               ;; make QDirIterator follow symlinks
+               (("^\\s*(QDirIterator it\\(.*, QDirIterator::Subdirectories)(\\);)" _ a b)
+                (string-append a " | QDirIterator::FollowSymlinks" b)))
+             (substitute* "src/sycoca/vfolder_menu.cpp"
+               ;; Normalize path, but don't resolve symlinks (taken from
+               ;; NixOS)
+               (("^\\s*QString resolved = QDir\\(dir\\)\\.canonicalPath\\(\\);")
+                "QString resolved = QDir::cleanPath(dir);"))
+             #t))
          (add-before 'check 'check-setup
            (lambda _
              (setenv "HOME" (getcwd))
-- 
2.13.7

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* bug#33820: Acknowledgement ([PATCH 0/9] Adopt NixOS patches for KDE Frameworks)
       [not found] ` <handler.33820.B.15453865187770.ack@debbugs.gnu.org>
@ 2019-01-04  9:28   ` Hartmut Goebel
  0 siblings, 0 replies; 11+ messages in thread
From: Hartmut Goebel @ 2019-01-04  9:28 UTC (permalink / raw)
  To: 33820-done

Applied as fb0356d9564255b6a983960d06d274b3ee3a1903

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2019-01-04  9:29 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-12-21 10:08 [bug#33820] [PATCH 0/9] Adopt NixOS patches for KDE Frameworks Hartmut Goebel
2018-12-21 10:10 ` [bug#33820] [PATCH 1/9] gnu: kcmutils: Make QDirIterator follow symlinks Hartmut Goebel
2018-12-21 10:10   ` [bug#33820] [PATCH 2/9] gnu: kcmutils: Print plugin name when loading fails Hartmut Goebel
2018-12-21 10:10   ` [bug#33820] [PATCH 3/9] gnu: kconfigwidgets: Make QDirIterator follow symlinks Hartmut Goebel
2018-12-21 10:10   ` [bug#33820] [PATCH 4/9] gnu: kdelibs4support: Add todo comment for a patch from NixOS Hartmut Goebel
2018-12-21 10:10   ` [bug#33820] [PATCH 5/9] gnu: kio: Search 'smbd' on $PATH Hartmut Goebel
2018-12-21 10:10   ` [bug#33820] [PATCH 6/9] gnu: kinit: Use the store paths for dynamically loaded libs Hartmut Goebel
2018-12-21 10:10   ` [bug#33820] [PATCH 7/9] gnu: kinit: Use LIBRARY_PATH to search " Hartmut Goebel
2018-12-21 10:10   ` [bug#33820] [PATCH 8/9] gnu: kpackage: Transfer patches from NixOS Hartmut Goebel
2018-12-21 10:10   ` [bug#33820] [PATCH 9/9] gnu: kservice: " Hartmut Goebel
     [not found] ` <handler.33820.B.15453865187770.ack@debbugs.gnu.org>
2019-01-04  9:28   ` bug#33820: Acknowledgement ([PATCH 0/9] Adopt NixOS patches for KDE Frameworks) Hartmut Goebel

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.