summaryrefslogtreecommitdiff
path: root/guix
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2015-08-30 22:52:49 +0200
committerLudovic Courtès <ludo@gnu.org>2015-09-02 11:24:57 +0200
commitdf2d51f025fc7d106f837da3a2426bb7eddc76a9 (patch)
treee3939227128f5044903b7dca5feb23ebf0bfbf00 /guix
parent09cc7729d09ab6f7c36cace432e723663462118b (diff)
gexp: Remove duplicate 'mkdir-p' definition.
* guix/gexp.scm (%mkdir-p-definition): Remove. (%utils-module): New variable. (imported-files, compiled-modules): Have gexp load %UTILS-MODULE instead of using %MKDIR-P-DEFINITION.
Diffstat (limited to 'guix')
-rw-r--r--guix/gexp.scm39
1 files changed, 8 insertions, 31 deletions
diff --git a/guix/gexp.scm b/guix/gexp.scm
index 63af40aed9..de49fef088 100644
--- a/guix/gexp.scm
+++ b/guix/gexp.scm
@@ -717,32 +717,11 @@ and in the current monad setting (system type, etc.)"
;;; Module handling.
;;;
-(define %mkdir-p-definition
- ;; The code for 'mkdir-p' is copied from (guix build utils). We use it in
- ;; derivations that cannot use the #:modules argument of 'gexp->derivation'
- ;; precisely because they implement that functionality.
- (gexp
- (define (mkdir-p dir)
- (define absolute?
- (string-prefix? "/" dir))
-
- (define not-slash
- (char-set-complement (char-set #\/)))
-
- (let loop ((components (string-tokenize dir not-slash))
- (root (if absolute? "" ".")))
- (match components
- ((head tail ...)
- (let ((path (string-append root "/" head)))
- (catch 'system-error
- (lambda ()
- (mkdir path)
- (loop tail path))
- (lambda args
- (if (= EEXIST (system-error-errno args))
- (loop tail path)
- (apply throw args))))))
- (() #t))))))
+(define %utils-module
+ ;; This file provides 'mkdir-p', needed to implement 'imported-files' and
+ ;; other primitives below.
+ (local-file (search-path %load-path "guix/build/utils.scm")
+ "build-utils.scm"))
(define* (imported-files files
#:key (name "file-import")
@@ -763,10 +742,9 @@ system, imported, and appears under FINAL-PATH in the resulting store path."
(define build
(gexp
(begin
+ (primitive-load (ungexp %utils-module)) ;for 'mkdir-p'
(use-modules (ice-9 match))
- (ungexp %mkdir-p-definition)
-
(mkdir (ungexp output)) (chdir (ungexp output))
(for-each (match-lambda
((final-path store-path)
@@ -822,13 +800,12 @@ they can refer to each other."
(define build
(gexp
(begin
+ (primitive-load (ungexp %utils-module)) ;for 'mkdir-p'
+
(use-modules (ice-9 ftw)
- (ice-9 match)
(srfi srfi-26)
(system base compile))
- (ungexp %mkdir-p-definition)
-
(define (regular? file)
(not (member file '("." ".."))))