utils: Add `mkdir-p'; use it.

* guix/build/utils.scm (mkdir-p): New procedure.

* distro/packages/base.scm (gnu-make-boot0, gcc-boot0-wrapped,
  ld-wrapper-boot3, %static-binaries, %guile-static-stripped): Use it.
* distro/packages/typesetting.scm (lout): Likewise.
This commit is contained in:
Ludovic Courtès 2012-10-17 22:51:08 +02:00
parent 7172116ca5
commit 7da95264f1
3 changed files with 34 additions and 17 deletions

View File

@ -1481,8 +1481,7 @@ previous value of the keyword argument."
'install (lambda* (#:key outputs #:allow-other-keys) 'install (lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out")) (let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin"))) (bin (string-append out "/bin")))
(mkdir out) (mkdir-p bin)
(mkdir bin)
(copy-file "make" (copy-file "make"
(string-append bin "/make")))) (string-append bin "/make"))))
%standard-phases)))) %standard-phases))))
@ -1709,7 +1708,7 @@ identifier SYSTEM."
(out (assoc-ref %outputs "out")) (out (assoc-ref %outputs "out"))
(bindir (string-append out "/bin")) (bindir (string-append out "/bin"))
(triplet ,(boot-triplet system))) (triplet ,(boot-triplet system)))
(mkdir out) (mkdir bindir) (mkdir-p bindir)
(with-directory-excursion bindir (with-directory-excursion bindir
(for-each (lambda (tool) (for-each (lambda (tool)
(symlink (string-append binutils "/bin/" (symlink (string-append binutils "/bin/"
@ -1807,7 +1806,7 @@ exec ~a/bin/~a-gcc -B~a/lib -Wl,-dynamic-linker -Wl,~a/lib/~a \"$@\"~%"
(assoc-ref %build-inputs "binutils") (assoc-ref %build-inputs "binutils")
out) out)
(mkdir out) (mkdir bin) (mkdir-p bin)
(copy-file (assoc-ref %build-inputs "wrapper") ld) (copy-file (assoc-ref %build-inputs "wrapper") ld)
(substitute* ld (substitute* ld
(("@GUILE@") (("@GUILE@")
@ -2020,7 +2019,7 @@ store.")
(let* ((out (assoc-ref %outputs "out")) (let* ((out (assoc-ref %outputs "out"))
(bin (string-append out "/bin"))) (bin (string-append out "/bin")))
(mkdir out) (mkdir bin) (mkdir-p bin)
;; Copy Coreutils binaries. ;; Copy Coreutils binaries.
(let* ((coreutils (assoc-ref %build-inputs "coreutils")) (let* ((coreutils (assoc-ref %build-inputs "coreutils"))
@ -2127,17 +2126,11 @@ store.")
(let ((in (assoc-ref %build-inputs "guile")) (let ((in (assoc-ref %build-inputs "guile"))
(out (assoc-ref %outputs "out"))) (out (assoc-ref %outputs "out")))
(mkdir out) (mkdir-p (string-append out "/share/guile/2.0"))
(mkdir (string-append out "/share"))
(mkdir (string-append out "/share/guile"))
(mkdir (string-append out "/share/guile/2.0"))
(copy-recursively (string-append in "/share/guile/2.0") (copy-recursively (string-append in "/share/guile/2.0")
(string-append out "/share/guile/2.0")) (string-append out "/share/guile/2.0"))
(mkdir (string-append out "/lib")) (mkdir-p (string-append out "/lib/guile/2.0/ccache"))
(mkdir (string-append out "/lib/guile"))
(mkdir (string-append out "/lib/guile/2.0"))
(mkdir (string-append out "/lib/guile/2.0/ccache"))
(copy-recursively (string-append in "/lib/guile/2.0/ccache") (copy-recursively (string-append in "/lib/guile/2.0/ccache")
(string-append out "/lib/guile/2.0/ccache")) (string-append out "/lib/guile/2.0/ccache"))

View File

@ -46,12 +46,10 @@
(("^MANDIR[[:blank:]]*=.*$") (("^MANDIR[[:blank:]]*=.*$")
(string-append "MANDIR = " out "/man\n"))) (string-append "MANDIR = " out "/man\n")))
(mkdir out) (mkdir out)
(mkdir (string-append out "/bin")) ; TODO: use `mkdir-p' (mkdir (string-append out "/bin"))
(mkdir (string-append out "/lib")) (mkdir (string-append out "/lib"))
(mkdir (string-append out "/man")) (mkdir (string-append out "/man"))
(mkdir doc) (mkdir-p (string-append doc "/doc/lout")))))
(mkdir (string-append doc "/doc"))
(mkdir (string-append doc "/doc/lout")))))
(install-man-phase (install-man-phase
'(lambda* (#:key outputs #:allow-other-keys) '(lambda* (#:key outputs #:allow-other-keys)
(zero? (system* "make" "installman")))) (zero? (system* "make" "installman"))))

View File

@ -26,6 +26,7 @@
#:use-module (rnrs io ports) #:use-module (rnrs io ports)
#:export (directory-exists? #:export (directory-exists?
with-directory-excursion with-directory-excursion
mkdir-p
set-path-environment-variable set-path-environment-variable
search-path-as-string->list search-path-as-string->list
list->search-path-as-string list->search-path-as-string
@ -62,6 +63,31 @@
(lambda () (lambda ()
(chdir init))))) (chdir init)))))
(define (mkdir-p dir)
"Create directory DIR and all its ancestors."
(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))))
;;; ;;;
;;; Search paths. ;;; Search paths.