[PATCH v2] checkpatch: Allow to pass config directory
From: Petr Vorel
Date: Tue Feb 24 2026 - 13:22:26 EST
checkpatch.pl searches for .checkpatch.conf in $HOME and .scripts
(in current working directory). Allow to pass directory via
CHECKPATCH_CONFIG_DIR environment variable. This allows to directly use
project configuration file for projects which vendored checkpatch.pl
(e.g. LTP or u-boot).
While at it, document all directories in help.
Suggested-by: Joe Perches <joe@xxxxxxxxxxx>
Signed-off-by: Petr Vorel <pvorel@xxxxxxx>
---
NOTE: if you don't like the way how directories are printed in help
(user's home directory path instead of $HOME) I can change it.
$ ./scripts/checkpatch.pl -h
...
When FILE is - read standard input.
CONFIGURATION FILE
Script searches for a configuration file .checkpatch.conf in path:
$CHECKPATCH_CONFIG_DIR:.:/home/foo:.scripts
Link to v1:
https://lore.kernel.org/lkml/20260202144221.76765-1-pvorel@xxxxxxx/
https://lore.kernel.org/lkml/20260202144221.76765-2-pvorel@xxxxxxx/
Changes v1->v2:
* Use environment variable instead of --conf-dir option (Joe Perches)
NOTE: I'd slightly prefer using --conf-dir (more convenient for user).
* squash documentation into this commit
Kind regards,
Petr
scripts/checkpatch.pl | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index bec7930cdd66..e47fec115ee7 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -57,6 +57,8 @@ my %ignore_type = ();
my @ignore = ();
my $help = 0;
my $configuration_file = ".checkpatch.conf";
+my $def_configuration_dirs = ".:$ENV{HOME}:.scripts";
+my $env_config_dir = 'CHECKPATCH_CONFIG_DIR';
my $max_line_length = 100;
my $ignore_perl_version = 0;
my $minimum_perl_version = 5.10.0;
@@ -146,6 +148,10 @@ Options:
-h, --help, --version display this help and exit
When FILE is - read standard input.
+
+CONFIGURATION FILE
+Script searches for a configuration file $configuration_file in path:
+\$$env_config_dir:$def_configuration_dirs
EOM
exit($exitcode);
@@ -1531,8 +1537,10 @@ sub which {
sub which_conf {
my ($conf) = @_;
+ my $paths = $ENV{$env_config_dir} . ':' if exists($ENV{$env_config_dir});
+ $paths .= $def_configuration_dirs;
- foreach my $path (split(/:/, ".:$ENV{HOME}:.scripts")) {
+ foreach my $path (split(/:/, $paths)) {
if (-e "$path/$conf") {
return "$path/$conf";
}
--
2.51.0