Re: [PATCH v2] checkpatch: Allow to pass config directory

From: Petr Vorel

Date: Thu Mar 26 2026 - 12:00:12 EST


Hi all,

> 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).

Gentle ping for a feedback.

Kind regards,
Petr

> 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";
> }