build/gnu: Only make source checkout files writable.

This is a followup commit to 6129ebddbd.

It was suggested by Ludovic in #guix that it's probably safer to leave files
extracted from a tarball alone.  While at it, guard against possible
exceptions that can happen in the presence of dangling symbolic links, for
example.

* guix/build/gnu-build-system.scm (unpack): Wrap the make-file-writable call
in a false-if-exception handler.  Move the for-each loop under the
file-is-directory? cond branch.
This commit is contained in:
Maxim Cournoyer 2021-02-04 16:15:21 -05:00
parent 3299530c43
commit 39e67ed697
No known key found for this signature in database
GPG key ID: 1260E46482E63562

View file

@ -156,7 +156,11 @@ (define* (unpack #:key source #:allow-other-keys)
;; Preserve timestamps (set to the Epoch) on the copied tree so that
;; things work deterministically.
(copy-recursively source "."
#:keep-mtime? #t))
#:keep-mtime? #t)
;; Make the source checkout files writable, for convenience.
(for-each (lambda (f)
(false-if-exception (make-file-writable f)))
(find-files ".")))
(begin
(cond
((string-suffix? ".zip" source)
@ -170,8 +174,7 @@ (define* (unpack #:key source #:allow-other-keys)
(when command
(invoke command "--decompress" name)))))
;; Attempt to change into child directory.
(and=> (first-subdirectory ".") chdir)))
(for-each make-file-writable (find-files ".")))
(and=> (first-subdirectory ".") chdir))))
(define* (bootstrap #:key bootstrap-scripts
#:allow-other-keys)