diff options
author | Ludovic Courtès <ludo@gnu.org> | 2016-09-01 23:48:08 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2016-09-01 23:48:08 +0200 |
commit | ff43e353a1920a47a763024cd0682f2dc805964b (patch) | |
tree | ec0b1ff448799924b4b23b97d8a7cb6bd23c825c | |
parent | 73dc727ec8d2994aed2f011f89dbd89591ff35a8 (diff) | |
download | guix-ff43e353a1920a47a763024cd0682f2dc805964b.tar.gz |
build-system/gnu: 'strip' phase lists files in sorted order.
This fixes a bug whereby the choice between stripping 'libfoo.so.0.1.2' and stripping 'libfoo.so' (the symlink) would be non-deterministic. * guix/build/gnu-build-system.scm (strip)[strip-dir]: Use 'find-files' instead of 'file-system-fold' so that files are picked in deterministic order.
-rw-r--r-- | guix/build/gnu-build-system.scm | 31 |
1 files changed, 11 insertions, 20 deletions
diff --git a/guix/build/gnu-build-system.scm b/guix/build/gnu-build-system.scm index 34edff7f40..ab97c92a2b 100644 --- a/guix/build/gnu-build-system.scm +++ b/guix/build/gnu-build-system.scm @@ -386,26 +386,17 @@ makefiles." (when debug-output (format #t "debugging output written to ~s using ~s~%" debug-output objcopy-command)) - (file-system-fold (const #t) - (lambda (path stat result) ; leaf - (and (file-exists? path) ;discard dangling symlinks - (or (elf-file? path) (ar-file? path)) - (or (not debug-output) - (make-debug-file path)) - (zero? (apply system* strip-command - (append strip-flags (list path)))) - (or (not debug-output) - (add-debug-link path)))) - (const #t) ; down - (const #t) ; up - (const #t) ; skip - (lambda (path stat errno result) - (format (current-error-port) - "strip: failed to access `~a': ~a~%" - path (strerror errno)) - #f) - #t - dir)) + + (for-each (lambda (file) + (and (file-exists? file) ;discard dangling symlinks + (or (elf-file? file) (ar-file? file)) + (or (not debug-output) + (make-debug-file file)) + (zero? (apply system* strip-command + (append strip-flags (list file)))) + (or (not debug-output) + (add-debug-link file)))) + (find-files dir))) (or (not strip-binaries?) (every strip-dir |