import: print: Correctly handle URI lists.

* guix/import/print.scm (package->code)[factorized-uri-code]: New
procedure.
[source->code]: Use it, and factorize URI when it's a list.
* tests/print.scm (pkg-with-origin-input): Check origin URI to a list.
This commit is contained in:
Ludovic Courtès 2021-10-29 22:23:21 +02:00
parent 04d929570a
commit b3240ae846
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5
2 changed files with 16 additions and 5 deletions

View file

@ -25,6 +25,7 @@ (define-module (guix import print)
#:use-module (guix build-system)
#:use-module (gnu packages)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:use-module (guix import utils)
#:use-module (ice-9 control)
#:use-module (ice-9 match)
@ -72,6 +73,11 @@ (define (search-path-specification->code spec)
(file-type (quote ,(search-path-specification-file-type spec)))
(file-pattern ,(search-path-specification-file-pattern spec))))
(define (factorized-uri-code uri version)
(match (factorize-uri uri version)
((? string? uri) uri)
((factorized ...) `(string-append ,@factorized))))
(define (source->code source version)
(let ((uri (origin-uri source))
(method (origin-method source))
@ -90,9 +96,12 @@ (define (source->code source version)
(guix svn-download)))
(procedure-name method)))
(uri ,(if version
`(string-append ,@(match (factorize-uri uri version)
((? string? uri) (list uri))
(factorized factorized)))
(match uri
((? string? uri)
(factorized-uri-code uri version))
((lst ...)
`(list
,@(map (cut factorized-uri-code <> version) uri))))
uri))
,(if (equal? (content-hash-algorithm hash) 'sha256)
`(sha256 (base32 ,(bytevector->nix-base32-string

View file

@ -73,8 +73,10 @@ (define-with-source pkg-with-origin-input pkg-with-origin-input-source
(version "1.2.3")
(source (origin
(method url-fetch)
(uri (string-append "file:///tmp/test-"
version ".tar.gz"))
(uri (list (string-append "file:///tmp/test-"
version ".tar.gz")
(string-append "http://example.org/test-"
version ".tar.gz")))
(sha256
(base32
"070pwb7brdcn1mfvplkd56vjc7lbz4iznzkqvfsakvgbv68k71ah"))))