diff mbox series

checkpatch: fix camel case seeding when run with --root

Message ID 20190315010334.5707-1-jacob.e.keller@intel.com
State Awaiting Upstream
Headers show
Series checkpatch: fix camel case seeding when run with --root | expand

Commit Message

Jacob Keller March 15, 2019, 1:03 a.m. UTC
checkpatch.pl avoids warning about camel case of some definitions by
seeding a file that tracks all of the currently committed camel case
definitions.

To build this seed file, checkpatch.pl decides between using git or the
--root parameter.

This works as long as you don't run checkpatch.pl from within
a different git tree that is not the Linux kernel.

In this case, the check for ".git" will return true, and checkpatch will
attempt to seed a camel case file using the current directory. This
works fine if --root is not provided, but can result in an incorrect
camel case seed file resulting in false positive warnings.

Fix this by checking for $root/.git instead, so that we use the --root
parameter properly when seeding the camel case list.

Additionally, when generating the list of files to be checked, prefix
the $root path so that the correct file will be found.

These changes allow checkpatch.pl to honor the --root parameter even if
being run from within another git repository.

Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
---
(Resending with a not-invalid address for the netdev mailing list...)

 scripts/checkpatch.pl | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

Comments

Jacob Keller March 20, 2019, 8:09 p.m. UTC | #1
> -----Original Message-----
> From: Keller, Jacob E
> Sent: Thursday, March 14, 2019 6:04 PM
> To: linux-kernel@vger.kernel.org
> Cc: Intel Wired LAN <intel-wired-lan@lists.osuosl.org>; netdev@vger.kernel.org;
> Keller, Jacob E <jacob.e.keller@intel.com>; joe@perches.com
> Subject: [PATCH] checkpatch: fix camel case seeding when run with --root
> 
> checkpatch.pl avoids warning about camel case of some definitions by
> seeding a file that tracks all of the currently committed camel case
> definitions.
> 
> To build this seed file, checkpatch.pl decides between using git or the
> --root parameter.
> 
> This works as long as you don't run checkpatch.pl from within
> a different git tree that is not the Linux kernel.
> 
> In this case, the check for ".git" will return true, and checkpatch will
> attempt to seed a camel case file using the current directory. This
> works fine if --root is not provided, but can result in an incorrect
> camel case seed file resulting in false positive warnings.
> 
> Fix this by checking for $root/.git instead, so that we use the --root
> parameter properly when seeding the camel case list.
> 
> Additionally, when generating the list of files to be checked, prefix
> the $root path so that the correct file will be found.
> 
> These changes allow checkpatch.pl to honor the --root parameter even if
> being run from within another git repository.
> 
> Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
> ---
> (Resending with a not-invalid address for the netdev mailing list...)
> 

Ping? Andy? Joe?

This is a re-write of a rather old (couple of years old...) fix that I've been meaning to get around to submitting.

I'd like to have this picked up since it resolves issues with using --root while inside another git tree.

Thanks,
Jake

