summaryrefslogtreecommitdiff
path: root/guix/build
diff options
context:
space:
mode:
authorEric Bavier <bavier@member.fsf.org>2019-09-24 20:57:34 -0500
committerEric Bavier <bavier@member.fsf.org>2019-09-27 23:00:16 -0500
commit21391f8c83658797c9bfbc3ef8a552859e9d861d (patch)
tree0e12814dc7c694bdd4f6dc5b9b45cbc702db7a34 /guix/build
parentd49375c72261ff3c82a7d27ba7f0ae01e5d7e610 (diff)
downloadpatches-21391f8c83658797c9bfbc3ef8a552859e9d861d.tar
patches-21391f8c83658797c9bfbc3ef8a552859e9d861d.tar.gz
compile: Fix race condition on completion progress.
This prevent a race condition where multiple compilation threads could report the same progress. * guix/build/compile.scm (compile-files)<completed>: Rename to... <progress>: ...this. Increment in same mutex region as the compilation is reported.
Diffstat (limited to 'guix/build')
-rw-r--r--guix/build/compile.scm9
1 files changed, 4 insertions, 5 deletions
diff --git a/guix/build/compile.scm b/guix/build/compile.scm
index c127456fd0..06ed57c9d7 100644
--- a/guix/build/compile.scm
+++ b/guix/build/compile.scm
@@ -169,11 +169,12 @@ BUILD-DIRECTORY, using up to WORKERS parallel workers. The resulting object
files are for HOST, a GNU triplet such as \"x86_64-linux-gnu\"."
(define progress-lock (make-mutex))
(define total (length files))
- (define completed 0)
+ (define progress 0)
(define (build file)
(with-mutex progress-lock
- (report-compilation file total completed))
+ (report-compilation file total progress)
+ (set! progress (+ 1 progress)))
;; Exit as soon as something goes wrong.
(exit-on-exception
@@ -185,9 +186,7 @@ files are for HOST, a GNU triplet such as \"x86_64-linux-gnu\"."
#:output-file (string-append build-directory "/"
(scm->go relative))
#:opts (append warning-options
- (optimization-options relative)))))))
- (with-mutex progress-lock
- (set! completed (+ 1 completed))))
+ (optimization-options relative))))))))
(with-augmented-search-path %load-path source-directory
(with-augmented-search-path %load-compiled-path build-directory