[PATCH 01/13] docs: Move the "features" tools to tools/doc

Jonathan Corbet posted 13 patches 1 month, 3 weeks ago
[PATCH 01/13] docs: Move the "features" tools to tools/doc
Posted by Jonathan Corbet 1 month, 3 weeks ago
The scripts for managing the features docs are found in three different
directories; unite them all under tools/doc and update references as
needed.

Signed-off-by: Jonathan Corbet <corbet@lwn.net>
---
 Documentation/sphinx/kernel_feat.py                           | 4 ++--
 .../features/scripts => tools/doc}/features-refresh.sh        | 0
 {scripts => tools/doc}/get_feat.pl                            | 2 +-
 {Documentation/features => tools/doc}/list-arch.sh            | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)
 rename {Documentation/features/scripts => tools/doc}/features-refresh.sh (100%)
 rename {scripts => tools/doc}/get_feat.pl (99%)
 rename {Documentation/features => tools/doc}/list-arch.sh (83%)

diff --git a/Documentation/sphinx/kernel_feat.py b/Documentation/sphinx/kernel_feat.py
index e3a51867f27b..5453a7b1fc9f 100644
--- a/Documentation/sphinx/kernel_feat.py
+++ b/Documentation/sphinx/kernel_feat.py
@@ -13,7 +13,7 @@
     :license:    GPL Version 2, June 1991 see Linux/COPYING for details.
 
     The ``kernel-feat`` (:py:class:`KernelFeat`) directive calls the
-    scripts/get_feat.pl script to parse the Kernel ABI files.
+    tools/doc/get_feat.pl script to parse the Kernel ABI files.
 
     Overview of directive's argument and options.
 
@@ -83,7 +83,7 @@ class KernelFeat(Directive):
         srctree = os.path.abspath(os.environ["srctree"])
 
         args = [
-            os.path.join(srctree, 'scripts/get_feat.pl'),
+            os.path.join(srctree, 'tools/doc/get_feat.pl'),
             'rest',
             '--enable-fname',
             '--dir',
diff --git a/Documentation/features/scripts/features-refresh.sh b/tools/doc/features-refresh.sh
similarity index 100%
rename from Documentation/features/scripts/features-refresh.sh
rename to tools/doc/features-refresh.sh
diff --git a/scripts/get_feat.pl b/tools/doc/get_feat.pl
similarity index 99%
rename from scripts/get_feat.pl
rename to tools/doc/get_feat.pl
index 40fb28c8424e..d75e7c85dc85 100755
--- a/scripts/get_feat.pl
+++ b/tools/doc/get_feat.pl
@@ -18,7 +18,7 @@ my $enable_fname;
 my $basename = abs_path($0);
 $basename =~ s,/[^/]+$,/,;
 
-my $prefix=$basename . "../Documentation/features";
+my $prefix=$basename . "../../Documentation/features";
 
 # Used only at for full features output. The script will auto-adjust
 # such values for the minimal possible values
diff --git a/Documentation/features/list-arch.sh b/tools/doc/list-arch.sh
similarity index 83%
rename from Documentation/features/list-arch.sh
rename to tools/doc/list-arch.sh
index ac8ff7f6f859..96fe83b7058b 100755
--- a/Documentation/features/list-arch.sh
+++ b/tools/doc/list-arch.sh
@@ -8,4 +8,4 @@
 
 ARCH=${1:-$(uname -m | sed 's/x86_64/x86/' | sed 's/i386/x86/' | sed 's/s390x/s390/')}
 
-$(dirname $0)/../../scripts/get_feat.pl list --arch $ARCH
+$(dirname $0)/get_feat.pl list --arch $ARCH
-- 
2.50.1
Re: [PATCH 01/13] docs: Move the "features" tools to tools/doc
Posted by Mauro Carvalho Chehab 1 month, 3 weeks ago
Em Wed, 13 Aug 2025 15:32:00 -0600
Jonathan Corbet <corbet@lwn.net> escreveu:

> The scripts for managing the features docs are found in three different
> directories; unite them all under tools/doc and update references as
> needed.
> 
> Signed-off-by: Jonathan Corbet <corbet@lwn.net>
> ---
>  Documentation/sphinx/kernel_feat.py                           | 4 ++--
>  .../features/scripts => tools/doc}/features-refresh.sh        | 0
>  {scripts => tools/doc}/get_feat.pl                            | 2 +-