>  scripts/checkpatch.pl | 9 +++++----
>  1 file changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> index d0001fd1112d..358add495e18 100755
> --- a/scripts/checkpatch.pl
> +++ b/scripts/checkpatch.pl
> @@ -903,8 +903,8 @@ sub seed_camelcase_includes {
> 
>  	$camelcase_seeded = 1;
> 
> -	if (-e ".git") {
> -		my $git_last_include_commit = `git log --no-merges --
> pretty=format:"%h%n" -1 -- include`;
> +	if (-e "$root/.git") {
> +		my $git_last_include_commit = `cd $root && git log --no-merges --
> pretty=format:"%h%n" -1 -- include`;
>  		chomp $git_last_include_commit;
>  		$camelcase_cache = ".checkpatch-
> camelcase.git.$git_last_include_commit";
>  	} else {
> @@ -931,9 +931,10 @@ sub seed_camelcase_includes {
>  		return;
>  	}
> 
> -	if (-e ".git") {
> -		$files = `git ls-files "include/*.h"`;
> +	if (-e "$root/.git") {
> +		$files = `cd $root && git ls-files "include/*.h"`;
>  		@include_files = split('\n', $files);
> +		@include_files = map("$root/$_", @include_files);
>  	}
> 
>  	foreach my $file (@include_files) {
> --
> 2.18.0.219.gaf81d287a9da
Joe Perches March 20, 2019, 9:18 p.m. UTC | #2
On Wed, 2019-03-20 at 20:09 +0000, Keller, Jacob E wrote:
> > -----Original Message-----
> > From: Keller, Jacob E
> > Sent: Thursday, March 14, 2019 6:04 PM
> > To: linux-kernel@vger.kernel.org
> > Cc: Intel Wired LAN <intel-wired-lan@lists.osuosl.org>; netdev@vger.kernel.org;
> > Keller, Jacob E <jacob.e.keller@intel.com>; joe@perches.com
> > Subject: [PATCH] checkpatch: fix camel case seeding when run with --root
> > 
> > checkpatch.pl avoids warning about camel case of some definitions by
> > seeding a file that tracks all of the currently committed camel case
> > definitions.
> > 
> > To build this seed file, checkpatch.pl decides between using git or the
> > --root parameter.
> > 
> > This works as long as you don't run checkpatch.pl from within
> > a different git tree that is not the Linux kernel.

Odd use case, but I'll forward it on as it doesn't
seem to have any other effect.

cheers, Joe
Jacob Keller March 20, 2019, 10:24 p.m. UTC | #3
> -----Original Message-----
> From: Joe Perches [mailto:joe@perches.com]
> Sent: Wednesday, March 20, 2019 2:18 PM
> To: Keller, Jacob E <jacob.e.keller@intel.com>; linux-kernel@vger.kernel.org;
> apw@canonical.com; Joe Perches <golf@perches.com>
> Cc: Intel Wired LAN <intel-wired-lan@lists.osuosl.org>; netdev@vger.kernel.org
> Subject: Re: [PATCH] checkpatch: fix camel case seeding when run with --root
> 
> On Wed, 2019-03-20 at 20:09 +0000, Keller, Jacob E wrote:
> > > -----Original Message-----
> > > From: Keller, Jacob E
> > > Sent: Thursday, March 14, 2019 6:04 PM
> > > To: linux-kernel@vger.kernel.org
> > > Cc: Intel Wired LAN <intel-wired-lan@lists.osuosl.org>; netdev@vger.kernel.org;
> > > Keller, Jacob E <jacob.e.keller@intel.com>; joe@perches.com
> > > Subject: [PATCH] checkpatch: fix camel case seeding when run with --root
> > >
> > > checkpatch.pl avoids warning about camel case of some definitions by
> > > seeding a file that tracks all of the currently committed camel case
> > > definitions.
> > >
> > > To build this seed file, checkpatch.pl decides between using git or the
> > > --root parameter.
> > >
> > > This works as long as you don't run checkpatch.pl from within
> > > a different git tree that is not the Linux kernel.
> 
> Odd use case, but I'll forward it on as it doesn't
> seem to have any other effect.
> 
> cheers, Joe

We run checkpatch.pl on Linux driver code which is out-of-tree to start with, and then will eventually be migrated into the in-tree kernel later as we develop it.

Without this patch, the use of checkpatch.pl with --root causes bogus hits with camel case issues.

Thanks,
Jake
diff mbox series

Patch

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index d0001fd1112d..358add495e18 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -903,8 +903,8 @@  sub seed_camelcase_includes {
 
 	$camelcase_seeded = 1;
 
-	if (-e ".git") {
-		my $git_last_include_commit = `git log --no-merges --pretty=format:"%h%n" -1 -- include`;
+	if (-e "$root/.git") {
+		my $git_last_include_commit = `cd $root && git log --no-merges --pretty=format:"%h%n" -1 -- include`;
 		chomp $git_last_include_commit;
 		$camelcase_cache = ".checkpatch-camelcase.git.$git_last_include_commit";
 	} else {
@@ -931,9 +931,10 @@  sub seed_camelcase_includes {
 		return;
 	}
 
-	if (-e ".git") {
-		$files = `git ls-files "include/*.h"`;
+	if (-e "$root/.git") {
+		$files = `cd $root && git ls-files "include/*.h"`;
 		@include_files = split('\n', $files);
+		@include_files = map("$root/$_", @include_files);
 	}
 
 	foreach my $file (@include_files) {