Hi, Am Donnerstag, den 16.09.2021, 13:47 +0200 schrieb zimoun: > The 'computed-origin-method' had been introduced as a workaround > limitations in the 'snippet' mechanism. The procedure is duplicated > which makes hard to automatically detects packages using it. > > * guix/packages.scm (computed-origin-method): Move procedure from... > * gnu/packages/gnuzilla.scm: ...here and... > * gnu/packages/gnuzilla.scm: ...there. > --- > 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 285eb132f4..eb792be9a3 100644 > --- a/gnu/packages/linux.scm > +++ b/gnu/packages/linux.scm > @@ -216,18 +216,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 < > mhw@netris.org> > ;;; Copyright © 2015 Eric Bavier > ;;; Copyright © 2016 Alex Kost > ;;; 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 I think that rather than putting this into (guix packages) itself, we might want to put it into its own file like (guix computed-origins) and choose a method name that is actually a verb, similar to git-fetch or svn-fetch. Perhaps simply call it compute-origin? If done this way, there'd be the benefit that modules with packages using this thing would have to explicitly request the presence of the symbol through their use-modules clauses. WDYT?