diff options
author | Ludovic Courtès <ludo@gnu.org> | 2015-09-26 15:14:53 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2015-09-26 15:14:53 +0200 |
commit | e1556533d3e57950417b2e35a68e95c65fee5042 (patch) | |
tree | 41d67b065c7828e164af83254fb447849d9e880d /guix/gexp.scm | |
parent | 5d8d8f3b0a07edb3bd435830b076749f906537d8 (diff) | |
parent | 92f1cefb74f6092c0c70f93140824ab806086272 (diff) | |
download | guix-patches-e1556533d3e57950417b2e35a68e95c65fee5042.tar guix-patches-e1556533d3e57950417b2e35a68e95c65fee5042.tar.gz |
Merge branch 'core-updates'
Diffstat (limited to 'guix/gexp.scm')
-rw-r--r-- | guix/gexp.scm | 39 |
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 '("." "..")))) |