All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] checkpatch: get default codespell dictionary path from package location
@ 2021-10-11  6:32 Peter Ujfalusi
  2021-10-11  8:11 ` Joe Perches
  0 siblings, 1 reply; 3+ messages in thread
From: Peter Ujfalusi @ 2021-10-11  6:32 UTC (permalink / raw)
  To: apw, joe; +Cc: dwaipayanray1, lukas.bulwahn, peter.ujfalusi, linux-kernel

The standard location of dictionary.txt is under codespell's package, on
my machine atm (codespell 2.1, Artix Linux):
/usr/lib/python3.9/site-packages/codespell_lib/data/dictionary.txt

Since we enable the codespell by default for SOF I have constant:
No codespell typos will be found - \
file '/usr/share/codespell/dictionary.txt': No such file or directory

The patch proposes to try to fix up the path following the recommendation
found here:
https://github.com/codespell-project/codespell/issues/1540

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
---
Hi,

Changes sicne v1:
- add missing ';' to the line updating the $codespellfile with $codespell_dict

Regards,
Peter

 scripts/checkpatch.pl | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index c27d2312cfc3..fe11f2cb9f71 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -73,6 +73,12 @@ my $git_command ='export LANGUAGE=en_US.UTF-8; git';
 my $tabsize = 8;
 my ${CONFIG_} = "CONFIG_";
 
+# Override the codespellfile location based on codespell install location
+if (which("codespell") ne "" && which("python") ne "") {
+	my $codespell_dict = `python -c "import os.path as op; import codespell_lib; print(op.join(op.dirname(codespell_lib.__file__), 'data', 'dictionary.txt'), end='')" 2> /dev/null`;
+	$codespellfile = $codespell_dict if (-e $codespell_dict);
+}
+
 sub help {
 	my ($exitcode) = @_;
 
@@ -130,7 +136,7 @@ Options:
   --ignore-perl-version      override checking of perl version.  expect
                              runtime errors.
   --codespell                Use the codespell dictionary for spelling/typos
-                             (default:/usr/share/codespell/dictionary.txt)
+                             (default:$codespellfile)
   --codespellfile            Use this codespell dictionary
   --typedefsfile             Read additional types from this file
   --color[=WHEN]             Use colors 'always', 'never', or only when output
-- 
2.33.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] checkpatch: get default codespell dictionary path from package location
  2021-10-11  6:32 [PATCH v2] checkpatch: get default codespell dictionary path from package location Peter Ujfalusi
@ 2021-10-11  8:11 ` Joe Perches
  2021-10-11  9:33   ` Péter Ujfalusi
  0 siblings, 1 reply; 3+ messages in thread
From: Joe Perches @ 2021-10-11  8:11 UTC (permalink / raw)
  To: Peter Ujfalusi, apw; +Cc: dwaipayanray1, lukas.bulwahn, linux-kernel

On Mon, 2021-10-11 at 09:32 +0300, Peter Ujfalusi wrote:
> The standard location of dictionary.txt is under codespell's package, on
> my machine atm (codespell 2.1, Artix Linux):
> /usr/lib/python3.9/site-packages/codespell_lib/data/dictionary.txt
> 
> Since we enable the codespell by default for SOF I have constant:

If you enable it by default, you probably are using a .checkpatch.conf file.
--codespell is not a typical default so I think always doing this test
regardless of --codespell being enabled is inappropriate.

> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> @@ -73,6 +73,12 @@ my $git_command ='export LANGUAGE=en_US.UTF-8; git';
>  my $tabsize = 8;
>  my ${CONFIG_} = "CONFIG_";
> 
> +# Override the codespellfile location based on codespell install location
> +if (which("codespell") ne "" && which("python") ne "") {
> +	my $codespell_dict = `python -c "import os.path as op; import codespell_lib; print(op.join(op.dirname(codespell_lib.__file__), 'data', 'dictionary.txt'), end='')" 2> /dev/null`;
> +	$codespellfile = $codespell_dict if (-e $codespell_dict);
> +}
> +

Maybe add a function and/or use something like:

	if (($codespell || $help) &&
	    which(etc...

>  sub help {
>  	my ($exitcode) = @_;
>  
> 
> @@ -130,7 +136,7 @@ Options:
>    --ignore-perl-version      override checking of perl version.  expect
>                               runtime errors.
>    --codespell                Use the codespell dictionary for spelling/typos
> -                             (default:/usr/share/codespell/dictionary.txt)
> +                             (default:$codespellfile)

I think this should not be changed or only be shown as $codespellfile when
--codespell is added on the command line

>    --codespellfile            Use this codespell dictionary
>    --typedefsfile             Read additional types from this file
>    --color[=WHEN]             Use colors 'always', 'never', or only when output



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] checkpatch: get default codespell dictionary path from package location
  2021-10-11  8:11 ` Joe Perches
