From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Danckaert Subject: [PATCH] gnu: kdbusaddons: Embed path to kdeinit5, avoid dependency cycles. Date: Mon, 12 Dec 2016 19:28:12 +0100 (CET) Message-ID: <20161212.192812.1004299089367170098.thomas.danckaert@aeronomie.be> Mime-Version: 1.0 Content-Type: Multipart/Mixed; boundary="--Next_Part(Mon_Dec_12_19_28_12_2016_478)--" Content-Transfer-Encoding: 7bit Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:43398) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cGVKq-00015Y-T9 for guix-devel@gnu.org; Mon, 12 Dec 2016 13:28:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cGVKm-00069G-11 for guix-devel@gnu.org; Mon, 12 Dec 2016 13:28:25 -0500 Received: from smtp1.oma.be ([193.190.144.13]:41742) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cGVKl-00068m-Mx for guix-devel@gnu.org; Mon, 12 Dec 2016 13:28:19 -0500 Received: from localhost (tethys.oma.be [193.190.144.11]) by smtp1.oma.be (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id uBCISE6w006322 for ; Mon, 12 Dec 2016 18:28:15 GMT List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: guix-devel@gnu.org ----Next_Part(Mon_Dec_12_19_28_12_2016_478)-- Content-Type: Text/Plain; charset=utf-8; format=flowed Content-Transfer-Encoding: base64 SGksDQoNCmtkYnVzYWRkb25zIGlzIHJlc3BvbnNpYmxlIGZvciAocmUtKXN0YXJ0aW5nIGtkZWlu aXQ1IChhIGRhZW1vbiB0aGF0IA0Kc3BlZWRzIHVwIHN0YXJ0dXAgb2YgS0RFIGFwcGxpY2F0aW9u cyBieSBmb3JraW5nIGl0c2VsZiBpbnRvIGEgbmV3IA0KcHJvY2Vzcykgd2hlbiBpdCBpcyBub3Qg cnVubmluZy4gIEhvd2V2ZXIsIGtkYnVzYWRkb25zIGlzIGFsc28gYSANCmJ1aWxkIGRlcGVuZGVu Y3kgb2Yga2luaXQuDQoNClRoaXMgcGF0Y2ggYWRkcyBhIGtpbml0LWJvb3RzdHJhcCBwYWNrYWdl LCBtYWtlcyBpdCAgYW4gaW5wdXQgb2YgDQprZGJ1c2FkZG9ucywgYW5kIGVtYmVkcyB0aGUgc3Rv cmUgcGF0aCBvZiB0aGUga2RlaW5pdDUgZXhlY3V0YWJsZSAoYW4gDQpvdXRwdXQgb2Yga2luaXQt Ym9vdHN0cmFwKSBpbiB0aGUga2RidXNhZGRvbnMgc291cmNlLiAgV2l0aG91dCB0aGlzIA0KcGF0 Y2gsIGFwcGxpY2F0aW9ucyB1c2luZyBrZGJ1c2FkZG9ucyB3aWxsIGFsd2F5cyBuZWVkIGEgUEFU SCANCmVudmlyb25tZW50IHZhcmlhYmxlIGluIG9yZGVyIHRvIGZpbmQga2RlaW5pdDUuDQoNCkJl Y2F1c2Uga2luaXQgZGVwZW5kcyBvbiBrZGJ1c2FkZG9ucyB2aWEgYSBudW1iZXIgb2YgaW50ZXJt ZWRpYXRlIA0KcGFja2FnZXMsIEkgaGFkIHRvIGFkZCBrZGJ1c2FkZG9ucy1ib290c3RyYXAgYW5k IGEgZmV3IG90aGVyIGV4dHJhIA0KcGFja2FnZXMgdG8gYXZvaWQgZGVwZW5kZW5jeSBjeWNsZXMu ICBUaGlzIHBhdGNoIHdvdWxkIHRyaWdnZXIgYSANCmJ1aWxkIG9mIGFyb3VuZCB+MzAgcGFja2Fn ZXMuDQoNCkEgcmVtYWluaW5nIGlzc3VlIHdpdGgga2RlaW5pdCBpcywgdGhhdCBpdCBuZWVkcyB0 byBydW4gaW4gYW4gDQplbnZpcm9ubWVudCB3aXRoIGFsbCB0aGUgcmVxdWlyZWQgZW52aXJvbm1l bnQgdmFyaWFibGVzIChzdWNoIGFzIA0KUVRfUExVR0lOX1BBVEggYW5kIFFNTDJfSU1QT1JUX1BB VEgpIGZvciBhbGwgcG9zc2libGUgS0RFIA0KYXBwbGljYXRpb25zIGl0IGhhcyB0byBzdGFydCAo YW5kIGFueSBsaWJyYXJpZXMgdGhleSBkZXBlbmQgb24pLCBpbiANCm9yZGVyIHRvIGZpbmQgZGVw ZW5kZW5jaWVzIGF0IHJ1bnRpbWUsIHN1Y2ggYXMgcGx1Z2lucyBhbmQgUW1sIA0KbW9kdWxlcy4g IElmIGEgdXNlciB3YW50cyB0byBydW4gYSBLREUgYXBwbGljYXRpb24gd2hpY2ggcmVsaWVzIG9u IA0Ka2RlaW5pdCwgYnV0IGtkZWluaXQgaXMgYWxyZWFkeSBydW5uaW5nIHdpdGhvdXQgYWxsIHRo ZSByZXF1aXJlZCANCmVudmlyb25tZW50IHZhcnMsIHRoZSBhcHBsaWNhdGlvbiB3aWxsIG5vdCBm aW5kIGFsbCB0aGUgcGx1Z2lucyBvciANClFtbCBtb2R1bGVzIGl0IG5lZWRzLiAgKEluIGEgY29u dmVudGlvbmFsIHN5c3RlbSwga2RlIGFwcGxpY2F0aW9ucyANCmp1c3QgbmVlZCB0byBrbm93IG9u ZSBjZW50cmFsIGRpcmVjdG9yeSB3aGVyZSB0aGV5IHdpbGwgZmluZCBhbGwgS0RFIA0KcGx1Z2lu cyBwcmVzZW50IG9uIHRoZSBzeXN0ZW0pDQoNCkkgZG9uJ3Qga25vdyB3aGF0IHdvdWxkIGJlIGEg Z29vZCBzb2x1dGlvbi4gIEEg4oCca2RlLW1hc3RlcuKAnSBwYWNrYWdlLCANCndoaWNoIGhhcyBy ZWZlcmVuY2VzIHRvIGFsbCBwYWNrYWdlZCBLREUgYXBwbGljYXRpb25zIChhbmQgc29tZSANCmxp YnJhcmllcyB3aGljaCBwcm92aWRlIHBsdWdpbnMpIGFzIGlucHV0cywgYW5kIGp1c3QgYWRkcyB0 aGUgDQpyZXF1aXJlZCBwYXRocyB0byB0aGUgdXNlcidzIHByb2ZpbGUgKG5vdCB2ZXJ5IG1vZHVs YXIsIGJ1dCBpdCBjb3VsZCANCndvcmspPyBDb3VsZCBhIGtkZWluaXQgc2VydmljZSBjb3VsZCBo ZWxwIHdpdGggdGhpcyBpbiBHdWl4U0QgDQooaGF2ZW4ndCByZWFsbHkgbG9va2VkIGF0IHNlcnZp Y2VzIHlldCk/DQoNClRob21hcw0K ----Next_Part(Mon_Dec_12_19_28_12_2016_478)-- Content-Type: Text/X-Patch; charset=us-ascii Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="0001-gnu-kdbusaddons-Embed-path-to-kdeinit5-avoid-depende.patch" >From ba729cd9a2bbbc98bd308702ded837cae5980281 Mon Sep 17 00:00:00 2001 From: Thomas Danckaert Date: Tue, 6 Dec 2016 14:55:39 +0100 Subject: [PATCH] gnu: kdbusaddons: Embed path to kdeinit5, avoid dependency cycles. kdbusaddons needs to know the location of the kdeinit5 executable, provided by kinit. kinit depends on kdbusaddons, so we add bootstrap versions of all packages in the dependency chain from kinit to kdbusaddons to avoid cyclic dependencies. * gnu/packages/kde-frameworks.scm (kinit-bootstrap, kdbusaddons-bootstrap, kbookmarks-bootstrap, kglobalaccel-bootstrap, kio-bootstrap, kservice-bootstrap, ktextwidgets-bootstrap, kwallet-bootstrap, kxmlgui-bootstrap): New variables. (kdbusaddons)[inputs]: Add kinit-bootstrap. [source,arguments]: Add patch and substitution to embed kinit-bootstrap's store path in the code. * gnu/packages/patches/kdbusaddons-kinit-path.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. --- gnu/local.mk | 1 + gnu/packages/kde-frameworks.scm | 68 ++++++++++++++++++++++- gnu/packages/patches/kdbusaddons-kinit-path.patch | 15 +++++ 3 files changed, 81 insertions(+), 3 deletions(-) create mode 100644 gnu/packages/patches/kdbusaddons-kinit-path.patch diff --git a/gnu/local.mk b/gnu/local.mk index 55dee48..b42258e 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-path.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 8b84133..ea53e04 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-path.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 path, + ;; 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,54 @@ 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 kservice-bootstrap + ((package-input-rewriting `((,kdbusaddons . ,kdbusaddons-bootstrap))) kservice)) + +(define ktextwidgets-bootstrap + ((package-input-rewriting `((,kservice . ,kservice-bootstrap))) ktextwidgets)) + +(define kwallet-bootstrap + ((package-input-rewriting `((,kdbusaddons . ,kdbusaddons-bootstrap) + (,kservice . ,kservice-bootstrap))) kwallet)) + +(define kglobalaccel-bootstrap + ((package-input-rewriting `((,kdbusaddons . ,kdbusaddons-bootstrap) + (,kservice . ,kservice-bootstrap))) kglobalaccel)) + +(define kxmlgui-bootstrap + ((package-input-rewriting `((,kglobalaccel . ,kglobalaccel-bootstrap) + (,ktextwidgets . ,ktextwidgets-bootstrap))) kxmlgui)) + +(define kbookmarks-bootstrap + ((package-input-rewriting `((,kxmlgui . ,kxmlgui-bootstrap))) kbookmarks)) + +(define kio-bootstrap + ((package-input-rewriting `((,kservice . ,kservice-bootstrap) + (,kxmlgui . ,kxmlgui-bootstrap) + (,kbookmarks . ,kbookmarks-bootstrap) + (,kdbusaddons . ,kdbusaddons-bootstrap) + (,kwallet . ,kwallet-bootstrap) + (,ktextwidgets . ,ktextwidgets-bootstrap))) kio)) + +(define kinit-bootstrap + ((package-input-rewriting `((,kio . ,kio-bootstrap) + (,kservice . ,kservice-bootstrap) + (,kbookmarks . ,kbookmarks-bootstrap) + (,kxmlgui . ,kxmlgui-bootstrap))) kinit)) diff --git a/gnu/packages/patches/kdbusaddons-kinit-path.patch b/gnu/packages/patches/kdbusaddons-kinit-path.patch new file mode 100644 index 0000000..97c7319 --- /dev/null +++ b/gnu/packages/patches/kdbusaddons-kinit-path.patch @@ -0,0 +1,15 @@ +Add placeholder for kinit's store path. + +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()) { -- 2.7.4 ----Next_Part(Mon_Dec_12_19_28_12_2016_478)----