build-system/gnu: Gracefully handle dangling symlinks.

Fixes <http://bugs.gnu.org/20081>.
Reported by Tomáš Čech <tcech@suse.cz>.

* guix/build/gnu-build-system.scm (patch-source-shebangs): Remove files
  that don't pass 'file-exists?'.
  (patch-generated-file-shebangs): Likewise.
This commit is contained in:
Ludovic Courtès 2015-04-23 11:59:35 +02:00
parent cd91504df2
commit cb85eb5e65
1 changed files with 7 additions and 3 deletions

View File

@ -164,7 +164,10 @@ 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 file-is-directory? (find-files "." ".*"))))
(remove (lambda (file)
(or (not (file-exists? file)) ;dangling symlink
(file-is-directory? file)))
(find-files "."))))
(define (patch-generated-file-shebangs . rest)
"Patch shebangs in generated files, including `SHELL' variables in
@ -173,9 +176,10 @@ makefiles."
;; `configure'.
(for-each patch-shebang
(filter (lambda (file)
(and (executable-file? file)
(and (file-exists? file)
(executable-file? file)
(not (file-is-directory? file))))
(find-files "." ".*")))
(find-files ".")))
;; Patch `SHELL' in generated makefiles.
(for-each patch-makefile-SHELL (find-files "." "^(GNU)?[mM]akefile$")))