unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#74909] [PATCH 0/3] Make guile-build-system packages reproducible.
@ 2024-12-16  6:07 Maxim Cournoyer
  2024-12-16  6:28 ` [bug#74909] [PATCH 1/3] build/guile-build-system: Remove trailing #t in phases Maxim Cournoyer
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Maxim Cournoyer @ 2024-12-16  6:07 UTC (permalink / raw)
  To: 74909; +Cc: Maxim Cournoyer

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





^ permalink raw reply	[flat|nested] 4+ messages in thread

* [bug#74909] [PATCH 1/3] build/guile-build-system: Remove trailing #t in phases.
  2024-12-16  6:07 [bug#74909] [PATCH 0/3] Make guile-build-system packages reproducible Maxim Cournoyer
@ 2024-12-16  6:28 ` Maxim Cournoyer
  2024-12-16  6:28 ` [bug#74909] [PATCH 2/3] build/guile: Disable parallel build for now Maxim Cournoyer
  2024-12-16  6:28 ` [bug#74909] [PATCH 3/3] build/guile-build-system: Fix byte-compilation warnings Maxim Cournoyer
  2 siblings, 0 replies; 4+ messages in thread
From: Maxim Cournoyer @ 2024-12-16  6:28 UTC (permalink / raw)
  To: 74909; +Cc: Maxim Cournoyer, Maxim Cournoyer

* 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





^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [bug#74909] [PATCH 2/3] build/guile: Disable parallel build for now.
  2024-12-16  6:07 [bug#74909] [PATCH 0/3] Make guile-build-system packages reproducible Maxim Cournoyer
  2024-12-16  6:28 ` [bug#74909] [PATCH 1/3] build/guile-build-system: Remove trailing #t in phases Maxim Cournoyer
@ 2024-12-16  6:28 ` Maxim Cournoyer
  2024-12-16  6:28 ` [bug#74909] [PATCH 3/3] build/guile-build-system: Fix byte-compilation warnings Maxim Cournoyer
  2 siblings, 0 replies; 4+ messages in thread
From: Maxim Cournoyer @ 2024-12-16  6:28 UTC (permalink / raw)
  To: 74909; +Cc: Maxim Cournoyer, Maxim Cournoyer

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





^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [bug#74909] [PATCH 3/3] build/guile-build-system: Fix byte-compilation warnings.
  2024-12-16  6:07 [bug#74909] [PATCH 0/3] Make guile-build-system packages reproducible Maxim Cournoyer
  2024-12-16  6:28 ` [bug#74909] [PATCH 1/3] build/guile-build-system: Remove trailing #t in phases Maxim Cournoyer
  2024-12-16  6:28 ` [bug#74909] [PATCH 2/3] build/guile: Disable parallel build for now Maxim Cournoyer
@ 2024-12-16  6:28 ` Maxim Cournoyer
  2 siblings, 0 replies; 4+ messages in thread
From: Maxim Cournoyer @ 2024-12-16  6:28 UTC (permalink / raw)
  To: 74909; +Cc: Maxim Cournoyer, Maxim Cournoyer

* 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





^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2024-12-16  6:31 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-16  6:07 [bug#74909] [PATCH 0/3] Make guile-build-system packages reproducible Maxim Cournoyer
2024-12-16  6:28 ` [bug#74909] [PATCH 1/3] build/guile-build-system: Remove trailing #t in phases Maxim Cournoyer
2024-12-16  6:28 ` [bug#74909] [PATCH 2/3] build/guile: Disable parallel build for now Maxim Cournoyer
2024-12-16  6:28 ` [bug#74909] [PATCH 3/3] build/guile-build-system: Fix byte-compilation warnings Maxim Cournoyer

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).