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 <[email protected]>
---
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
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
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