diff options
-rw-r--r-- | guix/import/utils.scm | 10 | ||||
-rw-r--r-- | tests/import-utils.scm | 19 |
2 files changed, 29 insertions, 0 deletions
diff --git a/guix/import/utils.scm b/guix/import/utils.scm index dd8c61b79a..977e1d5f95 100644 --- a/guix/import/utils.scm +++ b/guix/import/utils.scm @@ -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")))) diff --git a/tests/import-utils.scm b/tests/import-utils.scm index 7c6c782917..c47348fc60 100644 --- a/tests/import-utils.scm +++ b/tests/import-utils.scm @@ -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") |