import/utils: Pass all arguments through to package builder.
Individual importer may have additional arguments. * guix/import/utils.scm (recursive-import): Patch all keyword arguments through to repo->guix-package. * guix/import/cran.scm (cran->guix-package): Add #:allow-other-keys. * guix/import/crate.scm (crate->guix-package): Ditto. * guix/import/egg.scm (egg->guix-package): Ditto. * guix/import/elm.scm (elm->guix-package): Ditto. * guix/import/gem.scm (gem->guix-package): Ditto. * guix/import/gnu.scm (gnu->guix-package): Ditto. * guix/import/go.scm (go-module->guix-package): Ditto. (go-module-recursive-import): Ditto. * guix/import/hackage.scm (hackage->guix-package): Ditto. (hackage-recursive-import): Ditto. * guix/import/hexpm.scm (hexpm->guix-package): Ditto. * guix/import/minetest.scm (minetest->guix-package): Ditto. (minetest-recursive-import): Ditto. * guix/import/opam.scm (opam->guix-package): Ditto. * guix/import/pypi.scm (pypi->guix-package): Ditto. * guix/import/stackage.scm (stackage->guix-package): Ditto. (stackage-recursive-import): Ditto. * guix/import/texlive.scm (texlive->guix-package): Ditto.master
parent
db675db223
commit
3c24da4260
|
@ -644,7 +644,7 @@ from the alist META, which was derived from the R package's DESCRIPTION file."
|
||||||
|
|
||||||
(define cran->guix-package
|
(define cran->guix-package
|
||||||
(memoize
|
(memoize
|
||||||
(lambda* (package-name #:key (repo 'cran) version)
|
(lambda* (package-name #:key (repo 'cran) version #:allow-other-keys)
|
||||||
"Fetch the metadata for PACKAGE-NAME from REPO and return the `package'
|
"Fetch the metadata for PACKAGE-NAME from REPO and return the `package'
|
||||||
s-expression corresponding to that package, or #f on failure."
|
s-expression corresponding to that package, or #f on failure."
|
||||||
(let ((description (fetch-description repo package-name version)))
|
(let ((description (fetch-description repo package-name version)))
|
||||||
|
|
|
@ -217,7 +217,8 @@ and LICENSE."
|
||||||
'unknown-license!)))
|
'unknown-license!)))
|
||||||
(string-split string (string->char-set " /"))))
|
(string-split string (string->char-set " /"))))
|
||||||
|
|
||||||
(define* (crate->guix-package crate-name #:key version include-dev-deps? repo)
|
(define* (crate->guix-package crate-name #:key version include-dev-deps?
|
||||||
|
#:allow-other-keys)
|
||||||
"Fetch the metadata for CRATE-NAME from crates.io, and return the
|
"Fetch the metadata for CRATE-NAME from crates.io, and return the
|
||||||
`package' s-expression corresponding to that package, or #f on failure.
|
`package' s-expression corresponding to that package, or #f on failure.
|
||||||
When VERSION is specified, convert it into a semver range and attempt to fetch
|
When VERSION is specified, convert it into a semver range and attempt to fetch
|
||||||
|
|
|
@ -171,7 +171,8 @@ FILE is specified, return the package metadata in FILE."
|
||||||
;;; Egg importer.
|
;;; Egg importer.
|
||||||
;;;
|
;;;
|
||||||
|
|
||||||
(define* (egg->guix-package name version #:key (file #f) (source #f))
|
(define* (egg->guix-package name version #:key (file #f) (source #f)
|
||||||
|
#:allow-other-keys)
|
||||||
"Import a CHICKEN egg called NAME from either the given .egg FILE, or from the
|
"Import a CHICKEN egg called NAME from either the given .egg FILE, or from the
|
||||||
latest NAME metadata downloaded from the official repository if FILE is #f.
|
latest NAME metadata downloaded from the official repository if FILE is #f.
|
||||||
Return a <package> record or #f on failure. If VERSION is specified, import
|
Return a <package> record or #f on failure. If VERSION is specified, import
|
||||||
|
|
|
@ -190,7 +190,7 @@ given NAME and VERSION, and a list of Elm packages it depends on."
|
||||||
|
|
||||||
(define elm->guix-package
|
(define elm->guix-package
|
||||||
(memoize
|
(memoize
|
||||||
(lambda* (package-name #:key repo version)
|
(lambda* (package-name #:key version #:allow-other-keys)
|
||||||
"Fetch the metadata for PACKAGE-NAME, an Elm package registered at
|
"Fetch the metadata for PACKAGE-NAME, an Elm package registered at
|
||||||
package.elm.org, and return two values: the `package' s-expression
|
package.elm.org, and return two values: the `package' s-expression
|
||||||
corresponding to that package (or #f on failure) and a list of Elm
|
corresponding to that package (or #f on failure) and a list of Elm
|
||||||
|
|
|
@ -124,7 +124,8 @@ VERSION, HASH, HOME-PAGE, DESCRIPTION, DEPENDENCIES, and LICENSES."
|
||||||
((license) (license->symbol license))
|
((license) (license->symbol license))
|
||||||
(_ `(list ,@(map license->symbol licenses)))))))
|
(_ `(list ,@(map license->symbol licenses)))))))
|
||||||
|
|
||||||
(define* (gem->guix-package package-name #:key (repo 'rubygems) version)
|
(define* (gem->guix-package package-name #:key (repo 'rubygems) version
|
||||||
|
#:allow-other-keys)
|
||||||
"Fetch the metadata for PACKAGE-NAME from rubygems.org, and return the
|
"Fetch the metadata for PACKAGE-NAME from rubygems.org, and return the
|
||||||
`package' s-expression corresponding to that package, or #f on failure.
|
`package' s-expression corresponding to that package, or #f on failure.
|
||||||
Optionally include a VERSION string to fetch a specific version gem."
|
Optionally include a VERSION string to fetch a specific version gem."
|
||||||
|
|
|
@ -109,7 +109,8 @@ download policy (see 'download-tarball' for details.)"
|
||||||
#f))))
|
#f))))
|
||||||
|
|
||||||
(define* (gnu->guix-package name
|
(define* (gnu->guix-package name
|
||||||
#:key (key-download 'interactive))
|
#:key (key-download 'interactive)
|
||||||
|
#:allow-other-keys)
|
||||||
"Return the package declaration for NAME as an s-expression. Use
|
"Return the package declaration for NAME as an s-expression. Use
|
||||||
KEY-DOWNLOAD as the OpenPGP key download policy (see 'download-tarball' for
|
KEY-DOWNLOAD as the OpenPGP key download policy (see 'download-tarball' for
|
||||||
details.)"
|
details.)"
|
||||||
|
|
|
@ -602,7 +602,8 @@ available versions:~{ ~a~}.")
|
||||||
(define* (go-module->guix-package module-path #:key
|
(define* (go-module->guix-package module-path #:key
|
||||||
(goproxy "https://proxy.golang.org")
|
(goproxy "https://proxy.golang.org")
|
||||||
version
|
version
|
||||||
pin-versions?)
|
pin-versions?
|
||||||
|
#:allow-other-keys)
|
||||||
"Return the package S-expression corresponding to MODULE-PATH at VERSION, a Go package.
|
"Return the package S-expression corresponding to MODULE-PATH at VERSION, a Go package.
|
||||||
The meta-data is fetched from the GOPROXY server and https://pkg.go.dev/.
|
The meta-data is fetched from the GOPROXY server and https://pkg.go.dev/.
|
||||||
When VERSION is unspecified, the latest version available is used."
|
When VERSION is unspecified, the latest version available is used."
|
||||||
|
@ -687,7 +688,7 @@ This package and its dependencies won't be imported.~%")
|
||||||
package-name
|
package-name
|
||||||
#:repo->guix-package
|
#:repo->guix-package
|
||||||
(memoize
|
(memoize
|
||||||
(lambda* (name #:key version repo)
|
(lambda* (name #:key version repo #:allow-other-keys)
|
||||||
(receive (package-sexp dependencies)
|
(receive (package-sexp dependencies)
|
||||||
(go-module->guix-package* name #:goproxy goproxy
|
(go-module->guix-package* name #:goproxy goproxy
|
||||||
#:version version
|
#:version version
|
||||||
|
|
|
@ -326,7 +326,8 @@ the hash of the Cabal file."
|
||||||
(define* (hackage->guix-package package-name #:key
|
(define* (hackage->guix-package package-name #:key
|
||||||
(include-test-dependencies? #t)
|
(include-test-dependencies? #t)
|
||||||
(port #f)
|
(port #f)
|
||||||
(cabal-environment '()))
|
(cabal-environment '())
|
||||||
|
#:allow-other-keys)
|
||||||
"Fetch the Cabal file for PACKAGE-NAME from hackage.haskell.org, or, if the
|
"Fetch the Cabal file for PACKAGE-NAME from hackage.haskell.org, or, if the
|
||||||
called with keyword parameter PORT, from PORT. Return the `package'
|
called with keyword parameter PORT, from PORT. Return the `package'
|
||||||
S-expression corresponding to that package, or #f on failure.
|
S-expression corresponding to that package, or #f on failure.
|
||||||
|
@ -353,7 +354,7 @@ respectively."
|
||||||
|
|
||||||
(define* (hackage-recursive-import package-name . args)
|
(define* (hackage-recursive-import package-name . args)
|
||||||
(recursive-import package-name
|
(recursive-import package-name
|
||||||
#:repo->guix-package (lambda* (name #:key repo version)
|
#:repo->guix-package (lambda* (name #:key version #:allow-other-keys)
|
||||||
(apply hackage->guix-package/m
|
(apply hackage->guix-package/m
|
||||||
(cons name args)))
|
(cons name args)))
|
||||||
#:guix-name hackage-name->package-name))
|
#:guix-name hackage-name->package-name))
|
||||||
|
|
|
@ -234,7 +234,7 @@ build-system, and DEPENDENCIES the inputs for the package."
|
||||||
(fold (lambda (a b)
|
(fold (lambda (a b)
|
||||||
(if (version>? a b) a b)) (car versions) versions)))))
|
(if (version>? a b) a b)) (car versions) versions)))))
|
||||||
|
|
||||||
(define* (hexpm->guix-package package-name #:key repo version)
|
(define* (hexpm->guix-package package-name #:key version #:allow-other-keys)
|
||||||
"Fetch the metadata for PACKAGE-NAME from hexpms.io, and return the
|
"Fetch the metadata for PACKAGE-NAME from hexpms.io, and return the
|
||||||
`package' s-expression corresponding to that package, or #f on failure.
|
`package' s-expression corresponding to that package, or #f on failure.
|
||||||
When VERSION is specified, attempt to fetch that version; otherwise fetch the
|
When VERSION is specified, attempt to fetch that version; otherwise fetch the
|
||||||
|
|
|
@ -441,7 +441,8 @@ DEPENDENCIES as a list of AUTHOR/NAME strings."
|
||||||
#f)))))
|
#f)))))
|
||||||
dependency-list))
|
dependency-list))
|
||||||
|
|
||||||
(define* (%minetest->guix-package author/name #:key (sort %default-sort-key))
|
(define* (%minetest->guix-package author/name #:key (sort %default-sort-key)
|
||||||
|
#:allow-other-keys)
|
||||||
"Fetch the metadata for AUTHOR/NAME from https://content.minetest.net, and
|
"Fetch the metadata for AUTHOR/NAME from https://content.minetest.net, and
|
||||||
return the 'package' S-expression corresponding to that package, or raise an
|
return the 'package' S-expression corresponding to that package, or raise an
|
||||||
exception on failure. On success, also return the upstream dependencies as a
|
exception on failure. On success, also return the upstream dependencies as a
|
||||||
|
@ -477,7 +478,7 @@ list of AUTHOR/NAME strings."
|
||||||
(memoize %minetest->guix-package))
|
(memoize %minetest->guix-package))
|
||||||
|
|
||||||
(define* (minetest-recursive-import author/name #:key (sort %default-sort-key))
|
(define* (minetest-recursive-import author/name #:key (sort %default-sort-key))
|
||||||
(define* (minetest->guix-package* author/name #:key repo version)
|
(define* (minetest->guix-package* author/name #:key version #:allow-other-keys)
|
||||||
(minetest->guix-package author/name #:sort sort))
|
(minetest->guix-package author/name #:sort sort))
|
||||||
(recursive-import author/name
|
(recursive-import author/name
|
||||||
#:repo->guix-package minetest->guix-package*
|
#:repo->guix-package minetest->guix-package*
|
||||||
|
|
|
@ -340,7 +340,7 @@ path to the repository."
|
||||||
(sha256 (base32 ,(guix-hash-url temp)))))))
|
(sha256 (base32 ,(guix-hash-url temp)))))))
|
||||||
'no-source-information)))
|
'no-source-information)))
|
||||||
|
|
||||||
(define* (opam->guix-package name #:key (repo 'opam) version)
|
(define* (opam->guix-package name #:key (repo 'opam) version #:allow-other-keys)
|
||||||
"Import OPAM package NAME from REPOSITORY (a directory name) or, if
|
"Import OPAM package NAME from REPOSITORY (a directory name) or, if
|
||||||
REPOSITORY is #f, from the official OPAM repository. Return a 'package' sexp
|
REPOSITORY is #f, from the official OPAM repository. Return a 'package' sexp
|
||||||
or #f on failure."
|
or #f on failure."
|
||||||
|
|
|
@ -492,7 +492,7 @@ VERSION, SOURCE-URL, HOME-PAGE, SYNOPSIS, DESCRIPTION, and LICENSE."
|
||||||
|
|
||||||
(define pypi->guix-package
|
(define pypi->guix-package
|
||||||
(memoize
|
(memoize
|
||||||
(lambda* (package-name #:key repo version)
|
(lambda* (package-name #:key version #:allow-other-keys)
|
||||||
"Fetch the metadata for PACKAGE-NAME from pypi.org, and return the
|
"Fetch the metadata for PACKAGE-NAME from pypi.org, and return the
|
||||||
`package' s-expression corresponding to that package, or #f on failure."
|
`package' s-expression corresponding to that package, or #f on failure."
|
||||||
(let* ((project (pypi-fetch package-name))
|
(let* ((project (pypi-fetch package-name))
|
||||||
|
|
|
@ -109,7 +109,8 @@
|
||||||
(lts-version %default-lts-version)
|
(lts-version %default-lts-version)
|
||||||
(packages
|
(packages
|
||||||
(stackage-lts-packages
|
(stackage-lts-packages
|
||||||
(stackage-lts-info-fetch lts-version))))
|
(stackage-lts-info-fetch lts-version)))
|
||||||
|
#:allow-other-keys)
|
||||||
"Fetch Cabal file for PACKAGE-NAME from hackage.haskell.org. The retrieved
|
"Fetch Cabal file for PACKAGE-NAME from hackage.haskell.org. The retrieved
|
||||||
version corresponds to the version of PACKAGE-NAME specified in the LTS-VERSION
|
version corresponds to the version of PACKAGE-NAME specified in the LTS-VERSION
|
||||||
release at stackage.org. Return the `package' S-expression corresponding to
|
release at stackage.org. Return the `package' S-expression corresponding to
|
||||||
|
@ -126,7 +127,7 @@ included in the Stackage LTS release."
|
||||||
|
|
||||||
(define (stackage-recursive-import package-name . args)
|
(define (stackage-recursive-import package-name . args)
|
||||||
(recursive-import package-name
|
(recursive-import package-name
|
||||||
#:repo->guix-package (lambda* (name #:key repo version)
|
#:repo->guix-package (lambda* (name #:key version #:allow-other-keys)
|
||||||
(apply stackage->guix-package (cons name args)))
|
(apply stackage->guix-package (cons name args)))
|
||||||
#:guix-name hackage-name->package-name))
|
#:guix-name hackage-name->package-name))
|
||||||
|
|
||||||
|
|
|
@ -303,9 +303,9 @@ of those files are returned that are unexpectedly installed."
|
||||||
(define texlive->guix-package
|
(define texlive->guix-package
|
||||||
(memoize
|
(memoize
|
||||||
(lambda* (name #:key
|
(lambda* (name #:key
|
||||||
repo
|
|
||||||
(version (number->string %texlive-revision))
|
(version (number->string %texlive-revision))
|
||||||
(package-database tlpdb))
|
(package-database tlpdb)
|
||||||
|
#:allow-other-keys)
|
||||||
"Find the metadata for NAME in the tlpdb and return the `package'
|
"Find the metadata for NAME in the tlpdb and return the `package'
|
||||||
s-expression corresponding to that package, or #f on failure."
|
s-expression corresponding to that package, or #f on failure."
|
||||||
(tlpdb->package name version (package-database)))))
|
(tlpdb->package name version (package-database)))))
|
||||||
|
|
|
@ -580,11 +580,11 @@ obtain a node's uniquely identifying \"key\"."
|
||||||
(set-insert (node-name head) visited))))))))
|
(set-insert (node-name head) visited))))))))
|
||||||
|
|
||||||
(define* (recursive-import package-name
|
(define* (recursive-import package-name
|
||||||
#:key repo->guix-package guix-name version repo
|
#:key repo->guix-package guix-name version
|
||||||
#:allow-other-keys)
|
#:allow-other-keys #:rest rest)
|
||||||
"Return a list of package expressions for PACKAGE-NAME and all its
|
"Return a list of package expressions for PACKAGE-NAME and all its
|
||||||
dependencies, sorted in topological order. For each package,
|
dependencies, sorted in topological order. For each package,
|
||||||
call (REPO->GUIX-PACKAGE NAME :KEYS version repo), which should return a
|
call (REPO->GUIX-PACKAGE NAME :KEYS version), which should return a
|
||||||
package expression and a list of dependencies; call (GUIX-NAME PACKAGE-NAME)
|
package expression and a list of dependencies; call (GUIX-NAME PACKAGE-NAME)
|
||||||
to obtain the Guix package name corresponding to the upstream name."
|
to obtain the Guix package name corresponding to the upstream name."
|
||||||
(define-record-type <node>
|
(define-record-type <node>
|
||||||
|
@ -599,9 +599,7 @@ to obtain the Guix package name corresponding to the upstream name."
|
||||||
(not (null? (find-packages-by-name (guix-name name) version))))
|
(not (null? (find-packages-by-name (guix-name name) version))))
|
||||||
|
|
||||||
(define (lookup-node name version)
|
(define (lookup-node name version)
|
||||||
(let* ((package dependencies (repo->guix-package name
|
(let* ((package dependencies (apply repo->guix-package (cons name rest)))
|
||||||
#:version version
|
|
||||||
#:repo repo))
|
|
||||||
(normalized-deps (map (match-lambda
|
(normalized-deps (map (match-lambda
|
||||||
((name version) (list name version))
|
((name version) (list name version))
|
||||||
(name (list name #f))) dependencies)))
|
(name (list name #f))) dependencies)))
|
||||||
|
|
Reference in New Issue