~ruther/guix-local

61bd7bf4690329a10e0a1d3fd1425a73d1823576 — itd 3 years ago 168a793
import/utils: alist->package: Include properties.

* guix/import/utils.scm (alist->package): Process properties field in input
data and include it in the generated package.
* tests/import-utils.scm ("alist->package with properties"): New test.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2 files changed, 29 insertions(+), 0 deletions(-)

M guix/import/utils.scm
M tests/import-utils.scm
M guix/import/utils.scm => guix/import/utils.scm +10 -0
@@ 444,10 444,20 @@ specifications to look up and replace them with plain symbols instead."
                  ((key . value)
                   (list (symbol->keyword (string->symbol key)) value)))
                arguments))
  (define (process-properties properties)
    (map (match-lambda
           ((key . value)
            (cons (string->symbol key) value)))
         properties))

  (package
    (name (assoc-ref meta "name"))
    (version (assoc-ref meta "version"))
    (source (source-spec->object (assoc-ref meta "source")))
    (properties
     (or (and=> (assoc-ref meta "properties")
                process-properties)
         '()))
    (build-system
      (lookup-build-system-by-name
       (string->symbol (assoc-ref meta "build-system"))))

M tests/import-utils.scm => tests/import-utils.scm +19 -0
@@ 203,4 203,23 @@
                 ("license" . #f))))
    (package-native-inputs (alist->package meta))))

(test-assert "alist->package with properties"
  (let* ((meta '(("name" . "hello")
                 ("version" . "2.10")
                 ("source" .
                  ;; Use a 'file://' URI so that we don't cause a download.
                  ,(string-append "file://"
                                  (search-path %load-path "guix.scm")))
                 ("build-system" . "gnu")
                 ("properties" . (("hidden?" . #t)
                                  ("upstream-name" . "hello-upstream")))
                 ("home-page" . "https://gnu.org")
                 ("synopsis" . "Say hi")
                 ("description" . "This package says hi.")
                 ("license" . "GPL-3.0+")))
         (pkg (alist->package meta)))
    (and (package? pkg)
         (equal? (package-upstream-name pkg) "hello-upstream")
         (hidden-package? pkg))))

(test-end "import-utils")