[PATCH 00/43] Extend bag-build to gexps.

  • Open
  • quality assurance status badge
Details
2 participants
  • Nicolas Graves
  • Simon Tournier
Owner
unassigned
Submitted by
Nicolas Graves
Severity
normal

Debbugs page

N
N
Nicolas Graves wrote on 12 Aug 01:55 -0700
(address . guix-patches@gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812085741.16912-1-ngraves@ngraves.fr
I'm sending it there to hopefully get some guix-data-service info about this change.

Nicolas Graves (43):
guix: packages: Extend bag-build to support gexp.
build-system: gnu: Redefine gnu-build and gnu-cross-build.
build-system: agda: Redefine agda-build.
build-system: android-ndk: Redefine gnu-build.
build-system: ant: Redefine ant-build.
build-system: asdf: Redefine asdf-build.
build-system: cargo: Redefine cargo-build and cargo-cross-build.
build-system: chicken: Redefine chicken-build.
build-system: clojure: Redefine clojure-build.
build-system: cmake: Redefine cmake-build and cmake-cross-build.
build-system: composer: Redefine composer-build.
build-system: copy: Redefine copy-build.
build-system: dub: Redefine dub-build.
build-system: dune: Redefine dune-build.
build-system: elm: Redefine elm-build.
build-system: emacs: Redefine emacs-build.
build-system: font: Redefine font-build.
build-system: glib-or-gtk: Redefine glib-or-gtk-build functions.
build-system: go: Redefine go-build and go-cross-build.
build-system: guile: Redefine guile-build and guile-cross-build.
build-system: haskell: Redefine haskell-build.
build-system: julia: Redefine julia-build.
build-system: linux-module: Redefine linux-module-build functions.
build-system: maven: Redefine maven-build.
build-system: meson: Redefine meson-build and meson-cross-build.
build-system: minify: Redefine minify-build.
build-system: mix: Redefine mix-build.
build-system: node: Redefine node-build.
build-system: ocaml: Redefine ocaml-build.
build-system: perl: Redefine perl-build and perl-cross-build.
build-system: pyproject: Redefine pyproject-build.
build-system: python: Redefine python-build.
build-system: qt: Redefine qt-build and qt-cross-build.
build-system: r: Redefine r-build.
build-system: rakudo: Redefine rakudo-build.
build-system: rebar: Redefine rebar-build.
build-system: renpy: Redefine renpy-build.
build-system: ruby: Redefine ruby-build.
build-system: scons: Redefine scons-build.
build-system: texlive: Redefine texlive-build.
build-system: tree-sitter: Redefine tree-sitter-build functions.
build-system: vim: Redefine vim-build.
build-system: zig: Redefine zig-build.

guix/build-system.scm | 2 +-
guix/build-system/agda.scm | 8 ++---
guix/build-system/android-ndk.scm | 8 ++---
guix/build-system/ant.scm | 8 ++---
guix/build-system/asdf.scm | 8 ++---
guix/build-system/cargo.scm | 19 ++++-------
guix/build-system/chicken.scm | 8 ++---
guix/build-system/clojure.scm | 8 ++---
guix/build-system/cmake.scm | 27 ++++-----------
guix/build-system/composer.scm | 9 +++--
guix/build-system/copy.scm | 11 ++-----
guix/build-system/dub.scm | 8 ++---
guix/build-system/dune.scm | 9 +++--
guix/build-system/elm.scm | 8 ++---
guix/build-system/emacs.scm | 10 ++----
guix/build-system/font.scm | 10 ++----
guix/build-system/glib-or-gtk.scm | 26 ++++-----------
guix/build-system/gnu.scm | 26 +++------------
guix/build-system/go.scm | 21 ++++--------
guix/build-system/guile.scm | 21 +++---------
guix/build-system/haskell.scm | 8 ++---
guix/build-system/julia.scm | 8 ++---
guix/build-system/linux-module.scm | 17 +++-------
guix/build-system/maven.scm | 8 ++---
guix/build-system/meson.scm | 25 +++-----------
guix/build-system/minify.scm | 8 ++---
guix/build-system/mix.scm | 12 ++-----
guix/build-system/node.scm | 8 ++---
guix/build-system/ocaml.scm | 9 +++--
guix/build-system/perl.scm | 22 ++++---------
guix/build-system/pyproject.scm | 15 +++------
guix/build-system/python.scm | 15 +++------
guix/build-system/qt.scm | 21 +++---------
guix/build-system/r.scm | 9 ++---
guix/build-system/rakudo.scm | 8 ++---
guix/build-system/rebar.scm | 12 ++-----
guix/build-system/renpy.scm | 8 ++---
guix/build-system/ruby.scm | 11 ++-----
guix/build-system/scons.scm | 9 +++--
guix/build-system/texlive.scm | 11 ++-----
guix/build-system/tree-sitter.scm | 16 +++------
guix/build-system/vim.scm | 15 +++------
guix/build-system/zig.scm | 8 ++---
guix/packages.scm | 53 +++++++++++++++++++++++++-----
44 files changed, 206 insertions(+), 385 deletions(-)

--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 02/43] build-system: gnu: Redefine gnu-build and gnu-cross-build.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-2-ngraves@ngraves.fr
* guix/build-system/gnu.scm
(gnu-build): Monadic procedure returns a gexp instead of a derivation.
(gnu-cross-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: I6bf922ecd1474df104f959989db315d7ddc278b6
---
guix/build-system/gnu.scm | 26 ++++----------------------
1 file changed, 4 insertions(+), 22 deletions(-)

Toggle diff (46 lines)
diff --git a/guix/build-system/gnu.scm b/guix/build-system/gnu.scm
index 8f0883956e3..865301a92cf 100644
--- a/guix/build-system/gnu.scm
+++ b/guix/build-system/gnu.scm
@@ -429,18 +429,8 @@ (define builder
#:strip-flags #$strip-flags
#:strip-directories #$strip-directories)))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- ;; Note: Always pass #:graft? #f. Without it, ALLOWED-REFERENCES &
- ;; co. would be interpreted as referring to grafted packages.
- (gexp->derivation name builder
- #:system system
- #:target #f
- #:graft? #f
- #:substitutable? substitutable?
- #:allowed-references allowed-references
- #:disallowed-references disallowed-references
- #:guile-for-build guile)))
+ (mbegin %store-monad
+ (return builder)))
;;;
@@ -574,16 +564,8 @@ (define %outputs
#:strip-flags #$strip-flags
#:strip-directories #$strip-directories))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name builder
- #:system system
- #:target target
- #:graft? #f
- #:substitutable? substitutable?
- #:allowed-references allowed-references
- #:disallowed-references disallowed-references
- #:guile-for-build guile)))
+ (mbegin %store-monad
+ (return builder)))
(define gnu-build-system
(build-system
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 01/43] guix: packages: Extend bag-build to support gexp.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-1-ngraves@ngraves.fr
Rationale: The goal of this proposition was to enable guix users to
edit build-system lower builders on-the-fly, which is currently not
possible. This is done by keeping a higher-level representation of
the builder - a gexp rather than a derivation - as the bag-build
field.

* guix/build-system.scm (<bag>): Update comment.
* guix/packages.scm
(bag->derivation): Handle gexp bag-build. Rename current procedure to...
(bag-builder):... this procedure.
(bag->cross-derivation): Rename procedure to...
(bag-cross-builder):... this procedure.

Change-Id: I56c5a9dab9954307f95b29eab5e02ee058271684
---
guix/build-system.scm | 2 +-
guix/packages.scm | 53 +++++++++++++++++++++++++++++++++++--------
2 files changed, 45 insertions(+), 10 deletions(-)

Toggle diff (108 lines)
diff --git a/guix/build-system.scm b/guix/build-system.scm
index 76d670995ce..a4dcdc52d85 100644
--- a/guix/build-system.scm
+++ b/guix/build-system.scm
@@ -79,7 +79,7 @@ (define-record-type* <bag> bag %make-bag
(default '("out")))
(arguments bag-arguments ;list
(default '()))
- (build bag-build)) ;bag -> derivation
+ (build bag-build)) ;bag -> gexp or derivation
(define* (make-bag build-system name
#:key source (inputs '()) (native-inputs '())
diff --git a/guix/packages.scm b/guix/packages.scm
index 1d5986c5f42..1df9cb67f02 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -12,6 +12,7 @@
;;; Copyright © 2023 Simon Tournier <zimon.toutoune@gmail.com>
;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2024 David Elsing <david.elsing@posteo.net>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -51,6 +52,7 @@ (define-module (guix packages)
#:use-module (ice-9 match)
#:use-module (ice-9 vlist)
#:use-module (ice-9 regex)
+ #:use-module (ice-9 optargs)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-9 gnu)
#:use-module (srfi srfi-26)
@@ -1967,12 +1969,12 @@ (define (input=? input1 input2)
(derivation=? obj1 obj2))
(equal? obj1 obj2))))))))
-(define* (bag->derivation bag #:optional context)
- "Return the derivation to build BAG for SYSTEM. Optionally, CONTEXT can be
-a package object describing the context in which the call occurs, for improved
-error reporting."
+(define* (bag-builder bag #:optional context)
+ "Return the gexp or derivation to build BAG for SYSTEM. Optionally, CONTEXT
+can be a package object describing the context in which the call occurs, for
+improved error reporting."
(if (bag-target bag)
- (bag->cross-derivation bag)
+ (bag-cross-builder bag)
(mlet* %store-monad ((system -> (bag-system bag))
(inputs -> (bag-transitive-inputs bag))
(input-drvs (mapm %store-monad
@@ -1994,10 +1996,10 @@ (define* (bag->derivation bag #:optional context)
#:outputs (bag-outputs bag) #:system system
(bag-arguments bag)))))
-(define* (bag->cross-derivation bag #:optional context)
- "Return the derivation to build BAG, which is actually a cross build.
-Optionally, CONTEXT can be a package object denoting the context of the call.
-This is an internal procedure."
+(define* (bag-cross-builder bag #:optional context)
+ "Return the gexp or derivation to build BAG, which is actually a cross
+build. Optionally, CONTEXT can be a package object denoting the context of the
+call. This is an internal procedure."
(mlet* %store-monad ((system -> (bag-system bag))
(target -> (bag-target bag))
(host -> (bag-transitive-host-inputs bag))
@@ -2038,6 +2040,39 @@ (define* (bag->cross-derivation bag #:optional context)
#:system system #:target target
(bag-arguments bag))))
+(define* (bag->derivation bag #:optional context)
+ "Return the derivation to build BAG for SYSTEM. Optionally, CONTEXT can be
+a package object describing the context in which the call occurs, for improved
+error reporting."
+ (mlet %store-monad ((builder (bag-builder bag context)))
+ (match builder
+ ((? derivation? drv)
+ (return drv))
+ ((? gexp? gexp)
+ (let-keywords (bag-arguments bag) #t
+ ((allowed-references #f)
+ (disallowed-references #f)
+ (guile #f)
+ (substitutable? #t))
+ (mlet %store-monad
+ ((guile (package->derivation (or guile (default-guile))
+ (bag-system bag)
+ #:graft? #f)))
+ ;; Note: Always pass #:graft? #f. Without it, ALLOWED-REFERENCES &
+ ;; co. would be interpreted as referring to grafted packages.
+ (gexp->derivation (bag-name bag) gexp
+ #:system (bag-system bag)
+ #:target (and (bag-target bag))
+ #:graft? #f
+ #:substitutable? substitutable?
+ #:allowed-references allowed-references
+ #:disallowed-references disallowed-references
+ #:guile-for-build guile))))
+ ;; build-bag has to be drv or gexp, else raise.
+ (_
+ (raise (condition (&package-error
+ (package context))))))))
+
(define bag->derivation*
(store-lower bag->derivation))
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 03/43] build-system: agda: Redefine agda-build.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-3-ngraves@ngraves.fr
* guix/build-system/agda.scm
(agda-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: I3c21a043a0687f4776d44297ed3dd4697a606b40
---
guix/build-system/agda.scm | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)

Toggle diff (27 lines)
diff --git a/guix/build-system/agda.scm b/guix/build-system/agda.scm
index ec6ad860e08..b33737ffa28 100644
--- a/guix/build-system/agda.scm
+++ b/guix/build-system/agda.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2023 Josselin Poiret <dev@jpoiret.xyz>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -108,11 +109,8 @@ (define builder
#:plan '#$plan
#:extra-files '#$extra-files))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name builder
- #:system system
- #:guile-for-build guile)))
+ (mbegin %store-monad
+ (return builder)))
(define agda-build-system
(build-system
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 04/43] build-system: android-ndk: Redefine gnu-build.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-4-ngraves@ngraves.fr
* guix/build-system/android-ndk.scm
(android-ndk-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: If1737d77ebccd418ad461c91aff170273855ed45
---
guix/build-system/android-ndk.scm | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)

Toggle diff (28 lines)
diff --git a/guix/build-system/android-ndk.scm b/guix/build-system/android-ndk.scm
index 565ec1d3632..b226866c102 100644
--- a/guix/build-system/android-ndk.scm
+++ b/guix/build-system/android-ndk.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
;;; Copyright © 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -83,11 +84,8 @@ (define builder
search-paths))
#:inputs #$(input-tuples->gexp inputs)))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name builder
- #:system system
- #:guile-for-build guile)))
+ (mbegin %store-monad
+ (return builder)))
(define* (lower name
#:key source inputs native-inputs outputs system target
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 05/43] build-system: ant: Redefine ant-build.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-5-ngraves@ngraves.fr
* guix/build-system/ant.scm
(ant-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: I4f1152e29b938dbf37125bf156fb56b841011f06
---
guix/build-system/ant.scm | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)

Toggle diff (28 lines)
diff --git a/guix/build-system/ant.scm b/guix/build-system/ant.scm
index 9816cc061c9..3ce919032fc 100644
--- a/guix/build-system/ant.scm
+++ b/guix/build-system/ant.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -144,11 +145,8 @@ (define builder
search-paths))
#:inputs #$(input-tuples->gexp inputs)))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name builder
- #:system system
- #:guile-for-build guile)))
+ (mbegin %store-monad
+ (return builder)))
(define ant-build-system
(build-system
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 06/43] build-system: asdf: Redefine asdf-build.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-6-ngraves@ngraves.fr
* guix/build-system/asdf.scm
(asdf-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: Ifdd57c4e5279d110ee7c670090b3ae4089703659
---
guix/build-system/asdf.scm | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)

Toggle diff (28 lines)
diff --git a/guix/build-system/asdf.scm b/guix/build-system/asdf.scm
index 5ce63d106fd..a4ff851dbb7 100644
--- a/guix/build-system/asdf.scm
+++ b/guix/build-system/asdf.scm
@@ -3,6 +3,7 @@
;;; Copyright © 2019, 2020, 2021, 2022 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2022 Pierre Neidhardt <mail@ambrevar.xyz>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;; Copyright © 2025 jgart <jgart@dismail.de>
;;;
;;; This file is part of GNU Guix.
@@ -329,11 +330,8 @@ (define builder
search-paths))
#:inputs #$(input-tuples->gexp inputs))))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name builder
- #:system system
- #:guile-for-build guile))))
+ (mbegin %store-monad
+ (return builder))))
(define asdf-build-system/sbcl
(build-system
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 07/43] build-system: cargo: Redefine cargo-build and cargo-cross-build.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-7-ngraves@ngraves.fr
* guix/build-system/cargo.scm
(cargo-build): Monadic procedure returns a gexp instead of a derivation.
(cargo-cross-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: If1151e9222170f2eb3a92d43debc61c696c2e72d
---
guix/build-system/cargo.scm | 19 +++++++------------
1 file changed, 7 insertions(+), 12 deletions(-)

Toggle diff (47 lines)
diff --git a/guix/build-system/cargo.scm b/guix/build-system/cargo.scm
index 452f7f78d01..4d130ab7066 100644
--- a/guix/build-system/cargo.scm
+++ b/guix/build-system/cargo.scm
@@ -8,6 +8,7 @@
;;; Copyright © 2021, 2024 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2024 Herman Rimm <herman@rimm.ee>
;;; Copyright © 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -139,11 +140,8 @@ (define builder
(map search-path-specification->sexp
search-paths))))))
- (gexp->derivation name builder
- #:system system
- #:target #f
- #:graft? #f
- #:guile-for-build guile))
+ (mbegin %store-monad
+ (return builder)))
(define* (cargo-cross-build name
#:key
@@ -205,14 +203,11 @@ (define builder
(map search-path-specification->sexp
search-paths))
#:native-search-paths '#$(sexp->gexp
- (map search-path-specification->sexp
- native-search-paths))))))
+ (map search-path-specification->sexp
+ native-search-paths))))))
- (gexp->derivation name builder
- #:system system
- #:target target
- #:graft? #f
- #:guile-for-build guile))
+ (mbegin %store-monad
+ (return builder)))
(define (package-cargo-inputs p)
(apply
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 08/43] build-system: chicken: Redefine chicken-build.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-8-ngraves@ngraves.fr
* guix/build-system/chicken.scm
(chicken-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: I6a837f198ac6c371b08f8690ff5bea68dbad2b54
---
guix/build-system/chicken.scm | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)

Toggle diff (28 lines)
diff --git a/guix/build-system/chicken.scm b/guix/build-system/chicken.scm
index e6fcfa7ee30..5c4a7f45bba 100644
--- a/guix/build-system/chicken.scm
+++ b/guix/build-system/chicken.scm
@@ -2,6 +2,7 @@
;;; Copyright © 2020 raingloom <raingloom@riseup.net>
;;; Copyright © 2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -113,11 +114,8 @@ (define builder
#:tests? #$tests?
#:inputs #$(input-tuples->gexp inputs)))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name builder
- #:system system
- #:guile-for-build guile)))
+ (mbegin %store-monad
+ (return builder)))
(define chicken-build-system
(build-system
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 09/43] build-system: clojure: Redefine clojure-build.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-9-ngraves@ngraves.fr
* guix/build-system/clojure.scm
(clojure-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: I5b5b552052cfffc45bc4d82871600b322eb23d85
---
guix/build-system/clojure.scm | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)

Toggle diff (28 lines)
diff --git a/guix/build-system/clojure.scm b/guix/build-system/clojure.scm
index 037fcaf21d9..cddcf8304e6 100644
--- a/guix/build-system/clojure.scm
+++ b/guix/build-system/clojure.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
;;; Copyright © 2020, 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -169,11 +170,8 @@ (define builder
#:system #$system
#:inputs #$(input-tuples->gexp inputs)))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name builder
- #:system system
- #:guile-for-build guile)))
+ (mbegin %store-monad
+ (return builder)))
(define clojure-build-system
(build-system
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 10/43] build-system: cmake: Redefine cmake-build and cmake-cross-build.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-10-ngraves@ngraves.fr
* guix/build-system/cmake.scm
(cmake-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: I0c3ceb08391a38c52521416093d2c4b2ae869165
---
guix/build-system/cmake.scm | 27 ++++++---------------------
1 file changed, 6 insertions(+), 21 deletions(-)

Toggle diff (61 lines)
diff --git a/guix/build-system/cmake.scm b/guix/build-system/cmake.scm
index b0587fddf02..ff67e8b6735 100644
--- a/guix/build-system/cmake.scm
+++ b/guix/build-system/cmake.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2025 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -147,7 +148,7 @@ (define* (cmake-build name inputs
disallowed-references)
"Build SOURCE using CMAKE, and with INPUTS. This assumes that SOURCE
provides a 'CMakeLists.txt' file as its build system."
- (define build
+ (define builder
(with-imported-modules imported-modules
#~(begin
(use-modules #$@(sexp->gexp modules))
@@ -182,16 +183,8 @@ (define build
#:strip-flags #$strip-flags
#:strip-directories #$strip-directories)))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name build
- #:system system
- #:target #f
- #:graft? #f
- #:substitutable? substitutable?
- #:allowed-references allowed-references
- #:disallowed-references disallowed-references
- #:guile-for-build guile)))
+ (mbegin %store-monad
+ (return builder)))
;;;
@@ -290,16 +283,8 @@ (define %outputs
#:strip-flags #$strip-flags
#:strip-directories #$strip-directories))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name builder
- #:system system
- #:target target
- #:graft? #f
- #:substitutable? substitutable?
- #:allowed-references allowed-references
- #:disallowed-references disallowed-references
- #:guile-for-build guile)))
+ (mbegin %store-monad
+ (return builder)))
(define cmake-build-system
(build-system
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 11/43] build-system: composer: Redefine composer-build.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-11-ngraves@ngraves.fr
* guix/build-system/composer.scm
(composer-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: Ib7787a5116744e61e3d0afeac6d85f61c6b6c9c4
---
guix/build-system/composer.scm | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)

Toggle diff (35 lines)
diff --git a/guix/build-system/composer.scm b/guix/build-system/composer.scm
index 48ad90f253e..ceb2bf68801 100644
--- a/guix/build-system/composer.scm
+++ b/guix/build-system/composer.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
+;;; Copyright © 2023-2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -18,6 +19,7 @@
(define-module (guix build-system composer)
#:use-module (guix store)
+ #:use-module (guix monads)
#:use-module (guix utils)
#:use-module (guix derivations)
#:use-module (guix search-paths)
@@ -151,11 +153,8 @@ (define builder
#:strip-flags #$strip-flags
#:strip-directories #$strip-directories))))))
- (gexp->derivation name builder
- #:system system
- #:target #f
- #:graft? #f
- #:guile-for-build guile))
+ (mbegin %store-monad
+ (return builder)))
(define composer-build-system
(build-system
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 12/43] build-system: copy: Redefine copy-build.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-12-ngraves@ngraves.fr
* guix/build-system/copy.scm
(copy-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: I96dfa099501796df007143db63a49e2adedbee92
---
guix/build-system/copy.scm | 11 +++--------
1 file changed, 3 insertions(+), 8 deletions(-)

Toggle diff (31 lines)
diff --git a/guix/build-system/copy.scm b/guix/build-system/copy.scm
index 1f2937e0f18..ec0f3d95423 100644
--- a/guix/build-system/copy.scm
+++ b/guix/build-system/copy.scm
@@ -3,6 +3,7 @@
;;; Copyright © 2020 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2021, 2022 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2023 Jonathan Brielmaier <jonathan.brielmaier@web.de>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -126,14 +127,8 @@ (define builder
#:strip-flags #$strip-flags
#:strip-directories #$strip-directories)))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name builder
- #:system system
- #:target #f
- #:substitutable? substitutable?
- #:graft? #f
- #:guile-for-build guile)))
+ (mbegin %store-monad
+ (return builder)))
(define copy-build-system
(build-system
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 13/43] build-system: dub: Redefine dub-build.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-13-ngraves@ngraves.fr
* guix/build-system/dub.scm
(dub-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: I678a7287172157688b95cab00175e61852a99c58
---
guix/build-system/dub.scm | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)

Toggle diff (28 lines)
diff --git a/guix/build-system/dub.scm b/guix/build-system/dub.scm
index 831a34af0d1..170f247e5d0 100644
--- a/guix/build-system/dub.scm
+++ b/guix/build-system/dub.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2016 David Craven <david@craven.ch>
;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -93,11 +94,8 @@ (define builder
search-paths))
#:inputs #$(input-tuples->gexp inputs)))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name builder
- #:system system
- #:guile-for-build guile)))
+ (mbegin %store-monad
+ (return builder)))
(define* (lower name
#:key source inputs native-inputs outputs system target
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 14/43] build-system: dune: Redefine dune-build.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-14-ngraves@ngraves.fr
* guix/build-system/dune.scm
(dune-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: I2a0a9a771afbe491538ed50aeb47b9fa4fd9341b
---
guix/build-system/dune.scm | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)

Toggle diff (36 lines)
diff --git a/guix/build-system/dune.scm b/guix/build-system/dune.scm
index c45f3083493..990d94db0f6 100644
--- a/guix/build-system/dune.scm
+++ b/guix/build-system/dune.scm
@@ -3,6 +3,7 @@
;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
;;; Copyright © 2021, 2022 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2021 pukkamustard <pukkamustard@posteo.net>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -21,6 +22,7 @@
(define-module (guix build-system dune)
#:use-module (guix store)
+ #:use-module (guix monads)
#:use-module (guix utils)
#:use-module (guix gexp)
#:use-module (guix search-paths)
@@ -152,11 +154,8 @@ (define builder
#:strip-flags #$strip-flags
#:strip-directories #$strip-directories))))
- (gexp->derivation name builder
- #:system system
- #:target #f
- #:graft? #f
- #:guile-for-build guile))
+ (mbegin %store-monad
+ (return builder)))
(define dune-build-system
(build-system
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 15/43] build-system: elm: Redefine elm-build.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-15-ngraves@ngraves.fr
* guix/build-system/elm.scm
(elm-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: I9d45b254d5e8fdc337d075e7394e3354c9186ea6
---
guix/build-system/elm.scm | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)

Toggle diff (27 lines)
diff --git a/guix/build-system/elm.scm b/guix/build-system/elm.scm
index 7405db3d985..aa842ca9c63 100644
--- a/guix/build-system/elm.scm
+++ b/guix/build-system/elm.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2022 Philip McGrath <philip@philipmcgrath.com>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -193,11 +194,8 @@ (define builder
(map search-path-specification->sexp
search-paths))
#:inputs #$(input-tuples->gexp inputs)))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name builder
- #:system system
- #:guile-for-build guile)))
+ (mbegin %store-monad
+ (return builder)))
(define elm-build-system
(build-system
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 16/43] build-system: emacs: Redefine emacs-build.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-16-ngraves@ngraves.fr
* guix/build-system/emacs.scm
(emacs-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: I89cc8c1171eef7c5e02e35df5e1298ce3813c1b5
---
guix/build-system/emacs.scm | 10 +++-------
1 file changed, 3 insertions(+), 7 deletions(-)

Toggle diff (30 lines)
diff --git a/guix/build-system/emacs.scm b/guix/build-system/emacs.scm
index 61b9c171b44..607a1b84bcd 100644
--- a/guix/build-system/emacs.scm
+++ b/guix/build-system/emacs.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
;;; Copyright © 2020 Morgan Smith <Morgan.J.Smith@outlook.com>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -120,13 +121,8 @@ (define builder
search-paths))
#:inputs #$(input-tuples->gexp inputs)))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name builder
- #:system system
- #:allowed-references allowed-references
- #:disallowed-references disallowed-references
- #:guile-for-build guile)))
+ (mbegin %store-monad
+ (return builder)))
(define emacs-build-system
(build-system
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 17/43] build-system: font: Redefine font-build.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-17-ngraves@ngraves.fr
* guix/build-system/font.scm
(font-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: I2a4838fc616e4ef8819b292d6842961284288867
---
guix/build-system/font.scm | 10 +++-------
1 file changed, 3 insertions(+), 7 deletions(-)

Toggle diff (29 lines)
diff --git a/guix/build-system/font.scm b/guix/build-system/font.scm
index a4eeca00ca6..1cab4a4e9dd 100644
--- a/guix/build-system/font.scm
+++ b/guix/build-system/font.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017, 2022 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -108,13 +109,8 @@ (define builder
search-paths))
#:inputs %build-inputs)))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name builder
- #:system system
- #:target #f
- #:graft? #f
- #:guile-for-build guile)))
+ (mbegin %store-monad
+ (return builder)))
(define font-build-system
(build-system
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 18/43] build-system: glib-or-gtk: Redefine glib-or-gtk-build functions.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-18-ngraves@ngraves.fr
* guix/build-system/glib-or-gtk.scm
(glib-or-gtk-build): Monadic procedure returns a gexp instead of a derivation.
(glib-or-gtk-cross-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: I24f722e47f3ecce7132a7647b5689f6c10abbfd6
---
guix/build-system/glib-or-gtk.scm | 26 ++++++--------------------
1 file changed, 6 insertions(+), 20 deletions(-)

Toggle diff (60 lines)
diff --git a/guix/build-system/glib-or-gtk.scm b/guix/build-system/glib-or-gtk.scm
index c912adab4aa..1320bb5c052 100644
--- a/guix/build-system/glib-or-gtk.scm
+++ b/guix/build-system/glib-or-gtk.scm
@@ -3,6 +3,7 @@
;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
;;; Copyright © 2014 Federico Beffa <beffa@fbengineering.ch>
;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -149,7 +150,7 @@ (define* (glib-or-gtk-build name inputs
allowed-references
disallowed-references)
"Build SOURCE with INPUTS. See GNU-BUILD for more details."
- (define build
+ (define builder
(with-imported-modules imported-modules
#~(begin
(use-modules #$@(sexp->gexp modules))
@@ -181,16 +182,8 @@ (define build
#:strip-directories
#$strip-directories)))))
-
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name build
- #:system system
- #:target #f
- #:graft? #f
- #:allowed-references allowed-references
- #:disallowed-references disallowed-references
- #:guile-for-build guile)))
+ (mbegin %store-monad
+ (return builder)))
(define* (glib-or-gtk-cross-build name
#:key
@@ -275,15 +268,8 @@ (define %outputs
#:strip-directories
#$strip-directories))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name builder
- #:system system
- #:target target
- #:graft? #f
- #:allowed-references allowed-references
- #:disallowed-references disallowed-references
- #:guile-for-build guile)))
+ (mbegin %store-monad
+ (return builder)))
(define glib-or-gtk-build-system
(build-system
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 19/43] build-system: go: Redefine go-build and go-cross-build.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-19-ngraves@ngraves.fr
* guix/build-system/go.scm
(go-build): Monadic procedure returns a gexp instead of a derivation.
(go-cross-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: I5222463ee5c37f4cd987ac60b1cf2c46eeb79008
---
guix/build-system/go.scm | 21 ++++++---------------
1 file changed, 6 insertions(+), 15 deletions(-)

Toggle diff (55 lines)
diff --git a/guix/build-system/go.scm b/guix/build-system/go.scm
index 90e63640c1a..f76d969e331 100644
--- a/guix/build-system/go.scm
+++ b/guix/build-system/go.scm
@@ -8,6 +8,7 @@
;;; Copyright © 2024 Christina O'Donnell <cdo@mutix.org>
;;; Copyright © 2024 Troy Figiel <troy@troyfigiel.com>
;;; Copyright © 2024 Sharlatan Hellseher <sharlatanus@gmail.com>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -248,12 +249,8 @@ (define builder
#:allow-go-reference? #$allow-go-reference?
#:inputs #$(input-tuples->gexp inputs)))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name builder
- #:system system
- #:substitutable? substitutable?
- #:guile-for-build guile)))
+ (mbegin %store-monad
+ (return builder)))
(define* (go-cross-build name
#:key
@@ -295,7 +292,7 @@ (define %build-host-inputs
(define %build-target-inputs
(append #$(input-tuples->gexp host-inputs)
- #+(input-tuples->gexp target-inputs)))
+ #+(input-tuples->gexp target-inputs)))
(define %build-inputs
(append %build-host-inputs %build-target-inputs))
@@ -333,14 +330,8 @@ (define %outputs
#:allow-go-reference? #$allow-go-reference?
#:inputs %build-inputs))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name builder
- #:system system
- #:target target
- #:graft? #f
- #:substitutable? substitutable?
- #:guile-for-build guile)))
+ (mbegin %store-monad
+ (return builder)))
(define go-build-system
(build-system
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 20/43] build-system: guile: Redefine guile-build and guile-cross-build.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-20-ngraves@ngraves.fr
* guix/build-system/guile.scm
(guile-build): Monadic procedure returns a gexp instead of a derivation.
(guile-cross-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: I60f2d7707f064ef6a678e8e47e21309d0eb545ef
---
guix/build-system/guile.scm | 21 +++++----------------
1 file changed, 5 insertions(+), 16 deletions(-)

Toggle diff (47 lines)
diff --git a/guix/build-system/guile.scm b/guix/build-system/guile.scm
index 16e37eefd10..f196464feed 100644
--- a/guix/build-system/guile.scm
+++ b/guix/build-system/guile.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018-2019, 2021-2022 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -121,14 +122,8 @@ (define builder
#:search-paths '#$(map search-path-specification->sexp
search-paths)))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name builder
- #:system system
- #:target #f
- #:graft? #f
- #:substitutable? substitutable?
- #:guile-for-build guile)))
+ (mbegin %store-monad
+ (return builder)))
(define* (guile-cross-build name
#:key
@@ -190,14 +185,8 @@ (define %outputs
#:make-dynamic-linker-cache? #f ;cross-compiling
#:phases #$phases))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name builder
- #:system system
- #:target target
- #:graft? #f
- #:substitutable? substitutable?
- #:guile-for-build guile)))
+ (mbegin %store-monad
+ (return builder)))
(define guile-build-system
(build-system
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 21/43] build-system: haskell: Redefine haskell-build.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-21-ngraves@ngraves.fr
* guix/build-system/haskell.scm
(haskell-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: Iaa4e6af7a69a9bd2710572054b1f304a7701f113
---
guix/build-system/haskell.scm | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)

Toggle diff (28 lines)
diff --git a/guix/build-system/haskell.scm b/guix/build-system/haskell.scm
index b0019dd0144..f734584cf5b 100644
--- a/guix/build-system/haskell.scm
+++ b/guix/build-system/haskell.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2020 Simon Tournier <zimon.toutoune@gmail.com>
;;; Copyright © 2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -178,11 +179,8 @@ (define builder
search-paths))
#:inputs #$(input-tuples->gexp inputs))))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name builder
- #:system system
- #:guile-for-build guile)))
+ (mbegin %store-monad
+ (return builder)))
(define haskell-build-system
(build-system
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 22/43] build-system: julia: Redefine julia-build.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-22-ngraves@ngraves.fr
* guix/build-system/julia.scm
(julia-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: I34303f6cc1423e60f3aa8f66409ca0563e9876cb
---
guix/build-system/julia.scm | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)

Toggle diff (28 lines)
diff --git a/guix/build-system/julia.scm b/guix/build-system/julia.scm
index e0987496838..57c403f4d07 100644
--- a/guix/build-system/julia.scm
+++ b/guix/build-system/julia.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2021 Jean-Baptiste Volatier <jbv@pm.me>
;;; Copyright © 2021, 2022 Simon Tournier <zimon.toutoune@gmail.com>
;;; Copyright © 2022 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -111,11 +112,8 @@ (define builder
#:julia-package-uuid #$julia-package-uuid
#:julia-package-dependencies #$julia-package-dependencies))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name builder
- #:system system
- #:guile-for-build guile)))
+ (mbegin %store-monad
+ (return builder)))
(define julia-build-system
(build-system
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 23/43] build-system: linux-module: Redefine linux-module-build functions.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-23-ngraves@ngraves.fr
* guix/build-system/linux-module.scm
(linux-module-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: I289c0c77a219445ae0c21f1a9709a67063b38f55
---
guix/build-system/linux-module.scm | 17 +++++------------
1 file changed, 5 insertions(+), 12 deletions(-)

Toggle diff (44 lines)
diff --git a/guix/build-system/linux-module.scm b/guix/build-system/linux-module.scm
index d8ebef60d0c..a0d213abd58 100644
--- a/guix/build-system/linux-module.scm
+++ b/guix/build-system/linux-module.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2021 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2024 Zheng Junjie <873216071@qq.com>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -190,12 +191,8 @@ (define builder
#:parallel-build? #$parallel-build?
#:inputs #$(input-tuples->gexp inputs))))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name builder
- #:system system
- #:guile-for-build guile
- #:substitutable? substitutable?)))
+ (mbegin %store-monad
+ (return builder)))
(define* (linux-module-build-cross
name
@@ -250,12 +247,8 @@ (define %build-target-inputs
#:phases #$phases
#:tests? #$tests?))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name builder
- #:system system
- #:guile-for-build guile
- #:substitutable? substitutable?)))
+ (mbegin %store-monad
+ (return builder)))
(define linux-module-build-system
(build-system
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 24/43] build-system: maven: Redefine maven-build.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-24-ngraves@ngraves.fr
* guix/build-system/maven.scm
(maven-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: Ieb96bcdb1c654371279bd7295ea69e2dfad71175
---
guix/build-system/maven.scm | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)

Toggle diff (28 lines)
diff --git a/guix/build-system/maven.scm b/guix/build-system/maven.scm
index 03e4e96b892..270fceb350a 100644
--- a/guix/build-system/maven.scm
+++ b/guix/build-system/maven.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2021, 2022 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -185,11 +186,8 @@ (define builder
#:strip-flags #$strip-flags
#:strip-directories #$strip-directories))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name builder
- #:system system
- #:guile-for-build guile)))
+ (mbegin %store-monad
+ (return builder)))
(define maven-build-system
(build-system
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 25/43] build-system: meson: Redefine meson-build and meson-cross-build.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-25-ngraves@ngraves.fr
* guix/build-system/meson.scm
(meson-build): Monadic procedure returns a gexp instead of a derivation.
(meson-cross-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: Id801e757463080dbeedc05a43bd0b2ae23fae4c7
---
guix/build-system/meson.scm | 25 +++++--------------------
1 file changed, 5 insertions(+), 20 deletions(-)

Toggle diff (52 lines)
diff --git a/guix/build-system/meson.scm b/guix/build-system/meson.scm
index 612e148fb64..a8a9ece9ef9 100644
--- a/guix/build-system/meson.scm
+++ b/guix/build-system/meson.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2021-2022, 2024 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;; Copyright © 2022 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -254,16 +255,8 @@ (define build-phases
#:strip-directories #$strip-directories
#:elf-directories #$(sexp->gexp elf-directories))))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name builder
- #:system system
- #:target #f
- #:graft? #f
- #:substitutable? substitutable?
- #:allowed-references allowed-references
- #:disallowed-references disallowed-references
- #:guile-for-build guile)))
+ (mbegin %store-monad
+ (return builder)))
(define* (meson-cross-build name
#:key
@@ -370,16 +363,8 @@ (define build-phases
#:strip-directories #$strip-directories
#:elf-directories #$(sexp->gexp elf-directories)))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name builder
- #:system system
- #:target target
- #:graft? #f
- #:substitutable? substitutable?
- #:allowed-references allowed-references
- #:disallowed-references disallowed-references
- #:guile-for-build guile)))
+ (mbegin %store-monad
+ (return builder)))
(define meson-build-system
(build-system
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 26/43] build-system: minify: Redefine minify-build.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-26-ngraves@ngraves.fr
* guix/build-system/minify.scm
(minify-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: Ib009adcec6791d7145ce0d822745495dad9cf6e5
---
guix/build-system/minify.scm | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)

Toggle diff (28 lines)
diff --git a/guix/build-system/minify.scm b/guix/build-system/minify.scm
index 98c6e75980d..56590f6819d 100644
--- a/guix/build-system/minify.scm
+++ b/guix/build-system/minify.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017, 2018, 2023 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -97,11 +98,8 @@ (define builder
search-paths))
#:inputs #$(input-tuples->gexp inputs)))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name builder
- #:system system
- #:guile-for-build guile)))
+ (mbegin %store-monad
+ (return builder)))
(define minify-build-system
(build-system
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 27/43] build-system: mix: Redefine mix-build.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-27-ngraves@ngraves.fr
* guix/build-system/mix.scm
(mix-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: I8a31c048d1458ece0f906023763b4585502f7710
---
guix/build-system/mix.scm | 12 +++---------
1 file changed, 3 insertions(+), 9 deletions(-)

Toggle diff (31 lines)
diff --git a/guix/build-system/mix.scm b/guix/build-system/mix.scm
index 4a3ba9fb604..6de09f587fb 100644
--- a/guix/build-system/mix.scm
+++ b/guix/build-system/mix.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2023 Pierre-Henry Fröhring <contact@phfrohring.com>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -125,15 +126,8 @@ (define builder
#:inputs
%build-inputs)))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system
- #:graft? #f)))
- (gexp->derivation name
- builder
- #:system system
- #:graft? #f ;consistent with 'gnu-build'
- #:target #f
- #:guile-for-build guile)))
+ (mbegin %store-monad
+ (return builder)))
(define* (lower name
#:key
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 28/43] build-system: node: Redefine node-build.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-28-ngraves@ngraves.fr
* guix/build-system/node.scm
(node-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: I507547e474c379c0f66dde15abad73787953e5e6
---
guix/build-system/node.scm | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)

Toggle diff (28 lines)
diff --git a/guix/build-system/node.scm b/guix/build-system/node.scm
index cde0ccb60e5..995a46d3029 100644
--- a/guix/build-system/node.scm
+++ b/guix/build-system/node.scm
@@ -5,6 +5,7 @@
;;; Copyright © 2021 Pierre Langlois <pierre.langlois@gmx.com>
;;; Copyright © 2021 Philip McGrath <philip@philipmcgrath.com>
;;; Copyright © 2024 Daniel Khodabakhsh <d.khodabakhsh@gmail.com>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -120,11 +121,8 @@ (define builder
search-paths))
#:inputs #$(input-tuples->gexp inputs))))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name builder
- #:system system
- #:guile-for-build guile)))
+ (mbegin %store-monad
+ (return builder)))
(define node-build-system
(build-system
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 29/43] build-system: ocaml: Redefine ocaml-build.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-29-ngraves@ngraves.fr
* guix/build-system/ocaml.scm
(ocaml-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: Ib525ddc1df03b33b95a433dd2add79405f611f94
---
guix/build-system/ocaml.scm | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)

Toggle diff (36 lines)
diff --git a/guix/build-system/ocaml.scm b/guix/build-system/ocaml.scm
index 2f2e6dd62e0..cd4c8770486 100644
--- a/guix/build-system/ocaml.scm
+++ b/guix/build-system/ocaml.scm
@@ -2,6 +2,7 @@
;;; Copyright © 2016, 2017, 2018 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
;;; Copyright © 2021-2022 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -19,6 +20,7 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix build-system ocaml)
#:use-module (guix store)
+ #:use-module (guix monads)
#:use-module (guix utils)
#:use-module (guix gexp)
#:use-module (guix search-paths)
@@ -305,11 +307,8 @@ (define builder
#:strip-flags #$strip-flags
#:strip-directories #$strip-directories))))
- (gexp->derivation name builder
- #:system system
- #:target #f
- #:graft? #f
- #:guile-for-build guile))
+ (mbegin %store-monad
+ (return builder)))
(define ocaml-build-system
(build-system
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 30/43] build-system: perl: Redefine perl-build and perl-cross-build.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-30-ngraves@ngraves.fr
* guix/build-system/perl.scm
(perl-build): Monadic procedure returns a gexp instead of a derivation.
(perl-cross-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: Id54ae050c2b64269ea42ec9f89d9c3a84ad4429a
---
guix/build-system/perl.scm | 22 ++++++----------------
1 file changed, 6 insertions(+), 16 deletions(-)

Toggle diff (56 lines)
diff --git a/guix/build-system/perl.scm b/guix/build-system/perl.scm
index 98d48fec7c0..3f088fa6bfa 100644
--- a/guix/build-system/perl.scm
+++ b/guix/build-system/perl.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015, 2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2022 Maxime Devos <maximedevos@telenet.be>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -120,7 +121,7 @@ (define* (perl-build name inputs
(guix build utils))))
"Build SOURCE using PERL, and with INPUTS. This assumes that SOURCE
provides a `Makefile.PL' file as its build system."
- (define build
+ (define builder
(with-imported-modules imported-modules
#~(begin
(use-modules #$@(sexp->gexp modules))
@@ -146,14 +147,8 @@ (define build
#:parallel-tests? #$parallel-tests?
#:outputs %outputs
#:inputs %build-inputs)))))
-
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name build
- #:system system
- #:target #f
- #:graft? #f
- #:guile-for-build guile)))
+ (mbegin %store-monad
+ (return builder)))
(define* (perl-cross-build name #:key
source
@@ -211,13 +206,8 @@ (define builder
#:outputs #$(outputs->gexp outputs)
#:inputs #$inputs
#:native-inputs #+(input-tuples->gexp build-inputs)))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name builder
- #:system system
- #:target target
- #:graft? #false
- #:guile-for-build guile)))
+ (mbegin %store-monad
+ (return builder)))
(define perl-build-system
(build-system
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 31/43] build-system: pyproject: Redefine pyproject-build.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-31-ngraves@ngraves.fr
* guix/build-system/pyproject.scm
(pyproject-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: Ia26001291b472c69c65647d8bddd1199f0ddc483
---
guix/build-system/pyproject.scm | 15 ++++-----------
1 file changed, 4 insertions(+), 11 deletions(-)

Toggle diff (42 lines)
diff --git a/guix/build-system/pyproject.scm b/guix/build-system/pyproject.scm
index 4ad4dc79a1e..b39f27a2f0a 100644
--- a/guix/build-system/pyproject.scm
+++ b/guix/build-system/pyproject.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2021 Lars-Dominik Braun <lars@6xq.net>
;;; Copyright © 2022 Marius Bakke <marius@gnu.org>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -113,7 +114,7 @@ (define* (pyproject-build name inputs
allowed-references
disallowed-references)
"Build SOURCE using PYTHON, and with INPUTS."
- (define build
+ (define builder
(with-imported-modules imported-modules
#~(begin
(use-modules #$@(sexp->gexp modules))
@@ -138,16 +139,8 @@ (define build
search-paths))
#:inputs %build-inputs)))))
-
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name build
- #:system system
- #:graft? #f ;consistent with 'gnu-build'
- #:target #f
- #:guile-for-build guile
- #:allowed-references allowed-references
- #:disallowed-references disallowed-references)))
+ (mbegin %store-monad
+ (return builder)))
(define pyproject-build-system
(build-system
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 32/43] build-system: python: Redefine python-build.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-32-ngraves@ngraves.fr
* guix/build-system/python.scm
(python-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: I1d270fa64192394072279f73ae0d77877d41f01c
---
guix/build-system/python.scm | 15 +++++----------
1 file changed, 5 insertions(+), 10 deletions(-)

Toggle diff (42 lines)
diff --git a/guix/build-system/python.scm b/guix/build-system/python.scm
index a51c033d01e..3c37ca11f12 100644
--- a/guix/build-system/python.scm
+++ b/guix/build-system/python.scm
@@ -3,6 +3,7 @@
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2021 Lars-Dominik Braun <lars@6xq.net>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -184,7 +185,7 @@ (define* (python-build name inputs
disallowed-references)
"Build SOURCE using PYTHON, and with INPUTS. This assumes that SOURCE
provides a 'setup.py' file as its build system."
- (define build
+ (define builder
(with-imported-modules imported-modules
#~(begin
(use-modules #$@(sexp->gexp modules))
@@ -206,15 +207,9 @@ (define build
search-paths))
#:inputs %build-inputs)))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name build
- #:system system
- #:graft? #f ;consistent with 'gnu-build'
- #:target #f
- #:guile-for-build guile
- #:allowed-references allowed-references
- #:disallowed-references disallowed-references)))
+
+ (mbegin %store-monad
+ (return builder)))
(define python-build-system
(build-system
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 33/43] build-system: qt: Redefine qt-build and qt-cross-build.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-33-ngraves@ngraves.fr
* guix/build-system/qt.scm
(qt-build): Monadic procedure returns a gexp instead of a derivation.
(qt-cross-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: I194a9d1a7c7600af2e991e1efad627a9ced235d1
---
guix/build-system/qt.scm | 21 +++++----------------
1 file changed, 5 insertions(+), 16 deletions(-)

Toggle diff (48 lines)
diff --git a/guix/build-system/qt.scm b/guix/build-system/qt.scm
index 84e008bfe79..09ddc1db3b8 100644
--- a/guix/build-system/qt.scm
+++ b/guix/build-system/qt.scm
@@ -6,6 +6,7 @@
;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -180,14 +181,8 @@ (define builder
#:strip-flags #$strip-flags
#:strip-directories #$strip-directories))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name builder
- #:graft? #f ;consistent with 'gnu-build'
- #:system system
- #:guile-for-build guile
- #:allowed-references allowed-references
- #:disallowed-references disallowed-references)))
+ (mbegin %store-monad
+ (return builder)))
;;;
@@ -277,14 +272,8 @@ (define %outputs
#:strip-flags #$strip-flags
#:strip-directories #$strip-directories))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name builder
- #:graft? #f ;consistent with 'gnu-build'
- #:system system
- #:guile-for-build guile
- #:allowed-references allowed-references
- #:disallowed-references disallowed-references)))
+ (mbegin %store-monad
+ (return builder)))
(define qt-build-system
(build-system
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 34/43] build-system: r: Redefine r-build.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-34-ngraves@ngraves.fr
* guix/build-system/r.scm
(r-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: I8f5a76eac6b65beba95852b7bf1645cd8a7b255a
---
guix/build-system/r.scm | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)

Toggle diff (29 lines)
diff --git a/guix/build-system/r.scm b/guix/build-system/r.scm
index 4b4b3bf0c9a..9077080deec 100644
--- a/guix/build-system/r.scm
+++ b/guix/build-system/r.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015-2024 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -137,12 +138,8 @@ (define builder
search-paths))
#:inputs #$(input-tuples->gexp inputs)))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name builder
- #:system system
- #:guile-for-build guile
- #:substitutable? substitutable?)))
+ (mbegin %store-monad
+ (return builder)))
(define r-build-system
(build-system
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 35/43] build-system: rakudo: Redefine rakudo-build.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-35-ngraves@ngraves.fr
* guix/build-system/rakudo.scm
(rakudo-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: I5f484023b8eb9806ed366e5fc596b844a61f524e
---
guix/build-system/rakudo.scm | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)

Toggle diff (28 lines)
diff --git a/guix/build-system/rakudo.scm b/guix/build-system/rakudo.scm
index ee13c507913..6d4e9b9f6ee 100644
--- a/guix/build-system/rakudo.scm
+++ b/guix/build-system/rakudo.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -127,11 +128,8 @@ (define builder
#:outputs #$(outputs->gexp outputs)
#:inputs #$(input-tuples->gexp inputs)))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name builder
- #:system system
- #:guile-for-build guile)))
+ (mbegin %store-monad
+ (return builder)))
(define rakudo-build-system
(build-system
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 37/43] build-system: renpy: Redefine renpy-build.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-37-ngraves@ngraves.fr
* guix/build-system/renpy.scm
(renpy-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: I20bf5af43fc9fc41fb2f36637e67d35136bf1606
---
guix/build-system/renpy.scm | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)

Toggle diff (28 lines)
diff --git a/guix/build-system/renpy.scm b/guix/build-system/renpy.scm
index 015dd7c2104..f364da12084 100644
--- a/guix/build-system/renpy.scm
+++ b/guix/build-system/renpy.scm
@@ -2,6 +2,7 @@
;;; Copyright © 2021 Leo Prikler <leo.prikler@student.tugraz.at>
;;; Copyright © 2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2021 Liliana Marie Prikler <liliana.prikler@gmail.com>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -104,11 +105,8 @@ (define builder
search-paths))
#:inputs #$(input-tuples->gexp inputs)))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name builder
- #:system system
- #:guile-for-build guile)))
+ (mbegin %store-monad
+ (return builder)))
(define renpy-build-system
(build-system
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 38/43] build-system: ruby: Redefine ruby-build.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-38-ngraves@ngraves.fr
* guix/build-system/ruby.scm
(ruby-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: I8de0e2b382271e9ea09d2be9b6169ccfc792230b
---
guix/build-system/ruby.scm | 11 +++--------
1 file changed, 3 insertions(+), 8 deletions(-)

Toggle diff (31 lines)
diff --git a/guix/build-system/ruby.scm b/guix/build-system/ruby.scm
index f258ade6e75..e1c0ecef4fa 100644
--- a/guix/build-system/ruby.scm
+++ b/guix/build-system/ruby.scm
@@ -88,7 +88,7 @@ (define* (ruby-build name inputs
(modules '((guix build ruby-build-system)
(guix build utils))))
"Build SOURCE using RUBY and INPUTS."
- (define build
+ (define builder
(with-imported-modules imported-modules
#~(begin
(use-modules #$@(sexp->gexp modules))
@@ -109,13 +109,8 @@ (define build
search-paths))
#:inputs %build-inputs)))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name build
- #:system system
- #:target #f
- #:graft? #f
- #:guile-for-build guile)))
+ (mbegin %store-monad
+ (return builder)))
(define ruby-build-system
(build-system
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 36/43] build-system: rebar: Redefine rebar-build.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-36-ngraves@ngraves.fr
* guix/build-system/rebar.scm
(rebar-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: I7d4a29cfc1bedaa762e25deed41cc0eb802abb9f
---
guix/build-system/rebar.scm | 12 +++---------
1 file changed, 3 insertions(+), 9 deletions(-)

Toggle diff (32 lines)
diff --git a/guix/build-system/rebar.scm b/guix/build-system/rebar.scm
index 7c7cc5870f8..4766eda9de4 100644
--- a/guix/build-system/rebar.scm
+++ b/guix/build-system/rebar.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2020 Hartmut Goebel <h.goebel@crazy-compilers.com>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -139,15 +140,8 @@ (define builder
search-paths))
#:inputs %build-inputs)))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- ;; Note: Always pass #:graft? #f. Without it, ALLOWED-REFERENCES &
- ;; co. would be interpreted as referring to grafted packages.
- (gexp->derivation name builder
- #:system system
- #:target #f
- #:graft? #f
- #:guile-for-build guile)))
+ (mbegin %store-monad
+ (return builder)))
(define rebar-build-system
(build-system
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 39/43] build-system: scons: Redefine scons-build.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-39-ngraves@ngraves.fr
* guix/build-system/scons.scm
(scons-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: Ic8c99d06ac53b2ba80a02a191d18de92e9c74e6b
---
guix/build-system/scons.scm | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)

Toggle diff (36 lines)
diff --git a/guix/build-system/scons.scm b/guix/build-system/scons.scm
index e76c419b1e4..1b0dde0f489 100644
--- a/guix/build-system/scons.scm
+++ b/guix/build-system/scons.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -18,6 +19,7 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix build-system scons)
+ #:use-module (guix store)
#:use-module (guix utils)
#:use-module (guix packages)
#:use-module (guix monads)
@@ -117,11 +119,8 @@ (define builder
(map search-path-specification->sexp
search-paths)))))))
- (gexp->derivation name builder
- #:system system
- #:target #f
- #:graft? #f
- #:guile-for-build guile))
+ (mbegin %store-monad
+ (return builder)))
(define scons-build-system
(build-system
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 40/43] build-system: texlive: Redefine texlive-build.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-40-ngraves@ngraves.fr
* guix/build-system/texlive.scm
(texlive-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: I00cc4e5647eec7e5cd7103ccd9ca0beb21361b3a
---
guix/build-system/texlive.scm | 11 +++--------
1 file changed, 3 insertions(+), 8 deletions(-)

Toggle diff (31 lines)
diff --git a/guix/build-system/texlive.scm b/guix/build-system/texlive.scm
index 35587b50fc0..b5b687e4e46 100644
--- a/guix/build-system/texlive.scm
+++ b/guix/build-system/texlive.scm
@@ -2,6 +2,7 @@
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2021-2022 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2021 Thiago Jung Bauermann <bauermann@kolabnow.com>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -151,14 +152,8 @@ (define builder
(map search-path-specification->sexp
search-paths)))))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name builder
- #:system system
- #:target #f
- #:graft? #f
- #:substitutable? substitutable?
- #:guile-for-build guile)))
+ (mbegin %store-monad
+ (return builder)))
(define texlive-build-system
(build-system
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 41/43] build-system: tree-sitter: Redefine tree-sitter-build functions.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-41-ngraves@ngraves.fr
* guix/build-system/tree-sitter.scm
(tree-sitter-build): Monadic procedure returns a gexp instead of a derivation.
(tree-sitter-cross-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: I761d0663a511deefd0626ad427be22df09b72894
---
guix/build-system/tree-sitter.scm | 16 +++++-----------
1 file changed, 5 insertions(+), 11 deletions(-)

Toggle diff (42 lines)
diff --git a/guix/build-system/tree-sitter.scm b/guix/build-system/tree-sitter.scm
index 90d9704cb84..ce165788ec6 100644
--- a/guix/build-system/tree-sitter.scm
+++ b/guix/build-system/tree-sitter.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2022 Pierre Langlois <pierre.langlois@gmx.com>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -127,11 +128,8 @@ (define builder
search-paths))
#:inputs #$(input-tuples->gexp inputs))))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name builder
- #:system system
- #:guile-for-build guile)))
+ (mbegin %store-monad
+ (return builder)))
(define* (tree-sitter-cross-build name
#:key
@@ -189,12 +187,8 @@ (define %build-inputs
search-path-specification->sexp
native-search-paths)))))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name builder
- #:system system
- #:target target
- #:guile-for-build guile)))
+ (mbegin %store-monad
+ (return builder)))
(define tree-sitter-build-system
(build-system
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 42/43] build-system: vim: Redefine vim-build.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-42-ngraves@ngraves.fr
* guix/build-system/vim.scm
(vim-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: Iedbb15faac445f169cffa16397b357bc4f15c0f6
---
guix/build-system/vim.scm | 15 ++++-----------
1 file changed, 4 insertions(+), 11 deletions(-)

Toggle diff (42 lines)
diff --git a/guix/build-system/vim.scm b/guix/build-system/vim.scm
index dddf7ea14b2..22c38aefcab 100644
--- a/guix/build-system/vim.scm
+++ b/guix/build-system/vim.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2022 Jonathan Scoresby <me@jonscoresby.com>
;;; Copyright © 2023 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -120,7 +121,7 @@ (define* (vim-build name inputs
(modules '((guix build vim-build-system)
(guix build utils))))
- (define build
+ (define builder
(with-imported-modules imported-modules
#~(begin
(use-modules #$@modules)
@@ -151,16 +152,8 @@ (define build
#:strip-flags #$strip-flags
#:strip-directories #$strip-directories)))))
- (mlet %store-monad
- ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name
- build
- #:system system
- #:target #f
- #:graft? #f
- #:substitutable? substitutable?
- #:guile-for-build guile)))
+ (mbegin %store-monad
+ (return builder)))
(define vim-build-system
(build-system (name 'vim)
--
2.50.1
N
N
Nicolas Graves wrote on 12 Aug 02:04 -0700
[PATCH 43/43] build-system: zig: Redefine zig-build.
(address . 79224@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250812090457.19016-43-ngraves@ngraves.fr
* guix/build-system/zig.scm
(zig-build): Monadic procedure returns a gexp instead of a derivation.

Change-Id: Ide64e7047d6e7127024471b311366f3cf8533e00
---
guix/build-system/zig.scm | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)

Toggle diff (27 lines)
diff --git a/guix/build-system/zig.scm b/guix/build-system/zig.scm
index 5d95e0bec49..d9190b9aa4e 100644
--- a/guix/build-system/zig.scm
+++ b/guix/build-system/zig.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2023 Ekaitz Zarraga <ekaitz@elenq.tech>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -93,11 +94,8 @@ (define builder
search-paths))
#:inputs #$(input-tuples->gexp inputs)))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
- (gexp->derivation name builder
- #:system system
- #:guile-for-build guile)))
+ (mbegin %store-monad
+ (return builder)))
(define* (zig-cross-build name
#:key
--
2.50.1
S
S
Simon Tournier wrote on 22 Aug 06:47 -0700
Re: [bug#79224] [PATCH 00/43] Extend bag-build to gexps.
(name . Nicolas Graves)(address . ngraves@ngraves.fr)
87plcnv56j.fsf@gmail.com
Hi Nicolas,

CC: core team

On Tue, 12 Aug 2025 at 10:55, Nicolas Graves via Guix-patches via <guix-patches@gnu.org> wrote:

Toggle quote (3 lines)
> I'm sending it there to hopefully get some guix-data-service info
> about this change.

Have you sent this on Codeberg too? Or only on guix-patches?

Toggle quote (45 lines)
> Nicolas Graves (43):
> guix: packages: Extend bag-build to support gexp.
> build-system: gnu: Redefine gnu-build and gnu-cross-build.
> build-system: agda: Redefine agda-build.
> build-system: android-ndk: Redefine gnu-build.
> build-system: ant: Redefine ant-build.
> build-system: asdf: Redefine asdf-build.
> build-system: cargo: Redefine cargo-build and cargo-cross-build.
> build-system: chicken: Redefine chicken-build.
> build-system: clojure: Redefine clojure-build.
> build-system: cmake: Redefine cmake-build and cmake-cross-build.
> build-system: composer: Redefine composer-build.
> build-system: copy: Redefine copy-build.
> build-system: dub: Redefine dub-build.
> build-system: dune: Redefine dune-build.
> build-system: elm: Redefine elm-build.
> build-system: emacs: Redefine emacs-build.
> build-system: font: Redefine font-build.
> build-system: glib-or-gtk: Redefine glib-or-gtk-build functions.
> build-system: go: Redefine go-build and go-cross-build.
> build-system: guile: Redefine guile-build and guile-cross-build.
> build-system: haskell: Redefine haskell-build.
> build-system: julia: Redefine julia-build.
> build-system: linux-module: Redefine linux-module-build functions.
> build-system: maven: Redefine maven-build.
> build-system: meson: Redefine meson-build and meson-cross-build.
> build-system: minify: Redefine minify-build.
> build-system: mix: Redefine mix-build.
> build-system: node: Redefine node-build.
> build-system: ocaml: Redefine ocaml-build.
> build-system: perl: Redefine perl-build and perl-cross-build.
> build-system: pyproject: Redefine pyproject-build.
> build-system: python: Redefine python-build.
> build-system: qt: Redefine qt-build and qt-cross-build.
> build-system: r: Redefine r-build.
> build-system: rakudo: Redefine rakudo-build.
> build-system: rebar: Redefine rebar-build.
> build-system: renpy: Redefine renpy-build.
> build-system: ruby: Redefine ruby-build.
> build-system: scons: Redefine scons-build.
> build-system: texlive: Redefine texlive-build.
> build-system: tree-sitter: Redefine tree-sitter-build functions.
> build-system: vim: Redefine vim-build.
> build-system: zig: Redefine zig-build.

What the core team think about this?

Cheers,
simon
N
N
Nicolas Graves wrote on 22 Aug 11:27 -0700
(name . Simon Tournier)(address . zimon.toutoune@gmail.com)
1686604202.23652567.1755887233851.JavaMail.zimbra@ngraves.fr
Toggle quote (2 lines)
> Have you sent this on Codeberg too? Or only on guix-patches?

Toggle quote (2 lines)
> What the core team think about this?

I didn't manage to raise enough interest from the core team to really look into it. I already presented the idea to Ludo at Guix Days ; Enge read and supported the idea more recently ; Andrew and Oleg have shown some interest, but I did not get a thorough review yet.

Nicolas
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send an email to 79224@patchwise.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 79224
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch