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.
This commit is contained in:
Mark H Weaver 2018-03-16 07:24:05 -04:00
parent 2a69f48e0f
commit daac9c77b9
No known key found for this signature in database
GPG Key ID: 7CEF29847562C516

@ -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 "..")