lint: derivation: Adjust exception handling for Guile 3.

This makes sure the "derivation: invalid arguments" test passes on
Guile 3.0.0.  Without this change, the lint warning would only include
the format string instead of the key and arguments.

* guix/lint.scm (exception-with-kind-and-args?): New procedure.
(check-derivation): Use it.
This commit is contained in:
Ludovic Courtès 2020-01-17 11:23:34 +01:00
parent 886a76073e
commit fd4c832bdb
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
1 changed files with 16 additions and 1 deletions

View File

@ -905,16 +905,31 @@ descriptions maintained upstream."
(origin-uris origin))
'())))
(cond-expand
(guile-3
;; Guile 3.0.0 does not export this predicate.
(define exception-with-kind-and-args?
(exception-predicate &exception-with-kind-and-args)))
(else ;Guile 2
(define exception-with-kind-and-args?
(const #f))))
(define (check-derivation package)
"Emit a warning if we fail to compile PACKAGE to a derivation."
(define (try system)
(catch #t
(catch #t ;TODO: Remove 'catch' when Guile 2.x is no longer supported.
(lambda ()
(guard (c ((store-protocol-error? c)
(make-warning package
(G_ "failed to create ~a derivation: ~a")
(list system
(store-protocol-error-message c))))
((exception-with-kind-and-args? c)
(make-warning package
(G_ "failed to create ~a derivation: ~s")
(list system
(cons (exception-kind c)
(exception-args c)))))
((message-condition? c)
(make-warning package
(G_ "failed to create ~a derivation: ~a")