This one is the next on my list to convert to Python, but I didn't
do any changes on it yet.

So,

Reviewed-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>


>  {Documentation/features => tools/doc}/list-arch.sh            | 2 +-
>  4 files changed, 4 insertions(+), 4 deletions(-)
>  rename {Documentation/features/scripts => tools/doc}/features-refresh.sh (100%)
>  rename {scripts => tools/doc}/get_feat.pl (99%)
>  rename {Documentation/features => tools/doc}/list-arch.sh (83%)

I wonder if the best wouldn't be to have a single script for
features handling all usecases.

> 
> diff --git a/Documentation/sphinx/kernel_feat.py b/Documentation/sphinx/kernel_feat.py
> index e3a51867f27b..5453a7b1fc9f 100644
> --- a/Documentation/sphinx/kernel_feat.py
> +++ b/Documentation/sphinx/kernel_feat.py
> @@ -13,7 +13,7 @@
>      :license:    GPL Version 2, June 1991 see Linux/COPYING for details.
>  
>      The ``kernel-feat`` (:py:class:`KernelFeat`) directive calls the
> -    scripts/get_feat.pl script to parse the Kernel ABI files.
> +    tools/doc/get_feat.pl script to parse the Kernel ABI files.
>  
>      Overview of directive's argument and options.
>  
> @@ -83,7 +83,7 @@ class KernelFeat(Directive):
>          srctree = os.path.abspath(os.environ["srctree"])
>  
>          args = [
> -            os.path.join(srctree, 'scripts/get_feat.pl'),
> +            os.path.join(srctree, 'tools/doc/get_feat.pl'),
>              'rest',
>              '--enable-fname',
>              '--dir',
> diff --git a/Documentation/features/scripts/features-refresh.sh b/tools/doc/features-refresh.sh
> similarity index 100%
> rename from Documentation/features/scripts/features-refresh.sh
> rename to tools/doc/features-refresh.sh
> diff --git a/scripts/get_feat.pl b/tools/doc/get_feat.pl
> similarity index 99%
> rename from scripts/get_feat.pl
> rename to tools/doc/get_feat.pl
> index 40fb28c8424e..d75e7c85dc85 100755
> --- a/scripts/get_feat.pl
> +++ b/tools/doc/get_feat.pl
> @@ -18,7 +18,7 @@ my $enable_fname;
>  my $basename = abs_path($0);
>  $basename =~ s,/[^/]+$,/,;
>  
> -my $prefix=$basename . "../Documentation/features";
> +my $prefix=$basename . "../../Documentation/features";
>  
>  # Used only at for full features output. The script will auto-adjust
>  # such values for the minimal possible values
> diff --git a/Documentation/features/list-arch.sh b/tools/doc/list-arch.sh
> similarity index 83%
> rename from Documentation/features/list-arch.sh
> rename to tools/doc/list-arch.sh
> index ac8ff7f6f859..96fe83b7058b 100755
> --- a/Documentation/features/list-arch.sh
> +++ b/tools/doc/list-arch.sh
> @@ -8,4 +8,4 @@
>  
>  ARCH=${1:-$(uname -m | sed 's/x86_64/x86/' | sed 's/i386/x86/' | sed 's/s390x/s390/')}
>  
> -$(dirname $0)/../../scripts/get_feat.pl list --arch $ARCH
> +$(dirname $0)/get_feat.pl list --arch $ARCH



Thanks,
Mauro
Re: [PATCH 01/13] docs: Move the "features" tools to tools/doc
Posted by Randy Dunlap 1 month, 3 weeks ago

On 8/13/25 4:38 PM, Mauro Carvalho Chehab wrote:
> Em Wed, 13 Aug 2025 15:32:00 -0600
> Jonathan Corbet <corbet@lwn.net> escreveu:
> 
>> The scripts for managing the features docs are found in three different
>> directories; unite them all under tools/doc and update references as
>> needed.
>>
>> Signed-off-by: Jonathan Corbet <corbet@lwn.net>
>> ---
>>  Documentation/sphinx/kernel_feat.py                           | 4 ++--
>>  .../features/scripts => tools/doc}/features-refresh.sh        | 0
>>  {scripts => tools/doc}/get_feat.pl                            | 2 +-
> 
> This one is the next on my list to convert to Python, but I didn't
> do any changes on it yet.

