From 270b30705dcca58d769a4ba8629cfb35eff32000 Mon Sep 17 00:00:00 2001 From: zimoun Date: Thu, 16 Sep 2021 13:47:33 +0200 Subject: [PATCH] packages: Factorize and document 'computed-origin-method'. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The 'computed-origin-method' had been introduced to work around limitations of the 'snippet' mechanism. The procedure was duplicated, which made it hard to automatically detect packages using it. * guix/packages.scm (computed-origin-method): Move procedure from... * gnu/packages/gnuzilla.scm: ...here and... * gnu/packages/gnuzilla.scm: ...there. Signed-off-by: Ludovic Courtès --- gnu/packages/gnuzilla.scm | 14 ++------------ gnu/packages/linux.scm | 14 ++------------ guix/packages.scm | 23 ++++++++++++++++++++++- 3 files changed, 26 insertions(+), 25 deletions(-) diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index 431b487fd0..9f6e1f24e1 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -682,18 +682,8 @@ in C/C++.") ("1j6l66v1xw27z8w78mpsnmqgv8m277mf4r0hgqcrb4zx7xc2vqyy" "527e5e090608" "zh-CN") ("1frwx35klpyz3sdwrkz7945ivb2dwaawhhyfnz4092h9hn7rc4ky" "6cd366ad2947" "zh-TW"))) -(define* (computed-origin-method gexp-promise hash-algo hash - #:optional (name "source") - #:key (system (%current-system)) - (guile (default-guile))) - "Return a derivation that executes the G-expression that results -from forcing GEXP-PROMISE." - (mlet %store-monad ((guile (package->derivation guile system))) - (gexp->derivation (or name "computed-origin") - (force gexp-promise) - #:graft? #f ;nothing to graft - #:system system - #:guile-for-build guile))) +;; XXXX: Workaround 'snippet' limitations. +(define computed-origin-method (@@ (guix packages) computed-origin-method)) (define %icecat-version "78.14.0-guix0-preview1") (define %icecat-build-id "20210907000000") ;must be of the form YYYYMMDDhhmmss diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 41b6dfd022..a853b9c2fc 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -215,18 +215,8 @@ defconfig. Return the appropriate make target if applicable, otherwise return (file-name (string-append "linux-libre-deblob-check-" version "-" gnu-revision)) (sha256 deblob-check-hash)))) -(define* (computed-origin-method gexp-promise hash-algo hash - #:optional (name "source") - #:key (system (%current-system)) - (guile (default-guile))) - "Return a derivation that executes the G-expression that results -from forcing GEXP-PROMISE." - (mlet %store-monad ((guile (package->derivation guile system))) - (gexp->derivation (or name "computed-origin") - (force gexp-promise) - #:graft? #f ;nothing to graft - #:system system - #:guile-for-build guile))) +;; XXXX: Workaround 'snippet' limitations +(define computed-origin-method (@@ (guix packages) computed-origin-method)) (define (make-linux-libre-source version upstream-source diff --git a/guix/packages.scm b/guix/packages.scm index ad7937b4fb..8c3a0b0b7b 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès -;;; Copyright © 2014, 2015, 2017, 2018 Mark H Weaver +;;; Copyright © 2014, 2015, 2017, 2018, 2019 Mark H Weaver ;;; Copyright © 2015 Eric Bavier ;;; Copyright © 2016 Alex Kost ;;; Copyright © 2017, 2019, 2020 Efraim Flashner @@ -344,6 +344,27 @@ name of its URI." ;; git, svn, cvs, etc. reference #f)))) +;; Work around limitations in the 'snippet' mechanism. It is not possible for +;; a 'snippet' to produce a tarball with a different base name than the +;; original downloaded source. Moreover, cherry picking dozens of upsteam +;; patches and applying them suddenly is often impractical; especially when a +;; comprehensive code reformatting is done upstream. Mainly designed for +;; Linux and IceCat packages. +;; XXXX: do not make part of public API (export) such radical capability +;; before a detailed review process. +(define* (computed-origin-method gexp-promise hash-algo hash + #:optional (name "source") + #:key (system (%current-system)) + (guile (default-guile))) + "Return a derivation that executes the G-expression that results +from forcing GEXP-PROMISE." + (mlet %store-monad ((guile (package->derivation guile system))) + (gexp->derivation (or name "computed-origin") + (force gexp-promise) + #:graft? #f ;nothing to graft + #:system system + #:guile-for-build guile))) + (define %supported-systems ;; This is the list of system types that are supported. By default, we