From daac9c77b9ed25a3c0edf843fdfe5e209ebef58f Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Fri, 16 Mar 2018 07:24:05 -0400 Subject: [PATCH] packages: Issue a warning unless the snippet returns #t. * guix/packages.scm (patch-and-repack): Issue a warning if the snippet returns a value other than #t. --- guix/packages.scm | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/guix/packages.scm b/guix/packages.scm index 0ee4f7104f..ab4b6278d6 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -566,19 +566,26 @@ specifies modules in scope when evaluating SNIPPET." (for-each apply-patch '#+patches) - (unless #+(if snippet - #~(let ((module (make-fresh-user-module))) - (module-use-interfaces! - module - (map resolve-interface '#+modules)) - ((@ (system base compile) compile) - '#+snippet - #:to 'value - #:opts %auto-compilation-options - #:env module)) - #~#t) - (format (current-error-port) - "snippet returned false, indicating failure~%")) + (let ((result #+(if snippet + #~(let ((module (make-fresh-user-module))) + (module-use-interfaces! + module + (map resolve-interface '#+modules)) + ((@ (system base compile) compile) + '#+snippet + #:to 'value + #:opts %auto-compilation-options + #:env module)) + #~#t))) + ;; Issue a warning unless the result is #t. + (unless (eqv? result #t) + (format (current-error-port) "\ +## WARNING: the snippet returned `~s'. Return values other than #t +## are deprecated. Please migrate this package so that its snippet +## reports errors by raising an exception, and otherwise returns #t.~%" + result)) + (unless result + (error "snippet returned false"))) (chdir "..")