Subject: [bug#74909] [PATCH 2/3] build/guile: Disable parallel build for now.

From: Maxim Cournoyer <[email-masked]>
Date: Mon, 16 Dec 2024 15:28:04 +0900

Following discussions in bug #74204.

* guix/build-system/guile.scm (guile-build): Add a #:parallel-build? flag,
defaulting to #f for now.
(guile-cross-build): Likewise.
* guix/build/guile-build-system.scm (build): Honor it.

Change-Id: Ibf12ac098e9dcea83da7b9685796e501df606c6c
---
 guix/build-system/guile.scm       | 11 +++++++++++
 guix/build/guile-build-system.scm |  6 +++++-
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/guix/build-system/guile.scm b/guix/build-system/guile.scm
index ee59bb15f2..df6988a1b7 100644
--- a/guix/build-system/guile.scm
+++ b/guix/build-system/guile.scm
@@ -85,6 +85,10 @@ (define* (guile-build name inputs
                       (source-directory ".")
                       not-compiled-file-regexp
                       (scheme-file-regexp %scheme-file-regexp)
+                      ;; FIXME: Turn on parallel building of Guile modules by
+                      ;; default after the non-determinism issues in the Guile byte
+                      ;; compiler are resolved (see bug #20272).
+                      (parallel-build? #f)
                       (compile-flags %compile-flags)
                       (imported-modules %guile-build-system-modules)
                       (modules '((guix build guile-build-system)
@@ -101,6 +105,7 @@ (define* (guile-build name inputs
                        #:source-directory #$source-directory
                        #:scheme-file-regexp #$scheme-file-regexp
                        #:not-compiled-file-regexp #$not-compiled-file-regexp
+                       #:parallel-build? #$parallel-build?
                        #:compile-flags #$compile-flags
                        #:phases #$phases
                        #:system #$system
@@ -132,6 +137,11 @@ (define* (guile-cross-build name
                             (source-directory ".")
                             (scheme-file-regexp %scheme-file-regexp)
                             not-compiled-file-regexp
+                            ;; FIXME: Turn on parallel building of Guile
+                            ;; modules by default after the non-determinism
+                            ;; issues in the Guile byte compiler are resolved
+                            ;; (see bug #20272).
+                            (parallel-build? #f)
                             (compile-flags %compile-flags)
                             (imported-modules %guile-build-system-modules)
                             (modules '((guix build guile-build-system)
@@ -159,6 +169,7 @@ (define* (guile-cross-build name
                        #:source-directory #$source-directory
                        #:scheme-file-regexp #$scheme-file-regexp
                        #:not-compiled-file-regexp #$not-compiled-file-regexp
+                       #:parallel-build? #$parallel-build?
                        #:compile-flags #$compile-flags
                        #:inputs %build-target-inputs
                        #:native-inputs %build-host-inputs
diff --git a/guix/build/guile-build-system.scm b/guix/build/guile-build-system.scm
index 37a1654ce4..b497573c0a 100644
--- a/guix/build/guile-build-system.scm
+++ b/guix/build/guile-build-system.scm
@@ -145,6 +145,10 @@ (define* (report-build-progress total completed
 (define* (build #:key outputs inputs native-inputs
                 (source-directory ".")
                 (compile-flags '())
+                ;; FIXME: Turn on parallel building of Guile modules by
+                ;; default after the non-determinism issues in the Guile byte
+                ;; compiler are resolved (see bug #20272).
+                (parallel-build? #f)
                 (scheme-file-regexp %scheme-file-regexp)
                 (not-compiled-file-regexp #f)
                 target
@@ -205,7 +209,7 @@ (define* (build #:key outputs inputs native-inputs
                                  (string-append source-directory "/" file)
                                  flags)))
                    source-files)
-       #:max-processes (parallel-job-count)
+       #:max-processes (if parallel-build? (parallel-job-count) 1)
        #:report-progress report-build-progress))))
 
 (define* (install-documentation #:key outputs
-- 
2.46.0