summary refs log tree commit diff
path: root/build-aux/compile-all.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2019-04-19 16:49:46 +0200
committerLudovic Courtès <ludo@gnu.org>2019-04-19 17:46:40 +0200
commit04b5ac212f33fc20696fbe43816a1a86aad1a9f2 (patch)
tree8a7efec688c5de34ba39d47e6feda9513422bd1f /build-aux/compile-all.scm
parent35a09fd9c1aeb1023352b8e29c483b2fa6c4e41a (diff)
downloadguix-04b5ac212f33fc20696fbe43816a1a86aad1a9f2.tar.gz
build: Show completion percentage while building.
* build-aux/compile-all.scm (%): New procedure.
(command-line): Use it to report completion.
Diffstat (limited to 'build-aux/compile-all.scm')
-rw-r--r--build-aux/compile-all.scm17
1 files changed, 13 insertions, 4 deletions
diff --git a/build-aux/compile-all.scm b/build-aux/compile-all.scm
index d2afbdab02..4259ea523c 100644
--- a/build-aux/compile-all.scm
+++ b/build-aux/compile-all.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; 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.
 ;;;
@@ -17,7 +17,8 @@
 ;;; You should have received a copy of the GNU General Public License
 ;;; 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)
              (srfi srfi-1)
              (guix build compile)
@@ -78,6 +79,10 @@ to 'make'."
                        (current-processor-count))))
                 (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
 ;; opportunity to run upon SIGINT and to remove temporary output files.
 (sigaction SIGINT
@@ -92,10 +97,14 @@ to 'make'."
                   #:host host
                   #:report-load (lambda (file total completed)
                                   (when file
-                                    (format #t "  LOAD     ~a~%" file)
+                                    (format #t "[~3d%] LOAD     ~a~%"
+                                            (% (+ 1 completed) (* 2 total))
+                                            file)
                                     (force-output)))
                   #:report-compilation (lambda (file total completed)
                                          (when file
-                                           (format #t "  GUILEC   ~a~%"
+                                           (format #t "[~3d%] GUILEC   ~a~%"
+                                                   (% (+ total completed 1)
+                                                      (* 2 total))
                                                    (scm->go file))
                                            (force-output))))))