[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
19/20: build-system: Use 'sexp->gexp' for plain sexps.
From: |
guix-commits |
Subject: |
19/20: build-system: Use 'sexp->gexp' for plain sexps. |
Date: |
Mon, 1 Mar 2021 09:32:12 -0500 (EST) |
civodul pushed a commit to branch wip-build-systems-gexp
in repository guix.
commit 737044307d1949a07a5ad68423ff0bf67daf5cc5
Author: Ludovic Courtès <ludo@gnu.org>
AuthorDate: Sun Feb 28 21:30:50 2021 +0100
build-system: Use 'sexp->gexp' for plain sexps.
This reduces memory allocations and list traversals during 'gexp->sexp',
'gexp-inputs', etc.
* guix/build-system/cargo.scm (cargo-build): Use 'sexp->gexp' for sexps
known to not contain file-like objects. Change default #:phases to a
symbol.
* guix/build-system/cmake.scm (cmake-build, cmake-cross-build): Likewise.
* guix/build-system/copy.scm (copy-build): Likewise.
* guix/build-system/font.scm (font-build): Likewise.
* guix/build-system/glib-or-gtk.scm (glib-or-gtk-build): Likewise.
* guix/build-system/gnu.scm (%strip-flags, %strip-directories): New
variables.
(gnu-build): Use them. Use 'sexp->gexp' where appropriate.
(gnu-cross-build): Likewise.
* guix/build-system/meson.scm (meson-build): Likewise.
* guix/build-system/perl.scm (perl-build): Likewise.
* guix/build-system/python.scm (python-build): Likewise.
* guix/build-system/ruby.scm (ruby-build): Likewise.
* guix/build-system/scons.scm (scons-build): Likewise.
* guix/build-system/texlive.scm (texlive-build): Likewise.
* guix/build-system/trivial.scm (trivial-build): Likewise.
* guix/build-system/waf.scm (waf-build): Likewise.
* guix/packages.scm (patch-and-repack): Use 'sexp->gexp' when SNIPPET is
a pair.
* guix/svn-download.scm (svn-multi-fetch): Use 'sexp->gexp' for
'svn-multi-reference-locations'.
---
guix/build-system/cargo.scm | 20 ++++++++-------
guix/build-system/cmake.scm | 25 ++++++++++--------
guix/build-system/copy.scm | 17 ++++++++-----
guix/build-system/font.scm | 12 +++++----
guix/build-system/glib-or-gtk.scm | 16 +++++++-----
guix/build-system/gnu.scm | 53 +++++++++++++++++++++++----------------
guix/build-system/meson.scm | 31 ++++++++++++-----------
guix/build-system/perl.scm | 13 ++++++----
guix/build-system/python.scm | 14 ++++++-----
guix/build-system/ruby.scm | 14 ++++++-----
guix/build-system/scons.scm | 20 ++++++++-------
guix/build-system/texlive.scm | 36 +++++++++++++-------------
guix/build-system/trivial.scm | 10 ++++++--
guix/build-system/waf.scm | 12 ++++-----
guix/packages.scm | 4 ++-
guix/svn-download.scm | 4 +--
16 files changed, 174 insertions(+), 127 deletions(-)
diff --git a/guix/build-system/cargo.scm b/guix/build-system/cargo.scm
index 3d0559d..747bf2a 100644
--- a/guix/build-system/cargo.scm
+++ b/guix/build-system/cargo.scm
@@ -81,8 +81,7 @@ to NAME and VERSION."
(cargo-test-flags ''("--release"))
(features ''())
(skip-build? #f)
- (phases '(@ (guix build cargo-build-system)
- %standard-phases))
+ (phases '%standard-phases)
(outputs '("out"))
(search-paths '())
(system (%current-system))
@@ -95,19 +94,21 @@ to NAME and VERSION."
(define builder
(with-imported-modules imported-modules
#~(begin
- (use-modules #$@modules)
+ (use-modules #$@(sexp->gexp modules))
(cargo-build #:name #$name
#:source #+source
#:system #$system
#:test-target #$test-target
#:vendor-dir #$vendor-dir
- #:cargo-build-flags #$cargo-build-flags
- #:cargo-test-flags #$cargo-test-flags
- #:features #$features
+ #:cargo-build-flags #$(sexp->gexp cargo-build-flags)
+ #:cargo-test-flags #$(sexp->gexp cargo-test-flags)
+ #:features #$(sexp->gexp features)
#:skip-build? #$skip-build?
#:tests? #$(and tests? (not skip-build?))
- #:phases #$phases
+ #:phases #$(if (pair? phases)
+ (sexp->gexp phases)
+ phases)
#:outputs (list #$@(map (lambda (name)
#~(cons #$name
(ungexp output name)))
@@ -115,8 +116,9 @@ to NAME and VERSION."
#:inputs (map (lambda (tuple)
(apply cons tuple))
'#$inputs)
- #:search-paths '#$(map search-path-specification->sexp
- search-paths)))))
+ #:search-paths '#$(sexp->gexp
+ (map search-path-specification->sexp
+ search-paths))))))
(gexp->derivation name builder
#:system system
diff --git a/guix/build-system/cmake.scm b/guix/build-system/cmake.scm
index 14b73cb..13fba6c 100644
--- a/guix/build-system/cmake.scm
+++ b/guix/build-system/cmake.scm
@@ -113,8 +113,7 @@
(strip-flags ''("--strip-debug"))
(strip-directories ''("lib" "lib64" "libexec"
"bin" "sbin"))
- (phases '(@ (guix build cmake-build-system)
- %standard-phases))
+ (phases '%standard-phases)
(system (%current-system))
(substitutable? #t)
(imported-modules %cmake-build-system-modules)
@@ -125,17 +124,22 @@ provides a 'CMakeLists.txt' file as its build system."
(define build
(with-imported-modules imported-modules
#~(begin
- (use-modules #$@modules)
+ (use-modules #$@(sexp->gexp modules))
#$(with-build-variables inputs outputs
#~(cmake-build #:source #+source
#:system #$system
#:outputs %outputs
#:inputs %build-inputs
- #:search-paths '#$(map
search-path-specification->sexp
- search-paths)
- #:phases #$phases
- #:configure-flags #$configure-flags
+ #:search-paths '(sexp->gexp
+ #$(map
search-path-specification->sexp
+ search-paths))
+ #:phases #$(if (pair? phases)
+ (sexp->gexp phases)
+ phases)
+ #:configure-flags #$(if (pair? configure-flags)
+ (sexp->gexp
configure-flags)
+ configure-flags)
#:make-flags #$make-flags
#:out-of-source? #$out-of-source?
#:build-type #$build-type
@@ -146,8 +150,8 @@ provides a 'CMakeLists.txt' file as its build system."
#:validate-runpath? #$validate-runpath?
#:patch-shebangs? #$patch-shebangs?
#:strip-binaries? #$strip-binaries?
- #:strip-flags #$strip-flags
- #:strip-directories #$strip-directories)))))
+ #:strip-flags #$(sexp->gexp strip-flags)
+ #:strip-directories #$(sexp->gexp
strip-directories))))))
(mlet %store-monad ((guile (package->derivation (or guile (default-guile))
system #:graft? #f)))
@@ -184,8 +188,7 @@ provides a 'CMakeLists.txt' file as its build system."
"--enable-deterministic-archives"))
(strip-directories ''("lib" "lib64" "libexec"
"bin" "sbin"))
- (phases '(@ (guix build cmake-build-system)
- %standard-phases))
+ (phases '%standard-phases)
(substitutable? #t)
(system (%current-system))
(build (nix-system->gnu-triplet system))
diff --git a/guix/build-system/copy.scm b/guix/build-system/copy.scm
index ee7091b..3e914da 100644
--- a/guix/build-system/copy.scm
+++ b/guix/build-system/copy.scm
@@ -108,16 +108,21 @@
#:system #$system
#:outputs %outputs
#:inputs %build-inputs
- #:install-plan #$install-plan
- #:search-paths '#$(map
search-path-specification->sexp
- search-paths)
- #:phases #$phases
+ #:install-plan #$(if (pair? install-plan)
+ (sexp->gexp install-plan)
+ install-plan)
+ #:search-paths '#$(sexp->gexp
+ (map
search-path-specification->sexp
+ search-paths))
+ #:phases #$(if (pair? phases)
+ (sexp->gexp phases)
+ phases)
#:out-of-source? #$out-of-source?
#:validate-runpath? #$validate-runpath?
#:patch-shebangs? #$patch-shebangs?
#:strip-binaries? #$strip-binaries?
- #:strip-flags #$strip-flags
- #:strip-directories #$strip-directories)))))
+ #:strip-flags #$(sexp->gexp strip-flags)
+ #:strip-directories #$(sexp->gexp
strip-directories))))))
(mlet %store-monad ((guile (package->derivation (or guile (default-guile))
system #:graft? #f)))
diff --git a/guix/build-system/font.scm b/guix/build-system/font.scm
index e7160ff..74dc80b 100644
--- a/guix/build-system/font.scm
+++ b/guix/build-system/font.scm
@@ -77,8 +77,7 @@
(tests? #t)
(test-target "test")
(configure-flags ''())
- (phases '(@ (guix build font-build-system)
- %standard-phases))
+ (phases '%standard-phases)
(outputs '("out"))
(search-paths '())
(system (%current-system))
@@ -99,10 +98,13 @@
#:system #$system
#:test-target #$test-target
#:tests? #$tests?
- #:phases #$phases
+ #:phases #$(if (pair? phases)
+ (sexp->gexp phases)
+ phases)
#:outputs %outputs
- #:search-paths '#$(map
search-path-specification->sexp
- search-paths)
+ #:search-paths '#$(sexp->gexp
+ (map
search-path-specification->sexp
+ search-paths))
#:inputs %build-inputs)))))
(mlet %store-monad ((guile (package->derivation (or guile (default-guile))
diff --git a/guix/build-system/glib-or-gtk.scm
b/guix/build-system/glib-or-gtk.scm
index 6c09b5a..2df49a2 100644
--- a/guix/build-system/glib-or-gtk.scm
+++ b/guix/build-system/glib-or-gtk.scm
@@ -137,16 +137,19 @@
(define build
(with-imported-modules imported-modules
#~(begin
- (use-modules #$@modules)
+ (use-modules #$@(sexp->gexp modules))
#$(with-build-variables inputs outputs
#~(glib-or-gtk-build #:source #+source
#:system #$system
#:outputs %outputs
#:inputs %build-inputs
- #:search-paths '#$(map
search-path-specification->sexp
- search-paths)
- #:phases #$phases
+ #:search-paths '#$(sexp->gexp
+ (map
search-path-specification->sexp
+ 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
@@ -159,8 +162,9 @@
#:validate-runpath? #$validate-runpath?
#:patch-shebangs? #$patch-shebangs?
#:strip-binaries? #$strip-binaries?
- #:strip-flags #$strip-flags
- #:strip-directories #$strip-directories)))))
+ #:strip-flags #$(sexp->gexp strip-flags)
+ #:strip-directories
+ #$(sexp->gexp strip-directories))))))
(mlet %store-monad ((guile (package->derivation (or guile (default-guile))
diff --git a/guix/build-system/gnu.scm b/guix/build-system/gnu.scm
index 613deb7..3fb1a24 100644
--- a/guix/build-system/gnu.scm
+++ b/guix/build-system/gnu.scm
@@ -330,6 +330,12 @@ standard packages used as implicit inputs of the GNU build
system."
;; Typical names of Autotools "bootstrap" scripts.
'("bootstrap" "bootstrap.sh" "autogen.sh"))
+(define %strip-flags
+ #~'("--strip-unneeded" "--enable-deterministic-archives"))
+
+(define %strip-directories
+ #~'("lib" "lib64" "libexec" "bin" "sbin"))
+
(define* (gnu-build name inputs
#:key
guile source
@@ -345,10 +351,8 @@ standard packages used as implicit inputs of the GNU build
system."
(parallel-tests? #t)
(patch-shebangs? #t)
(strip-binaries? #t)
- (strip-flags ''("--strip-unneeded"
- "--enable-deterministic-archives"))
- (strip-directories ''("lib" "lib64" "libexec"
- "bin" "sbin"))
+ (strip-flags %strip-flags)
+ (strip-directories %strip-directories)
(validate-runpath? #t)
(make-dynamic-linker-cache? #t)
(license-file-regexp %license-file-regexp)
@@ -381,7 +385,7 @@ are allowed to refer to."
(define builder
(with-imported-modules imported-modules
#~(begin
- (use-modules #$@modules)
+ (use-modules #$@(sexp->gexp modules))
#$(with-build-variables inputs outputs
#~(gnu-build #:source #+source
@@ -389,13 +393,20 @@ are allowed to refer to."
#:build #$build
#:outputs %outputs
#:inputs %build-inputs
- #:search-paths '#$(map
search-path-specification->sexp
- search-paths)
- #:phases #$phases
+ #:search-paths '#$(sexp->gexp
+ (map
search-path-specification->sexp
+ search-paths))
+ #:phases #$(if (pair? phases)
+ (sexp->gexp phases)
+ phases)
#:locale #$locale
- #:bootstrap-scripts #$bootstrap-scripts
- #:configure-flags #$configure-flags
- #:make-flags #$make-flags
+ #:bootstrap-scripts #$(sexp->gexp bootstrap-scripts)
+ #:configure-flags #$(if (pair? configure-flags)
+ (sexp->gexp configure-flags)
+ configure-flags)
+ #:make-flags #$(if (pair? make-flags)
+ (sexp->gexp make-flags)
+ make-flags)
#:out-of-source? #$out-of-source?
#:tests? #$tests?
#:test-target #$test-target
@@ -472,10 +483,8 @@ is one of `host' or `target'."
(parallel-build? #t) (parallel-tests? #t)
(patch-shebangs? #t)
(strip-binaries? #t)
- (strip-flags ''("--strip-unneeded"
- "--enable-deterministic-archives"))
- (strip-directories ''("lib" "lib64" "libexec"
- "bin" "sbin"))
+ (strip-flags %strip-flags)
+ (strip-directories %strip-directories)
(validate-runpath? #t)
;; We run 'ldconfig' to generate ld.so.cache and it
@@ -498,7 +507,7 @@ cross-built inputs, and NATIVE-INPUTS are inputs that run
on the build
platform."
(define builder
#~(begin
- (use-modules #$@modules)
+ (use-modules #$@(sexp->gexp modules))
(define %build-host-inputs
(map (lambda (tuple)
@@ -523,11 +532,13 @@ platform."
#:outputs %outputs
#:inputs %build-target-inputs
#:native-inputs %build-host-inputs
- #:search-paths '#$(map search-path-specification->sexp
- search-paths)
- #:native-search-paths '#$(map
- search-path-specification->sexp
- native-search-paths)
+ #: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 #$phases
#:locale #$locale
#:bootstrap-scripts #$bootstrap-scripts
diff --git a/guix/build-system/meson.scm b/guix/build-system/meson.scm
index c433e8e..faca2f4 100644
--- a/guix/build-system/meson.scm
+++ b/guix/build-system/meson.scm
@@ -107,8 +107,7 @@
"bin" "sbin"))
(elf-directories ''("lib" "lib64" "libexec"
"bin" "sbin"))
- (phases '(@ (guix build meson-build-system)
- %standard-phases))
+ (phases '%standard-phases)
(system (%current-system))
(imported-modules %meson-build-system-modules)
(modules '((guix build meson-build-system)
@@ -119,23 +118,27 @@
has a 'meson.build' file."
(define builder
(with-imported-modules imported-modules
- #~(let ((build-phases #$(if glib-or-gtk?
- phases
- #~(modify-phases #$phases
- (delete 'glib-or-gtk-compile-schemas)
- (delete 'glib-or-gtk-wrap)))))
+ #~(let ((build-phases #$(let ((phases (if (pair? phases)
+ (sexp->gexp phases)
+ phases)))
+ (if glib-or-gtk?
+ phases
+ #~(modify-phases #$phases
+ (delete 'glib-or-gtk-compile-schemas)
+ (delete 'glib-or-gtk-wrap))))))
- (use-modules #$@modules)
+ (use-modules #$@(sexp->gexp modules))
#$(with-build-variables inputs outputs
#~(meson-build #:source #+source
#:system #$system
#:outputs %outputs
#:inputs %build-inputs
- #:search-paths '#$(map
search-path-specification->sexp
- search-paths)
+ #:search-paths '#$(sexp->gexp
+ (map
search-path-specification->sexp
+ search-paths))
#:phases build-phases
- #:configure-flags #$configure-flags
+ #:configure-flags #$(sexp->gexp configure-flags)
#:build-type #$build-type
#:tests? #$tests?
#:test-target #$test-target
@@ -144,9 +147,9 @@ has a 'meson.build' file."
#:validate-runpath? #$validate-runpath?
#:patch-shebangs? #$patch-shebangs?
#:strip-binaries? #$strip-binaries?
- #:strip-flags #$strip-flags
- #:strip-directories #$strip-directories
- #:elf-directories #$elf-directories)))))
+ #:strip-flags #$(sexp->gexp strip-flags)
+ #:strip-directories #$(sexp->gexp
strip-directories)
+ #:elf-directories #$(sexp->gexp
elf-directories))))))
(mlet %store-monad ((guile (package->derivation (or guile (default-guile))
system #:graft? #f)))
diff --git a/guix/build-system/perl.scm b/guix/build-system/perl.scm
index 32045ef..db0a916 100644
--- a/guix/build-system/perl.scm
+++ b/guix/build-system/perl.scm
@@ -100,17 +100,20 @@ provides a `Makefile.PL' file as its build system."
(define build
(with-imported-modules imported-modules
#~(begin
- (use-modules #$@modules)
+ (use-modules #$@(sexp->gexp modules))
#$(with-build-variables inputs outputs
#~(perl-build #:name #$name
#:source #+source
- #:search-paths '#$(map
search-path-specification->sexp
- search-paths)
+ #:search-paths '#$(sexp->gexp
+ (map
search-path-specification->sexp
+ search-paths))
#:make-maker? #$make-maker?
#:make-maker-flags #$make-maker-flags
- #:module-build-flags #$module-build-flags
- #:phases #$phases
+ #:module-build-flags #$(sexp->gexp
module-build-flags)
+ #:phases #$(if (pair? phases)
+ (sexp->gexp phases)
+ phases)
#:system #$system
#:test-target "test"
#:tests? #$tests?
diff --git a/guix/build-system/python.scm b/guix/build-system/python.scm
index 10e3ebf..2652c12 100644
--- a/guix/build-system/python.scm
+++ b/guix/build-system/python.scm
@@ -177,8 +177,7 @@ pre-defined variants."
(test-target "test")
(use-setuptools? #t)
(configure-flags ''())
- (phases '(@ (guix build python-build-system)
- %standard-phases))
+ (phases '%standard-phases)
(outputs '("out"))
(search-paths '())
(system (%current-system))
@@ -191,7 +190,7 @@ provides a 'setup.py' file as its build system."
(define build
(with-imported-modules imported-modules
#~(begin
- (use-modules #$@modules)
+ (use-modules #$@(sexp->gexp modules))
#$(with-build-variables inputs outputs
#~(python-build #:name #$name
@@ -201,10 +200,13 @@ provides a 'setup.py' file as its build system."
#:system #$system
#:test-target #$test-target
#:tests? #$tests?
- #:phases #$phases
+ #:phases #$(if (pair? phases)
+ (sexp->gexp phases)
+ phases)
#:outputs %outputs
- #:search-paths '#$(map
search-path-specification->sexp
- search-paths)
+ #:search-paths '#$(sexp->gexp
+ (map
search-path-specification->sexp
+ search-paths))
#:inputs %build-inputs)))))
diff --git a/guix/build-system/ruby.scm b/guix/build-system/ruby.scm
index 8b02e0f..342daf7 100644
--- a/guix/build-system/ruby.scm
+++ b/guix/build-system/ruby.scm
@@ -80,8 +80,7 @@ NAME and VERSION."
(gem-flags ''())
(test-target "test")
(tests? #t)
- (phases '(@ (guix build ruby-build-system)
- %standard-phases))
+ (phases '%standard-phases)
(outputs '("out"))
(search-paths '())
(system (%current-system))
@@ -92,7 +91,7 @@ NAME and VERSION."
"Build SOURCE using RUBY and INPUTS."
(define build
#~(begin
- (use-modules #$@modules)
+ (use-modules #$@(sexp->gexp modules))
#$(with-build-variables inputs outputs
#~(ruby-build #:name #$name
@@ -101,10 +100,13 @@ NAME and VERSION."
#:gem-flags #$gem-flags
#:test-target #$test-target
#:tests? #$tests?
- #:phases #$phases
+ #:phases #$(if (pair? phases)
+ (sexp->gexp phases)
+ phases)
#:outputs %outputs
- #:search-paths '#$(map
search-path-specification->sexp
- search-paths)
+ #:search-paths '#$(sexp->gexp
+ (map
search-path-specification->sexp
+ search-paths))
#:inputs %build-inputs))))
(mlet %store-monad ((guile (package->derivation (or guile (default-guile))
diff --git a/guix/build-system/scons.scm b/guix/build-system/scons.scm
index 7e4a540..8c7eeec 100644
--- a/guix/build-system/scons.scm
+++ b/guix/build-system/scons.scm
@@ -79,11 +79,10 @@
(source #f)
(tests? #t)
(scons-flags ''())
- (build-targets ''())
+ (build-targets #~'())
(test-target "test")
- (install-targets ''("install"))
- (phases '(@ (guix build scons-build-system)
- %standard-phases))
+ (install-targets #~'("install"))
+ (phases '%standard-phases)
(outputs '("out"))
(search-paths '())
(system (%current-system))
@@ -96,17 +95,19 @@ provides a 'SConstruct' file as its build system."
(define builder
(with-imported-modules imported-modules
#~(begin
- (use-modules #$@modules)
+ (use-modules #$@(sexp->gexp modules))
(scons-build #:name ,name
#:source #+source
- #:scons-flags #$scons-flags
+ #:scons-flags #$(sexp->gexp scons-flags)
#:system #$system
#:build-targets #$build-targets
#:test-target #$test-target
#:tests? #$tests?
#:install-targets #$install-targets
- #:phases #$phases
+ #:phases #$(if (pair? phases)
+ (sexp->gexp phases)
+ phases)
#:outputs (list #$@(map (lambda (name)
#~(cons #$name
(ungexp output name)))
@@ -114,8 +115,9 @@ provides a 'SConstruct' file as its build system."
#:inputs (map (lambda (tuple)
(apply cons tuple))
'#$inputs)
- #:search-paths '#$(map search-path-specification->sexp
- search-paths)))))
+ #:search-paths '#$(sexp->gexp
+ (map search-path-specification->sexp
+ search-paths))))))
(gexp->derivation name builder
#:system system
diff --git a/guix/build-system/texlive.scm b/guix/build-system/texlive.scm
index b98b1f1..ad74d4e 100644
--- a/guix/build-system/texlive.scm
+++ b/guix/build-system/texlive.scm
@@ -144,24 +144,24 @@ level package ID."
(define builder
(with-imported-modules imported-modules
#~(begin
- (use-modules #$@modules)
- (texlive-build #:name #$name
- #:source #+source
- #:tex-directory #$tex-directory
- #:build-targets #$build-targets
- #:tex-format #$tex-format
- #:system #$system
- #:tests? #$tests?
- #:phases #$phases
- #:outputs (list #$@(map (lambda (name)
- #~(cons #$name
- (ungexp output
name)))
- outputs))
- #:inputs (map (lambda (tuple)
- (apply cons tuple))
- '#$inputs)
- #:search-paths '#$(map search-path-specification->sexp
- search-paths)))))
+ (use-modules #$@(sexp->gexp modules))
+
+ #$(with-build-variables inputs outputs
+ #~(texlive-build #:name #$name
+ #:source #+source
+ #:tex-directory #$tex-directory
+ #:build-targets #$build-targets
+ #:tex-format #$tex-format
+ #:system #$system
+ #:tests? #$tests?
+ #:phases #$(if (pair? phases)
+ (sexp->gexp phases)
+ phases)
+ #:outputs %outputs
+ #:inputs %build-inputs
+ #:search-paths '#$(sexp->gexp
+ (map
search-path-specification->sexp
+ search-paths)))))))
(gexp->derivation name builder
#:system system
diff --git a/guix/build-system/trivial.scm b/guix/build-system/trivial.scm
index 0f89524..73d452a 100644
--- a/guix/build-system/trivial.scm
+++ b/guix/build-system/trivial.scm
@@ -54,7 +54,10 @@
"Run build expression BUILDER, an expression, for SYSTEM. SOURCE is
ignored."
(mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
+ system #:graft? #f))
+ (builder -> (if (pair? builder)
+ (sexp->gexp builder)
+ builder)))
(gexp->derivation name (with-build-variables inputs outputs builder)
#:system system
#:target #f
@@ -72,7 +75,10 @@ ignored."
"Run build expression BUILDER, an expression, for SYSTEM. SOURCE is
ignored."
(mlet %store-monad ((guile (package->derivation (or guile (default-guile))
- system #:graft? #f)))
+ system #:graft? #f))
+ (builder -> (if (pair? builder)
+ (sexp->gexp builder)
+ builder)))
(gexp->derivation name (with-build-variables
(append build-inputs target-inputs)
outputs
diff --git a/guix/build-system/waf.scm b/guix/build-system/waf.scm
index db604e6..e8cd552 100644
--- a/guix/build-system/waf.scm
+++ b/guix/build-system/waf.scm
@@ -77,9 +77,8 @@
#:key source
(tests? #t)
(test-target "check")
- (configure-flags ''())
- (phases '(@ (guix build waf-build-system)
- %standard-phases))
+ (configure-flags #~'())
+ (phases '%standard-phases)
(outputs '("out"))
(search-paths '())
(system (%current-system))
@@ -91,7 +90,7 @@
as its build system."
(define build
#~(begin
- (use-modules #$@modules)
+ (use-modules #$@(sexp->gexp modules))
#$(with-build-variables inputs outputs
#~(waf-build #:name #$name
@@ -102,8 +101,9 @@ as its build system."
#:tests? #$tests?
#:phases #$phases
#:outputs %outputs
- #:search-paths '#$(map search-path-specification->sexp
- search-paths)
+ #:search-paths '#$(sexp->gexp
+ (map
search-path-specification->sexp
+ search-paths))
#:inputs %build-inputs))))
(mlet %store-monad ((guile (package->derivation (or guile (default-guile))
diff --git a/guix/packages.scm b/guix/packages.scm
index 9b0fc9b..e182e0b 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -762,7 +762,9 @@ specifies modules in scope when evaluating SNIPPET."
module
(map resolve-interface '#+modules))
((@ (system base compile) compile)
- '#+snippet
+ '#+(if (pair? snippet)
+ (sexp->gexp snippet)
+ snippet)
#:to 'value
#:opts %auto-compilation-options
#:env module))
diff --git a/guix/svn-download.scm b/guix/svn-download.scm
index b961512..28ad499 100644
--- a/guix/svn-download.scm
+++ b/guix/svn-download.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2015, 2016, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2015, 2016, 2019, 2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Sree Harsha Totakura <sreeharsha@totakura.in>
;;; Copyright © 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
;;;
@@ -134,7 +134,7 @@ HASH-ALGO (a symbol). Use NAME as the file name, or a
generic name if #f."
#$(svn-multi-reference-recursive? ref)
#:user-name #$(svn-multi-reference-user-name ref)
#:password #$(svn-multi-reference-password ref)))
- '#$(svn-multi-reference-locations ref)))))
+ '#$(sexp->gexp (svn-multi-reference-locations ref))))))
(mlet %store-monad ((guile (package->derivation guile system)))
(gexp->derivation (or name "svn-checkout") build
- 16/20: gexp: Optimize 'with-build-variables'., (continued)
- 16/20: gexp: Optimize 'with-build-variables'., guix-commits, 2021/03/01
- 17/20: packages: Default origin 'patch-flags' is a gexp., guix-commits, 2021/03/01
- 18/20: gexp: Add 'sexp->gexp'., guix-commits, 2021/03/01
- 08/20: gexp: Keep 'lower-inputs' private., guix-commits, 2021/03/01
- 10/20: store: Object cache profiling shows the number of entries., guix-commits, 2021/03/01
- 11/20: gexp: Reduce allocations while traversing lists., guix-commits, 2021/03/01
- 06/20: gexp: 'gexp-inputs' returns a list of <gexp-input> records., guix-commits, 2021/03/01
- 13/20: store: Micro-optimize object cache lookup., guix-commits, 2021/03/01
- 14/20: gexp: Reduce allocations in 'gexp-attribute'., guix-commits, 2021/03/01
- 20/20: build-system: Use 'input-tuples->gexp' and 'outputs->gexp'., guix-commits, 2021/03/01
- 19/20: build-system: Use 'sexp->gexp' for plain sexps.,
guix-commits <=