mirror of
git://git.savannah.gnu.org/guix.git
synced 2023-12-14 03:33:07 +01:00
import: crate: Parameterized importing of dev dependencies.
The recursive crate importer will now include development dependencies only for the top level package, but not for any of the recursively imported packages. Also #:skip-build will be false for the top-most package. * guix/import/crate.scm (make-crate-sexp): Add the key BUILD?. (crate->guix-package): Add the key INCLUDE-DEV-DEPS?. (crate-recursive-import): Likewise. * guix/scripts/import/crate.scm (guix-import-crate): Likewise. * tests/crate.scm (cargo-recursive-import): Likewise.
This commit is contained in:
parent
d9feb23e10
commit
50fbb3f032
3 changed files with 20 additions and 10 deletions
|
@ -151,7 +151,7 @@ record or #f if it was not found."
|
|||
`((arguments (,'quasiquote ,args))))))
|
||||
|
||||
(define* (make-crate-sexp #:key name version cargo-inputs cargo-development-inputs
|
||||
home-page synopsis description license)
|
||||
home-page synopsis description license build?)
|
||||
"Return the `package' s-expression for a rust package with the given NAME,
|
||||
VERSION, CARGO-INPUTS, CARGO-DEVELOPMENT-INPUTS, HOME-PAGE, SYNOPSIS, DESCRIPTION,
|
||||
and LICENSE."
|
||||
|
@ -177,7 +177,9 @@ and LICENSE."
|
|||
(base32
|
||||
,(bytevector->nix-base32-string (port-sha256 port))))))
|
||||
(build-system cargo-build-system)
|
||||
,@(maybe-arguments (append '(#:skip-build? #t)
|
||||
,@(maybe-arguments (append (if build?
|
||||
'()
|
||||
'(#:skip-build? #t))
|
||||
(maybe-cargo-inputs cargo-inputs)
|
||||
(maybe-cargo-development-inputs
|
||||
cargo-development-inputs)))
|
||||
|
@ -202,12 +204,13 @@ and LICENSE."
|
|||
'unknown-license!)))
|
||||
(string-split string (string->char-set " /"))))
|
||||
|
||||
(define* (crate->guix-package crate-name #:key version repo)
|
||||
(define* (crate->guix-package crate-name #:key version include-dev-deps? repo)
|
||||
"Fetch the metadata for CRATE-NAME from crates.io, and return the
|
||||
`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
|
||||
the latest version matching this semver range; otherwise fetch the latest
|
||||
version of CRATE-NAME."
|
||||
version of CRATE-NAME. If INCLUDE-DEV-DEPS is true then this will also
|
||||
look up the development dependencs for the given crate."
|
||||
|
||||
(define (semver-range-contains-string? range version)
|
||||
(semver-range-contains? (string->semver-range range)
|
||||
|
@ -263,9 +266,12 @@ version of CRATE-NAME."
|
|||
(let* ((dependencies (crate-version-dependencies version*))
|
||||
(dep-crates dev-dep-crates (partition normal-dependency? dependencies))
|
||||
(cargo-inputs (sort-map-dependencies dep-crates))
|
||||
(cargo-development-inputs '()))
|
||||
(cargo-development-inputs (if include-dev-deps?
|
||||
(sort-map-dependencies dev-dep-crates)
|
||||
'())))
|
||||
(values
|
||||
(make-crate-sexp #:name crate-name
|
||||
(make-crate-sexp #:build? include-dev-deps?
|
||||
#:name crate-name
|
||||
#:version (crate-version-number version*)
|
||||
#:cargo-inputs cargo-inputs
|
||||
#:cargo-development-inputs cargo-development-inputs
|
||||
|
@ -279,7 +285,12 @@ version of CRATE-NAME."
|
|||
|
||||
(define* (crate-recursive-import crate-name #:key version)
|
||||
(recursive-import crate-name
|
||||
#:repo->guix-package (memoize crate->guix-package)
|
||||
#:repo->guix-package (lambda* params
|
||||
;; download development dependencies only for the top level package
|
||||
(let ((include-dev-deps? (equal? (car params) crate-name))
|
||||
(crate->guix-package* (memoize crate->guix-package)))
|
||||
(apply crate->guix-package*
|
||||
(append params `(#:include-dev-deps? ,include-dev-deps?)))))
|
||||
#:version version
|
||||
#:guix-name crate-name->package-name))
|
||||
|
||||
|
|
|
@ -96,7 +96,7 @@ Import and convert the crate.io package for PACKAGE-NAME.\n"))
|
|||
|
||||
(if (assoc-ref opts 'recursive)
|
||||
(crate-recursive-import name #:version version)
|
||||
(let ((sexp (crate->guix-package name #:version version)))
|
||||
(let ((sexp (crate->guix-package name #:version version #:include-dev-deps? #t)))
|
||||
(unless sexp
|
||||
(leave (G_ "failed to download meta-data for package '~a'~%")
|
||||
(if version
|
||||
|
|
|
@ -536,8 +536,7 @@
|
|||
(? string? hash)))))
|
||||
(build-system cargo-build-system)
|
||||
(arguments
|
||||
('quasiquote (#:skip-build? #t
|
||||
#:cargo-inputs
|
||||
('quasiquote (#:cargo-inputs
|
||||
(("rust-intermediate-a"
|
||||
('unquote 'rust-intermediate-a-1.0.42))
|
||||
("rust-intermediate-b"
|
||||
|
|
Loading…
Reference in a new issue