diff options
Diffstat (limited to 'guix/lint.scm')
-rw-r--r-- | guix/lint.scm | 50 |
1 files changed, 29 insertions, 21 deletions
diff --git a/guix/lint.scm b/guix/lint.scm index 40bddd0a41..2be3cc3ee3 100644 --- a/guix/lint.scm +++ b/guix/lint.scm @@ -100,7 +100,8 @@ lint-checker? lint-checker-name lint-checker-description - lint-checker-check)) + lint-checker-check + lint-checker-requires-store?)) ;;; @@ -155,7 +156,9 @@ ;; 'certainty' level. (name lint-checker-name) (description lint-checker-description) - (check lint-checker-check)) + (check lint-checker-check) + (requires-store? lint-checker-requires-store? + (default #f))) (define (properly-starts-sentence? s) (string-match "^[(\"'`[:upper:][:digit:]]" s)) @@ -915,9 +918,9 @@ descriptions maintained upstream." (define exception-with-kind-and-args? (const #f)))) -(define (check-derivation package) +(define* (check-derivation package #:key store) "Emit a warning if we fail to compile PACKAGE to a derivation." - (define (try system) + (define (try store system) (catch #t ;TODO: Remove 'catch' when Guile 2.x is no longer supported. (lambda () (guard (c ((store-protocol-error? c) @@ -936,25 +939,29 @@ descriptions maintained upstream." (G_ "failed to create ~a derivation: ~a") (list 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))))))) + (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 (make-warning package (G_ "failed to create ~a derivation: ~s") (list system args))))) - (filter lint-warning? - (map try (package-supported-systems package)))) + (define (check-with-store store) + (filter lint-warning? + (map (cut try store <>) (package-supported-systems package)))) + + ;; For backwards compatability, don't rely on store being set + (or (and=> store check-with-store) + (with-store store + (check-with-store store)))) (define (check-license package) "Warn about type errors of the 'license' field of PACKAGE." @@ -1328,9 +1335,10 @@ or a list thereof") (description "Check for autogenerated tarballs") (check check-source-unstable-tarball)) (lint-checker - (name 'derivation) - (description "Report failure to compile a package to a derivation") - (check check-derivation)) + (name 'derivation) + (description "Report failure to compile a package to a derivation") + (check check-derivation) + (requires-store? #t)) (lint-checker (name 'patch-file-names) (description "Validate file names and availability of patches") |