guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

02/04: build-system/gnu: Gracefully handle dangling symlinks.


From: Ludovic Courtès
Subject: 02/04: build-system/gnu: Gracefully handle dangling symlinks.
Date: Thu, 23 Apr 2015 17:22:31 +0000

civodul pushed a commit to branch core-updates
in repository guix.

commit cb85eb5e6569378d444b45cf209324e38f6ec0f4
Author: Ludovic Courtès <address@hidden>
Date:   Thu Apr 23 11:59:35 2015 +0200

    build-system/gnu: Gracefully handle dangling symlinks.
    
    Fixes <http://bugs.gnu.org/20081>.
    Reported by Tomáš Čech <address@hidden>.
    
    * guix/build/gnu-build-system.scm (patch-source-shebangs): Remove files
      that don't pass 'file-exists?'.
      (patch-generated-file-shebangs): Likewise.
---
 guix/build/gnu-build-system.scm |   10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/guix/build/gnu-build-system.scm b/guix/build/gnu-build-system.scm
index c60f8ba..0042245 100644
--- a/guix/build/gnu-build-system.scm
+++ b/guix/build/gnu-build-system.scm
@@ -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$")))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]