linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] checkpatch: use python3 to find codespell dictionary
@ 2022-03-09 18:00 Sagar Patel
  2022-03-09 20:02 ` Joe Perches
  0 siblings, 1 reply; 2+ messages in thread
From: Sagar Patel @ 2022-03-09 18:00 UTC (permalink / raw)
  To: Andy Whitcroft; +Cc: Joe Perches, Peter Ujfalusi, linux-kernel, Sagar Patel

Commit 0ee3e7b8893e ("checkpatch: get default codespell dictionary path
from package location") introduced the ability to search for the
codespell dictionary rather than hardcoding its path.

codespell requires Python 3.6 or above, but on some systems, the python
executable is a Python 2.7 interpreter. In this case, searching for the
dictionary fails, subsequently making codespell fail:

No codespell typos will be found - file '/usr/share/codespell/dictionary.txt': No such file or directory

So, use python3 to remove ambiguity.

In addition, when searching for dictionary.txt, do not check if the
codespell executable exists since,

  - checkpatch.pl only uses dictionary.txt, not the codespell
    executable.
  - codespell can be installed via a Python package manager, in which
    case the codespell executable may not be present in a typical $PATH,
    but a dictionary does exist.

Signed-off-by: Sagar Patel <sagarmp@cs.unc.edu>
Reviewed-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
---
Hey,

Changes since v1:
- reword commit message to clarify that the codespell executable is not used,
  and that the executable may not be present in a *typical* $PATH.

---Sagar Patel
---
 scripts/checkpatch.pl | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index b01c36a15d9d..46302e074b18 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -334,7 +334,7 @@ if ($user_codespellfile) {
 } elsif (!(-f $codespellfile)) {
 	# If /usr/share/codespell/dictionary.txt is not present, try to find it
 	# under codespell's install directory: <codespell_root>/data/dictionary.txt
-	if (($codespell || $help) && which("codespell") ne "" && which("python") ne "") {
+	if (($codespell || $help) && which("python3") ne "") {
 		my $python_codespell_dict = << "EOF";
 
 import os.path as op
@@ -344,7 +344,7 @@ codespell_file = op.join(codespell_dir, 'data', 'dictionary.txt')
 print(codespell_file, end='')
 EOF
 
-		my $codespell_dict = `python -c "$python_codespell_dict" 2> /dev/null`;
+		my $codespell_dict = `python3 -c "$python_codespell_dict" 2> /dev/null`;
 		$codespellfile = $codespell_dict if (-f $codespell_dict);
 	}
 }
-- 
2.25.1


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

* Re: [PATCH v2] checkpatch: use python3 to find codespell dictionary
  2022-03-09 18:00 [PATCH v2] checkpatch: use python3 to find codespell dictionary Sagar Patel
@ 2022-03-09 20:02 ` Joe Perches
  0 siblings, 0 replies; 2+ messages in thread
From: Joe Perches @ 2022-03-09 20:02 UTC (permalink / raw)
  To: Sagar Patel, Andy Whitcroft, Andrew Morton; +Cc: Peter Ujfalusi, linux-kernel

On Wed, 2022-03-09 at 13:00 -0500, Sagar Patel wrote:
> Commit 0ee3e7b8893e ("checkpatch: get default codespell dictionary path
> from package location") introduced the ability to search for the
> codespell dictionary rather than hardcoding its path.
> 
> codespell requires Python 3.6 or above, but on some systems, the python
> executable is a Python 2.7 interpreter. In this case, searching for the
> dictionary fails, subsequently making codespell fail:
> 
> No codespell typos will be found - file '/usr/share/codespell/dictionary.txt': No such file or directory
> 
> So, use python3 to remove ambiguity.

Seems sensible, thanks.

> 
> In addition, when searching for dictionary.txt, do not check if the
> codespell executable exists since,
> 
>   - checkpatch.pl only uses dictionary.txt, not the codespell
>     executable.
>   - codespell can be installed via a Python package manager, in which
>     case the codespell executable may not be present in a typical $PATH,
>     but a dictionary does exist.
> 
> Signed-off-by: Sagar Patel <sagarmp@cs.unc.edu>
> Reviewed-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
> ---
> Hey,
> 
> Changes since v1:
> - reword commit message to clarify that the codespell executable is not used,
>   and that the executable may not be present in a *typical* $PATH.
> 
> ---Sagar Patel
> ---
>  scripts/checkpatch.pl | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> index b01c36a15d9d..46302e074b18 100755
> --- a/scripts/checkpatch.pl
> +++ b/scripts/checkpatch.pl
> @@ -334,7 +334,7 @@ if ($user_codespellfile) {
>  } elsif (!(-f $codespellfile)) {
>  	# If /usr/share/codespell/dictionary.txt is not present, try to find it
>  	# under codespell's install directory: <codespell_root>/data/dictionary.txt
> -	if (($codespell || $help) && which("codespell") ne "" && which("python") ne "") {
> +	if (($codespell || $help) && which("python3") ne "") {
>  		my $python_codespell_dict = << "EOF";
>  
>  import os.path as op
> @@ -344,7 +344,7 @@ codespell_file = op.join(codespell_dir, 'data', 'dictionary.txt')
>  print(codespell_file, end='')
>  EOF
>  
> -		my $codespell_dict = `python -c "$python_codespell_dict" 2> /dev/null`;
> +		my $codespell_dict = `python3 -c "$python_codespell_dict" 2> /dev/null`;
>  		$codespellfile = $codespell_dict if (-f $codespell_dict);
>  	}
>  }



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

end of thread, other threads:[~2022-03-09 20:02 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-09 18:00 [PATCH v2] checkpatch: use python3 to find codespell dictionary Sagar Patel
2022-03-09 20:02 ` Joe Perches

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).