summaryrefslogtreecommitdiff
path: root/guix/gexp.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2015-09-26 15:14:53 +0200
committerLudovic Courtès <ludo@gnu.org>2015-09-26 15:14:53 +0200
commite1556533d3e57950417b2e35a68e95c65fee5042 (patch)
tree41d67b065c7828e164af83254fb447849d9e880d /guix/gexp.scm
parent5d8d8f3b0a07edb3bd435830b076749f906537d8 (diff)
parent92f1cefb74f6092c0c70f93140824ab806086272 (diff)
downloadguix-patches-e1556533d3e57950417b2e35a68e95c65fee5042.tar
guix-patches-e1556533d3e57950417b2e35a68e95c65fee5042.tar.gz
Merge branch 'core-updates'
Diffstat (limited to 'guix/gexp.scm')
-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 '("." ".."))))