guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

02/06: gnu-build: Issue a warning unless every phase returns #t.


From: Mark H. Weaver
Subject: 02/06: gnu-build: Issue a warning unless every phase returns #t.
Date: Fri, 16 Mar 2018 09:09:34 -0400 (EDT)

mhw pushed a commit to branch core-updates
in repository guix.

commit d8a3b1b9e847d4a44d2695f95af77170d4d2788f
Author: Mark H Weaver <address@hidden>
Date:   Fri Mar 16 07:26:13 2018 -0400

    gnu-build: Issue a warning unless every phase returns #t.
    
    * guix/build/gnu-build-system.scm (gnu-build): Issue a warning if a phase
    returns a value other than #t.
---
 guix/build/gnu-build-system.scm | 37 +++++++++++++++++++++++--------------
 1 file changed, 23 insertions(+), 14 deletions(-)

diff --git a/guix/build/gnu-build-system.scm b/guix/build/gnu-build-system.scm
index f49de0e..18d76a3 100644
--- a/guix/build/gnu-build-system.scm
+++ b/guix/build/gnu-build-system.scm
@@ -746,17 +746,26 @@ in order.  Return #t if all the PHASES succeeded, #f 
otherwise."
 
   ;; The trick is to #:allow-other-keys everywhere, so that each procedure in
   ;; PHASES can pick the keyword arguments it's interested in.
-  (every (match-lambda
-          ((name . proc)
-           (let ((start (current-time time-monotonic)))
-             (format #t "starting phase `~a'~%" name)
-             (let ((result (apply proc args))
-                   (end    (current-time time-monotonic)))
-               (format #t "phase `~a' ~:[failed~;succeeded~] after ~,1f 
seconds~%"
-                       name result
-                       (elapsed-time end start))
-
-               ;; Dump the environment variables as a shell script, for handy 
debugging.
-               (system "export > $NIX_BUILD_TOP/environment-variables")
-               result))))
-         phases))
+  (for-each (match-lambda
+              ((name . proc)
+               (let ((start (current-time time-monotonic)))
+                 (format #t "starting phase `~a'~%" name)
+                 (let ((result (apply proc args))
+                       (end    (current-time time-monotonic)))
+                   (format #t "phase `~a' ~:[failed~;succeeded~] after ~,1f 
seconds~%"
+                           name result
+                           (elapsed-time end start))
+
+                   ;; Issue a warning unless the result is #t.
+                   (unless (eqv? result #t)
+                     (format (current-error-port) "\
+## WARNING: phase `~a' returned `~s'.  Return values other than #t
+## are deprecated.  Please migrate this package so that its phase
+## procedures report errors by raising an exception, and otherwise
+## always return #t.~%"
+                             name result))
+
+                   ;; Dump the environment variables as a shell script, for 
handy debugging.
+                   (system "export > $NIX_BUILD_TOP/environment-variables")
+                   result))))
+            phases))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]