~ruther/guix-local

270b30705dcca58d769a4ba8629cfb35eff32000 — zimoun 5 years ago 56b1070
packages: Factorize and document 'computed-origin-method'.

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 <ludo@gnu.org>
3 files changed, 26 insertions(+), 25 deletions(-)

M gnu/packages/gnuzilla.scm
M gnu/packages/linux.scm
M guix/packages.scm
M gnu/packages/gnuzilla.scm => gnu/packages/gnuzilla.scm +2 -12
@@ 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

M gnu/packages/linux.scm => gnu/packages/linux.scm +2 -12
@@ 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

M guix/packages.scm => guix/packages.scm +22 -1
@@ 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 <ludo@gnu.org>
;;; Copyright © 2014, 2015, 2017, 2018 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014, 2015, 2017, 2018, 2019 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
;;; Copyright © 2017, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>


@@ 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