GNU bug report logs - #74909
[PATCH 0/3] Make guile-build-system packages reproducible.

Previous Next

Package: guix-patches;

Reported by: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>

Date: Mon, 16 Dec 2024 06:10:02 UTC

Severity: normal

Tags: patch

Done: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 74909 in the body.
You can then email your comments to 74909 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#74909; Package guix-patches. (Mon, 16 Dec 2024 06:10:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Maxim Cournoyer <maxim.cournoyer <at> gmail.com>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Mon, 16 Dec 2024 06:10:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: guix-patches <at> gnu.org
Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: [PATCH 0/3] Make guile-build-system packages reproducible.
Date: Mon, 16 Dec 2024 15:07:19 +0900
This makes our guile-build-system packages reproducible, working around a
defect in Guile that introduces non-determinism in the byte code depending off
the order the files get loaded/byte-compiled (IIUC).

Maxim Cournoyer (3):
  build/guile-build-system: Remove trailing #t in phases.
  build/guile: Disable parallel build for now.
  build/guile-build-system: Fix byte-compilation warnings.

 guix/build-system/guile.scm       | 11 +++++++++++
 guix/build/guile-build-system.scm | 22 +++++++++++-----------
 2 files changed, 22 insertions(+), 11 deletions(-)


base-commit: 3a8e19a61d785ba651c63a3a5991a6e6dcfba9cb
-- 
2.46.0





Information forwarded to maxim.cournoyer <at> gmail.com, guix-patches <at> gnu.org:
bug#74909; Package guix-patches. (Mon, 16 Dec 2024 06:30:04 GMT) Full text and rfc822 format available.

Message #8 received at 74909 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 74909 <at> debbugs.gnu.org
Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: [PATCH 2/3] build/guile: Disable parallel build for now.
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





Information forwarded to maxim.cournoyer <at> gmail.com, guix-patches <at> gnu.org:
bug#74909; Package guix-patches. (Mon, 16 Dec 2024 06:31:02 GMT) Full text and rfc822 format available.

Message #11 received at 74909 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 74909 <at> debbugs.gnu.org
Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: [PATCH 1/3] build/guile-build-system: Remove trailing #t in phases.
Date: Mon, 16 Dec 2024 15:28:03 +0900
* guix/build/guile-build-system.scm (set-locale-path): Delete trailing #t.
(invoke-each, build, install-documentation): Likewise.

Change-Id: I7a0d035b9bef2160856e141642dee70974c571db
---
 guix/build/guile-build-system.scm | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/guix/build/guile-build-system.scm b/guix/build/guile-build-system.scm
index 8927da224a..37a1654ce4 100644
--- a/guix/build/guile-build-system.scm
+++ b/guix/build/guile-build-system.scm
@@ -76,8 +76,7 @@ (define* (set-locale-path #:key inputs native-inputs
   (match (assoc-ref (or native-inputs inputs) "locales")
     (#f #t)
     (locales
-     (setenv "GUIX_LOCPATH" (string-append locales "/lib/locale"))
-     #t)))
+     (setenv "GUIX_LOCPATH" (string-append locales "/lib/locale")))))
 
 (define* (invoke-each commands
                       #:key (max-processes (current-processor-count))
@@ -112,8 +111,7 @@ (define* (invoke-each commands
          (lambda ()
            (primitive-exit 127))))
       (pid
-       (hashv-set! processes pid command)
-       #t)))
+       (hashv-set! processes pid command))))
 
   (let loop ((commands  commands)
              (running   0)
@@ -208,8 +206,7 @@ (define* (build #:key outputs inputs native-inputs
                                  flags)))
                    source-files)
        #:max-processes (parallel-job-count)
-       #:report-progress report-build-progress))
-    #t))
+       #:report-progress report-build-progress))))
 
 (define* (install-documentation #:key outputs
                                 (documentation-file-regexp
@@ -220,8 +217,7 @@ (define* (install-documentation #:key outputs
          (doc (string-append out "/share/doc/"
                              (strip-store-file-name out))))
     (for-each (cut install-file <> doc)
-              (find-files "." documentation-file-regexp))
-    #t))
+              (find-files "." documentation-file-regexp))))
 
 (define %standard-phases
   (modify-phases gnu:%standard-phases
-- 
2.46.0





Information forwarded to maxim.cournoyer <at> gmail.com, guix-patches <at> gnu.org:
bug#74909; Package guix-patches. (Mon, 16 Dec 2024 06:31:03 GMT) Full text and rfc822 format available.

Message #14 received at 74909 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 74909 <at> debbugs.gnu.org
Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: [PATCH 3/3] build/guile-build-system: Fix byte-compilation warnings.
Date: Mon, 16 Dec 2024 15:28:05 +0900
* guix/build/guile-build-system.scm: Hide 'delete' from (guix build utils), to
avoid shadowing the builtin.
(invoke-each): Replace current-processor-count with parallel-job-count.  The
former would require importing (ice-9 threads).

Change-Id: I7cde3305b9017bfec52ffe50ed124e21cbdceb25
---
 guix/build/guile-build-system.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/guix/build/guile-build-system.scm b/guix/build/guile-build-system.scm
index b497573c0a..d2198b6715 100644
--- a/guix/build/guile-build-system.scm
+++ b/guix/build/guile-build-system.scm
@@ -18,7 +18,7 @@
 
 (define-module (guix build guile-build-system)
   #:use-module ((guix build gnu-build-system) #:prefix gnu:)
-  #:use-module (guix build utils)
+  #:use-module ((guix build utils) #:hide (delete))
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-26)
   #:use-module (ice-9 match)
@@ -79,7 +79,7 @@ (define* (set-locale-path #:key inputs native-inputs
      (setenv "GUIX_LOCPATH" (string-append locales "/lib/locale")))))
 
 (define* (invoke-each commands
-                      #:key (max-processes (current-processor-count))
+                      #:key (max-processes (parallel-job-count))
                       report-progress)
   "Run each command in COMMANDS in a separate process, using up to
 MAX-PROCESSES processes in parallel.  Call REPORT-PROGRESS at each step.
-- 
2.46.0





bug closed, send any further explanations to 74909 <at> debbugs.gnu.org and Maxim Cournoyer <maxim.cournoyer <at> gmail.com> Request was from Maxim Cournoyer <maxim.cournoyer <at> gmail.com> to control <at> debbugs.gnu.org. (Thu, 13 Feb 2025 02:21:03 GMT) Full text and rfc822 format available.

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Thu, 13 Mar 2025 11:24:08 GMT) Full text and rfc822 format available.

This bug report was last modified 98 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.