diff options
author | Mark H Weaver <mhw@netris.org> | 2018-03-16 07:26:13 -0400 |
---|---|---|
committer | Mark H Weaver <mhw@netris.org> | 2018-03-16 09:08:25 -0400 |
commit | d8a3b1b9e847d4a44d2695f95af77170d4d2788f (patch) | |
tree | 5f1c6e5318012e6cd7002c760f33908d7d383238 | |
parent | daac9c77b9ed25a3c0edf843fdfe5e209ebef58f (diff) | |
download | gnu-guix-d8a3b1b9e847d4a44d2695f95af77170d4d2788f.tar gnu-guix-d8a3b1b9e847d4a44d2695f95af77170d4d2788f.tar.gz |
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.
-rw-r--r-- | guix/build/gnu-build-system.scm | 37 |
1 files changed, 23 insertions, 14 deletions
diff --git a/guix/build/gnu-build-system.scm b/guix/build/gnu-build-system.scm index f49de0e7f1..18d76a3405 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)) |