aboutsummaryrefslogtreecommitdiff
path: root/guix
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2016-09-12 21:51:25 +0200
committerLudovic Courtès <ludo@gnu.org>2016-09-12 21:51:25 +0200
commit5c9632c75afd57f2ee2d9ee7467ba9abcd2cb292 (patch)
tree59b0e5f0535469836e53a8e8de8629ea98c24cc2 /guix
parente7e43727ce7b3426a31b2f50b035a5b0aba61d52 (diff)
downloadgnu-guix-5c9632c75afd57f2ee2d9ee7467ba9abcd2cb292.tar
gnu-guix-5c9632c75afd57f2ee2d9ee7467ba9abcd2cb292.tar.gz
build-system/gnu: Do not patch symlinks in the source.
This is a followup to 13a9feb5b64fd819eaed38a17da0284bbe2b8d9. * guix/build/gnu-build-system.scm (patch-source-shebangs): Remove call to 'remove'. Pass a second argument to 'find-files' to filter out symlinks; pass #:stat lstat. (patch-generated-file-shebangs): Likewise, and also filter out non-executable files.
Diffstat (limited to 'guix')
-rw-r--r--guix/build/gnu-build-system.scm23
1 files changed, 12 insertions, 11 deletions
diff --git a/guix/build/gnu-build-system.scm b/guix/build/gnu-build-system.scm
index ab97c92a2b..93ddc9abc8 100644
--- a/guix/build/gnu-build-system.scm
+++ b/guix/build/gnu-build-system.scm
@@ -172,22 +172,23 @@ files such as `.in' templates. Most scripts honor $SHELL and
$CONFIG_SHELL, but some don't, such as `mkinstalldirs' or Automake's
`missing' script."
(for-each patch-shebang
- (remove (lambda (file)
- (or (not (file-exists? file)) ;dangling symlink
- (file-is-directory? file)))
- (find-files "."))))
+ (find-files "."
+ (lambda (file stat)
+ ;; Filter out symlinks.
+ (eq? 'regular (stat:type stat)))
+ #:stat lstat)))
(define (patch-generated-file-shebangs . rest)
"Patch shebangs in generated files, including `SHELL' variables in
makefiles."
- ;; Patch executable files, some of which might have been generated by
- ;; `configure'.
+ ;; Patch executable regular files, some of which might have been generated
+ ;; by `configure'.
(for-each patch-shebang
- (filter (lambda (file)
- (and (file-exists? file)
- (executable-file? file)
- (not (file-is-directory? file))))
- (find-files ".")))
+ (find-files "."
+ (lambda (file stat)
+ (and (eq? 'regular (stat:type stat))
+ (not (zero? (logand (stat:mode stat) #o100)))))
+ #:stat lstat))
;; Patch `SHELL' in generated makefiles.
(for-each patch-makefile-SHELL (find-files "." "^(GNU)?[mM]akefile$")))