From: "Ludovic Courtès" <ludo@gnu.org>
To: guix-devel@gnu.org
Subject: [PATCH RFC 4/4] DRAFT lint: Add 'input-labels' checker.
Date: Thu, 20 May 2021 16:58:30 +0200 [thread overview]
Message-ID: <20210520145830.14108-5-ludo@gnu.org> (raw)
In-Reply-To: <20210520145830.14108-1-ludo@gnu.org>
DRAFT: Good idea? If yes, add tests and doc.
* guix/lint.scm (check-input-labels): New procedure.
(%local-checkers): Add 'input-labels' checker.
---
guix/lint.scm | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)
diff --git a/guix/lint.scm b/guix/lint.scm
index 1bebfe03d3..95f82dba60 100644
--- a/guix/lint.scm
+++ b/guix/lint.scm
@@ -383,6 +383,37 @@ of a package, and INPUT-NAMES, a list of package specifications such as
(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)
+ (define (warning label name)
+ (make-warning package
+ (G_ "label '~a' does not match package name '~a'")
+ (list label name)
+ #:field input-kind))
+
+ (append-map (match-lambda
+ (((? string? label) (? package? dependency))
+ (if (string=? label (package-name dependency))
+ '()
+ (list (warning label (package-name dependency)))))
+ (((? string? label) (? package? dependency) output)
+ (let ((expected (string-append (package-name dependency)
+ ":" output)))
+ (if (string=? label expected)
+ '()
+ (list (warning label expected)))))
+ (_
+ '()))
+ (package-inputs package)))
+
+ (append-map (match-lambda
+ ((kind proc)
+ (check kind proc)))
+ `((native-inputs ,package-native-inputs)
+ (inputs ,package-inputs)
+ (propagated-inputs ,package-propagated-inputs))))
+
(define (package-name-regexp package)
"Return a regexp that matches PACKAGE's name as a word at the beginning of a
line."
@@ -1493,6 +1524,10 @@ them for PACKAGE."
(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 'input-labels)
+ (description "Identify input labels that do not match package names")
+ (check check-input-labels))
(lint-checker
(name 'license)
;; TRANSLATORS: <license> is the name of a data type and must not be
--
2.31.1
next prev parent reply other threads:[~2021-05-20 15:13 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-20 14:58 [PATCH RFC 0/4] Getting rid of input labels? Ludovic Courtès
2021-05-20 14:58 ` [PATCH RFC 1/4] records: Support field sanitizers Ludovic Courtès
2021-05-20 14:58 ` [PATCH RFC 2/4] DRAFT packages: Allow inputs to be plain package lists Ludovic Courtès
2021-05-20 14:58 ` [PATCH RFC 3/4] DRAFT gnu: Change inputs of core packages to plain lists Ludovic Courtès
2021-05-20 14:58 ` Ludovic Courtès [this message]
2021-05-20 16:19 ` [PATCH RFC 0/4] Getting rid of input labels? Vincent Legoll
2021-05-26 13:35 ` Ludovic Courtès
2021-05-20 19:31 ` Maxime Devos
2021-05-26 13:43 ` Ludovic Courtès
2021-05-27 19:02 ` Maxime Devos
2021-05-21 15:35 ` Nicolas Goaziou
2021-05-26 14:02 ` Ludovic Courtès
2021-05-30 16:23 ` Ryan Prior
2021-06-08 13:05 ` Ludovic Courtès
2021-06-10 21:39 ` Ludovic Courtès
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210520145830.14108-5-ludo@gnu.org \
--to=ludo@gnu.org \
--cc=guix-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).