From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Danckaert Subject: Re: [PATCH] gnu: kdbusaddons: Embed path to kdeinit5, avoid dependency cycles. Date: Fri, 16 Dec 2016 15:42:11 +0100 (CET) Message-ID: <20161216.154211.1017954800346642936.thomas.danckaert@gmail.com> References: <20161212.192812.1004299089367170098.thomas.danckaert@aeronomie.be> <8760mlfa84.fsf@gnu.org> Mime-Version: 1.0 Content-Type: Multipart/Mixed; boundary="--Next_Part(Fri_Dec_16_15_42_11_2016_647)--" Content-Transfer-Encoding: 7bit Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:44766) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cHtiP-0000gQ-2C for guix-devel@gnu.org; Fri, 16 Dec 2016 09:42:31 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cHtiN-0003Aj-Gj for guix-devel@gnu.org; Fri, 16 Dec 2016 09:42:29 -0500 In-Reply-To: <8760mlfa84.fsf@gnu.org> 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: ludo@gnu.org Cc: guix-devel@gnu.org ----Next_Part(Fri_Dec_16_15_42_11_2016_647)-- Content-Type: Text/Plain; charset=utf-8; format=flowed Content-Transfer-Encoding: base64 RnJvbTogbHVkb0BnbnUub3JnIChMdWRvdmljIENvdXJ0w6hzKQ0KU3ViamVjdDogUmU6IFtQQVRD SF0gZ251OiBrZGJ1c2FkZG9uczogRW1iZWQgcGF0aCB0byBrZGVpbml0NSwgYXZvaWQgDQpkZXBl bmRlbmN5IGN5Y2xlcy4NCkRhdGU6IFRodSwgMTUgRGVjIDIwMTYgMTc6MDY6MTkgKzAxMDANCg0K PiBPdGhlciBvcHRpb25zIHRoYXQgY29tZSB0byBtaW5kOiAoMSkgbWFrZSDigJhRVF9QTFVHSU5f UEFUSOKAmSBhbmQNCj4g4oCYUU1MMl9JTVBPUlRfUEFUSOKAmSBzZWFyY2ggcGF0aHMgb2Yg4oCY a2luaXTigJk7IG9yICgyKSBhZGQgYSDigJxwcm9maWxlIA0KPiBob29r4oCdDQo+IHRoYXQgY3Jl YXRlcyBhIGZpbGUgY29udGFpbmluZyB0aGUgc2VhcmNoIHBhdGgsIGFuZCBwYXRjaCBraW5pdCB0 byANCj4gaG9ub3INCj4gdGhhdCBmaWxlIHNvbWVob3cuDQo+DQo+IE9wdGlvbiAxIHNvdW5kcyBi ZXR0ZXIsIGJ1dCDigJhRVF9QTFVHSU5fUEFUSOKAmSByZWFsbHkgYmVsb25ncyB0byBRdCwgDQo+ IG5vdA0KPiB0byBraW5pdC4NCg0KSSB0aGluayBhZGRpbmcgUVRfUExVR0lOX1BBVEggdG8ga2lu aXQgKGFuZCBhIG51bWJlciBvZiBvdGhlciBLREUgDQpwYWNrYWdlcykgY291bGQgYmUganVzdGlm aWVkLiBLREUgYXBwbGljYXRpb25zIGhlYXZpbHkgcmVseSBvbiANClFUX1BMVUdJTl9QQVRIIChh bmQgdXNlIGEgZGlmZmVyZW50IHBhdGggdGhhbiB0aGUgZGVmYXVsdCBwYXRoIHVzZWQgDQpieSBR dDogJHtQUkVGSVh9L2xpYi9wbHVnaW5zIGluc3RlYWQgb2YgJHtQUkVGSVh9L3BsdWdpbnMpLiAg U2VlIGZvciANCmV4YW1wbGUgdGhlIHNlY3Rpb24gb24gZW52aXJvbm1lbnQgdmFyaWFibGVzIGF0 IA0KaHR0cHM6Ly9jb21tdW5pdHkua2RlLm9yZy9HdWlkZWxpbmVzX2FuZF9IT1dUT3MvQnVpbGRf ZnJvbV9zb3VyY2UNCg0KSG93ZXZlciwgSSdtIG5vdCBzdXJlIGl0J3MgZW5vdWdoOiBhcyBmYXIg YXMgSSB1bmRlcnN0YW5kLCANCnNlYXJjaC1wYXRocyB3aWxsIG9ubHkgd29yayBmb3IgcGFja2Fn ZXMgZGlyZWN0bHkgaW5zdGFsbGVkIGluIGEgDQp1c2VyJ3MgcHJvZmlsZSwgYnV0IEtERSBhcHBs aWNhdGlvbnMgb2Z0ZW4gbmVlZCBwbHVnaW5zIHByb3ZpZGVkIGJ5IA0KdGhlaXIgZGVwZW5kZW5j aWVzIChlLmcuIGZvciBrZGV2ZWxvcCwgcGx1Z2lucyBmcm9tIGtkZXZwbGF0Zm9ybSBhbmQgDQpr aW5pdCBtdXN0IGJlIGZvdW5kIG9uIHRoZSBRVF9QTFVHSU5fUEFUSCwgYnV0IGEgdXNlciB3aG8g aW5zdGFsbHMgDQprZGV2ZWxvcCBzaG91bGRuJ3QgYmUgZm9yY2VkIHRvIGluc3RhbGwga2luaXQg YW5kIGtkZXZwbGF0Zm9ybSBpbiANCnRoZWlyIHByb2ZpbGU/KS4gKFBlcmhhcHMgSSBtaXN1bmRl cnN0YW5kIGhvdyBzZWFyY2gtcGF0aHMgd29ya3MpDQoNClNvLCBwcm92aWRlZCBvcHRpb24gKDIp IGNhbiBzb21laG93IGZpbmQgdGhlIHBhdGhzIG9mIGRlcGVuZGVuY2llcyBhcyANCndlbGwsIG1h eWJlIHRoYXQncyBiZXR0ZXI/IChBcmUgdGhlcmUgZXhhbXBsZXMgb2Ygc3VjaCBhIOKAnHByb2Zp bGUgDQpob29r4oCdIHNvbWV3aGVyZT8gIEkgZGlkbid0IGZpbmQgYW55dGhpbmcgaW4gdGhlIG1h bnVhbCkuDQoNCj4+ICs7OyBUaGlzIHZlcnNpb24gb2Yga2RidXNhZGRvbnMgZG9lcyBub3QgdXNl IGtpbml0IGFzIGFuIGlucHV0LCANCj4+IGFuZCBpcyB1c2VkIHRvDQo+PiArOzsgYnVpbGQga2lu aXQtYm9vdHN0cmFwLCBhcyB3ZWxsIGFzIGJvb3RzdHJhcCB2ZXJzaW9ucyBvZiBhbGwgDQo+PiBr aW5pdA0KPj4gKzs7IGRlcGVuZGVuY2llcyB3aGljaCBhbHNvIHJlbHkgb24ga2RidXNhZGRvbnMu DQo+PiArKGRlZmluZSBrZGJ1c2FkZG9ucy1ib290c3RyYXANCj4+ICsgIChwYWNrYWdlDQo+PiAr ICAgIChpbmhlcml0IGtkYnVzYWRkb25zKQ0KPj4gKyAgICAoc291cmNlIChvcmlnaW4NCj4+ICsg ICAgICAgICAgICAgIChpbmhlcml0IChwYWNrYWdlLXNvdXJjZSBrZGJ1c2FkZG9ucykpDQo+PiAr ICAgICAgICAgICAgICAocGF0Y2hlcyAnKCkpKSkNCj4NCj4gU2luY2Ug4oCYa2RidXNhZGRvbnPi gJkgZG9lc27igJl0IGhhdmUgYW55IHBhdGNoZXMsIHlvdSBjYW4gb21pdCB0aGlzIA0KPiDigJhz b3VyY2XigJkNCj4gZmllbGQuDQoNClRoaXMgY29tbWl0IGFkZHMgYSBwYXRjaCB0byBrZGJ1c2Fk ZG9ucyAodGhlIG9uZSB0aGF0IGFkZHMgdGhlIGtpbml0IA0Kc3RvcmUgZGlyZWN0b3J5KSwgc28g SSB0aGluayBkb2VzIGJlY29tZSBuZWNlc3Nhcnk/DQoNCj4gWy4uLl0NCj4NCj4gSXNu4oCZdCBp dCBlbm91Z2ggdG8gZG86DQo+DQo+ICAgKGRlZmluZSBraW5pdC1ib290c3RyYXANCj4gICAgICgo cGFja2FnZS1pbnB1dC1yZXdyaXRpbmcgYCgoLGtkYnVzYWRkb25zIC4gDQo+ICxrZGJ1c2FkZG9u cy1ib290c3RyYXApKSkNCj4gICAgICBraW5pdCkpDQo+DQo+ID8gIFJlbWVtYmVyIHRoYXQg4oCY cGFja2FnZS1pbnB1dC1yZXdyaXRpbmfigJkgcmVwbGFjZXMgaW5wdXRzIA0KPiByZWN1cnNpdmVs eS4NCg0KWWVzLCAuLi4sIHllcyBpdCBpcyA6LSkgSSBoYWQgdGhpcyBuYWdnaW5nIGZlZWxpbmcg dGhhdCB0cmFja2luZyB0aGUNCmRlcGVuZGVuY3kgY2hhaW4gbGlrZSB0aGF0IGNvdWxkIGJlIGF1 dG9tYXRlZCwgYW5kIHRoZXJlZm9yZSBwcm9iYWJseQ0KYWxyZWFkeSBfaGFkXyBiZWVuIGF1dG9t YXRlZCBpbiBndWl4IDotKSBJIGRpZG4ndCBwYXkgYXR0ZW50aW9uIHRvIHRoZQ0Kd29yZCDigJxy ZWN1cnNpdmXigJ0uLi4gd291bGQgaGF2ZSBzYXZlZCBtZSBhIGxvdCBvZiB3b3JrICh5b3Ugc2hv dWxkIGhhdmUNCnNlZW4gdGhlIGZpcnN0IHZlcnNpb25zIG9mIHRoaXMgcGF0Y2ggT19vKS4NCg0K PiBZb3UgY2FuIGNoZWNrIHdpdGgg4oCYZ3VpeCBncmFwaCAtZSAnKEAgKGdudSBwYWNrYWdlcyBr ZGUpIA0KPiBrZGVpbml0LWJvb3RzdHJhcCkn4oCZDQo+IHdoZXRoZXIgeW914oCZcmUgcmVhbGx5 IGdldHRpbmcgd2hhdCB5b3Ugd2FudC4NCg0KdGFuZ2VudGlhbGx5OiB0aGlzIHNlZW1zIHRvIHdv cmsgb25seSBpZiBJIG1ha2UgdGhlIGtpbml0LWJvb3RzdHJhcCANCnBhY2thZ2UgYSBwdWJsaWMg dmFyaWFibGU/DQoNCj4+IGRpZmYgLS1naXQgYS9nbnUvcGFja2FnZXMvcGF0Y2hlcy9rZGJ1c2Fk ZG9ucy1raW5pdC1wYXRoLnBhdGNoIA0KPj4gYi9nbnUvcGFja2FnZXMvcGF0Y2hlcy9rZGJ1c2Fk ZG9ucy1raW5pdC1wYXRoLnBhdGNoDQo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4gaW5kZXgg MDAwMDAwMC4uOTdjNzMxOQ0KPj4gLS0tIC9kZXYvbnVsbA0KPj4gKysrIGIvZ251L3BhY2thZ2Vz L3BhdGNoZXMva2RidXNhZGRvbnMta2luaXQtcGF0aC5wYXRjaA0KPj4gQEAgLTAsMCArMSwxNSBA QA0KPj4gK0FkZCBwbGFjZWhvbGRlciBmb3Iga2luaXQncyBzdG9yZSBwYXRoLg0KPg0KPiBzL3Bh dGgvZmlsZSBuYW1lLyBwbGVhc2UuICA6LSkNCj4NCj4gSW4gR05VIOKAnHBhdGjigJ0gdHJhZGl0 aW9uYWxseSBtZWFucyDigJxzZWFyY2ggcGF0aC7igJ0NCg0KSSdtIGhhcHB5IHRvIGNvbXBseSwg YnV0IG5vdGUgdGhhdCB0aGUgaW5mbyBtYW51YWwgZG9lcyB0YWxrIGFib3V0IA0Kc3RvcmUgcGF0 aHMuICBTaG91bGQgdGhpcyBiZSBjaGFuZ2VkPw0KDQogICBodHRwczovL3d3dy5nbnUub3JnL3Nv ZnR3YXJlL2d1aXgvbWFudWFsL2h0bWxfbm9kZS9UaGUtU3RvcmUuaHRtbA0KDQooQWxzbywgSSBj aG9zZSDigJxzdG9yZSBkaXJlY3RvcnnigJ0gaW5zdGVhZCBvZiDigJxzdG9yZSBmaWxlIG5hbWXi gJ0pDQoNClRob21hcw0K ----Next_Part(Fri_Dec_16_15_42_11_2016_647)-- Content-Type: Text/X-Patch; charset=us-ascii Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="0001-gnu-kdbusaddons-Embed-kinit-store-dir-avoid-dependen.patch" >From e6c66e9d1daafee8907fa03db2f4c11104aab2b5 Mon Sep 17 00:00:00 2001 From: Thomas Danckaert Date: Tue, 6 Dec 2016 14:55:39 +0100 Subject: [PATCH] gnu: kdbusaddons: Embed kinit store dir, 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): New variables. (kdbusaddons)[inputs]: Add kinit-bootstrap. [source,arguments]: Add patch and substitution to embed kinit-bootstrap's store directory in the code. * gnu/packages/patches/kdbusaddons-kinit-file-name.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. --- gnu/local.mk | 1 + gnu/packages/kde-frameworks.scm | 36 ++++++++++++++++++++-- .../patches/kdbusaddons-kinit-file-name.patch | 15 +++++++++ 3 files changed, 49 insertions(+), 3 deletions(-) create mode 100644 gnu/packages/patches/kdbusaddons-kinit-file-name.patch diff --git a/gnu/local.mk b/gnu/local.mk index c6cb55b..f7b661c 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 8b84133..94145fb 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 0000000..ffed88e --- /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()) { -- 2.7.4 ----Next_Part(Fri_Dec_16_15_42_11_2016_647)----