diff options
author | David Craven <david@craven.ch> | 2016-12-29 16:29:24 +0100 |
---|---|---|
committer | David Craven <david@craven.ch> | 2017-01-01 18:20:52 +0100 |
commit | f1d136957d0d5634e60e5389a046a917169cdb9e (patch) | |
tree | 83929a1d557fdcd8662ff3f442009d38b71b6281 /guix/import | |
parent | f53a5514e0e9535d2e7c668803e64b4aac17da2b (diff) |
build-system: cargo: Handle Cargo.lock file not present.
* guix/build-system/cargo.scm (cargo-build): Add src output.
(private-keywords): Add #:outputs.
* guix/build/cargo-build-system.scm (configure): Use /share/rust-source
when replacing inputs.
(build, check): Don't do anything when there isn't a Cargo.lock file
present.
(install): Install sources to src output. When a Cargo.lock file is
present use cargo install to install binaries to out.
* guix/import/crate.scm (make-crate-sexp): Importer uses the src output
for crate inputs by default.
* guix/import/utils.scm (package-names->package-inputs, maybe-inputs,
maybe-native-inputs): Take an optional output argument.
* tests/crate.scm (crate->guix-package test): Update.
Problem reported by Francisco Gómez García <espectalll@kydara.com>.
Diffstat (limited to 'guix/import')
-rw-r--r-- | guix/import/crate.scm | 4 | ||||
-rw-r--r-- | guix/import/utils.scm | 14 |
2 files changed, 10 insertions, 8 deletions
diff --git a/guix/import/crate.scm b/guix/import/crate.scm index 33cc6104c5..233a20e983 100644 --- a/guix/import/crate.scm +++ b/guix/import/crate.scm @@ -97,8 +97,8 @@ VERSION, INPUTS, NATIVE-INPUTS, HOME-PAGE, SYNOPSIS, DESCRIPTION, and LICENSE." (base32 ,(bytevector->nix-base32-string (port-sha256 port)))))) (build-system cargo-build-system) - ,@(maybe-native-inputs native-inputs) - ,@(maybe-inputs inputs) + ,@(maybe-native-inputs native-inputs "src") + ,@(maybe-inputs inputs "src") (home-page ,(match home-page (() "") (_ home-page))) diff --git a/guix/import/utils.scm b/guix/import/utils.scm index f304da20e6..be1980d08f 100644 --- a/guix/import/utils.scm +++ b/guix/import/utils.scm @@ -211,24 +211,26 @@ into a proper sentence and by using two spaces between sentences." (regexp-substitute/global #f "\\. \\b" cleaned 'pre ". " 'post))) -(define (package-names->package-inputs names) +(define* (package-names->package-inputs names #:optional (output #f)) (map (lambda (input) - (list input (list 'unquote (string->symbol input)))) + (cons* input (list 'unquote (string->symbol input)) + (or (and output (list output)) + '()))) names)) -(define (maybe-inputs package-names) +(define* (maybe-inputs package-names #:optional (output #f)) "Given a list of PACKAGE-NAMES, tries to generate the 'inputs' field of a package definition." - (match (package-names->package-inputs package-names) + (match (package-names->package-inputs package-names output) (() '()) ((package-inputs ...) `((inputs (,'quasiquote ,package-inputs)))))) -(define (maybe-native-inputs package-names) +(define* (maybe-native-inputs package-names #:optional (output #f)) "Given a list of PACKAGE-NAMES, tries to generate the 'inputs' field of a package definition." - (match (package-names->package-inputs package-names) + (match (package-names->package-inputs package-names output) (() '()) ((package-inputs ...) |