unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
From: Marius Bakke <marius@gnu.org>
To: 57717@debbugs.gnu.org
Cc: "Ludovic Courtès" <ludo@gnu.org>
Subject: [bug#57717] [DRAFT PATCH core-updates] build-systems: Pass #:allowed-references and #:disallowed-references to builders.
Date: Sat, 10 Sep 2022 17:26:04 +0200	[thread overview]
Message-ID: <20220910152604.3459-1-marius@gnu.org> (raw)

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

--8<---------------cut here---------------start------------->8---
(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)))))))
--8<---------------cut here---------------end--------------->8---

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").

Note: I implemented a variant of this approach using a let-binding in
f0114656876dcf2e09874e4ea0c00cacf31f1bb2, perhaps that is "good enough"
as this approach is unlikely to be much used.

WDYT?  I'll implement this for the remaining build systems if this is at
all sane.
---


diff --git a/guix/build-system/gnu.scm b/guix/build-system/gnu.scm
index 8eea1cd4c2..f85a172153 100644
--- a/guix/build-system/gnu.scm
+++ b/guix/build-system/gnu.scm
@@ -393,6 +393,8 @@ (define builder
                            #:build #$build
                            #:outputs %outputs
                            #:inputs %build-inputs
+                           #:allowed-references #$allowed-references
+                           #:disallowed-references #$disallowed-references
                            #:search-paths '#$(sexp->gexp
                                               (map search-path-specification->sexp
                                                    search-paths))
@@ -531,6 +533,8 @@ (define %outputs
                    #:target #$target
                    #:outputs %outputs
                    #:inputs %build-target-inputs
+                   #:allowed-references #$allowed-references
+                   #:disallowed-references #$disallowed-references
                    #:native-inputs %build-host-inputs
                    #:search-paths '#$(sexp->gexp
                                       (map search-path-specification->sexp
diff --git a/guix/build-system/meson.scm b/guix/build-system/meson.scm
index 9fee6c4570..1bef07230f 100644
--- a/guix/build-system/meson.scm
+++ b/guix/build-system/meson.scm
@@ -210,6 +210,8 @@ (define build-phases
           #$(with-build-variables inputs outputs
               #~(meson-build #:source #+source
                              #:system #$system
+                             #:allowed-references #$allowed-references
+                             #:disallowed-references #$disallowed-references
                              #:outputs %outputs
                              #:inputs %build-inputs
                              #:search-paths '#$(sexp->gexp
@@ -318,6 +320,8 @@ (define build-phases
                        #:system #$system
                        #:build #$(nix-system->gnu-triplet system)
                        #:target #$target
+                       #:allowed-references #$allowed-references
+                       #:disallowed-references #$disallowed-references
                        #:outputs #$(outputs->gexp outputs)
                        #:inputs #$inputs
                        #:native-inputs #+(input-tuples->gexp build-inputs)
-- 
2.37.3





             reply	other threads:[~2022-09-10 15:27 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-10 15:26 Marius Bakke [this message]
2022-09-10 16:27 ` [bug#57717] [DRAFT PATCH core-updates] build-systems: Pass #:allowed-references and #:disallowed-references to builders Maxime Devos
2022-09-10 16:32 ` Maxime Devos
2022-09-10 16:34   ` Maxime Devos
2022-09-11 14:12 ` Ludovic Courtès

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220910152604.3459-1-marius@gnu.org \
    --to=marius@gnu.org \
    --cc=57717@debbugs.gnu.org \
    --cc=ludo@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).