2021-05-09 15:44:29

by Dwaipayan Ray

[permalink] [raw]
Subject: Codespell dictionary path is no longer absolute

A year ago, the codespell dictionary was moved from
/usr/share/codespell/dictionary.txt to data/dictionary.txt under
the codespell_lib installation directory.

checkpatch.pl still has the default codespell path as
/usr/share/codespell/dictionary.txt.
Any new installations will now also need to specify --codespellfile
option along with --codespell.

Can auto detection of the dictionary path be enabled with something
like this?

-----
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 23697a6b1eaa..28ca5cfff2d5 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -889,6 +889,9 @@ if (open(my $spelling, '<', $spelling_file)) {
}

if ($codespell) {
+ if (! -e "$codespellfile" && which("python") ne "") {
+ $codespellfile = `python -c "import os.path as op; import code
spell_lib; print(op.join(op.dirname(codespell_lib.__file__), 'data', 'dictiona
ry.txt'), end='')"`;
+ }
if (open(my $spelling, '<', $codespellfile)) {
while (<$spelling>) {
my $line = $_;
-----

Thanks,
Dwaipayan.


2021-05-09 17:10:18

by Joe Perches

[permalink] [raw]
Subject: Re: Codespell dictionary path is no longer absolute

On Sun, 2021-05-09 at 21:12 +0530, Dwaipayan Ray wrote:
> A year ago, the codespell dictionary was moved from
> /usr/share/codespell/dictionary.txt to data/dictionary.txt under
> the codespell_lib installation directory.
>
> checkpatch.pl still has the default codespell path as
> /usr/share/codespell/dictionary.txt.
> Any new installations will now also need to specify --codespellfile
> option along with --codespell.
>
> Can auto detection of the dictionary path be enabled with something
> like this?
[]
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> @@ -889,6 +889,9 @@ if (open(my $spelling, '<', $spelling_file)) {
> }
>
> if ($codespell) {
> + if (! -e "$codespellfile" && which("python") ne "") {
> + $codespellfile = `python -c "import os.path as op; import code
> spell_lib; print(op.join(op.dirname(codespell_lib.__file__), 'data', 'dictiona
> ry.txt'), end='')"`;
> + }

Maybe, but it doesn't work with python2

And it's likely better to do as few things in python as possible
so maybe ditch the op.join and use perl instead

if (! -e "$codespellfile" && which("python") ne "" &&
`python -c "import sys; print(sys.version_info.major)"` >= "3") {
$codespellfile = dirname(`python -c "import codespell_lib; print(codespell_lib.__file__);"`) . "/data/dictionary.txt";
}