[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#57717] [DRAFT PATCH core-updates] build-systems: Pass #:allowed-ref
From: |
Ludovic Courtès |
Subject: |
[bug#57717] [DRAFT PATCH core-updates] build-systems: Pass #:allowed-references and #:disallowed-references to builders. |
Date: |
Sun, 11 Sep 2022 16:12:44 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/28.1 (gnu/linux) |
Hi,
Marius Bakke <marius@gnu.org> skribis:
> * guix/build-system/gnu.scm (gnu-build, gnu-cross-build)[builder]: Pass
> along #:allowed-references and #:disallowed-references.
> * guix/build-system/meson.scm (meson-build, meson-cross-build)[builder]:
> Likewise.
> ---
> Hello Guix,
>
> This is an untested patch that makes #:allowed-references
> and #:disallowed-references available to build-side code.
>
> The intention is to make it easier to use these properties directly when
> e.g. wrapping. Consider the following:
>
> (arguments
> (list
> #:disallowed-references (list (gexp-input glib "bin")
> (gexp-input inkscape/stable))
> #:phases
> #~(modify-phases %standard-phases
> (replace 'glib-or-gtk-wrap
> (let ((wrap (assoc-ref %standard-phases 'glib-or-gtk-wrap)))
> (lambda* (#:key inputs outputs disallowed-references
> #:allow-other-keys)
> (wrap #:inputs (filter (match-lambda
> ((label . output)
> (not (member output
>
> disallowed-references))))
> inputs)
> #:outputs outputs)))))))
>
>
> This way we don't have to build the list of disallowed references twice,
> which is difficult without labels in the case of e.g. `(,glib "bin").
Why not.
The only possible drawback I can think of is that it could hide errors:
since things listed in #:disallowed-references are automatically removed
from wrappers, you could end up successfully building a wrapper that
lacks items without noticing. But yeah, maybe that’s a questionable
scenario.
> + #:allowed-references #$allowed-references
> + #:disallowed-references #$disallowed-references
Maxime raised a good point on this one, but I think you can write:
#:disallowed-references '#$disallowed-references
This will work whether ‘disallowed-references’ is #f or a list.
Thanks!
Ludo’.