diff mbox series

[bug#51493,3/5] import: print: Properly render packages with origins as inputs.

Message ID 20211029213539.30291-3-ludo@gnu.org
State Accepted
Headers show
Series Improvements to the pypi, cran, and "print" importers | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch success View Laminar job
cbaines/issue success View issue

Commit Message

Ludovic Courtès Oct. 29, 2021, 9:35 p.m. UTC
* guix/import/print.scm (package->code)[source->code]: Check whether
VERSION is true before calling 'factorize-uri'.
[package-lists->code]: Add clause for inputs that are origins.
* tests/print.scm (pkg-with-origin-input, pkg-with-origin-input-source):
New variables.
("package with origin input"): New test.
---
 guix/import/print.scm | 14 +++++++++-----
 tests/print.scm       | 28 ++++++++++++++++++++++++++++
 2 files changed, 37 insertions(+), 5 deletions(-)
diff mbox series

Patch

diff --git a/guix/import/print.scm b/guix/import/print.scm
index 0310739b3a..8acf5d52f6 100644
--- a/guix/import/print.scm
+++ b/guix/import/print.scm
@@ -89,9 +89,11 @@  (define (source->code source version)
                              (guix hg-download)
                              (guix svn-download)))
                       (procedure-name method)))
-         (uri (string-append ,@(match (factorize-uri uri version)
-                                 ((? string? uri) (list uri))
-                                 (factorized factorized))))
+         (uri ,(if version
+                   `(string-append ,@(match (factorize-uri uri version)
+                                       ((? string? uri) (list uri))
+                                       (factorized factorized)))
+                   uri))
          ,(if (equal? (content-hash-algorithm hash) 'sha256)
               `(sha256 (base32 ,(bytevector->nix-base32-string
                                  (content-hash-value hash))))
@@ -109,7 +111,7 @@  (define (package-lists->code lsts)
           (map (match-lambda
                  ((? symbol? s)
                   (list (symbol->string s) (list 'unquote s)))
-                 ((label pkg . out)
+                 ((label (? package? pkg) . out)
                   (let ((mod (package-module-name pkg)))
                     (cons* label
                            ;; FIXME: using '@ certainly isn't pretty, but it
@@ -117,7 +119,9 @@  (define (package-lists->code lsts)
                            ;; modules.
                            (list 'unquote
                                  (list '@ mod (variable-name pkg mod)))
-                           out))))
+                           out)))
+                 ((label (? origin? origin))
+                  (list label (list 'unquote (source->code origin #f)))))
                lsts)))
 
   (let ((name                (package-name package))
diff --git a/tests/print.scm b/tests/print.scm
index 3386590d3a..ad19f4573a 100644
--- a/tests/print.scm
+++ b/tests/print.scm
@@ -67,6 +67,30 @@  (define-with-source pkg-with-inputs pkg-with-inputs-source
     (description "This is a dummy package.")
     (license license:gpl3+)))
 
+(define-with-source pkg-with-origin-input pkg-with-origin-input-source
+  (package
+    (name "test")
+    (version "1.2.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "file:///tmp/test-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "070pwb7brdcn1mfvplkd56vjc7lbz4iznzkqvfsakvgbv68k71ah"))))
+    (build-system (@ (guix build-system gnu) gnu-build-system))
+    (inputs
+     `(("o" ,(origin
+               (method url-fetch)
+               (uri "http://example.org/somefile.txt")
+               (sha256
+                (base32
+                 "0000000000000000000000000000000000000000000000000000"))))))
+    (home-page "http://gnu.org")
+    (synopsis "Dummy")
+    (description "This is a dummy package.")
+    (license license:gpl3+)))
+
 (test-equal "simple package"
   `(define-public test ,pkg-source)
   (package->code pkg))
@@ -75,4 +99,8 @@  (define-with-source pkg-with-inputs pkg-with-inputs-source
   `(define-public test ,pkg-with-inputs-source)
   (package->code pkg-with-inputs))
 
+(test-equal "package with origin input"
+  `(define-public test ,pkg-with-origin-input-source)
+  (package->code pkg-with-origin-input))
+
 (test-end "print")