[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
03/07: build-system/asdf: Handle all asdf dependency specifications.
From: |
Ludovic Courtès |
Subject: |
03/07: build-system/asdf: Handle all asdf dependency specifications. |
Date: |
Wed, 19 Sep 2018 12:25:38 -0400 (EDT) |
civodul pushed a commit to branch master
in repository guix.
commit 7b6b7cdcc5d50cb25c140145b30028c5569c62af
Author: Andy Patterson <address@hidden>
Date: Thu Aug 30 01:36:28 2018 -0400
build-system/asdf: Handle all asdf dependency specifications.
Add support for dependencies of the form (:version <name> <version>),
(:feature <feature> <dependency-specification>) and (:require
<module-name>),
as defined by
<https://common-lisp.net/project/asdf/asdf.html#The-defsystem-grammar>.
* guix/build/lisp-utils.scm (normalize-dependency): New variable.
(make-asd-file)[dependencies]: Use it to generate dependencies with
normalized
names.
[dependency-name]: New variable.
[registry]: Use it to flatten the normalized dependencies.
Signed-off-by: Ludovic Courtès <address@hidden>
---
guix/build/lisp-utils.scm | 26 ++++++++++++++++++++++++--
1 file changed, 24 insertions(+), 2 deletions(-)
diff --git a/guix/build/lisp-utils.scm b/guix/build/lisp-utils.scm
index 21cb620..3a7afab 100644
--- a/guix/build/lisp-utils.scm
+++ b/guix/build/lisp-utils.scm
@@ -81,6 +81,20 @@
"Replace invalid characters in STR with a hyphen."
(string-join (string-tokenize str valid-char-set) "-"))
+(define (normalize-dependency dependency)
+ "Normalize the name of DEPENDENCY. Handles dependency definitions of the
+dependency-def form described by
+<https://common-lisp.net/project/asdf/asdf.html#The-defsystem-grammar>."
+ (match dependency
+ ((':version name rest ...)
+ `(:version ,(normalize-string name) ,@rest))
+ ((':feature feature-specification dependency-specification)
+ `(:feature
+ ,feature-specification
+ ,(normalize-dependency dependency-specification)))
+ ((? string? name) (normalize-string name))
+ (require-specification require-specification)))
+
(define (inputs->asd-file-map inputs)
"Produce a hash table of the form (system . asd-file), where system is the
name of an ASD system, and asd-file is the full path to its definition."
@@ -273,16 +287,24 @@ system to find its dependencies, as described by
GENERATE-DEPENDENCY-LINKS."
(system-dependencies system system-asd-file)))
(if (eq? 'NIL deps)
'()
- (map normalize-string deps))))
+ (map normalize-dependency deps))))
(define lisp-input-map
(inputs->asd-file-map inputs))
+ (define dependency-name
+ (match-lambda
+ ((':version name _ ...) name)
+ ((':feature _ dependency-specification)
+ (dependency-name dependency-specification))
+ ((? string? name) name)
+ (_ #f)))
+
(define registry
(filter-map hash-get-handle
(make-list (length dependencies)
lisp-input-map)
- dependencies))
+ (map dependency-name dependencies)))
(call-with-output-file asd-file
(lambda (port)
- branch master updated (4d67925 -> 1d98b44), Ludovic Courtès, 2018/09/19
- 01/07: services: udev: Simplify 'start' method., Ludovic Courtès, 2018/09/19
- 03/07: build-system/asdf: Handle all asdf dependency specifications.,
Ludovic Courtès <=
- 02/07: services: networking: Remove unbound variable reference in 'stop'., Ludovic Courtès, 2018/09/19
- 04/07: build-system/asdf: Log lisp system invocations., Ludovic Courtès, 2018/09/19
- 05/07: build-system/asdf: Use invoke., Ludovic Courtès, 2018/09/19
- 06/07: build-system/asdf: Adopt asdf conventions., Ludovic Courtès, 2018/09/19
- 07/07: gnu: sbcl-slynk: Fix the build., Ludovic Courtès, 2018/09/19