aboutsummaryrefslogtreecommitdiff
path: root/guix/scripts/lint.scm
diff options
context:
space:
mode:
Diffstat (limited to 'guix/scripts/lint.scm')
-rw-r--r--guix/scripts/lint.scm56
1 files changed, 32 insertions, 24 deletions
diff --git a/guix/scripts/lint.scm b/guix/scripts/lint.scm
index e477bf0ddc..2314f3b28c 100644
--- a/guix/scripts/lint.scm
+++ b/guix/scripts/lint.scm
@@ -33,6 +33,7 @@
#:use-module (guix packages)
#:use-module (guix licenses)
#:use-module (guix records)
+ #:use-module (guix grafts)
#:use-module (guix ui)
#:use-module (guix upstream)
#:use-module (guix utils)
@@ -774,30 +775,37 @@ descriptions maintained upstream."
(define (check-derivation package)
"Emit a warning if we fail to compile PACKAGE to a derivation."
- (catch #t
- (lambda ()
- (guard (c ((nix-protocol-error? c)
- (emit-warning package
- (format #f (G_ "failed to create derivation: ~a")
- (nix-protocol-error-message c))))
- ((message-condition? c)
- (emit-warning package
- (format #f (G_ "failed to create derivation: ~a")
- (condition-message c)))))
- (with-store store
- ;; Disable grafts since it can entail rebuilds.
- (package-derivation store package #:graft? #f)
-
- ;; If there's a replacement, make sure we can compute its
- ;; derivation.
- (match (package-replacement package)
- (#f #t)
- (replacement
- (package-derivation store replacement #:graft? #f))))))
- (lambda args
- (emit-warning package
- (format #f (G_ "failed to create derivation: ~s~%")
- args)))))
+ (define (try system)
+ (catch #t
+ (lambda ()
+ (guard (c ((nix-protocol-error? c)
+ (emit-warning package
+ (format #f (G_ "failed to create ~a derivation: ~a")
+ system
+ (nix-protocol-error-message c))))
+ ((message-condition? c)
+ (emit-warning package
+ (format #f (G_ "failed to create ~a derivation: ~a")
+ system
+ (condition-message c)))))
+ (with-store store
+ ;; Disable grafts since it can entail rebuilds.
+ (parameterize ((%graft? #f))
+ (package-derivation store package system #:graft? #f)
+
+ ;; If there's a replacement, make sure we can compute its
+ ;; derivation.
+ (match (package-replacement package)
+ (#f #t)
+ (replacement
+ (package-derivation store replacement system
+ #:graft? #f)))))))
+ (lambda args
+ (emit-warning package
+ (format #f (G_ "failed to create ~a derivation: ~s")
+ system args)))))
+
+ (for-each try (package-supported-systems package)))
(define (check-license package)
"Warn about type errors of the 'license' field of PACKAGE."