diff options
author | Ludovic Courtès <ludo@gnu.org> | 2019-06-14 23:02:28 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2019-06-14 23:02:28 +0200 |
commit | cfd4e4d06e3cda0f3eed8d6b9277ce53e55404b8 (patch) | |
tree | 4fd299bf3108a19df734ce4bec536cc93051b3e1 /guix/build | |
parent | 92d00ca4661e186022732a47956a2bc0ef16be96 (diff) |
build-system/gnu: Make 'first-subdirectory' deterministic.
Fixes <https://bugs.gnu.org/35387>.
Reported by Christopher Baines <mail@cbaines.net>.
* guix/build/gnu-build-system.scm (first-subdirectory): Rewrite using
'scandir' so that the result is deterministic.
Diffstat (limited to 'guix/build')
-rw-r--r-- | guix/build/gnu-build-system.scm | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/guix/build/gnu-build-system.scm b/guix/build/gnu-build-system.scm index afa1886ecd..4df0bb4904 100644 --- a/guix/build/gnu-build-system.scm +++ b/guix/build/gnu-build-system.scm @@ -25,6 +25,7 @@ #:use-module (ice-9 match) #:use-module (ice-9 regex) #:use-module (ice-9 format) + #:use-module (ice-9 ftw) #:use-module (srfi srfi-1) #:use-module (srfi srfi-19) #:use-module (srfi srfi-34) @@ -58,19 +59,14 @@ See https://reproducible-builds.org/specs/source-date-epoch/." (setenv "SOURCE_DATE_EPOCH" "1") #t) -(define (first-subdirectory dir) - "Return the path of the first sub-directory of DIR." - (file-system-fold (lambda (path stat result) - (string=? path dir)) - (lambda (path stat result) result) ; leaf - (lambda (path stat result) result) ; down - (lambda (path stat result) result) ; up - (lambda (path stat result) ; skip - (or result path)) - (lambda (path stat errno result) ; error - (error "first-subdirectory" (strerror errno))) - #f - dir)) +(define (first-subdirectory directory) + "Return the file name of the first sub-directory of DIRECTORY." + (match (scandir directory + (lambda (file) + (and (not (member file '("." ".."))) + (file-is-directory? (string-append directory "/" + file))))) + ((first . _) first))) (define* (set-paths #:key target inputs native-inputs (search-paths '()) (native-search-paths '()) |