diff options
author | Eric Bavier <bavier@member.fsf.org> | 2019-09-24 20:57:34 -0500 |
---|---|---|
committer | Eric Bavier <bavier@member.fsf.org> | 2019-09-27 23:00:16 -0500 |
commit | 21391f8c83658797c9bfbc3ef8a552859e9d861d (patch) | |
tree | 0e12814dc7c694bdd4f6dc5b9b45cbc702db7a34 | |
parent | d49375c72261ff3c82a7d27ba7f0ae01e5d7e610 (diff) |
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.
-rw-r--r-- | guix/build/compile.scm | 9 |
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 |