[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#57643] [PATCH 1/3] image: Make the operating-system field mandatory
From: |
Maxime Devos |
Subject: |
[bug#57643] [PATCH 1/3] image: Make the operating-system field mandatory. |
Date: |
Sat, 24 Sep 2022 12:55:37 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.12.0 |
On 07-09-2022 14:46, Mathieu Othacehe wrote:
+(define-syntax image-without-os
+ (lambda (x)
+ "Return an image record with the mandatory operating-system field set to
+#false. This is useful when creating an image record that will serve as a
+parent image record > +
+ (define (maybe-cons field acc)
+ ;; Return the given ACC list if FIELD is 'operating-system or the
+ ;; concatenation of FIELD to ACC otherwise.
+ (syntax-case field ()
+ ((f v)
+ (if (eq? (syntax->datum #'f) 'operating-system)
+ acc
+ (cons field acc)))) > +
+ (syntax-case x (image)
+ ;; Remove the operating-system field from the defined fields and then
+ ;; force it to #false.
+ ((_ fields ...)
+ (let loop ((fields #'(fields ...))
+ (acc '()))
+ (syntax-case fields ()
+ ((last)
+ #`(image
+ ;; Force it to #false.
+ (operating-system #false)
+ #,@(maybe-cons #'last acc)))
+ ((field rest ...)
+ (loop #'(rest ...) (maybe-cons #'field acc)))))))))
The complexity of this 'without os' macro seems to come from accepting
an 'os' and then throwing it away. However, when there is an 'os', you
might as well use 'image' directly, without 'image-without-os', so I
think this macro can be simplified to:
(define-syntax-rule (image-without-os . settings)
"docstring"
(image (operating-system #false) . settings))
(IIUC, '(guix records)' will detect duplicate definitions of fields.)
Greetings,
Maxime.
OpenPGP_0x49E3EE22191725EE.asc
Description: OpenPGP public key
OpenPGP_signature
Description: OpenPGP digital signature
[bug#57643] [PATCH 3/3] doc: Add a "System Images" chapter., Mathieu Othacehe, 2022/09/07
[bug#57643] [PATCH 1/3] image: Make the operating-system field mandatory., Liliana Marie Prikler, 2022/09/07
[bug#57643] [PATCH 1/3] image: Make the operating-system field mandatory.,
Maxime Devos <=
[bug#57643] [PATCH 0/3] Document the image API., Ludovic Courtès, 2022/09/24