unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#58020] [PATCH] import/utils: alist->package: Include properties.
@ 2022-09-23  7:42 itd
  2022-09-23 14:11 ` [bug#58020] [PATCH] import: print: Quasiquote properties itd
  2022-09-29 20:31 ` bug#58020: [PATCH] import/utils: alist->package: Include properties Ludovic Courtès
  0 siblings, 2 replies; 3+ messages in thread
From: itd @ 2022-09-23  7:42 UTC (permalink / raw)
  To: 58020


* 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.
---
Hi,

this patch enables the JSON importer to include package properties in its
output and a test to check that the modified function's result is consumable by
functions that use these properties.
Please consider applying it.  Thanks!

Regards
itd

 guix/import/utils.scm  |  9 +++++++++
 tests/import-utils.scm | 19 +++++++++++++++++++
 2 files changed, 28 insertions(+)

diff --git a/guix/import/utils.scm b/guix/import/utils.scm
index 7e7d116d1d..8ae04e3cfb 100644
--- a/guix/import/utils.scm
+++ b/guix/import/utils.scm
@@ -428,10 +428,19 @@ (define* (alist->package meta #:optional (known-inputs '()))
                   ((key . value)
                    (list (symbol->keyword (string->symbol key)) value)))
                 arguments))
+  (define (process-properties properties)
+    (append-map (match-lambda
+                  ((key . value)
+                   (acons (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 @@ (define-module (test-import-utils)
                  ("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")

base-commit: 04cad8e29ed85be838921c7fa05f7c5bce94b6d1
-- 
2.37.3





^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [bug#58020] [PATCH] import: print: Quasiquote properties
  2022-09-23  7:42 [bug#58020] [PATCH] import/utils: alist->package: Include properties itd
@ 2022-09-23 14:11 ` itd
  2022-09-29 20:31 ` bug#58020: [PATCH] import/utils: alist->package: Include properties Ludovic Courtès
  1 sibling, 0 replies; 3+ messages in thread
From: itd @ 2022-09-23 14:11 UTC (permalink / raw)
  To: 58020


* guix/import/print.scm (package->code): Quasiquote properties.
* tests/print.scm (pkg-with-properties, pkg-with-properties-source):
    New variables.
    ("package with properties"): New test
---
Hi again,

if I'm not mistaken, it is also required to (quasi)quote the value of
properties.  This patch updates package->code to achieve this.
Afterward, the following command:

> $ guix import json /dev/stdin <<EOF
> {
>   "name": "hello",
>   "version": "2.10",
>   "source": "mirror://gnu/hello/hello-2.10.tar.gz",
>   "build-system": "gnu",
>   "home-page": "https://www.gnu.org/software/hello/",
>   "synopsis": "Hello, GNU world: An example GNU package",
>   "description": "GNU Hello prints a greeting.",
>   "license": "GPL-3.0+",
>   "native-inputs": ["gettext"],
>   "properties": {
>    "hidden?": true,
>    "upstream-name": "hello-upstream"
>   }
> }
> EOF

should produce the following package definition:

> (define-public hello
>   (package
>     (name "hello")
>     (version "2.10")
>     (source (origin
>               (method url-fetch)
>               (uri (string-append "mirror://gnu/hello/hello-" version
>                                   ".tar.gz"))
>               (sha256
>                (base32
>                 "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i"))))
>     (properties `((upstream-name . "hello-upstream") (hidden? . #t)))
>     (build-system (@ (guix build-system gnu) gnu-build-system))
>     (native-inputs (list (@ (gnu packages gettext) gnu-gettext)))
>     (home-page "https://www.gnu.org/software/hello/")
>     (synopsis "Hello, GNU world: An example GNU package")
>     (description "GNU Hello prints a greeting.")
>     (license license:gpl3+)))
> hello

Regards
itd

 guix/import/print.scm |  3 ++-
 tests/print.scm       | 23 +++++++++++++++++++++++
 2 files changed, 25 insertions(+), 1 deletion(-)

diff --git a/guix/import/print.scm b/guix/import/print.scm
index 66016145cb..2f54adbd8c 100644
--- a/guix/import/print.scm
+++ b/guix/import/print.scm
@@ -200,7 +200,8 @@ (define (package->code package)
          (source ,(source->code source version))
          ,@(match properties
              (() '())
-             (_  `((properties ,properties))))
+             (_  `((properties
+                    ,(list 'quasiquote (object->code properties #t))))))
          ,@(if replacement
                `((replacement ,replacement))
                '())
diff --git a/tests/print.scm b/tests/print.scm
index d9710d1ed3..b4f193b905 100644
--- a/tests/print.scm
+++ b/tests/print.scm
@@ -139,6 +139,25 @@ (define-with-source pkg-with-arguments pkg-with-arguments-source
     (description "This is a dummy package.")
     (license license:gpl3+)))
 
+(define-with-source pkg-with-properties pkg-with-properties-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"))))
+    (properties
+     `((hidden? . #t) (upstream-name "test-upstream")))
+    (build-system (@ (guix build-system gnu) gnu-build-system))
+    (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))
@@ -159,4 +178,8 @@ (define-with-source pkg-with-arguments pkg-with-arguments-source
   `(define-public test ,pkg-with-arguments-source)
   (package->code pkg-with-arguments))
 
+(test-equal "package with properties"
+  `(define-public test ,pkg-with-properties-source)
+  (package->code pkg-with-properties))
+
 (test-end "print")
-- 
2.37.3





^ permalink raw reply related	[flat|nested] 3+ messages in thread

* bug#58020: [PATCH] import/utils: alist->package: Include properties.
  2022-09-23  7:42 [bug#58020] [PATCH] import/utils: alist->package: Include properties itd
  2022-09-23 14:11 ` [bug#58020] [PATCH] import: print: Quasiquote properties itd
@ 2022-09-29 20:31 ` Ludovic Courtès
  1 sibling, 0 replies; 3+ messages in thread
From: Ludovic Courtès @ 2022-09-29 20:31 UTC (permalink / raw)
  To: itd; +Cc: 58020-done

Hi,

itd <itd@net.in.tum.de> skribis:

> * 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.

[...]

> +  (define (process-properties properties)
> +    (append-map (match-lambda
> +                  ((key . value)
> +                   (acons (string->symbol key) value '())))
> +                properties))

I applied the patch and simplified this one.

> * guix/import/print.scm (package->code): Quasiquote properties.
> * tests/print.scm (pkg-with-properties, pkg-with-properties-source):
>     New variables.
>     ("package with properties"): New test

Applied, thanks!

Ludo’.




^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-09-29 20:32 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-23  7:42 [bug#58020] [PATCH] import/utils: alist->package: Include properties itd
2022-09-23 14:11 ` [bug#58020] [PATCH] import: print: Quasiquote properties itd
2022-09-29 20:31 ` bug#58020: [PATCH] import/utils: alist->package: Include properties Ludovic Courtès

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).