lint: Check for minimal variants.

* guix/lint.scm (check-inputs-should-use-a-minimal-variant): New
procedure.
(%local-checkers): Add it.

Change-Id: Ifbf808063e4e125c7070505a8a6215128d84b40b
This commit is contained in:
Efraim Flashner 2024-09-23 10:35:27 +03:00
parent e464a3e166
commit 5bda3f8a34
No known key found for this signature in database
GPG key ID: 41AAE7DCCA3D8351

View file

@ -7,7 +7,7 @@
;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2017 Alex Kost <alezost@gmail.com>
;;; Copyright © 2017, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017, 2018, 2020 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017, 2018, 2020, 2024 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018, 2019 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2020 Chris Marusich <cmmarusich@gmail.com>
;;; Copyright © 2020 Timothy Sample <samplet@ngyro.com>
@ -96,6 +96,7 @@ (define-module (guix lint)
#:export (check-description-style
check-inputs-should-be-native
check-inputs-should-not-be-an-input-at-all
check-inputs-should-use-a-minimal-variant
check-input-labels
check-wrapper-inputs
check-patch-file-names
@ -598,6 +599,21 @@ (define (check-inputs-should-not-be-an-input-at-all package)
(package-input-intersection (package-direct-inputs package)
input-names))))
(define (check-inputs-should-use-a-minimal-variant package)
;; Emit a warning if some inputs of PACKAGE should likely be replaced
;; with their minimal variant.
(let ((input-names '("bash"
"cmake"
"gettext")))
(map (lambda (input)
(make-warning
package
(G_ "'~a' should probably switched for its minimal variant")
(list input)
#:field 'inputs))
(package-input-intersection (package-direct-inputs package)
input-names))))
(define (check-input-labels package)
"Emit a warning for labels that differ from the corresponding package name."
(define (check input-kind package-inputs)
@ -1978,6 +1994,10 @@ (define %local-checkers
(name 'inputs-should-not-be-input)
(description "Identify inputs that shouldn't be inputs at all")
(check check-inputs-should-not-be-an-input-at-all))
(lint-checker
(name 'inputs-should-be-minimal)
(description "Identify inputs that should use their minimal variant")
(check check-inputs-should-use-a-minimal-variant))
(lint-checker
(name 'input-labels)
(description "Identify input labels that do not match package names")