attached is the reworked patch (only modules / no imported-modules addition, no standardization efforts, no default).
Do two with-imported-modules build-upon each other? If I wrap a gexp in with-imported-modules, do that act like if we had with-imported-modules with the union of modules?
>From 9895ecb13110bcfaec189d3e029566d060d69889 Mon Sep 17 00:00:00 2001 Message-ID: <9895ecb13110bcfaec189d3e029566d060d69889.1745622542.git.ngra...@ngraves.fr> From: Nicolas Graves <ngra...@ngraves.fr> Date: Tue, 18 Mar 2025 06:13:05 +0100 Subject: [PATCH] build-system: Add modules field. --- gnu/packages/bootstrap.scm | 3 ++- guix/build-system.scm | 11 +++++++---- guix/build-system/agda.scm | 6 +++--- guix/build-system/android-ndk.scm | 8 ++++---- guix/build-system/ant.scm | 10 +++++----- guix/build-system/asdf.scm | 13 +++++++------ guix/build-system/cargo.scm | 14 ++++++-------- guix/build-system/channel.scm | 1 + guix/build-system/chicken.scm | 10 +++++----- guix/build-system/clojure.scm | 6 +++--- guix/build-system/cmake.scm | 10 ++++------ guix/build-system/composer.scm | 8 ++++---- guix/build-system/copy.scm | 8 ++++---- guix/build-system/dub.scm | 8 ++++---- guix/build-system/dune.scm | 8 ++++---- guix/build-system/elm.scm | 6 +++--- guix/build-system/emacs.scm | 8 ++++---- guix/build-system/font.scm | 8 ++++---- guix/build-system/glib-or-gtk.scm | 7 +++---- guix/build-system/gnu.scm | 7 +++---- guix/build-system/go.scm | 13 +++++-------- guix/build-system/guile.scm | 10 ++++------ guix/build-system/haskell.scm | 8 ++++---- guix/build-system/julia.scm | 8 ++++---- guix/build-system/linux-module.scm | 14 ++++++-------- guix/build-system/maven.scm | 10 +++++----- guix/build-system/meson.scm | 10 ++++------ guix/build-system/minetest.scm | 1 + guix/build-system/minify.scm | 8 ++++---- guix/build-system/mix.scm | 8 ++++---- guix/build-system/mozilla.scm | 1 + guix/build-system/node.scm | 8 ++++---- guix/build-system/ocaml.scm | 8 ++++---- guix/build-system/perl.scm | 15 ++++++--------- guix/build-system/pyproject.scm | 6 +++--- guix/build-system/python.scm | 6 +++--- guix/build-system/qt.scm | 10 ++++------ guix/build-system/r.scm | 8 ++++---- guix/build-system/rakudo.scm | 8 ++++---- guix/build-system/rebar.scm | 8 ++++---- guix/build-system/renpy.scm | 8 ++++---- guix/build-system/ruby.scm | 8 ++++---- guix/build-system/scons.scm | 7 ++++--- guix/build-system/texlive.scm | 10 +++++----- guix/build-system/tree-sitter.scm | 15 ++++++--------- guix/build-system/trivial.scm | 5 +++-- guix/build-system/vim.scm | 8 ++++---- guix/build-system/waf.scm | 8 ++++---- guix/build-system/zig.scm | 14 ++++++-------- 49 files changed, 198 insertions(+), 213 deletions(-) diff --git a/gnu/packages/bootstrap.scm b/gnu/packages/bootstrap.scm index 79ef8a5f412..781a9d0c35d 100644 --- a/gnu/packages/bootstrap.scm +++ b/gnu/packages/bootstrap.scm @@ -570,7 +570,7 @@ (define (make-guile-wrapper bash guile-real) (define* (make-raw-bag name #:key source inputs native-inputs outputs - system target) + system target #:allow-other-keys) (bag (name name) (system system) @@ -590,6 +590,7 @@ (define %bootstrap-guile (let ((raw (build-system (name 'raw) (description "Raw build system with direct store access") + (modules '()) (lower make-raw-bag)))) (package (name "guile-bootstrap") diff --git a/guix/build-system.scm b/guix/build-system.scm index a4dcdc52d85..45c2caf49cb 100644 --- a/guix/build-system.scm +++ b/guix/build-system.scm @@ -24,6 +24,7 @@ (define-module (guix build-system) build-system? build-system-name build-system-description + build-system-modules build-system-lower bag @@ -44,9 +45,10 @@ (define-module (guix build-system) (define-record-type* <build-system> build-system make-build-system build-system? - (name build-system-name) ; symbol - (description build-system-description) ; short description - (lower build-system-lower)) ; args ... -> bags + (name build-system-name) ; symbol + (description build-system-description) ; short description + (modules build-system-modules) ; modules sexp + (lower build-system-lower)) ; args ... -> bags ;; "Bags" are low-level representations of "packages". The system and target ;; of a bag is fixed when it's created. This is because build systems may @@ -92,8 +94,9 @@ (define* (make-bag build-system name This is the mechanism by which a package is \"lowered\" to a bag, which is the intermediate representation just above derivations." (match build-system - (($ <build-system> _ description lower) + (($ <build-system> _ description modules lower) (apply lower name + #:modules modules #:system system #:source source #:inputs inputs diff --git a/guix/build-system/agda.scm b/guix/build-system/agda.scm index ec6ad860e08..b54a5bd6af9 100644 --- a/guix/build-system/agda.scm +++ b/guix/build-system/agda.scm @@ -76,7 +76,7 @@ (define private-keywords (define* (agda-build name inputs #:key - source + modules source (phases '%standard-phases) (outputs '("out")) (search-paths '()) @@ -87,8 +87,7 @@ (define* (agda-build name inputs (guile #f) plan (extra-files '("^\\./.*\\.agda-lib$")) - (imported-modules %agda-build-system-modules) - (modules %default-modules)) + (imported-modules %agda-build-system-modules)) (define builder (with-imported-modules imported-modules #~(begin @@ -119,4 +118,5 @@ (define agda-build-system (name 'agda) (description "Build system for Agda libraries") + (modules %default-modules) (lower lower))) diff --git a/guix/build-system/android-ndk.scm b/guix/build-system/android-ndk.scm index b8cd56b8719..899773ee48f 100644 --- a/guix/build-system/android-ndk.scm +++ b/guix/build-system/android-ndk.scm @@ -35,7 +35,7 @@ (define %android-ndk-build-system-modules (define* (android-ndk-build name inputs #:key - source + modules source (tests? #t) (test-target #f) (phases '%standard-phases) @@ -44,9 +44,7 @@ (define* (android-ndk-build name inputs (search-paths '()) (system (%current-system)) (guile #f) - (imported-modules %android-ndk-build-system-modules) - (modules '((guix build android-ndk-build-system) - (guix build utils)))) + (imported-modules %android-ndk-build-system-modules)) "Build SOURCE using Android NDK, and with INPUTS." (define builder (with-imported-modules imported-modules @@ -112,4 +110,6 @@ (define android-ndk-build-system (name 'android-ndk) (description "Android NDK build system, to build Android NDK packages") + (modules '((guix build android-ndk-build-system) + (guix build utils))) (lower lower))) diff --git a/guix/build-system/ant.scm b/guix/build-system/ant.scm index 9816cc061c9..02e40aabe68 100644 --- a/guix/build-system/ant.scm +++ b/guix/build-system/ant.scm @@ -95,7 +95,7 @@ (define private-keywords (define* (ant-build name inputs #:key - source + modules source (tests? #t) (test-target "check") (configure-flags ''()) @@ -113,10 +113,7 @@ (define* (ant-build name inputs (search-paths '()) (system (%current-system)) (guile #f) - (imported-modules %ant-build-system-modules) - (modules '((guix build ant-build-system) - (guix build java-utils) - (guix build utils)))) + (imported-modules %ant-build-system-modules)) "Build SOURCE with INPUTS." (define builder (with-imported-modules imported-modules @@ -154,6 +151,9 @@ (define ant-build-system (build-system (name 'ant) (description "The standard Ant build system") + (modules '((guix build ant-build-system) + (guix build java-utils) + (guix build utils))) (lower lower))) ;;; ant.scm ends here diff --git a/guix/build-system/asdf.scm b/guix/build-system/asdf.scm index ad0fb993f69..1f6c91e7c45 100644 --- a/guix/build-system/asdf.scm +++ b/guix/build-system/asdf.scm @@ -94,13 +94,12 @@ (define private-keywords (arguments (strip-keyword-arguments private-keywords arguments))))) (define* (asdf-build/source name inputs - #:key source outputs + #:key modules source outputs (phases '%standard-phases/source) (search-paths '()) (system (%current-system)) (guile #f) - (imported-modules %asdf-build-system-modules) - (modules %asdf-build-modules)) + (imported-modules %asdf-build-system-modules)) (define builder (with-imported-modules imported-modules #~(begin @@ -271,7 +270,7 @@ (define private-keywords (define (asdf-build lisp-type) (lambda* (name inputs - #:key source outputs + #:key modules source outputs (tests? #t) (asd-systems ''()) (asd-test-systems ''()) @@ -280,8 +279,7 @@ (define (asdf-build lisp-type) (search-paths '()) (system (%current-system)) (guile #f) - (imported-modules %asdf-build-system-modules) - (modules %asdf-build-modules)) + (imported-modules %asdf-build-system-modules)) (define systems (if (null? (cadr asd-systems)) @@ -332,18 +330,21 @@ (define asdf-build-system/sbcl (build-system (name 'asdf/sbcl) (description "The build system for ASDF binary packages using SBCL") + (modules %asdf-build-modules) (lower (lower "sbcl")))) (define asdf-build-system/ecl (build-system (name 'asdf/ecl) (description "The build system for ASDF binary packages using ECL") + (modules %asdf-build-modules) (lower (lower "ecl")))) (define asdf-build-system/source (build-system (name 'asdf/source) (description "The build system for ASDF source packages") + (modules %asdf-build-modules) (lower lower/source))) (define sbcl-package->cl-source-package diff --git a/guix/build-system/cargo.scm b/guix/build-system/cargo.scm index 452f7f78d01..1ce40c8152e 100644 --- a/guix/build-system/cargo.scm +++ b/guix/build-system/cargo.scm @@ -88,7 +88,7 @@ (define %cargo-build-system-modules (define* (cargo-build name inputs #:key - source + modules source (tests? #t) (test-target #f) (vendor-dir "guix-vendor") @@ -105,9 +105,7 @@ (define* (cargo-build name inputs (search-paths '()) (system (%current-system)) (guile #f) - (imported-modules %cargo-build-system-modules) - (modules '((guix build cargo-build-system) - (guix build utils)))) + (imported-modules %cargo-build-system-modules)) "Build SOURCE using CARGO, and with INPUTS." (define builder @@ -147,7 +145,7 @@ (define builder (define* (cargo-cross-build name #:key - source target + modules source target build-inputs target-inputs host-inputs (tests? #f) (test-target #f) @@ -167,9 +165,7 @@ (define* (cargo-cross-build name (native-search-paths '()) (system (%current-system)) (guile #f) - (imported-modules %cargo-build-system-modules) - (modules '((guix build cargo-build-system) - (guix build utils)))) + (imported-modules %cargo-build-system-modules)) "Cross-build SOURCE using CARGO, and with INPUTS." (define builder @@ -382,4 +378,6 @@ (define cargo-build-system (name 'cargo) (description "Cargo build system, to build Rust crates") + (modules '((guix build cargo-build-system) + (guix build utils))) (lower lower))) diff --git a/guix/build-system/channel.scm b/guix/build-system/channel.scm index 0607dcf4d75..59e0f78d3df 100644 --- a/guix/build-system/channel.scm +++ b/guix/build-system/channel.scm @@ -77,5 +77,6 @@ (define channel-build-system #:commit ,commit)))))) (build-system (name 'channel) (description "Turn a channel instance into a package.") + (modules '()) (lower lower)))) diff --git a/guix/build-system/chicken.scm b/guix/build-system/chicken.scm index e6fcfa7ee30..edc0b50b28e 100644 --- a/guix/build-system/chicken.scm +++ b/guix/build-system/chicken.scm @@ -81,7 +81,7 @@ (define private-keywords (define* (chicken-build name inputs #:key - source + modules source (phases '%standard-phases) (outputs '("out")) (search-paths '()) @@ -91,10 +91,7 @@ (define* (chicken-build name inputs (tests? #t) (system (%current-system)) (guile #f) - (imported-modules %chicken-build-system-modules) - (modules '((guix build chicken-build-system) - (guix build union) - (guix build utils)))) + (imported-modules %chicken-build-system-modules)) (define builder (with-imported-modules imported-modules #~(begin @@ -124,4 +121,7 @@ (define chicken-build-system (name 'chicken) (description "Build system for Chicken Scheme programs") + (modules '((guix build chicken-build-system) + (guix build union) + (guix build utils))) (lower lower))) diff --git a/guix/build-system/clojure.scm b/guix/build-system/clojure.scm index 037fcaf21d9..438b791beb3 100644 --- a/guix/build-system/clojure.scm +++ b/guix/build-system/clojure.scm @@ -103,7 +103,7 @@ (define* (lower name (define* (clojure-build name inputs #:key - source + modules source (source-dirs `',%source-dirs) (java-source-dirs `',%java-source-dirs) (test-dirs `',%test-dirs) @@ -130,8 +130,7 @@ (define* (clojure-build name inputs (system (%current-system)) (guile #f) - (imported-modules %clojure-build-system-modules) - (modules %default-modules)) + (imported-modules %clojure-build-system-modules)) "Build SOURCE with INPUTS." (define builder (with-imported-modules imported-modules @@ -179,6 +178,7 @@ (define clojure-build-system (build-system (name 'clojure) (description "Simple Clojure build system using plain old 'compile'") + (modules %default-modules) (lower lower))) ;;; clojure.scm ends here diff --git a/guix/build-system/cmake.scm b/guix/build-system/cmake.scm index 9d757c0d061..abd280fe7de 100644 --- a/guix/build-system/cmake.scm +++ b/guix/build-system/cmake.scm @@ -105,7 +105,7 @@ (define private-keywords (arguments (strip-keyword-arguments private-keywords arguments)))) (define* (cmake-build name inputs - #:key guile source + #:key guile modules source (outputs '("out")) (configure-flags ''()) (search-paths '()) (make-flags ''()) @@ -123,8 +123,6 @@ (define* (cmake-build name inputs (system (%current-system)) (substitutable? #t) (imported-modules %cmake-build-system-modules) - (modules '((guix build cmake-build-system) - (guix build utils))) allowed-references disallowed-references) "Build SOURCE using CMAKE, and with INPUTS. This assumes that SOURCE @@ -181,7 +179,7 @@ (define* (cmake-cross-build name #:key target build-inputs target-inputs host-inputs - source guile + modules source guile (outputs '("out")) (configure-flags ''()) (search-paths '()) @@ -202,8 +200,6 @@ (define* (cmake-cross-build name (system (%current-system)) (build (nix-system->gnu-triplet system)) (imported-modules %cmake-build-system-modules) - (modules '((guix build cmake-build-system) - (guix build utils))) allowed-references disallowed-references) "Cross-build NAME using CMAKE for TARGET, where TARGET is a GNU triplet and @@ -278,6 +274,8 @@ (define cmake-build-system (build-system (name 'cmake) (description "The standard CMake build system") + (modules '((guix build cmake-build-system) + (guix build utils))) (lower lower))) ;;; cmake.scm ends here diff --git a/guix/build-system/composer.scm b/guix/build-system/composer.scm index 48ad90f253e..bf951e24d02 100644 --- a/guix/build-system/composer.scm +++ b/guix/build-system/composer.scm @@ -96,7 +96,7 @@ (define private-keywords (define* (composer-build name inputs #:key - guile source + guile modules source (outputs '("out")) (configure-flags ''()) (search-paths '()) @@ -115,9 +115,7 @@ (define* (composer-build name inputs (phases '(@ (guix build composer-build-system) %standard-phases)) (system (%current-system)) - (imported-modules %composer-build-system-modules) - (modules '((guix build composer-build-system) - (guix build utils)))) + (imported-modules %composer-build-system-modules)) "Build SOURCE using PHP, and with INPUTS. This assumes that SOURCE provides a 'composer.json' file as its build system." (define guile-json @@ -161,6 +159,8 @@ (define composer-build-system (build-system (name 'composer) (description "The standard Composer build system") + (modules '((guix build composer-build-system) + (guix build utils))) (lower lower))) ;;; composer.scm ends here diff --git a/guix/build-system/copy.scm b/guix/build-system/copy.scm index 1f2937e0f18..416560b266d 100644 --- a/guix/build-system/copy.scm +++ b/guix/build-system/copy.scm @@ -79,7 +79,7 @@ (define private-keywords (define* (copy-build name inputs #:key - guile source + guile modules source (outputs '("out")) (install-plan ''(("." "./"))) (search-paths '()) @@ -95,9 +95,7 @@ (define* (copy-build name inputs (system (%current-system)) (target #f) (substitutable? #t) - (imported-modules %copy-build-system-modules) - (modules '((guix build copy-build-system) - (guix build utils)))) + (imported-modules %copy-build-system-modules)) "Build SOURCE using INSTALL-PLAN, and with INPUTS." (define builder (with-imported-modules imported-modules @@ -139,6 +137,8 @@ (define copy-build-system (build-system (name 'copy) (description "The standard copy build system") + (modules '((guix build copy-build-system) + (guix build utils))) (lower lower))) ;;; copy.scm ends here diff --git a/guix/build-system/dub.scm b/guix/build-system/dub.scm index 831a34af0d1..1215c1a6ad7 100644 --- a/guix/build-system/dub.scm +++ b/guix/build-system/dub.scm @@ -63,7 +63,7 @@ (define %dub-build-system-modules (define* (dub-build name inputs #:key - source + modules source (tests? #t) (test-target #f) (dub-build-flags ''()) @@ -72,9 +72,7 @@ (define* (dub-build name inputs (search-paths '()) (system (%current-system)) (guile #f) - (imported-modules %dub-build-system-modules) - (modules '((guix build dub-build-system) - (guix build utils)))) + (imported-modules %dub-build-system-modules)) "Build SOURCE using DUB, and with INPUTS." (define builder (with-imported-modules imported-modules @@ -137,4 +135,6 @@ (define dub-build-system (name 'dub) (description "DUB build system, to build D packages") + (modules '((guix build dub-build-system) + (guix build utils))) (lower lower))) diff --git a/guix/build-system/dune.scm b/guix/build-system/dune.scm index c45f3083493..45535511c7b 100644 --- a/guix/build-system/dune.scm +++ b/guix/build-system/dune.scm @@ -96,7 +96,7 @@ (define private-keywords (define* (dune-build name inputs #:key - guile source + guile modules source (outputs '("out")) (search-paths '()) (build-flags ''()) @@ -116,9 +116,7 @@ (define* (dune-build name inputs (phases '(@ (guix build dune-build-system) %standard-phases)) (system (%current-system)) - (imported-modules %dune-build-system-modules) - (modules '((guix build dune-build-system) - (guix build utils)))) + (imported-modules %dune-build-system-modules)) "Build SOURCE using OCAML, and with INPUTS. This assumes that SOURCE provides a 'setup.ml' file as its build system." (define builder @@ -162,6 +160,8 @@ (define dune-build-system (build-system (name 'dune) (description "The standard Dune build system") + (modules '((guix build dune-build-system) + (guix build utils))) (lower lower))) ;;; dune.scm ends here diff --git a/guix/build-system/elm.scm b/guix/build-system/elm.scm index 7405db3d985..f7ffd43db31 100644 --- a/guix/build-system/elm.scm +++ b/guix/build-system/elm.scm @@ -169,15 +169,14 @@ (define private-keywords (define* (elm-build name inputs #:key - source + modules source (tests? #t) (phases '%standard-phases) (outputs '("out")) (search-paths '()) (system (%current-system)) (guile #f) - (imported-modules %elm-build-system-modules) - (modules %elm-default-modules)) + (imported-modules %elm-build-system-modules)) "Build SOURCE using ELM." (define builder (with-imported-modules imported-modules @@ -203,4 +202,5 @@ (define elm-build-system (build-system (name 'elm) (description "The Elm build system") + (modules %elm-default-modules) (lower lower))) diff --git a/guix/build-system/emacs.scm b/guix/build-system/emacs.scm index 61b9c171b44..0056d76b0d5 100644 --- a/guix/build-system/emacs.scm +++ b/guix/build-system/emacs.scm @@ -81,7 +81,7 @@ (define private-keywords (arguments (strip-keyword-arguments private-keywords arguments))))) (define* (emacs-build name inputs - #:key source + #:key modules source (tests? (not (%current-target-system))) (parallel-tests? #t) (test-command #f) ; inferred in emacs-build-system @@ -94,9 +94,6 @@ (define* (emacs-build name inputs (system (%current-system)) (guile #f) (imported-modules %emacs-build-system-modules) - (modules '((guix build emacs-build-system) - (guix build utils) - (guix build emacs-utils))) allowed-references disallowed-references) "Build SOURCE using EMACS, and with INPUTS." @@ -132,6 +129,9 @@ (define emacs-build-system (build-system (name 'emacs) (description "The build system for Emacs packages") + (modules '((guix build emacs-build-system) + (guix build utils) + (guix build emacs-utils))) (lower lower))) ;;; emacs.scm ends here diff --git a/guix/build-system/font.scm b/guix/build-system/font.scm index a4eeca00ca6..61905074c06 100644 --- a/guix/build-system/font.scm +++ b/guix/build-system/font.scm @@ -72,7 +72,7 @@ (define private-keywords (arguments (strip-keyword-arguments private-keywords arguments)))) (define* (font-build name inputs - #:key source + #:key modules source (tests? #t) (test-target "test") (configure-flags ''()) @@ -82,9 +82,7 @@ (define* (font-build name inputs (search-paths '()) (system (%current-system)) (guile #f) - (imported-modules %font-build-system-modules) - (modules '((guix build font-build-system) - (guix build utils)))) + (imported-modules %font-build-system-modules)) "Build SOURCE with INPUTS." (define builder (with-imported-modules imported-modules @@ -120,6 +118,8 @@ (define font-build-system (build-system (name 'font) (description "The build system for font packages") + (modules '((guix build font-build-system) + (guix build utils))) (lower lower))) ;;; font.scm ends here diff --git a/guix/build-system/glib-or-gtk.scm b/guix/build-system/glib-or-gtk.scm index c912adab4aa..729cea539e9 100644 --- a/guix/build-system/glib-or-gtk.scm +++ b/guix/build-system/glib-or-gtk.scm @@ -124,7 +124,7 @@ (define private-keywords (arguments (strip-keyword-arguments private-keywords arguments)))) (define* (glib-or-gtk-build name inputs - #:key guile source + #:key guile modules source (outputs '("out")) (search-paths '()) (configure-flags ''()) @@ -145,7 +145,6 @@ (define* (glib-or-gtk-build name inputs (glib-or-gtk-wrap-excluded-outputs ''()) (system (%current-system)) (imported-modules %glib-or-gtk-build-system-modules) - (modules %glib-or-gtk-build-system-default-modules) allowed-references disallowed-references) "Build SOURCE with INPUTS. See GNU-BUILD for more details." @@ -196,7 +195,7 @@ (define* (glib-or-gtk-cross-build name #:key target build-inputs target-inputs host-inputs - guile source + guile modules source (outputs '("out")) (search-paths '()) (native-search-paths '()) @@ -220,7 +219,6 @@ (define* (glib-or-gtk-cross-build name (system (%current-system)) (build (nix-system->gnu-triplet system)) (imported-modules %glib-or-gtk-build-system-modules) - (modules %glib-or-gtk-build-system-default-modules) allowed-references disallowed-references) "Cross-build SOURCE with INPUTS. See GNU-BUILD for more details." @@ -292,4 +290,5 @@ (define glib-or-gtk-build-system "The GNU Build System—i.e., ./configure && make && make install, augmented with definition of suitable environment variables for glib and gtk+ in program wrappers.") + (modules %glib-or-gtk-build-system-default-modules) (lower lower))) diff --git a/guix/build-system/gnu.scm b/guix/build-system/gnu.scm index 8f0883956e3..c61361150ce 100644 --- a/guix/build-system/gnu.scm +++ b/guix/build-system/gnu.scm @@ -344,7 +344,7 @@ (define %strip-directories (define* (gnu-build name inputs #:key - guile source + guile modules source (outputs '("out")) (search-paths '()) (bootstrap-scripts %bootstrap-scripts) @@ -368,7 +368,6 @@ (define* (gnu-build name inputs (system (%current-system)) (build (nix-system->gnu-triplet system)) (imported-modules %default-gnu-imported-modules) - (modules %default-gnu-modules) (substitutable? #t) allowed-references disallowed-references) @@ -483,7 +482,7 @@ (define* (gnu-cross-build name #:key target build-inputs target-inputs host-inputs - guile source + guile modules source (outputs '("out")) (search-paths '()) (native-search-paths '()) @@ -513,7 +512,6 @@ (define* (gnu-cross-build name (system (%current-system)) (build (nix-system->gnu-triplet system)) (imported-modules %default-gnu-imported-modules) - (modules %default-gnu-modules) (substitutable? #t) allowed-references disallowed-references) @@ -590,4 +588,5 @@ (define gnu-build-system (name 'gnu) (description "The GNU Build System—i.e., ./configure && make && make install") + (modules %default-gnu-modules) (lower lower))) diff --git a/guix/build-system/go.scm b/guix/build-system/go.scm index 8e03efa2eb9..1c032cbecc4 100644 --- a/guix/build-system/go.scm +++ b/guix/build-system/go.scm @@ -195,7 +195,7 @@ (define inputs-with-cache (define* (go-build name inputs #:key - source + modules source (phases '%standard-phases) (outputs '("out")) (search-paths '()) @@ -216,9 +216,6 @@ (define* (go-build name inputs (goos #f) (guile #f) (imported-modules %go-build-system-modules) - (modules '((guix build go-build-system) - (guix build union) - (guix build utils))) (substitutable? #t)) (define builder (with-imported-modules imported-modules @@ -257,7 +254,7 @@ (define builder (define* (go-cross-build name #:key - source target + modules source target build-inputs target-inputs host-inputs (phases '%standard-phases) (outputs '("out")) @@ -280,9 +277,6 @@ (define* (go-cross-build name (embed-files ''()) (guile #f) (imported-modules %go-build-system-modules) - (modules '((guix build go-build-system) - (guix build union) - (guix build utils))) (substitutable? #t)) "Cross-build NAME using GO, where TARGET is a GNU triplet and with INPUTS." (define builder @@ -347,4 +341,7 @@ (define go-build-system (name 'go) (description "Build system for Go programs") + (modules '((guix build go-build-system) + (guix build union) + (guix build utils))) (lower lower))) diff --git a/guix/build-system/guile.scm b/guix/build-system/guile.scm index df6988a1b7e..467e0e61542 100644 --- a/guix/build-system/guile.scm +++ b/guix/build-system/guile.scm @@ -76,7 +76,7 @@ (define %compile-flags ''("-Wunbound-variable" "-Warity-mismatch" "-Wformat")) (define* (guile-build name inputs - #:key source + #:key modules source (guile #f) (phases '%standard-phases) (outputs '("out")) @@ -91,8 +91,6 @@ (define* (guile-build name inputs (parallel-build? #f) (compile-flags %compile-flags) (imported-modules %guile-build-system-modules) - (modules '((guix build guile-build-system) - (guix build utils))) (substitutable? #t)) "Build SOURCE using Guile taken from the native inputs, and with INPUTS." (define builder @@ -128,7 +126,7 @@ (define* (guile-cross-build name (system (%current-system)) target build-inputs target-inputs host-inputs (guile #f) - source + modules source (outputs '("out")) (search-paths '()) (native-search-paths '()) @@ -144,8 +142,6 @@ (define* (guile-cross-build name (parallel-build? #f) (compile-flags %compile-flags) (imported-modules %guile-build-system-modules) - (modules '((guix build guile-build-system) - (guix build utils))) (substitutable? #t)) (define builder (with-imported-modules imported-modules @@ -194,4 +190,6 @@ (define guile-build-system (build-system (name 'guile) (description "The build system for simple Guile packages") + (modules '((guix build guile-build-system) + (guix build utils))) (lower lower))) diff --git a/guix/build-system/haskell.scm b/guix/build-system/haskell.scm index b0019dd0144..ef3d51c7d90 100644 --- a/guix/build-system/haskell.scm +++ b/guix/build-system/haskell.scm @@ -125,7 +125,7 @@ (define (cabal-revision->origin cabal-revision) extra-directories)))))))) (define* (haskell-build name inputs - #:key source + #:key modules source (haddock? #t) (haddock-flags ''()) (tests? #t) @@ -140,9 +140,7 @@ (define* (haskell-build name inputs (search-paths '()) (system (%current-system)) (guile #f) - (imported-modules %haskell-build-system-modules) - (modules '((guix build haskell-build-system) - (guix build utils)))) + (imported-modules %haskell-build-system-modules)) "Build SOURCE using HASKELL, and with INPUTS. This assumes that SOURCE provides a 'Setup.hs' file as its build system." (define builder @@ -188,6 +186,8 @@ (define haskell-build-system (build-system (name 'haskell) (description "The standard Haskell build system") + (modules '((guix build haskell-build-system) + (guix build utils))) (lower lower))) ;;; haskell.scm ends here diff --git a/guix/build-system/julia.scm b/guix/build-system/julia.scm index e0987496838..71df6fe2beb 100644 --- a/guix/build-system/julia.scm +++ b/guix/build-system/julia.scm @@ -77,7 +77,7 @@ (define private-keywords (arguments (strip-keyword-arguments private-keywords arguments))))) (define* (julia-build name inputs - #:key source + #:key modules source (tests? #t) (parallel-tests? #t) (phases '%standard-phases) @@ -88,9 +88,7 @@ (define* (julia-build name inputs (julia-package-name #f) (julia-package-uuid #f) (julia-package-dependencies ''()) - (imported-modules %julia-build-system-modules) - (modules '((guix build julia-build-system) - (guix build utils)))) + (imported-modules %julia-build-system-modules)) "Build SOURCE using Julia, and with INPUTS." (define builder (with-imported-modules imported-modules @@ -121,6 +119,8 @@ (define julia-build-system (build-system (name 'julia) (description "The build system for Julia packages") + (modules '((guix build julia-build-system) + (guix build utils))) (lower lower))) ;;; julia.scm ends here diff --git a/guix/build-system/linux-module.scm b/guix/build-system/linux-module.scm index d8ebef60d0c..6ec294f081e 100644 --- a/guix/build-system/linux-module.scm +++ b/guix/build-system/linux-module.scm @@ -153,7 +153,7 @@ (define private-keywords (define* (linux-module-build name inputs #:key - source target + modules source target (search-paths '()) (tests? #t) (phases '%standard-phases) @@ -165,9 +165,7 @@ (define* (linux-module-build name inputs (guile #f) (substitutable? #t) (imported-modules - %linux-module-build-system-modules) - (modules '((guix build linux-module-build-system) - (guix build utils)))) + %linux-module-build-system-modules)) "Build SOURCE using LINUX, and with INPUTS." (define builder (with-imported-modules imported-modules @@ -200,7 +198,7 @@ (define builder (define* (linux-module-build-cross name #:key - source target + modules source target build-inputs target-inputs host-inputs (guile #f) (outputs '("out")) @@ -214,9 +212,7 @@ (define* (linux-module-build-cross (source-directory ".") (substitutable? #t) (imported-modules - %linux-module-build-system-modules) - (modules '((guix build linux-module-build-system) - (guix build utils)))) + %linux-module-build-system-modules)) (define builder (with-imported-modules imported-modules #~(begin @@ -261,6 +257,8 @@ (define linux-module-build-system (build-system (name 'linux-module) (description "The Linux module build system") + (modules '((guix build linux-module-build-system) + (guix build utils))) (lower lower))) ;;; linux-module.scm ends here diff --git a/guix/build-system/maven.scm b/guix/build-system/maven.scm index 03e4e96b892..d6faa1b23d9 100644 --- a/guix/build-system/maven.scm +++ b/guix/build-system/maven.scm @@ -143,7 +143,7 @@ (define private-keywords (define* (maven-build name inputs #:key - source (guile #f) + modules source (guile #f) (outputs '("out")) (search-paths '()) (out-of-source? #t) @@ -157,10 +157,7 @@ (define* (maven-build name inputs (strip-directories %strip-directories) (phases '%standard-phases) (system (%current-system)) - (imported-modules %maven-build-system-modules) - (modules '((guix build maven-build-system) - (guix build maven pom) - (guix build utils)))) + (imported-modules %maven-build-system-modules)) "Build SOURCE using PATCHELF, and with INPUTS. This assumes that SOURCE provides its own binaries." (define builder @@ -195,6 +192,9 @@ (define maven-build-system (build-system (name 'maven) (description "The standard Maven build system") + (modules '((guix build maven-build-system) + (guix build maven pom) + (guix build utils))) (lower lower))) ;;; maven.scm ends here diff --git a/guix/build-system/meson.scm b/guix/build-system/meson.scm index 5eeeb59e65a..a56737c076c 100644 --- a/guix/build-system/meson.scm +++ b/guix/build-system/meson.scm @@ -185,7 +185,7 @@ (define private-keywords (define* (meson-build name inputs #:key - guile source + guile modules source (outputs '("out")) (configure-flags ''()) (search-paths '()) @@ -206,8 +206,6 @@ (define* (meson-build name inputs (phases '%standard-phases) (system (%current-system)) (imported-modules %meson-build-system-modules) - (modules '((guix build meson-build-system) - (guix build utils))) (substitutable? #t) allowed-references disallowed-references) @@ -269,7 +267,7 @@ (define* (meson-cross-build name #:key target build-inputs host-inputs target-inputs - guile source + guile modules source (outputs '("out")) (configure-flags ''()) (search-paths '()) @@ -294,8 +292,6 @@ (define* (meson-cross-build name (phases '%standard-phases) (system (%current-system)) (imported-modules %meson-build-system-modules) - (modules '((guix build meson-build-system) - (guix build utils))) (substitutable? #t) allowed-references disallowed-references) @@ -385,6 +381,8 @@ (define meson-build-system (build-system (name 'meson) (description "The standard Meson build system") + (modules '((guix build meson-build-system) + (guix build utils))) (lower lower))) ;;; meson.scm ends here diff --git a/guix/build-system/minetest.scm b/guix/build-system/minetest.scm index 9774c5882a5..2edea4dcbcc 100644 --- a/guix/build-system/minetest.scm +++ b/guix/build-system/minetest.scm @@ -98,6 +98,7 @@ (define minetest-mod-build-system (build-system (name 'minetest-mod) (description "The build system for minetest mods") + (modules %default-minetest-modules) (lower lower-mod))) ;;; minetest.scm ends here diff --git a/guix/build-system/minify.scm b/guix/build-system/minify.scm index 98c6e75980d..49a94ae4cbe 100644 --- a/guix/build-system/minify.scm +++ b/guix/build-system/minify.scm @@ -72,16 +72,14 @@ (define private-keywords (define* (minify-build name inputs #:key - source + modules source (javascript-files #f) (phases '%standard-phases) (outputs '("out")) (system (%current-system)) search-paths (guile #f) - (imported-modules %minify-build-system-modules) - (modules '((guix build minify-build-system) - (guix build utils)))) + (imported-modules %minify-build-system-modules)) "Build SOURCE with INPUTS." (define builder (with-imported-modules imported-modules @@ -107,6 +105,8 @@ (define minify-build-system (build-system (name 'minify) (description "The trivial JavaScript minification build system") + (modules '((guix build minify-build-system) + (guix build utils))) (lower lower))) ;;; minify.scm ends here diff --git a/guix/build-system/mix.scm b/guix/build-system/mix.scm index 4a3ba9fb604..daecc7b5bcf 100644 --- a/guix/build-system/mix.scm +++ b/guix/build-system/mix.scm @@ -74,7 +74,7 @@ (define (hexpm-uri name version) (define* (mix-build name inputs #:key - source + modules source (tests? #t) (mix-path #f) ;See MIX_PATH. (mix-exs "mix.exs") ;See MIX_EXS. @@ -85,9 +85,7 @@ (define* (mix-build name (system (%current-system)) (guile #f) (imported-modules `((guix build mix-build-system) - ,@%default-gnu-imported-modules)) - (modules '((guix build mix-build-system) - (guix build utils)))) + ,@%default-gnu-imported-modules))) "Build SOURCE using Elixir, and with INPUTS." ;; Check the documentation of :build_per_environment here: @@ -174,6 +172,8 @@ (define* (lower name (define mix-build-system (build-system (name 'mix) (description "The standard Mix build system") + (modules '((guix build mix-build-system) + (guix build utils))) (lower lower))) ;;; mix.scm ends here diff --git a/guix/build-system/mozilla.scm b/guix/build-system/mozilla.scm index bead1bf5bbc..8face65bf91 100644 --- a/guix/build-system/mozilla.scm +++ b/guix/build-system/mozilla.scm @@ -47,6 +47,7 @@ (define mozilla-build-system (build-system (name 'mozilla) (description "The build system for Mozilla software using the Autotools") + (modules %default-gnu-modules) (lower lower-mozilla))) ;;; mozilla.scm ends here diff --git a/guix/build-system/node.scm b/guix/build-system/node.scm index cde0ccb60e5..6a6183c7041 100644 --- a/guix/build-system/node.scm +++ b/guix/build-system/node.scm @@ -88,7 +88,7 @@ (define (default-guile-json) (define* (node-build name inputs #:key - source + modules source (npm-flags ''()) (test-target "test") (tests? #t) @@ -98,9 +98,7 @@ (define* (node-build name inputs (system (%current-system)) (guile #f) (guile-json (default-guile-json)) - (imported-modules %node-build-system-modules) - (modules '((guix build node-build-system) - (guix build utils)))) + (imported-modules %node-build-system-modules)) "Build SOURCE using NODE and INPUTS." (define builder (with-extensions (list guile-json) @@ -130,4 +128,6 @@ (define node-build-system (build-system (name 'node) (description "The Node build system") + (modules '((guix build node-build-system) + (guix build utils))) (lower lower))) diff --git a/guix/build-system/ocaml.scm b/guix/build-system/ocaml.scm index 2f2e6dd62e0..3460dbf85d6 100644 --- a/guix/build-system/ocaml.scm +++ b/guix/build-system/ocaml.scm @@ -255,7 +255,7 @@ (define private-keywords (define* (ocaml-build name inputs #:key - guile source + guile modules source (outputs '("out")) (configure-flags ''()) (search-paths '()) (make-flags ''()) @@ -274,9 +274,7 @@ (define* (ocaml-build name inputs (phases '(@ (guix build ocaml-build-system) %standard-phases)) (system (%current-system)) - (imported-modules %ocaml-build-system-modules) - (modules '((guix build ocaml-build-system) - (guix build utils)))) + (imported-modules %ocaml-build-system-modules)) "Build SOURCE using OCAML, and with INPUTS. This assumes that SOURCE provides a 'setup.ml' file as its build system." (define builder @@ -315,6 +313,8 @@ (define ocaml-build-system (build-system (name 'ocaml) (description "The standard OCaml build system") + (modules '((guix build ocaml-build-system) + (guix build utils))) (lower lower))) ;;; ocaml.scm ends here diff --git a/guix/build-system/perl.scm b/guix/build-system/perl.scm index 98d48fec7c0..0de9bef2961 100644 --- a/guix/build-system/perl.scm +++ b/guix/build-system/perl.scm @@ -102,7 +102,7 @@ (define private-keywords (arguments (strip-keyword-arguments private-keywords arguments)))) (define* (perl-build name inputs - #:key source + #:key modules source (search-paths '()) (tests? #t) (parallel-build? #t) @@ -115,9 +115,7 @@ (define* (perl-build name inputs (outputs '("out")) (system (%current-system)) (guile #f) - (imported-modules %perl-build-system-modules) - (modules '((guix build perl-build-system) - (guix build utils)))) + (imported-modules %perl-build-system-modules)) "Build SOURCE using PERL, and with INPUTS. This assumes that SOURCE provides a `Makefile.PL' file as its build system." (define build @@ -156,8 +154,7 @@ (define build #:guile-for-build guile))) (define* (perl-cross-build name #:key - source - target + modules source target build-inputs host-inputs target-inputs (search-paths '()) (native-search-paths '()) @@ -173,9 +170,7 @@ (define* (perl-cross-build name #:key (system (%current-system)) (build (nix-system->gnu-triplet system)) (guile #f) - (imported-modules %perl-build-system-modules) - (modules '((guix build perl-build-system) - (guix build utils)))) + (imported-modules %perl-build-system-modules)) "Cross-build SOURCE to TARGET using PERL, and with INPUTS. This assumes that SOURCE provides a `Makefile.PL' file as its build system and does not use XS or similar." @@ -223,6 +218,8 @@ (define perl-build-system (build-system (name 'perl) (description "The standard Perl build system") + (modules '((guix build perl-build-system) + (guix build utils))) (lower lower))) ;;; perl.scm ends here diff --git a/guix/build-system/pyproject.scm b/guix/build-system/pyproject.scm index bdf8f440acc..6519286208d 100644 --- a/guix/build-system/pyproject.scm +++ b/guix/build-system/pyproject.scm @@ -91,7 +91,7 @@ (define private-keywords (arguments (strip-keyword-arguments private-keywords arguments))))) (define* (pyproject-build name inputs - #:key source + #:key modules source (tests? #t) (configure-flags ''(@)) (backend-path #f) @@ -104,8 +104,6 @@ (define* (pyproject-build name inputs (system (%current-system)) (guile #f) (imported-modules %pyproject-build-system-modules) - (modules '((guix build pyproject-build-system) - (guix build utils))) allowed-references disallowed-references) "Build SOURCE using PYTHON, and with INPUTS." @@ -149,6 +147,8 @@ (define pyproject-build-system (build-system (name 'pyproject) (description "The PEP517-compliant Python build system") + (modules '((guix build pyproject-build-system) + (guix build utils))) (lower lower))) ;;; pyproject.scm ends here diff --git a/guix/build-system/python.scm b/guix/build-system/python.scm index a51c033d01e..64c2b7ef527 100644 --- a/guix/build-system/python.scm +++ b/guix/build-system/python.scm @@ -167,7 +167,7 @@ (define private-keywords (arguments (strip-keyword-arguments private-keywords arguments))))) (define* (python-build name inputs - #:key source + #:key modules source (tests? #t) (test-target "test") (use-setuptools? #t) @@ -178,8 +178,6 @@ (define* (python-build name inputs (system (%current-system)) (guile #f) (imported-modules %python-build-system-modules) - (modules '((guix build python-build-system) - (guix build utils))) allowed-references disallowed-references) "Build SOURCE using PYTHON, and with INPUTS. This assumes that SOURCE @@ -220,6 +218,8 @@ (define python-build-system (build-system (name 'python) (description "The standard Python build system") + (modules '((guix build python-build-system) + (guix build utils))) (lower lower))) ;;; python.scm ends here diff --git a/guix/build-system/qt.scm b/guix/build-system/qt.scm index d1f721c54e7..87b95c99d6c 100644 --- a/guix/build-system/qt.scm +++ b/guix/build-system/qt.scm @@ -123,7 +123,7 @@ (define private-keywords (define* (qt-build name inputs #:key (qtbase (default-qtbase)) - source (guile #f) + modules source (guile #f) (outputs '("out")) (configure-flags ''()) (search-paths '()) (make-flags ''()) @@ -142,8 +142,6 @@ (define* (qt-build name inputs (qt-wrap-excluded-inputs %qt-wrap-excluded-inputs) (system (%current-system)) (imported-modules %qt-build-system-modules) - (modules '((guix build qt-build-system) - (guix build utils))) allowed-references disallowed-references) "Build SOURCE using CMAKE, and with INPUTS. This assumes that SOURCE @@ -195,7 +193,7 @@ (define builder (define* (qt-cross-build name #:key - source target + modules source target build-inputs target-inputs host-inputs (qtbase (default-qtbase)) (guile #f) @@ -218,8 +216,6 @@ (define* (qt-cross-build name (system (%current-system)) (build (nix-system->gnu-triplet system)) (imported-modules %qt-build-system-modules) - (modules '((guix build qt-build-system) - (guix build utils))) allowed-references disallowed-references) "Cross-build NAME using CMAKE for TARGET, where TARGET is a GNU triplet and @@ -285,4 +281,6 @@ (define qt-build-system (description "The CMake build system augmented with definition of suitable environment variables for Qt and KDE in program wrappers.") + (modules '((guix build qt-build-system) + (guix build utils))) (lower lower))) diff --git a/guix/build-system/r.scm b/guix/build-system/r.scm index 92449c7dbbc..530c45f8437 100644 --- a/guix/build-system/r.scm +++ b/guix/build-system/r.scm @@ -104,7 +104,7 @@ (define private-keywords (define* (r-build name inputs #:key - source + modules source (tests? #t) (test-target "tests") (test-types #f) @@ -115,9 +115,7 @@ (define* (r-build name inputs (system (%current-system)) (guile #f) (substitutable? #t) - (imported-modules %r-build-system-modules) - (modules '((guix build r-build-system) - (guix build utils)))) + (imported-modules %r-build-system-modules)) "Build SOURCE with INPUTS." (define builder (with-imported-modules imported-modules @@ -148,6 +146,8 @@ (define r-build-system (build-system (name 'r) (description "The standard R build system") + (modules '((guix build r-build-system) + (guix build utils))) (lower lower))) ;;; r.scm ends here diff --git a/guix/build-system/rakudo.scm b/guix/build-system/rakudo.scm index ee13c507913..182a0820342 100644 --- a/guix/build-system/rakudo.scm +++ b/guix/build-system/rakudo.scm @@ -99,7 +99,7 @@ (define private-keywords (define* (rakudo-build name inputs #:key - source + modules source (search-paths '()) (tests? #t) (phases '%standard-phases) @@ -108,9 +108,7 @@ (define* (rakudo-build name inputs (guile #f) (with-zef? #t) (with-prove6? #t) - (imported-modules %rakudo-build-system-modules) - (modules '((guix build rakudo-build-system) - (guix build utils)))) + (imported-modules %rakudo-build-system-modules)) "Build SOURCE using PERL6, and with INPUTS." (define builder (with-imported-modules imported-modules @@ -137,6 +135,8 @@ (define rakudo-build-system (build-system (name 'rakudo) (description "The standard Rakudo build system") + (modules '((guix build rakudo-build-system) + (guix build utils))) (lower lower))) ;;; rakudo.scm ends here diff --git a/guix/build-system/rebar.scm b/guix/build-system/rebar.scm index 7c7cc5870f8..bb7bdebfdbe 100644 --- a/guix/build-system/rebar.scm +++ b/guix/build-system/rebar.scm @@ -99,7 +99,7 @@ (define private-keywords (define* (rebar-build name inputs #:key - guile source + guile modules source (rebar-flags ''("skip_deps=true" "-vv")) (tests? #t) (test-target "eunit") @@ -111,9 +111,7 @@ (define* (rebar-build name inputs (search-paths '()) (native-search-paths '()) (system (%current-system)) - (imported-modules %rebar-build-system-modules) - (modules '((guix build rebar-build-system) - (guix build utils)))) + (imported-modules %rebar-build-system-modules)) "Build SOURCE with INPUTS." (define builder @@ -153,4 +151,6 @@ (define rebar-build-system (build-system (name 'rebar) (description "The standard Rebar build system") + (modules '((guix build rebar-build-system) + (guix build utils))) (lower lower))) diff --git a/guix/build-system/renpy.scm b/guix/build-system/renpy.scm index 015dd7c2104..1eee097dd91 100644 --- a/guix/build-system/renpy.scm +++ b/guix/build-system/renpy.scm @@ -74,7 +74,7 @@ (define private-keywords (define* (renpy-build name inputs #:key - source + modules source (phases '%standard-phases) (configure-flags ''()) (outputs '("out")) @@ -83,9 +83,7 @@ (define* (renpy-build name inputs (search-paths '()) (system (%current-system)) (guile #f) - (imported-modules %renpy-build-system-modules) - (modules '((guix build renpy-build-system) - (guix build utils)))) + (imported-modules %renpy-build-system-modules)) "Build SOURCE using RENPY, and with INPUTS." (define builder (with-imported-modules imported-modules @@ -114,4 +112,6 @@ (define renpy-build-system (build-system (name 'renpy) (description "The Ren'py build system") + (modules '((guix build renpy-build-system) + (guix build utils))) (lower lower))) diff --git a/guix/build-system/ruby.scm b/guix/build-system/ruby.scm index f258ade6e75..f6f759bd6f8 100644 --- a/guix/build-system/ruby.scm +++ b/guix/build-system/ruby.scm @@ -75,7 +75,7 @@ (define private-keywords (arguments (strip-keyword-arguments private-keywords arguments))))) (define* (ruby-build name inputs - #:key source + #:key modules source (gem-flags ''()) (test-target "test") (tests? #t) @@ -84,9 +84,7 @@ (define* (ruby-build name inputs (search-paths '()) (system (%current-system)) (guile #f) - (imported-modules %ruby-build-system-modules) - (modules '((guix build ruby-build-system) - (guix build utils)))) + (imported-modules %ruby-build-system-modules)) "Build SOURCE using RUBY and INPUTS." (define build (with-imported-modules imported-modules @@ -121,4 +119,6 @@ (define ruby-build-system (build-system (name 'ruby) (description "The standard Ruby build system") + (modules '((guix build ruby-build-system) + (guix build utils))) (lower lower))) diff --git a/guix/build-system/scons.scm b/guix/build-system/scons.scm index e76c419b1e4..d9086fb5ff7 100644 --- a/guix/build-system/scons.scm +++ b/guix/build-system/scons.scm @@ -75,6 +75,7 @@ (define private-keywords (define* (scons-build name inputs #:key + modules (source #f) (tests? #t) (scons-flags ''()) @@ -86,9 +87,7 @@ (define* (scons-build name inputs (search-paths '()) (system (%current-system)) (guile #f) - (imported-modules %scons-build-system-modules) - (modules '((guix build scons-build-system) - (guix build utils)))) + (imported-modules %scons-build-system-modules)) "Build SOURCE using SCons, and with INPUTS. This assumes that SOURCE provides a 'SConstruct' file as its build system." (define builder @@ -127,6 +126,8 @@ (define scons-build-system (build-system (name 'scons) (description "The standard SCons build system") + (modules '((guix build scons-build-system) + (guix build utils))) (lower lower))) ;;; scons.scm ends here diff --git a/guix/build-system/texlive.scm b/guix/build-system/texlive.scm index 35587b50fc0..b7a1626dd1a 100644 --- a/guix/build-system/texlive.scm +++ b/guix/build-system/texlive.scm @@ -99,7 +99,7 @@ (define private-keywords (define* (texlive-build name inputs #:key - source + modules source (tests? #f) (build-targets #f) (create-formats #f) @@ -120,10 +120,7 @@ (define* (texlive-build name inputs (system (%current-system)) (guile #f) (substitutable? #t) - (imported-modules %texlive-build-system-modules) - (modules '((guix build texlive-build-system) - (guix build union) - (guix build utils)))) + (imported-modules %texlive-build-system-modules)) "Build SOURCE with INPUTS." (define builder (with-imported-modules imported-modules @@ -164,6 +161,9 @@ (define texlive-build-system (build-system (name 'texlive) (description "The build system for TeX Live packages") + (modules '((guix build texlive-build-system) + (guix build union) + (guix build utils))) (lower lower))) ;;; texlive.scm ends here diff --git a/guix/build-system/tree-sitter.scm b/guix/build-system/tree-sitter.scm index 90d9704cb84..008825dd68a 100644 --- a/guix/build-system/tree-sitter.scm +++ b/guix/build-system/tree-sitter.scm @@ -97,7 +97,7 @@ (define grammar-inputs (define* (tree-sitter-build name inputs #:key - source + modules source (phases '%standard-phases) (grammar-directories '(".")) (tests? #t) @@ -106,9 +106,7 @@ (define* (tree-sitter-build name inputs (system (%current-system)) (guile #f) (guile-json (default-guile-json)) - (imported-modules %tree-sitter-build-system-modules) - (modules '((guix build utils) - (guix build tree-sitter-build-system)))) + (imported-modules %tree-sitter-build-system-modules)) (define builder (with-extensions (list guile-json) (with-imported-modules imported-modules @@ -137,7 +135,7 @@ (define* (tree-sitter-cross-build name #:key target build-inputs target-inputs host-inputs - guile source + guile modules source (phases '%standard-phases) (grammar-directories '(".")) (tests? #t) @@ -148,10 +146,7 @@ (define* (tree-sitter-cross-build name (guile-json (default-guile-json)) (build (nix-system->gnu-triplet system)) (imported-modules - %tree-sitter-build-system-modules) - (modules - '((guix build utils) - (guix build tree-sitter-build-system)))) + %tree-sitter-build-system-modules)) (define builder (with-extensions (list guile-json) (with-imported-modules imported-modules @@ -200,6 +195,8 @@ (define tree-sitter-build-system (build-system (name 'tree-sitter) (description "The Tree-sitter grammar build system") + (modules '((guix build utils) + (guix build tree-sitter-build-system))) (lower lower))) ;;; tree-sitter.scm ends here diff --git a/guix/build-system/trivial.scm b/guix/build-system/trivial.scm index e08884baf1f..99107ca428a 100644 --- a/guix/build-system/trivial.scm +++ b/guix/build-system/trivial.scm @@ -47,7 +47,7 @@ (define* (lower name (define* (trivial-build name inputs #:key outputs guile - system builder (modules '()) + system builder modules search-paths allowed-references) "Run build expression BUILDER, an expression, for SYSTEM. SOURCE is ignored." @@ -68,7 +68,7 @@ (define* (trivial-cross-build name #:key target source build-inputs target-inputs host-inputs - outputs guile system builder (modules '()) + outputs guile system builder modules search-paths native-search-paths allowed-references) "Run build expression BUILDER, an expression, for SYSTEM. SOURCE is @@ -94,4 +94,5 @@ (define trivial-build-system (name 'trivial) (description "Trivial build system, to run arbitrary Scheme build expressions") + (modules '()) (lower lower))) diff --git a/guix/build-system/vim.scm b/guix/build-system/vim.scm index dddf7ea14b2..d3e867faf21 100644 --- a/guix/build-system/vim.scm +++ b/guix/build-system/vim.scm @@ -98,7 +98,7 @@ (define* (lower name (define* (vim-build name inputs #:key guile - source + modules source (vim? #f) (neovim? #f) (mode "start") @@ -116,9 +116,7 @@ (define* (vim-build name inputs (search-paths '()) (system (%current-system)) (substitutable? #t) - (imported-modules %vim-build-system-modules) - (modules '((guix build vim-build-system) - (guix build utils)))) + (imported-modules %vim-build-system-modules)) (define build (with-imported-modules imported-modules @@ -165,6 +163,8 @@ (define build (define vim-build-system (build-system (name 'vim) (description "The standard Vim build system") + (modules '((guix build vim-build-system) + (guix build utils))) (lower lower))) ;;; vim.scm ends here diff --git a/guix/build-system/waf.scm b/guix/build-system/waf.scm index 4ca293ffd89..e9f0d86c162 100644 --- a/guix/build-system/waf.scm +++ b/guix/build-system/waf.scm @@ -72,7 +72,7 @@ (define private-keywords (arguments (strip-keyword-arguments private-keywords arguments))))) (define* (waf-build name inputs - #:key source + #:key modules source (tests? #t) (test-target "check") (configure-flags #~'()) @@ -81,9 +81,7 @@ (define* (waf-build name inputs (search-paths '()) (system (%current-system)) (guile #f) - (imported-modules %waf-build-system-modules) - (modules '((guix build waf-build-system) - (guix build utils)))) + (imported-modules %waf-build-system-modules)) "Build SOURCE with INPUTS. This assumes that SOURCE provides a 'waf' file as its build system." (define build @@ -118,6 +116,8 @@ (define waf-build-system (build-system (name 'waf) (description "The standard waf build system") + (modules '((guix build waf-build-system) + (guix build utils))) (lower lower))) ;;; waf.scm ends here diff --git a/guix/build-system/zig.scm b/guix/build-system/zig.scm index 43d6ee977c3..645184963de 100644 --- a/guix/build-system/zig.scm +++ b/guix/build-system/zig.scm @@ -45,7 +45,7 @@ (define %zig-build-system-modules (define* (zig-build name inputs #:key - source + modules source (tests? #t) (test-target #f) (parallel-build? #t) @@ -60,9 +60,7 @@ (define* (zig-build name inputs (search-paths '()) (system (%current-system)) (guile #f) - (imported-modules %zig-build-system-modules) - (modules '((guix build zig-build-system) - (guix build utils)))) + (imported-modules %zig-build-system-modules)) "Build SOURCE using Zig, and with INPUTS." (define builder (with-imported-modules imported-modules @@ -98,7 +96,7 @@ (define builder (define* (zig-cross-build name #:key - source target + modules source target build-inputs target-inputs host-inputs (phases '%standard-phases) (outputs '("out")) @@ -117,9 +115,7 @@ (define* (zig-cross-build name (zig-release-type #f) (system (%current-system)) (guile #f) - (imported-modules %zig-build-system-modules) - (modules '((guix build zig-build-system) - (guix build utils)))) + (imported-modules %zig-build-system-modules)) "Build SOURCE using Zig, and with INPUTS." (define builder (with-imported-modules imported-modules @@ -218,4 +214,6 @@ (define zig-build-system (name 'zig) (description "Zig build system, to build Zig packages") + (modules '((guix build zig-build-system) + (guix build utils))) (lower lower))) -- 2.49.0
On 2025-04-25 15:01, Nicolas Graves wrote: > On 2025-04-25 10:57, Ludovic Courtès wrote: > >> Hello, >> >> Nicolas Graves <ngra...@ngraves.fr> writes: >> >>> Actually the thunk was not necessary because args were already passed to >>> the build-bag procedure, and modules and imported-modules were already >>> used in every bag-build procedures, except for trivial and raw >>> build-systems. >>> >>> Patch should look like the one attached, overall pretty simple. > > I'll probably additionally drop defaults in bag-build procedures, to > make it clear that the defaults are coming from <build-system>-modules > rather than resulting from default function argument. > >>> However it does break the build-system API so channels that define a >>> build-system will have to update too. >> >> Maybe we the field could default to the empty list? > > Yes, I was unsure what to do there. > > The issue is that for dependent channels, it's probably better to have a > clear failure (e.g. "missing required #:imported-modules") rather than > having '() silently passed in modules and imported-modules. > > There are only raw, trivial and channel that use '(), so IMO not a clear > requirement. I guess it depends on which error is clearer for dependent > channels. IMHO, it might be better to keep no defaults, as to not > silently override current dependent channels modules/imported-modules, > and making them fail with a clear error message instead. > > I could use #:allow-other-keys instead of adding unused > (imported-)modules keys to functions, if it makes it clearer. > > WDYT ? > >> >>> I'll investigate now if we can simply do away without imported-modules >>> at all. >> >> Yes, we should definitely do that. > > Actually I think the 68315 would be a requirement to do that properly > (brainstorming here). > > Let's say we want some arbitrary way to extend imported modules on the > build-system level (i.e. not the package level). We already explored > two solutions : > - lower procedure properties > - build-system field > > If we remove build-system field, I don't know how I can do the generic > build-system transformation in my use-case. > > But with 68315 the returned value from the bag-build is a monadic gexp (rather > than a monadic derivation), I probably can do something like: > > (define (make-new-lower old-lower other-args) > (lambda* args > (let ((old-bag (apply old-lower args))) > (bag > (inherit old-bag) > (build > (lambda* (name inputs #:key (outputs '("out")) > #:allow-other-keys #:rest rest) > (mlet %store-monad > ((builder (apply (bag-build old-bag) > name inputs #:outputs outputs rest))) > (return > (with-imported-modules additional-imported-modules > #~(begin > (use-modules ,@additional-modules) > (more-code) > (any-wrapper > #$builder)))))))))) > > which is my use-case (and the reason why I needed those in the first > place). > > I don't know how to do that kind of thing if we only drop the > default-imported-modules field without 68315. Am I missing something > here? > > (The reason I need that is that I want guix local instantiate (see next > answer) to support a --git option and not drop the .git directory, but > still apply guix package-source patches/snippet. IIUC, I some > additional code thus some additional imported-modules to support that.) > >>> + (default-modules build-system-default-modules) >> >> … and probably change this one to just ‘modules’. > > OK. > >>> 1) some patches are improvements independent of wherever I try to do with >>> partial builds. They can already be reviewed now independently from the >>> rest. >> >> “Partial build”, interesting. :-) > > I actually have something working pretty well for trivial packages > without patches nor snippets. Workflow is, in any arbitrary directory: > > $ guix local instantiate hello > $ cd hello* (I have to figure the proper chdir after gnu:unpack, and do > that in the previous call guix local instantiate). > $ guix local build hello > > That would build hello locally (in said dir, and install each output in > ./$output dir, with all guix-rich info: arguments, store-injected > shebangs etc), and keep compilation caches. There an additional caveat: > I drop the 'install-license-files phase, because it is likely dependent > on having the output in the store for some reason. > >>> 2) some patches are standardizing improvements for the names : >>> - %XXX-build-system-modules --> %default-XXX-imported-modules >>> - %XXX-modules or %default-modules --> %default-XXX-modules >>> - is that a fine standardizing change or should I go through a GCD? >> >> Well, there was already a name change in this area that left me >> unconvinced and that we’re still adjusting to, many months later. So my >> advice would be to think twice before renaming bindings with a lot of >> users. A GCD might sound overkill but OTOH it could help think through >> the implications. > > I'm not really that much into it either, just thought some > standardization is welcome based on the current state of build-systems. > I'll see if it's easy to separate patches where I create the > %default-XXX-modules (rarely used but still cleaner in the file) to be > applicable before the %default-XXX-imported-modules ones, which would > probably require a GCD, and are not a requirement in my use-case. > >>> 3) some patches are about the core of 68315 (allowing monadic bag-build). > > Read "monadic gexp" here. -- Best regards, Nicolas Graves