build: Show completion percentage while building.

* build-aux/compile-all.scm (%): New procedure.
(command-line): Use it to report completion.
This commit is contained in:
Ludovic Courtès 2019-04-19 16:49:46 +02:00
parent 35a09fd9c1
commit 04b5ac212f
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> ;;; Copyright © 2016 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -17,7 +17,8 @@
;;; You should have received a copy of the GNU General Public License ;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(use-modules (ice-9 match) (use-modules (ice-9 format)
(ice-9 match)
(ice-9 threads) (ice-9 threads)
(srfi srfi-1) (srfi srfi-1)
(guix build compile) (guix build compile)
@ -78,6 +79,10 @@ (define* (parallel-job-count #:optional (flags (getenv "MAKEFLAGS")))
(current-processor-count)))) (current-processor-count))))
(loop tail))))))))) (loop tail)))))))))
(define (% completed total)
"Return the completion percentage of COMPLETED over TOTAL as an integer."
(inexact->exact (round (* 100. (/ completed total)))))
;; Install a SIGINT handler to give unwind handlers in 'compile-file' an ;; Install a SIGINT handler to give unwind handlers in 'compile-file' an
;; opportunity to run upon SIGINT and to remove temporary output files. ;; opportunity to run upon SIGINT and to remove temporary output files.
(sigaction SIGINT (sigaction SIGINT
@ -92,10 +97,14 @@ (define* (parallel-job-count #:optional (flags (getenv "MAKEFLAGS")))
#:host host #:host host
#:report-load (lambda (file total completed) #:report-load (lambda (file total completed)
(when file (when file
(format #t " LOAD ~a~%" file) (format #t "[~3d%] LOAD ~a~%"
(% (+ 1 completed) (* 2 total))
file)
(force-output))) (force-output)))
#:report-compilation (lambda (file total completed) #:report-compilation (lambda (file total completed)
(when file (when file
(format #t " GUILEC ~a~%" (format #t "[~3d%] GUILEC ~a~%"
(% (+ total completed 1)
(* 2 total))
(scm->go file)) (scm->go file))
(force-output)))))) (force-output))))))