[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
08/17: gexp: Add 'sexp->gexp'.
From: |
guix-commits |
Subject: |
08/17: gexp: Add 'sexp->gexp'. |
Date: |
Mon, 22 Mar 2021 18:02:38 -0400 (EDT) |
civodul pushed a commit to branch wip-build-systems-gexp
in repository guix.
commit 57be9e0e1b06a915d9c63a270d3bc96f8aa5fd0d
Author: Ludovic Courtès <ludo@gnu.org>
AuthorDate: Sun Feb 28 21:29:53 2021 +0100
gexp: Add 'sexp->gexp'.
* guix/gexp.scm (sexp->gexp): New procedure.
* tests/gexp.scm ("sexp->gexp"): New test.
---
guix/gexp.scm | 11 +++++++++++
tests/gexp.scm | 7 +++++++
2 files changed, 18 insertions(+)
diff --git a/guix/gexp.scm b/guix/gexp.scm
index a4e6590..526a21f 100644
--- a/guix/gexp.scm
+++ b/guix/gexp.scm
@@ -39,6 +39,7 @@
#:use-module (ice-9 match)
#:export (gexp
gexp?
+ sexp->gexp
with-imported-modules
with-extensions
let-system
@@ -1844,6 +1845,16 @@ of name/gexp-input tuples, and OUTPUTS, a list of
strings."
(ungexp body))))
+(define (sexp->gexp sexp)
+ "Turn SEXP into a gexp without any references.
+
+Using this is a way for the caller to tell that SEXP doesn't need to be
+scanned for file-like objects, thereby reducing processing costs. This is
+particularly useful if SEXP is a long list or a deep tree."
+ (make-gexp '() '() '()
+ (lambda () sexp)
+ (source-properties sexp)))
+
(define* (gexp->script name exp
#:key (guile (default-guile))
(module-path %load-path)
diff --git a/tests/gexp.scm b/tests/gexp.scm
index 834e78b..64c3107 100644
--- a/tests/gexp.scm
+++ b/tests/gexp.scm
@@ -96,6 +96,13 @@
(null? (gexp-inputs exp))
(gexp->sexp* exp))))
+(test-equal "sexp->gexp"
+ '(a b (c d) e)
+ (let ((exp (sexp->gexp '(a b (c d) e))))
+ (and (gexp? exp)
+ (null? (gexp-inputs exp))
+ (gexp->sexp* exp))))
+
(test-equal "unquote"
'(display `(foo ,(+ 2 3)))
(let ((exp (gexp (display `(foo ,(+ 2 3))))))
- branch wip-build-systems-gexp created (now 082df93), guix-commits, 2021/03/22
- 01/17: gexp: Add 'with-build-variables'., guix-commits, 2021/03/22
- 03/17: build-system: Rewrite using gexps., guix-commits, 2021/03/22
- 04/17: packages: Turn 'bag->derivation' into a monadic procedure., guix-commits, 2021/03/22
- 05/17: packages: Simplify patch instantiation., guix-commits, 2021/03/22
- 02/17: gexp: Optimize 'with-build-variables'., guix-commits, 2021/03/22
- 07/17: packages: Default origin 'patch-flags' is a gexp., guix-commits, 2021/03/22
- 12/17: packages: 'expand-input' accepts any file-like object., guix-commits, 2021/03/22
- 13/17: packages: Call 'bag-grafts' only on the tip of the package graph., guix-commits, 2021/03/22
- 06/17: packages: Core procedures are written in monadic style., guix-commits, 2021/03/22
- 08/17: gexp: Add 'sexp->gexp'.,
guix-commits <=
- 16/17: gexp: Do not add derivations to the object cache., guix-commits, 2021/03/22
- 17/17: gnu: docbook-xsl: Move 'use-modules' form to the top level., guix-commits, 2021/03/22
- 10/17: build-system: Use 'input-tuples->gexp' and 'outputs->gexp'., guix-commits, 2021/03/22
- 09/17: build-system: Use 'sexp->gexp' for plain sexps., guix-commits, 2021/03/22
- 11/17: packages: '%standard-patch-inputs' is not influenced by '%current-target-system'., guix-commits, 2021/03/22
- 15/17: gexp: Allowed/disallowed references and graphs never refer to grafted inputs., guix-commits, 2021/03/22
- 14/17: grafts: Add 'without-grafting'., guix-commits, 2021/03/22