summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/kde-frameworks.scm36
-rw-r--r--gnu/packages/patches/kdbusaddons-kinit-file-name.patch15
3 files changed, 49 insertions, 3 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index c076ab969d..3a56c840bc 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -639,6 +639,7 @@ dist_patch_DATA = \
%D%/packages/patches/isl-0.11.1-aarch64-support.patch \
%D%/packages/patches/jbig2dec-ignore-testtest.patch \
%D%/packages/patches/jq-CVE-2015-8863.patch \
+ %D%/packages/patches/kdbusaddons-kinit-file-name.patch \
%D%/packages/patches/khmer-use-libraries.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 8b841330b8..94145fb95d 100644
--- a/gnu/packages/kde-frameworks.scm
+++ b/gnu/packages/kde-frameworks.scm
@@ -25,6 +25,7 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix utils)
+ #:use-module (gnu packages)
#:use-module (gnu packages acl)
#:use-module (gnu packages admin)
#:use-module (gnu packages attr)
@@ -50,7 +51,8 @@
#:use-module (gnu packages version-control)
#:use-module (gnu packages web)
#:use-module (gnu packages xml)
- #:use-module (gnu packages xorg))
+ #:use-module (gnu packages xorg)
+ #:use-module (srfi srfi-1))
(define-public extra-cmake-modules
(package
@@ -516,7 +518,8 @@ many more.")
name "-" version ".tar.xz"))
(sha256
(base32
- "07mzb1xr8wyiid25p8kg6mjp6vq8ngvv1ikhq75zvd2cbax530c8"))))
+ "07mzb1xr8wyiid25p8kg6mjp6vq8ngvv1ikhq75zvd2cbax530c8"))
+ (patches (search-patches "kdbusaddons-kinit-file-name.patch"))))
(build-system cmake-build-system)
(native-inputs
`(("extra-cmake-modules" ,extra-cmake-modules)
@@ -524,10 +527,18 @@ many more.")
("qttools" ,qttools)))
(inputs
`(("qtbase" ,qtbase)
- ("qtx11extras" ,qtx11extras)))
+ ("qtx11extras" ,qtx11extras)
+ ("kinit" ,kinit-bootstrap))) ;; kinit-bootstrap: kinit package which does not depend on kdbusaddons.
(arguments
`(#:phases
(modify-phases %standard-phases
+ (add-before
+ 'configure 'patch-source
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; look for the kdeinit5 executable in kinit's store directory,
+ ;; instead of the current application's directory:
+ (substitute* "src/kdeinitinterface.cpp"
+ (("@SUBSTITUTEME@") (assoc-ref inputs "kinit")))))
(replace 'check
(lambda _
(setenv "DBUS_FATAL_WARNINGS" "0")
@@ -2866,3 +2877,22 @@ setUrl, setUserAgent and call.")
script engines.")
;; dual licensed
(license (list license:gpl2+ license:lgpl2.1+))))
+
+;; This version of kdbusaddons does not use kinit as an input, and is used to
+;; build kinit-bootstrap, as well as bootstrap versions of all kinit
+;; dependencies which also rely on kdbusaddons.
+(define kdbusaddons-bootstrap
+ (package
+ (inherit kdbusaddons)
+ (source (origin
+ (inherit (package-source kdbusaddons))
+ (patches '())))
+ (inputs (alist-delete "kinit" (package-inputs kdbusaddons)))
+ (arguments
+ (substitute-keyword-arguments (package-arguments kdbusaddons)
+ ((#:phases phases)
+ `(modify-phases ,phases
+ (delete 'patch-source)))))))
+
+(define kinit-bootstrap
+ ((package-input-rewriting `((,kdbusaddons . ,kdbusaddons-bootstrap))) kinit))
diff --git a/gnu/packages/patches/kdbusaddons-kinit-file-name.patch b/gnu/packages/patches/kdbusaddons-kinit-file-name.patch
new file mode 100644
index 0000000000..ffed88e043
--- /dev/null
+++ b/gnu/packages/patches/kdbusaddons-kinit-file-name.patch
@@ -0,0 +1,15 @@
+Add placeholder for kinit's store file name.
+
+diff --git a/src/kdeinitinterface.cpp b/src/kdeinitinterface.cpp
+index 22fa5e5..3d40937 100644
+--- a/src/kdeinitinterface.cpp
++++ b/src/kdeinitinterface.cpp
+@@ -52,7 +52,7 @@ void KDEInitInterface::ensureKdeinitRunning()
+ // If not found in system paths, search other paths
+ if (srv.isEmpty()) {
+ const QStringList searchPaths = QStringList()
+- << QCoreApplication::applicationDirPath() // then look where our application binary is located
++ << QString::fromUtf8("@SUBSTITUTEME@/bin") // using QStringLiteral would be more efficient, but breaks guix store reference detection.
+ << QLibraryInfo::location(QLibraryInfo::BinariesPath); // look where exec path is (can be set in qt.conf)
+ srv = QStandardPaths::findExecutable(QStringLiteral("kdeinit5"), searchPaths);
+ if (srv.isEmpty()) {