[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#40629] [PATCH v2 9/9] import/json: json->code: Handle files with mo
From: |
Ricardo Wurmus |
Subject: |
[bug#40629] [PATCH v2 9/9] import/json: json->code: Handle files with more than one definition. |
Date: |
Sat, 18 Apr 2020 22:23:52 +0200 |
User-agent: |
mu4e 1.2.0; emacs 26.3 |
Jan Nieuwenhuizen <address@hidden> writes:
> Ricardo Wurmus writes:
>
>> With these last few changes it’s now possible to have multiple
>> definitions in a JSON array:
>>
>> [
>> {
>> "name": "myhello",
>> "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"]
>> },
>> {
>> "name": "hello2",
>> "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+",
>> "inputs": ["myhello"],
>> "native-inputs": ["gettext"]
>> }
>> ]
>>
>> “hello2” has “myhello” as an input. When this file is passed to “guix
>> install -f” both packages will be built and “hello2” will be installed
>> into the profile as it is the last package in the list.
>
> Great! I am imagining this as an s-expression, maybe something like
>
> --8<---------------cut here---------------start------------->8---
> (define-package
> (alist->package
> '((name "hello")
> (version "2.10")
> (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"))))
> --8<---------------cut here---------------end--------------->8---
>
> We may need some dots, or (native-inputs #("gettext")) if we are using
> json->scm in the process; just dreaming out loud here.
Yes, the S-expr equivalent would be:
(define-public my-hello
(alist->package
'(("name" . "hello")
("version" . "2.10")
("build-system" . "gnu")
("source" . "http://example.com")
("home-page" . "https://www.gnu.org/software/hello/")
("synopsis" . "Hello, GNU world: An example GNU package")
("description" . "GNU Hello prints a greeting."")
("native-inputs" . #("gettext"))
("license" . "GPL-3.0+"))))
alist->package expects an alist of the kind that json->scm would return;
vectors are used for lists to distinguish them from nested alists (which
would be used for the “arguments” field).
--
Ricardo
- [bug#40629] [PATCH 4/5] scripts/build: options->things-to-build: Handle .json files., (continued)
[bug#40629] Build and install packages from JSON definitions, Christopher Baines, 2020/04/15
[bug#40629] Build and install packages from JSON definitions, Ludovic Courtès, 2020/04/16