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:
		
							parent
							
								
									cd91504df2
								
							
						
					
					
						commit
						cb85eb5e65
					
				
					 1 changed files with 7 additions and 3 deletions
				
			
		|  | @ -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$"))) | ||||
|  |  | |||
		Reference in a new issue