From 01bb6a944f4637a7528207e432aeda40105a2070 Mon Sep 17 00:00:00 2001 From: Martin Becze Date: Mon, 27 Jan 2020 06:45:10 -0500 Subject: [PATCH v11 3/9] guix: import: utils: allow generation of inputs to be version aware * guix/import/utils.scm (package-names->package-inputs): Added the ability to handle (name version) pairs * guix/import/crate.scm (make-crate-sexp): cleaned up input field generation --- guix/import/crate.scm | 17 +++++++++-------- guix/import/utils.scm | 21 ++++++++++++++------- 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/guix/import/crate.scm b/guix/import/crate.scm index d711820b81..7e61bc21b6 100644 --- a/guix/import/crate.scm +++ b/guix/import/crate.scm @@ -154,16 +154,17 @@ record or #f if it was not found." "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." + (define (format-inputs inputs) + (map + (match-lambda + ((name version) (list (crate-name->package-name name) + (version-major+minor version)))) + inputs)) + (let* ((port (http-fetch (crate-uri name version))) (guix-name (crate-name->package-name name)) - (cargo-inputs - (map - (lambda (name-version) - (apply crate-name->package-name name-version)) cargo-inputs)) - (cargo-development-inputs - (map - (lambda (name-version) - (apply crate-name->package-name name-version)) cargo-development-inputs)) + (cargo-inputs (format-inputs cargo-inputs)) + (cargo-development-inputs (format-inputs cargo-development-inputs)) (pkg `(package (name ,guix-name) (version ,version) diff --git a/guix/import/utils.scm b/guix/import/utils.scm index cd92cf7dd8..709cd718f6 100644 --- a/guix/import/utils.scm +++ b/guix/import/utils.scm @@ -225,13 +225,20 @@ into a proper sentence and by using two spaces between sentences." cleaned 'pre ". " 'post))) (define* (package-names->package-inputs names #:optional (output #f)) - "Given a list of PACKAGE-NAMES, and an optional OUTPUT, tries to generate a -quoted list of inputs, as suitable to use in an 'inputs' field of a package -definition." - (map (lambda (input) - (cons* input (list 'unquote (string->symbol input)) - (or (and output (list output)) - '()))) + "Given a list of PACKAGE-NAMES or (PACKAGE-NAME VERSION) pairs, and an +optional OUTPUT, tries to generate a quoted list of inputs, as suitable to +use in an 'inputs' field of a package definition." + (define (make-input input version) + (cons* input (list 'unquote (string->symbol + (if version + (string-append input "-" version) + input))) + (or (and output (list output)) + '()))) + + (map (match-lambda + ((input version) (make-input input version)) + (input (make-input input #f))) names)) (define* (maybe-inputs package-names #:optional (output #f)) -- 2.25.1