aboutsummaryrefslogtreecommitdiff
path: root/build-aux
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2021-06-23 22:43:00 +0200
committerLudovic Courtès <ludo@gnu.org>2021-06-23 23:35:27 +0200
commitef82ba9dd94369926eb13325d5e7da4306d23dd7 (patch)
tree7b37fe66dd4088556ad41dcbf7745c6e9b24f501 /build-aux
parenta807d849219c34d45310634ef0cfc94ad9b7025a (diff)
downloadguix-ef82ba9dd94369926eb13325d5e7da4306d23dd7.tar.gz
guix-ef82ba9dd94369926eb13325d5e7da4306d23dd7.zip
build: Makefile splits Scheme compilation in four steps.
Fixes <https://bugs.gnu.org/48963>. Reported by Julien Lepiller <julien@lepiller.eu>. This reduces peak memory consumption to something less unreasonable. * Makefile.am (make-go): Depend on 'make-*-go' targets; remove body. (guile-compilation-rule): New function. (MODULES_CORE, MODULES_PACKAGES, MODULES_SYSTEM, MODULES_CLI): New variables. <top level>: Call 'guile-compilation-rule' 4 times. * build-aux/compile-all.scm <top level>: Expect "--total" and "--processed". Take them into account when displaying progress reports.
Diffstat (limited to 'build-aux')
-rw-r--r--build-aux/compile-all.scm46
1 files changed, 28 insertions, 18 deletions
diff --git a/build-aux/compile-all.scm b/build-aux/compile-all.scm
index e6982f50fb..9ffbce43ad 100644
--- a/build-aux/compile-all.scm
+++ b/build-aux/compile-all.scm
@@ -98,26 +98,36 @@ to 'make'."
(exit 1)))
(match (command-line)
- ((_ . files)
+ ((_ "--total" (= string->number grand-total)
+ "--completed" (= string->number processed)
+ . files)
+ ;; GRAND-TOTAL is the total number of .scm files in the project; PROCESSED
+ ;; is the total number of .scm files already compiled in previous
+ ;; invocations of this script.
(catch #t
(lambda ()
- (compile-files srcdir (getcwd)
- (filter file-needs-compilation? files)
- #:workers (parallel-job-count*)
- #:host host
- #:report-load (lambda (file total completed)
- (when file
- (format #t "[~3d%] LOAD ~a~%"
- (% (+ 1 completed) (* 2 total))
- file)
- (force-output)))
- #:report-compilation (lambda (file total completed)
- (when file
- (format #t "[~3d%] GUILEC ~a~%"
- (% (+ total completed 1)
- (* 2 total))
- (scm->go file))
- (force-output)))))
+ (let* ((to-build (filter file-needs-compilation? files))
+ (processed (+ processed
+ (- (length files) (length to-build)))))
+ (compile-files srcdir (getcwd) to-build
+ #:workers (parallel-job-count*)
+ #:host host
+ #:report-load (lambda (file total completed)
+ (when file
+ (format #t "[~3d%] LOAD ~a~%"
+ (% (+ 1 completed
+ (* 2 processed))
+ (* 2 grand-total))
+ file)
+ (force-output)))
+ #:report-compilation (lambda (file total completed)
+ (when file
+ (format #t "[~3d%] GUILEC ~a~%"
+ (% (+ total completed 1
+ (* 2 processed))
+ (* 2 grand-total))
+ (scm->go file))
+ (force-output))))))
(lambda _
(primitive-exit 1))
(lambda args