[PATCH 0/5] build-system improvements

  • Done
  • quality assurance status badge
Details
2 participants
  • Christopher Baines
  • Nicolas Graves
Owner
unassigned
Submitted by
Nicolas Graves
Severity
normal

Debbugs page

N
N
Nicolas Graves wrote on 24 Apr 15:42 -0700
[PATCH 0/5] build-system improvements
(address . guix-patches@gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250424224510.6178-1-ngraves@ngraves.fr
This is an excerpt of 68315's independent build-system improvements. It should not cause any rebuilds, it is for the most part convenience/readibility improvements.

Nicolas Graves (5):
build-system: gnu: Improve gnu-cross-build style.
build-system: glib-or-gtk: Improve glib-or-gtk-cross-build style.
build-system: waf: Improve waf-build style.
build-system: ruby: Improve ruby-cross-build style.
build-system: android-ndk: Improve style.

guix/build-system/android-ndk.scm | 14 ++++-
guix/build-system/glib-or-gtk.scm | 89 ++++++++++++++--------------
guix/build-system/gnu.scm | 96 ++++++++++++++++---------------
guix/build-system/ruby.scm | 37 ++++++------
guix/build-system/waf.scm | 32 ++++++-----
5 files changed, 141 insertions(+), 127 deletions(-)

--
2.49.0
N
N
Nicolas Graves wrote on 24 Apr 17:04 -0700
[PATCH 1/5] build-system: gnu: Improve gnu-cross-build style.
(address . 78050@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250425000456.14363-1-ngraves@ngraves.fr
* guix/build-system/gnu.scm
(gnu-cross-build): Use with-imported-modules around the
gnu-cross-build builder gexp.

Change-Id: I47246571b1d84a82a67a8c289fd5ad4b5a3b5aeb
---
guix/build-system/gnu.scm | 96 ++++++++++++++++++++-------------------
1 file changed, 49 insertions(+), 47 deletions(-)

Toggle diff (121 lines)
diff --git a/guix/build-system/gnu.scm b/guix/build-system/gnu.scm
index 3a314d34b72..a71162c3005 100644
--- a/guix/build-system/gnu.scm
+++ b/guix/build-system/gnu.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012-2024 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -520,59 +521,60 @@ (define* (gnu-cross-build name
cross-built inputs, and NATIVE-INPUTS are inputs that run on the build
platform."
(define builder
- #~(begin
- (use-modules #$@(sexp->gexp modules))
+ (with-imported-modules imported-modules
+ #~(begin
+ (use-modules #$@(sexp->gexp modules))
- (define %build-host-inputs
- #+(input-tuples->gexp build-inputs))
+ (define %build-host-inputs
+ #+(input-tuples->gexp build-inputs))
- (define %build-target-inputs
- (append #$(input-tuples->gexp host-inputs)
- #+(input-tuples->gexp target-inputs)))
+ (define %build-target-inputs
+ (append #$(input-tuples->gexp host-inputs)
+ #+(input-tuples->gexp target-inputs)))
- (define %build-inputs
- (append %build-host-inputs %build-target-inputs))
+ (define %build-inputs
+ (append %build-host-inputs %build-target-inputs))
- (define %outputs
- #$(outputs->gexp outputs))
+ (define %outputs
+ #$(outputs->gexp outputs))
- (gnu-build #:source #+source
- #:system #$system
- #:build #$build
- #:target #$target
- #:outputs %outputs
- #:inputs %build-target-inputs
- #:native-inputs %build-host-inputs
- #:search-paths '#$(sexp->gexp
- (map search-path-specification->sexp
- search-paths))
- #:native-search-paths '#$(sexp->gexp
- (map
- search-path-specification->sexp
- native-search-paths))
- #:phases #$(if (pair? phases)
- (sexp->gexp phases)
- phases)
- #:locale #$locale
- #:separate-from-pid1? #$separate-from-pid1?
- #:bootstrap-scripts #$bootstrap-scripts
- #:configure-flags #$configure-flags
- #:make-flags #$make-flags
- #:out-of-source? #$out-of-source?
- #:tests? #$tests?
- #:test-target #$test-target
- #:parallel-build? #$parallel-build?
- #:parallel-tests? #$parallel-tests?
- #:patch-shebangs? #$patch-shebangs?
- #:license-file-regexp #$license-file-regexp
- #:strip-binaries? #$strip-binaries?
- #:validate-runpath? #$validate-runpath?
- #:make-dynamic-linker-cache? #$make-dynamic-linker-cache?
- #:license-file-regexp #$license-file-regexp
- #:strip-flags #$strip-flags
- #:strip-directories #$strip-directories)))
+ (gnu-build #:source #+source
+ #:system #$system
+ #:build #$build
+ #:target #$target
+ #:outputs %outputs
+ #:inputs %build-target-inputs
+ #:native-inputs %build-host-inputs
+ #:search-paths '#$(sexp->gexp
+ (map search-path-specification->sexp
+ search-paths))
+ #:native-search-paths '#$(sexp->gexp
+ (map
+ search-path-specification->sexp
+ native-search-paths))
+ #:phases #$(if (pair? phases)
+ (sexp->gexp phases)
+ phases)
+ #:locale #$locale
+ #:separate-from-pid1? #$separate-from-pid1?
+ #:bootstrap-scripts #$bootstrap-scripts
+ #:configure-flags #$configure-flags
+ #:make-flags #$make-flags
+ #:out-of-source? #$out-of-source?
+ #:tests? #$tests?
+ #:test-target #$test-target
+ #:parallel-build? #$parallel-build?
+ #:parallel-tests? #$parallel-tests?
+ #:patch-shebangs? #$patch-shebangs?
+ #:license-file-regexp #$license-file-regexp
+ #:strip-binaries? #$strip-binaries?
+ #:validate-runpath? #$validate-runpath?
+ #:make-dynamic-linker-cache? #$make-dynamic-linker-cache?
+ #:license-file-regexp #$license-file-regexp
+ #:strip-flags #$strip-flags
+ #:strip-directories #$strip-directories))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
+ (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
system #:graft? #f)))
(gexp->derivation name builder
#:system system
--
2.49.0
N
N
Nicolas Graves wrote on 24 Apr 17:04 -0700
[PATCH 3/5] build-system: waf: Improve waf-build style.
(address . 78050@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250425000456.14363-3-ngraves@ngraves.fr
* guix/build-system/waf.scm
(waf-build): Use with-imported-modules around the waf-build builder gexp.

Change-Id: Id242046eb4bfef90dba60d7c3b1b68597ddf502e
---
guix/build-system/waf.scm | 32 +++++++++++++++++---------------
1 file changed, 17 insertions(+), 15 deletions(-)

Toggle diff (52 lines)
diff --git a/guix/build-system/waf.scm b/guix/build-system/waf.scm
index 5f246155141..4ca293ffd89 100644
--- a/guix/build-system/waf.scm
+++ b/guix/build-system/waf.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -86,22 +87,23 @@ (define* (waf-build name inputs
"Build SOURCE with INPUTS. This assumes that SOURCE provides a 'waf' file
as its build system."
(define build
- #~(begin
- (use-modules #$@(sexp->gexp modules))
+ (with-imported-modules imported-modules
+ #~(begin
+ (use-modules #$@(sexp->gexp modules))
- #$(with-build-variables inputs outputs
- #~(waf-build #:name #$name
- #:source #+source
- #:configure-flags #$configure-flags
- #:system #$system
- #:test-target #$test-target
- #:tests? #$tests?
- #:phases #$phases
- #:outputs %outputs
- #:search-paths '#$(sexp->gexp
- (map search-path-specification->sexp
- search-paths))
- #:inputs %build-inputs))))
+ #$(with-build-variables inputs outputs
+ #~(waf-build #:name #$name
+ #:source #+source
+ #:configure-flags #$configure-flags
+ #:system #$system
+ #:test-target #$test-target
+ #:tests? #$tests?
+ #:phases #$phases
+ #:outputs %outputs
+ #:search-paths '#$(sexp->gexp
+ (map search-path-specification->sexp
+ search-paths))
+ #:inputs %build-inputs)))))
(mlet %store-monad ((guile (package->derivation (or guile (default-guile))
system #:graft? #f)))
--
2.49.0
N
N
Nicolas Graves wrote on 24 Apr 17:04 -0700
[PATCH 2/5] build-system: glib-or-gtk: Improve glib-or-gtk-cross-build style.
(address . 78050@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250425000456.14363-2-ngraves@ngraves.fr
* guix/build-system/glib-or-gtk.scm
(glib-or-gtk-cross-build): Use with-imported-modules around the
glib-or-gtk-cross-build builder gexp.

Change-Id: I8eaa032ffc0a3f8dbf02c96a4ecee85475c32111
---
guix/build-system/glib-or-gtk.scm | 89 +++++++++++++++----------------
1 file changed, 44 insertions(+), 45 deletions(-)

Toggle diff (114 lines)
diff --git a/guix/build-system/glib-or-gtk.scm b/guix/build-system/glib-or-gtk.scm
index 6c69a950e81..c912adab4aa 100644
--- a/guix/build-system/glib-or-gtk.scm
+++ b/guix/build-system/glib-or-gtk.scm
@@ -225,55 +225,55 @@ (define* (glib-or-gtk-cross-build name
disallowed-references)
"Cross-build SOURCE with INPUTS. See GNU-BUILD for more details."
(define builder
- #~(begin
- (use-modules #$@(sexp->gexp modules))
+ (with-imported-modules imported-modules
+ #~(begin
+ (use-modules #$@(sexp->gexp modules))
- (define %build-host-inputs
- #+(input-tuples->gexp build-inputs))
+ (define %build-host-inputs
+ #+(input-tuples->gexp build-inputs))
- (define %build-target-inputs
- (append #$(input-tuples->gexp host-inputs)
- #+(input-tuples->gexp target-inputs)))
+ (define %build-target-inputs
+ (append #$(input-tuples->gexp host-inputs)
+ #+(input-tuples->gexp target-inputs)))
- (define %build-inputs
- (append %build-host-inputs %build-target-inputs))
+ (define %build-inputs
+ (append %build-host-inputs %build-target-inputs))
- (define %outputs
- #$(outputs->gexp outputs))
-
- (glib-or-gtk-build #:source #+source
- #:system #$system
- #:build #$build
- #:target #$target
- #:outputs %outputs
- #:inputs %build-target-inputs
- #:native-inputs %build-host-inputs
- #:search-paths '#$(sexp->gexp
- (map search-path-specification->sexp
- search-paths))
- #:native-search-paths '#$(sexp->gexp
- (map search-path-specification->sexp
- native-search-paths))
- #:phases #$(if (pair? phases)
- (sexp->gexp phases)
- phases)
- #:glib-or-gtk-wrap-excluded-outputs
- #$glib-or-gtk-wrap-excluded-outputs
- #:configure-flags #$configure-flags
- #:make-flags #$make-flags
- #:out-of-source? #$out-of-source?
- #:tests? #$tests?
- #:test-target #$test-target
- #:parallel-build? #$parallel-build?
- #:parallel-tests? #$parallel-tests?
- #:validate-runpath? #$validate-runpath?
- #:make-dynamic-linker-cache? #$make-dynamic-linker-cache?
- #:patch-shebangs? #$patch-shebangs?
- #:strip-binaries? #$strip-binaries?
- #:strip-flags #$strip-flags
- #:strip-directories
- #$strip-directories)))
+ (define %outputs
+ #$(outputs->gexp outputs))
+ (glib-or-gtk-build #:source #+source
+ #:system #$system
+ #:build #$build
+ #:target #$target
+ #:outputs %outputs
+ #:inputs %build-target-inputs
+ #:native-inputs %build-host-inputs
+ #:search-paths '#$(sexp->gexp
+ (map search-path-specification->sexp
+ search-paths))
+ #:native-search-paths '#$(sexp->gexp
+ (map search-path-specification->sexp
+ native-search-paths))
+ #:phases #$(if (pair? phases)
+ (sexp->gexp phases)
+ phases)
+ #:glib-or-gtk-wrap-excluded-outputs
+ #$glib-or-gtk-wrap-excluded-outputs
+ #:configure-flags #$configure-flags
+ #:make-flags #$make-flags
+ #:out-of-source? #$out-of-source?
+ #:tests? #$tests?
+ #:test-target #$test-target
+ #:parallel-build? #$parallel-build?
+ #:parallel-tests? #$parallel-tests?
+ #:validate-runpath? #$validate-runpath?
+ #:make-dynamic-linker-cache? #$make-dynamic-linker-cache?
+ #:patch-shebangs? #$patch-shebangs?
+ #:strip-binaries? #$strip-binaries?
+ #:strip-flags #$strip-flags
+ #:strip-directories
+ #$strip-directories))))
(mlet %store-monad ((guile (package->derivation (or guile (default-guile))
system #:graft? #f)))
@@ -281,7 +281,6 @@ (define %outputs
#:system system
#:target target
#:graft? #f
- #:modules imported-modules
#:allowed-references allowed-references
#:disallowed-references disallowed-references
#:guile-for-build guile)))
--
2.49.0
N
N
Nicolas Graves wrote on 24 Apr 17:04 -0700
[PATCH 4/5] build-system: ruby: Improve ruby-cross-build style.
(address . 78050@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250425000456.14363-4-ngraves@ngraves.fr
* guix/build-system/ruby.scm
(ruby-cross-build): Use with-imported-modules around the
ruby-cross-build builder gexp.

Change-Id: I1051124f034f2082ccef531e9bcf37913d5a9449
---
guix/build-system/ruby.scm | 37 +++++++++++++++++++------------------
1 file changed, 19 insertions(+), 18 deletions(-)

Toggle diff (65 lines)
diff --git a/guix/build-system/ruby.scm b/guix/build-system/ruby.scm
index 33aab5f7190..f258ade6e75 100644
--- a/guix/build-system/ruby.scm
+++ b/guix/build-system/ruby.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 David Thompson <davet@gnu.org>
;;; Copyright © 2014, 2015, 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -88,24 +89,25 @@ (define* (ruby-build name inputs
(guix build utils))))
"Build SOURCE using RUBY and INPUTS."
(define build
- #~(begin
- (use-modules #$@(sexp->gexp modules))
+ (with-imported-modules imported-modules
+ #~(begin
+ (use-modules #$@(sexp->gexp modules))
- #$(with-build-variables inputs outputs
- #~(ruby-build #:name #$name
- #:source #+source
- #:system #$system
- #:gem-flags #$gem-flags
- #:test-target #$test-target
- #:tests? #$tests?
- #:phases #$(if (pair? phases)
- (sexp->gexp phases)
- phases)
- #:outputs %outputs
- #:search-paths '#$(sexp->gexp
- (map search-path-specification->sexp
- search-paths))
- #:inputs %build-inputs))))
+ #$(with-build-variables inputs outputs
+ #~(ruby-build #:name #$name
+ #:source #+source
+ #:system #$system
+ #:gem-flags #$gem-flags
+ #:test-target #$test-target
+ #:tests? #$tests?
+ #:phases #$(if (pair? phases)
+ (sexp->gexp phases)
+ phases)
+ #:outputs %outputs
+ #:search-paths '#$(sexp->gexp
+ (map search-path-specification->sexp
+ search-paths))
+ #:inputs %build-inputs)))))
(mlet %store-monad ((guile (package->derivation (or guile (default-guile))
system #:graft? #f)))
@@ -113,7 +115,6 @@ (define build
#:system system
#:target #f
#:graft? #f
- #:modules imported-modules
#:guile-for-build guile)))
(define ruby-build-system
--
2.49.0
N
N
Nicolas Graves wrote on 24 Apr 17:04 -0700
[PATCH 5/5] build-system: android-ndk: Improve style.
(address . 78050@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250425000456.14363-5-ngraves@ngraves.fr
Like in other build-systems, make proper procedures to resolve the
build-system build-inputs bindings.

* guix/build-system/android-ndk.scm (default-android-build,
default-android-googletest): Add procedures.
(lower): Use them.
---
guix/build-system/android-ndk.scm | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)

Toggle diff (34 lines)
diff --git a/guix/build-system/android-ndk.scm b/guix/build-system/android-ndk.scm
index b8cd56b8719..565ec1d3632 100644
--- a/guix/build-system/android-ndk.scm
+++ b/guix/build-system/android-ndk.scm
@@ -33,6 +33,16 @@ (define %android-ndk-build-system-modules
`((guix build android-ndk-build-system)
,@%default-gnu-imported-modules))
+(define (default-android-build)
+ ;; Lazily resolve the binding to avoid a circular dependency.
+ (let ((android (resolve-interface '(gnu packages android))))
+ (module-ref android 'android-make-stub)))
+
+(define (default-android-googletest)
+ ;; Lazily resolve the binding to avoid a circular dependency.
+ (let ((android (resolve-interface '(gnu packages android))))
+ (module-ref android 'android-googletest)))
+
(define* (android-ndk-build name inputs
#:key
source
@@ -100,8 +110,8 @@ (define private-keywords
;; Keep the standard inputs of 'gnu-build-system'
,@(standard-packages)))
- (build-inputs `(("android-build" ,(module-ref (resolve-interface '(gnu packages android)) 'android-make-stub))
- ("android-googletest" ,(module-ref (resolve-interface '(gnu packages android)) 'android-googletest))
+ (build-inputs `(("android-build" ,(default-android-build))
+ ("android-googletest" ,(default-android-googletest))
,@native-inputs))
(outputs outputs)
(build android-ndk-build)
--
2.49.0
N
N
Nicolas Graves wrote on 25 Apr 02:26 -0700
[PATCH v2 1/5] build-system: gnu: Improve gnu-cross-build style.
(address . 78050@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250425092759.30369-2-ngraves@ngraves.fr
* guix/build-system/gnu.scm
(gnu-cross-build): Use with-imported-modules around the
gnu-cross-build builder gexp.

Change-Id: I47246571b1d84a82a67a8c289fd5ad4b5a3b5aeb
---
guix/build-system/gnu.scm | 97 ++++++++++++++++++++-------------------
1 file changed, 49 insertions(+), 48 deletions(-)

Toggle diff (127 lines)
diff --git a/guix/build-system/gnu.scm b/guix/build-system/gnu.scm
index 3a314d34b72..8f0883956e3 100644
--- a/guix/build-system/gnu.scm
+++ b/guix/build-system/gnu.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012-2024 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -520,65 +521,65 @@ (define* (gnu-cross-build name
cross-built inputs, and NATIVE-INPUTS are inputs that run on the build
platform."
(define builder
- #~(begin
- (use-modules #$@(sexp->gexp modules))
+ (with-imported-modules imported-modules
+ #~(begin
+ (use-modules #$@(sexp->gexp modules))
- (define %build-host-inputs
- #+(input-tuples->gexp build-inputs))
+ (define %build-host-inputs
+ #+(input-tuples->gexp build-inputs))
- (define %build-target-inputs
- (append #$(input-tuples->gexp host-inputs)
- #+(input-tuples->gexp target-inputs)))
+ (define %build-target-inputs
+ (append #$(input-tuples->gexp host-inputs)
+ #+(input-tuples->gexp target-inputs)))
- (define %build-inputs
- (append %build-host-inputs %build-target-inputs))
+ (define %build-inputs
+ (append %build-host-inputs %build-target-inputs))
- (define %outputs
- #$(outputs->gexp outputs))
+ (define %outputs
+ #$(outputs->gexp outputs))
- (gnu-build #:source #+source
- #:system #$system
- #:build #$build
- #:target #$target
- #:outputs %outputs
- #:inputs %build-target-inputs
- #:native-inputs %build-host-inputs
- #:search-paths '#$(sexp->gexp
- (map search-path-specification->sexp
- search-paths))
- #:native-search-paths '#$(sexp->gexp
- (map
- search-path-specification->sexp
- native-search-paths))
- #:phases #$(if (pair? phases)
- (sexp->gexp phases)
- phases)
- #:locale #$locale
- #:separate-from-pid1? #$separate-from-pid1?
- #:bootstrap-scripts #$bootstrap-scripts
- #:configure-flags #$configure-flags
- #:make-flags #$make-flags
- #:out-of-source? #$out-of-source?
- #:tests? #$tests?
- #:test-target #$test-target
- #:parallel-build? #$parallel-build?
- #:parallel-tests? #$parallel-tests?
- #:patch-shebangs? #$patch-shebangs?
- #:license-file-regexp #$license-file-regexp
- #:strip-binaries? #$strip-binaries?
- #:validate-runpath? #$validate-runpath?
- #:make-dynamic-linker-cache? #$make-dynamic-linker-cache?
- #:license-file-regexp #$license-file-regexp
- #:strip-flags #$strip-flags
- #:strip-directories #$strip-directories)))
+ (gnu-build #:source #+source
+ #:system #$system
+ #:build #$build
+ #:target #$target
+ #:outputs %outputs
+ #:inputs %build-target-inputs
+ #:native-inputs %build-host-inputs
+ #:search-paths '#$(sexp->gexp
+ (map search-path-specification->sexp
+ search-paths))
+ #:native-search-paths '#$(sexp->gexp
+ (map
+ search-path-specification->sexp
+ native-search-paths))
+ #:phases #$(if (pair? phases)
+ (sexp->gexp phases)
+ phases)
+ #:locale #$locale
+ #:separate-from-pid1? #$separate-from-pid1?
+ #:bootstrap-scripts #$bootstrap-scripts
+ #:configure-flags #$configure-flags
+ #:make-flags #$make-flags
+ #:out-of-source? #$out-of-source?
+ #:tests? #$tests?
+ #:test-target #$test-target
+ #:parallel-build? #$parallel-build?
+ #:parallel-tests? #$parallel-tests?
+ #:patch-shebangs? #$patch-shebangs?
+ #:license-file-regexp #$license-file-regexp
+ #:strip-binaries? #$strip-binaries?
+ #:validate-runpath? #$validate-runpath?
+ #:make-dynamic-linker-cache? #$make-dynamic-linker-cache?
+ #:license-file-regexp #$license-file-regexp
+ #:strip-flags #$strip-flags
+ #:strip-directories #$strip-directories))))
- (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
+ (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
system #:graft? #f)))
(gexp->derivation name builder
#:system system
#:target target
#:graft? #f
- #:modules imported-modules
#:substitutable? substitutable?
#:allowed-references allowed-references
#:disallowed-references disallowed-references
--
2.49.0
N
N
Nicolas Graves wrote on 25 Apr 02:26 -0700
[PATCH v2 0/5] build-system improvements
(address . 78050@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250425092759.30369-1-ngraves@ngraves.fr
Looks like I did forget a #:modules imported-modules line removal on
the first patch, submitting again. QA looks like it indeed didn't
cause any rebuilds, which is a good sign ;)

Nicolas Graves (5):
build-system: gnu: Improve gnu-cross-build style.
build-system: glib-or-gtk: Improve glib-or-gtk-cross-build style.
build-system: waf: Improve waf-build style.
build-system: ruby: Improve ruby-cross-build style.
build-system: android-ndk: Improve style.

guix/build-system/android-ndk.scm | 14 ++++-
guix/build-system/glib-or-gtk.scm | 89 ++++++++++++++--------------
guix/build-system/gnu.scm | 97 ++++++++++++++++---------------
guix/build-system/ruby.scm | 37 ++++++------
guix/build-system/waf.scm | 32 +++++-----
5 files changed, 141 insertions(+), 128 deletions(-)

--
2.49.0
N
N
Nicolas Graves wrote on 25 Apr 02:26 -0700
[PATCH v2 2/5] build-system: glib-or-gtk: Improve glib-or-gtk-cross-build style.
(address . 78050@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250425092759.30369-3-ngraves@ngraves.fr
* guix/build-system/glib-or-gtk.scm
(glib-or-gtk-cross-build): Use with-imported-modules around the
glib-or-gtk-cross-build builder gexp.

Change-Id: I8eaa032ffc0a3f8dbf02c96a4ecee85475c32111
---
guix/build-system/glib-or-gtk.scm | 89 +++++++++++++++----------------
1 file changed, 44 insertions(+), 45 deletions(-)

Toggle diff (114 lines)
diff --git a/guix/build-system/glib-or-gtk.scm b/guix/build-system/glib-or-gtk.scm
index 6c69a950e81..c912adab4aa 100644
--- a/guix/build-system/glib-or-gtk.scm
+++ b/guix/build-system/glib-or-gtk.scm
@@ -225,55 +225,55 @@ (define* (glib-or-gtk-cross-build name
disallowed-references)
"Cross-build SOURCE with INPUTS. See GNU-BUILD for more details."
(define builder
- #~(begin
- (use-modules #$@(sexp->gexp modules))
+ (with-imported-modules imported-modules
+ #~(begin
+ (use-modules #$@(sexp->gexp modules))
- (define %build-host-inputs
- #+(input-tuples->gexp build-inputs))
+ (define %build-host-inputs
+ #+(input-tuples->gexp build-inputs))
- (define %build-target-inputs
- (append #$(input-tuples->gexp host-inputs)
- #+(input-tuples->gexp target-inputs)))
+ (define %build-target-inputs
+ (append #$(input-tuples->gexp host-inputs)
+ #+(input-tuples->gexp target-inputs)))
- (define %build-inputs
- (append %build-host-inputs %build-target-inputs))
+ (define %build-inputs
+ (append %build-host-inputs %build-target-inputs))
- (define %outputs
- #$(outputs->gexp outputs))
-
- (glib-or-gtk-build #:source #+source
- #:system #$system
- #:build #$build
- #:target #$target
- #:outputs %outputs
- #:inputs %build-target-inputs
- #:native-inputs %build-host-inputs
- #:search-paths '#$(sexp->gexp
- (map search-path-specification->sexp
- search-paths))
- #:native-search-paths '#$(sexp->gexp
- (map search-path-specification->sexp
- native-search-paths))
- #:phases #$(if (pair? phases)
- (sexp->gexp phases)
- phases)
- #:glib-or-gtk-wrap-excluded-outputs
- #$glib-or-gtk-wrap-excluded-outputs
- #:configure-flags #$configure-flags
- #:make-flags #$make-flags
- #:out-of-source? #$out-of-source?
- #:tests? #$tests?
- #:test-target #$test-target
- #:parallel-build? #$parallel-build?
- #:parallel-tests? #$parallel-tests?
- #:validate-runpath? #$validate-runpath?
- #:make-dynamic-linker-cache? #$make-dynamic-linker-cache?
- #:patch-shebangs? #$patch-shebangs?
- #:strip-binaries? #$strip-binaries?
- #:strip-flags #$strip-flags
- #:strip-directories
- #$strip-directories)))
+ (define %outputs
+ #$(outputs->gexp outputs))
+ (glib-or-gtk-build #:source #+source
+ #:system #$system
+ #:build #$build
+ #:target #$target
+ #:outputs %outputs
+ #:inputs %build-target-inputs
+ #:native-inputs %build-host-inputs
+ #:search-paths '#$(sexp->gexp
+ (map search-path-specification->sexp
+ search-paths))
+ #:native-search-paths '#$(sexp->gexp
+ (map search-path-specification->sexp
+ native-search-paths))
+ #:phases #$(if (pair? phases)
+ (sexp->gexp phases)
+ phases)
+ #:glib-or-gtk-wrap-excluded-outputs
+ #$glib-or-gtk-wrap-excluded-outputs
+ #:configure-flags #$configure-flags
+ #:make-flags #$make-flags
+ #:out-of-source? #$out-of-source?
+ #:tests? #$tests?
+ #:test-target #$test-target
+ #:parallel-build? #$parallel-build?
+ #:parallel-tests? #$parallel-tests?
+ #:validate-runpath? #$validate-runpath?
+ #:make-dynamic-linker-cache? #$make-dynamic-linker-cache?
+ #:patch-shebangs? #$patch-shebangs?
+ #:strip-binaries? #$strip-binaries?
+ #:strip-flags #$strip-flags
+ #:strip-directories
+ #$strip-directories))))
(mlet %store-monad ((guile (package->derivation (or guile (default-guile))
system #:graft? #f)))
@@ -281,7 +281,6 @@ (define %outputs
#:system system
#:target target
#:graft? #f
- #:modules imported-modules
#:allowed-references allowed-references
#:disallowed-references disallowed-references
#:guile-for-build guile)))
--
2.49.0
N
N
Nicolas Graves wrote on 25 Apr 02:26 -0700
[PATCH v2 3/5] build-system: waf: Improve waf-build style.
(address . 78050@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250425092759.30369-4-ngraves@ngraves.fr
* guix/build-system/waf.scm
(waf-build): Use with-imported-modules around the waf-build builder gexp.

Change-Id: Id242046eb4bfef90dba60d7c3b1b68597ddf502e
---
guix/build-system/waf.scm | 32 +++++++++++++++++---------------
1 file changed, 17 insertions(+), 15 deletions(-)

Toggle diff (52 lines)
diff --git a/guix/build-system/waf.scm b/guix/build-system/waf.scm
index 5f246155141..4ca293ffd89 100644
--- a/guix/build-system/waf.scm
+++ b/guix/build-system/waf.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -86,22 +87,23 @@ (define* (waf-build name inputs
"Build SOURCE with INPUTS. This assumes that SOURCE provides a 'waf' file
as its build system."
(define build
- #~(begin
- (use-modules #$@(sexp->gexp modules))
+ (with-imported-modules imported-modules
+ #~(begin
+ (use-modules #$@(sexp->gexp modules))
- #$(with-build-variables inputs outputs
- #~(waf-build #:name #$name
- #:source #+source
- #:configure-flags #$configure-flags
- #:system #$system
- #:test-target #$test-target
- #:tests? #$tests?
- #:phases #$phases
- #:outputs %outputs
- #:search-paths '#$(sexp->gexp
- (map search-path-specification->sexp
- search-paths))
- #:inputs %build-inputs))))
+ #$(with-build-variables inputs outputs
+ #~(waf-build #:name #$name
+ #:source #+source
+ #:configure-flags #$configure-flags
+ #:system #$system
+ #:test-target #$test-target
+ #:tests? #$tests?
+ #:phases #$phases
+ #:outputs %outputs
+ #:search-paths '#$(sexp->gexp
+ (map search-path-specification->sexp
+ search-paths))
+ #:inputs %build-inputs)))))
(mlet %store-monad ((guile (package->derivation (or guile (default-guile))
system #:graft? #f)))
--
2.49.0
N
N
Nicolas Graves wrote on 25 Apr 02:26 -0700
[PATCH v2 4/5] build-system: ruby: Improve ruby-cross-build style.
(address . 78050@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250425092759.30369-5-ngraves@ngraves.fr
* guix/build-system/ruby.scm
(ruby-cross-build): Use with-imported-modules around the
ruby-cross-build builder gexp.

Change-Id: I1051124f034f2082ccef531e9bcf37913d5a9449
---
guix/build-system/ruby.scm | 37 +++++++++++++++++++------------------
1 file changed, 19 insertions(+), 18 deletions(-)

Toggle diff (65 lines)
diff --git a/guix/build-system/ruby.scm b/guix/build-system/ruby.scm
index 33aab5f7190..f258ade6e75 100644
--- a/guix/build-system/ruby.scm
+++ b/guix/build-system/ruby.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 David Thompson <davet@gnu.org>
;;; Copyright © 2014, 2015, 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -88,24 +89,25 @@ (define* (ruby-build name inputs
(guix build utils))))
"Build SOURCE using RUBY and INPUTS."
(define build
- #~(begin
- (use-modules #$@(sexp->gexp modules))
+ (with-imported-modules imported-modules
+ #~(begin
+ (use-modules #$@(sexp->gexp modules))
- #$(with-build-variables inputs outputs
- #~(ruby-build #:name #$name
- #:source #+source
- #:system #$system
- #:gem-flags #$gem-flags
- #:test-target #$test-target
- #:tests? #$tests?
- #:phases #$(if (pair? phases)
- (sexp->gexp phases)
- phases)
- #:outputs %outputs
- #:search-paths '#$(sexp->gexp
- (map search-path-specification->sexp
- search-paths))
- #:inputs %build-inputs))))
+ #$(with-build-variables inputs outputs
+ #~(ruby-build #:name #$name
+ #:source #+source
+ #:system #$system
+ #:gem-flags #$gem-flags
+ #:test-target #$test-target
+ #:tests? #$tests?
+ #:phases #$(if (pair? phases)
+ (sexp->gexp phases)
+ phases)
+ #:outputs %outputs
+ #:search-paths '#$(sexp->gexp
+ (map search-path-specification->sexp
+ search-paths))
+ #:inputs %build-inputs)))))
(mlet %store-monad ((guile (package->derivation (or guile (default-guile))
system #:graft? #f)))
@@ -113,7 +115,6 @@ (define build
#:system system
#:target #f
#:graft? #f
- #:modules imported-modules
#:guile-for-build guile)))
(define ruby-build-system
--
2.49.0
N
N
Nicolas Graves wrote on 25 Apr 02:26 -0700
[PATCH v2 5/5] build-system: android-ndk: Improve style.
(address . 78050@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20250425092759.30369-6-ngraves@ngraves.fr
Like in other build-systems, make proper procedures to resolve the
build-system build-inputs bindings.

* guix/build-system/android-ndk.scm (default-android-build,
default-android-googletest): Add procedures.
(lower): Use them.
---
guix/build-system/android-ndk.scm | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)

Toggle diff (34 lines)
diff --git a/guix/build-system/android-ndk.scm b/guix/build-system/android-ndk.scm
index b8cd56b8719..565ec1d3632 100644
--- a/guix/build-system/android-ndk.scm
+++ b/guix/build-system/android-ndk.scm
@@ -33,6 +33,16 @@ (define %android-ndk-build-system-modules
`((guix build android-ndk-build-system)
,@%default-gnu-imported-modules))
+(define (default-android-build)
+ ;; Lazily resolve the binding to avoid a circular dependency.
+ (let ((android (resolve-interface '(gnu packages android))))
+ (module-ref android 'android-make-stub)))
+
+(define (default-android-googletest)
+ ;; Lazily resolve the binding to avoid a circular dependency.
+ (let ((android (resolve-interface '(gnu packages android))))
+ (module-ref android 'android-googletest)))
+
(define* (android-ndk-build name inputs
#:key
source
@@ -100,8 +110,8 @@ (define private-keywords
;; Keep the standard inputs of 'gnu-build-system'
,@(standard-packages)))
- (build-inputs `(("android-build" ,(module-ref (resolve-interface '(gnu packages android)) 'android-make-stub))
- ("android-googletest" ,(module-ref (resolve-interface '(gnu packages android)) 'android-googletest))
+ (build-inputs `(("android-build" ,(default-android-build))
+ ("android-googletest" ,(default-android-googletest))
,@native-inputs))
(outputs outputs)
(build android-ndk-build)
--
2.49.0
C
C
Christopher Baines wrote on 28 Apr 00:21 -0700
Re: [bug#78050] [PATCH v2 0/5] build-system improvements
(name . Nicolas Graves via Guix-patches via)(address . guix-patches@gnu.org)
87zfg0bvkq.fsf@cbaines.net
Nicolas Graves via Guix-patches via <guix-patches@gnu.org> writes:

Toggle quote (4 lines)
> Looks like I did forget a #:modules imported-modules line removal on
> the first patch, submitting again. QA looks like it indeed didn't
> cause any rebuilds, which is a good sign ;)

Indeed, I've gone ahead and pushed these to master as
ac026164be3a7d70307d56bac76225b2ed99c1ab.

Chris
-----BEGIN PGP SIGNATURE-----

iQKlBAEBCgCPFiEEPonu50WOcg2XVOCyXiijOwuE9XcFAmgPLGVfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDNF
ODlFRUU3NDU4RTcyMEQ5NzU0RTBCMjVFMjhBMzNCMEI4NEY1NzcRHG1haWxAY2Jh
aW5lcy5uZXQACgkQXiijOwuE9Xezag//TWSuP79wZGNMlpzuXyFLUNNOZc/y3RSH
yiArYXSOF6WRWDeb2YwD0fmxNraHQNNPX7w0/MV0tSNs1an41/DArb61or6y+Z1p
NQkRS/m9MixxR5pIy+kfgSrbiNJsLRwIaomWYsE8FlVlcLFrjxDnQrwE+gWS8eGG
npilQVknzhJVlSCGJdsu7X1GwFtZtD/Liv124PgC0Iy4VFFqUhXlfPhWRokCji3K
JzpGQGxiBrt0/ACSt6q4rVNYYydQ24Asg9jT1vVaOqWhEc767EBslwnOT5BIqmJI
GI12LB+gsSTcfM5EmfsYUfPNlBjKIfz86W9OytaMFQ3n96mSbIz7/6nsw69R+X3l
5EYtzPNMm+LjUV1mXmuzP+gLIFnVJcZY5wLodbloowKqz/aE0erYYtdomyZ1Or0u
xoVitfaHUH5I5rTuCIIXL94vF9V1kpfP2opPUVCvv4PuVA+adwVQ/osyq3cAJSCc
J9rFaEkFL6QrzX7J64/a5sdPK2PeXj/N4MBXTPmV7Y1BGBF4TdEdcpaefyripUQO
Ny83AOki5x0kj8GM/C5kNcPjKWUNBimuaKN0ekDqd4WrN+0fIxrqJfzObBSPRvEh
RnJtT10eOZ1adneS6XnbWVffCidO44XIbr/snzos5VW81Buv4S53KHG5KpQI1uYU
mUtPd2D5Cd0=
=XefA
-----END PGP SIGNATURE-----

?
Your comment

Commenting via the web interface is currently disabled.

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

To respond to this issue using the mumi CLI, first switch to it
mumi current 78050
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