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.
This commit is contained in:
Ludovic Courtès 2016-09-01 23:48:08 +02:00
parent 73dc727ec8
commit ff43e353a1
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -386,26 +386,17 @@ (define (strip-dir dir)
(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