Just curious, why does it need to be converted from shell to Python?
I'm sure you will explain that in the patch description (or cover letter).

> So,
> 
> Reviewed-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
> 
> 
>>  {Documentation/features => tools/doc}/list-arch.sh            | 2 +-
>>  4 files changed, 4 insertions(+), 4 deletions(-)
>>  rename {Documentation/features/scripts => tools/doc}/features-refresh.sh (100%)
>>  rename {scripts => tools/doc}/get_feat.pl (99%)
>>  rename {Documentation/features => tools/doc}/list-arch.sh (83%)
> 
> I wonder if the best wouldn't be to have a single script for
> features handling all usecases.


-- 
~Randy
Re: [PATCH 01/13] docs: Move the "features" tools to tools/doc
Posted by Mauro Carvalho Chehab 1 month, 3 weeks ago
Em Wed, 13 Aug 2025 16:42:42 -0700
Randy Dunlap <rdunlap@infradead.org> escreveu:

> On 8/13/25 4:38 PM, Mauro Carvalho Chehab wrote:
> > Em Wed, 13 Aug 2025 15:32:00 -0600
> > Jonathan Corbet <corbet@lwn.net> escreveu:
> >   
> >> The scripts for managing the features docs are found in three different
> >> directories; unite them all under tools/doc and update references as
> >> needed.
> >>
> >> Signed-off-by: Jonathan Corbet <corbet@lwn.net>
> >> ---
> >>  Documentation/sphinx/kernel_feat.py                           | 4 ++--
> >>  .../features/scripts => tools/doc}/features-refresh.sh        | 0
> >>  {scripts => tools/doc}/get_feat.pl                            | 2 +-  
> > 
> > This one is the next on my list to convert to Python, but I didn't
> > do any changes on it yet.  
> 
> Just curious, why does it need to be converted from shell to Python?
> I'm sure you will explain that in the patch description (or cover letter).

The rationale is the same as kernel-doc and get-abi: there is a Sphinx
extension that executes it. By converting it into Python and splitting
the code into an exec and a library, we can use the library directly at
the extension.

Besides that, the code in Python, specially after using modules and 
classes, become IMO clearer, making easier to maintain, specially if
we avoid functions inside functions, complex class inheritance, lamba
functions and multiple statements on a single line.

Thanks,
Mauro
Re: [PATCH 01/13] docs: Move the "features" tools to tools/doc
Posted by Randy Dunlap 1 month, 3 weeks ago

On 8/13/25 10:56 PM, Mauro Carvalho Chehab wrote:
> Em Wed, 13 Aug 2025 16:42:42 -0700
> Randy Dunlap <rdunlap@infradead.org> escreveu:
> 
>> On 8/13/25 4:38 PM, Mauro Carvalho Chehab wrote:
>>> Em Wed, 13 Aug 2025 15:32:00 -0600
>>> Jonathan Corbet <corbet@lwn.net> escreveu:
>>>   
>>>> The scripts for managing the features docs are found in three different
>>>> directories; unite them all under tools/doc and update references as
>>>> needed.
>>>>
>>>> Signed-off-by: Jonathan Corbet <corbet@lwn.net>
>>>> ---
>>>>  Documentation/sphinx/kernel_feat.py                           | 4 ++--
>>>>  .../features/scripts => tools/doc}/features-refresh.sh        | 0
>>>>  {scripts => tools/doc}/get_feat.pl                            | 2 +-  
>>>
>>> This one is the next on my list to convert to Python, but I didn't
>>> do any changes on it yet.  
>>
>> Just curious, why does it need to be converted from shell to Python?
>> I'm sure you will explain that in the patch description (or cover letter).
> 
> The rationale is the same as kernel-doc and get-abi: there is a Sphinx
> extension that executes it. By converting it into Python and splitting
> the code into an exec and a library, we can use the library directly at
> the extension.
> 
> Besides that, the code in Python, specially after using modules and 
> classes, become IMO clearer, making easier to maintain, specially if
> we avoid functions inside functions, complex class inheritance, lamba
> functions and multiple statements on a single line.

Thank you for that.

-- 
~Randy