@ 2021-10-11  9:33   ` Péter Ujfalusi
  0 siblings, 0 replies; 3+ messages in thread
From: Péter Ujfalusi @ 2021-10-11  9:33 UTC (permalink / raw)
  To: Joe Perches, apw; +Cc: dwaipayanray1, lukas.bulwahn, linux-kernel

Hi Joe,

On 11/10/2021 11:11, Joe Perches wrote:
> On Mon, 2021-10-11 at 09:32 +0300, Peter Ujfalusi wrote:
>> The standard location of dictionary.txt is under codespell's package, on
>> my machine atm (codespell 2.1, Artix Linux):
>> /usr/lib/python3.9/site-packages/codespell_lib/data/dictionary.txt
>>
>> Since we enable the codespell by default for SOF I have constant:
> 
> If you enable it by default, you probably are using a .checkpatch.conf file.

It is enabled via a commit hook and started to fail after codespell
update to 2.1 (when the /usr/share/codespell/dictionary.txt no longer exist)

This is downstream port of checkpatch.pl in sof:
https://thesofproject.github.io

If I would have enabled it locally I would have also specified the
codespellfile in .checkpatch.conf.

> --codespell is not a typical default so I think always doing this test
> regardless of --codespell being enabled is inappropriate.

I tend to agree.

>> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> []
>> @@ -73,6 +73,12 @@ my $git_command ='export LANGUAGE=en_US.UTF-8; git';
>>  my $tabsize = 8;
>>  my ${CONFIG_} = "CONFIG_";
>>
>> +# Override the codespellfile location based on codespell install location
>> +if (which("codespell") ne "" && which("python") ne "") {
>> +	my $codespell_dict = `python -c "import os.path as op; import codespell_lib; print(op.join(op.dirname(codespell_lib.__file__), 'data', 'dictionary.txt'), end='')" 2> /dev/null`;
>> +	$codespellfile = $codespell_dict if (-e $codespell_dict);
>> +}
>> +
> 
> Maybe add a function and/or use something like:
> 
> 	if (($codespell || $help) &&
> 	    which(etc...

Right, so I will move the check after the GetOptions() to have the
$codespell and $help options evaluated.

>>  sub help {
>>  	my ($exitcode) = @_;
>>  
>>
>> @@ -130,7 +136,7 @@ Options:
>>    --ignore-perl-version      override checking of perl version.  expect
>>                               runtime errors.
>>    --codespell                Use the codespell dictionary for spelling/typos
>> -                             (default:/usr/share/codespell/dictionary.txt)
>> +                             (default:$codespellfile)
> 
> I think this should not be changed or only be shown as $codespellfile when
> --codespell is added on the command line

If I run the 'scripts/checkpatch.pl -h' I would like to see the options
and defaults that will be used and I don't expect that the default of
the dictionary.tx would be different between

scripts/checkpatch.pl -h
 default:/usr/share/codespell/dictionary.txt)

scripts/checkpatch.pl --codespell -h
 (default:/usr/lib/python3.9/site-packages/codespell_lib/data/dictionary.txt)

I think this is not too intuitive.

Now I have a working and consistent version, let's see how that looks like.

> 
>>    --codespellfile            Use this codespell dictionary
>>    --typedefsfile             Read additional types from this file
>>    --color[=WHEN]             Use colors 'always', 'never', or only when output
> 
> 

-- 
Péter

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-10-11  9:33 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-11  6:32 [PATCH v2] checkpatch: get default codespell dictionary path from package location Peter Ujfalusi
2021-10-11  8:11 ` Joe Perches
2021-10-11  9:33   ` Péter Ujfalusi

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.