diff --git a/guix/transformations.scm b/guix/transformations.scm index 0976f0d824..a0045e5b27 100644 --- a/guix/transformations.scm +++ b/guix/transformations.scm @@ -46,6 +46,7 @@ (define-module (guix transformations) #:use-module (srfi srfi-11) #:use-module (srfi srfi-26) #:use-module (srfi srfi-34) + #:use-module (srfi srfi-35) #:use-module (srfi srfi-37) #:use-module (ice-9 match) #:use-module (ice-9 vlist) @@ -526,10 +527,29 @@ (define (lower* . args) micro-architecture))) (unless (member micro-architecture (or (assoc-ref lst architecture) '())) - (raise (formatted-message - (G_ "compiler ~a does not support micro-architecture ~a") - (package-full-name compiler) - micro-architecture)))) + (raise + (make-compound-condition + (formatted-message + (G_ "compiler ~a does not support micro-architecture ~a") + (package-full-name compiler) + micro-architecture) + (condition + (&fix-hint + (hint (match (assoc-ref lst architecture) + (#f (format #f (G_ "Compiler ~a does not support +micro-architectures of ~a.") + (package-full-name compiler "@@") + architecture)) + (lst + (format #f (G_ "Compiler ~a supports the following ~a +micro-architectures: + +@quotation +~a +@end quotation") + (package-full-name compiler "@@") + architecture + (string-join lst ", "))))))))))) (bag (inherit lowered)