diff mbox series

[08/24] tools: bpftool: update bpftool-prog.rst reference

Message ID dc4bae7a14518fbfff20a0f539df06a5c19b09de.1631783482.git.mchehab+huawei@kernel.org (mailing list archive)
State New
Headers show
Series Fix some issues at documentation | expand

Commit Message

Mauro Carvalho Chehab Sept. 16, 2021, 9:14 a.m. UTC
The file name: Documentation/bpftool-prog.rst
should be, instead: tools/bpf/bpftool/Documentation/bpftool-prog.rst.

Update its cross-reference accordingly.

Fixes: a2b5944fb4e0 ("selftests/bpf: Check consistency between bpftool source, doc, completion")
Fixes: ff69c21a85a4 ("tools: bpftool: add documentation")
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
---
 tools/testing/selftests/bpf/test_bpftool_synctypes.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Quentin Monnet Sept. 16, 2021, 9:43 a.m. UTC | #1
2021-09-16 11:14 UTC+0200 ~ Mauro Carvalho Chehab
<mchehab+huawei@kernel.org>
> The file name: Documentation/bpftool-prog.rst
> should be, instead: tools/bpf/bpftool/Documentation/bpftool-prog.rst.
> 
> Update its cross-reference accordingly.
> 
> Fixes: a2b5944fb4e0 ("selftests/bpf: Check consistency between bpftool source, doc, completion")
> Fixes: ff69c21a85a4 ("tools: bpftool: add documentation")

Hi,
How is this a fix for the commit that added the documentation in bpftool?

> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
> ---
>  tools/testing/selftests/bpf/test_bpftool_synctypes.py | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/tools/testing/selftests/bpf/test_bpftool_synctypes.py b/tools/testing/selftests/bpf/test_bpftool_synctypes.py
> index be54b7335a76..27a2c369a798 100755
> --- a/tools/testing/selftests/bpf/test_bpftool_synctypes.py
> +++ b/tools/testing/selftests/bpf/test_bpftool_synctypes.py
> @@ -374,7 +374,7 @@ class ManProgExtractor(ManPageExtractor):
>      """
>      An extractor for bpftool-prog.rst.
>      """
> -    filename = os.path.join(BPFTOOL_DIR, 'Documentation/bpftool-prog.rst')
> +    filename = os.path.join(BPFTOOL_DIR, 'tools/bpf/bpftool/Documentation/bpftool-prog.rst')
>  
>      def get_attach_types(self):
>          return self.get_rst_list('ATTACH_TYPE')
> 

No I don't believe it should. BPFTOOL_DIR already contains
'tools/bpf/bpftool' and the os.path.join() concatenates the two path
fragments.

Where is this suggestion coming from? Did you face an issue with the script?

Same comment applies for the next two patches.

Quentin
Mauro Carvalho Chehab Sept. 16, 2021, 10:49 a.m. UTC | #2
Hi Quentin,

Em Thu, 16 Sep 2021 10:43:45 +0100
Quentin Monnet <quentin@isovalent.com> escreveu:

> 2021-09-16 11:14 UTC+0200 ~ Mauro Carvalho Chehab
> <mchehab+huawei@kernel.org>
> > The file name: Documentation/bpftool-prog.rst
> > should be, instead: tools/bpf/bpftool/Documentation/bpftool-prog.rst.
> > 
> > Update its cross-reference accordingly.
> > 
> > Fixes: a2b5944fb4e0 ("selftests/bpf: Check consistency between bpftool source, doc, completion")
> > Fixes: ff69c21a85a4 ("tools: bpftool: add documentation")  
> 
> Hi,
> How is this a fix for the commit that added the documentation in bpftool?
> 
> > Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
> > ---
> >  tools/testing/selftests/bpf/test_bpftool_synctypes.py | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/tools/testing/selftests/bpf/test_bpftool_synctypes.py b/tools/testing/selftests/bpf/test_bpftool_synctypes.py
> > index be54b7335a76..27a2c369a798 100755
> > --- a/tools/testing/selftests/bpf/test_bpftool_synctypes.py
> > +++ b/tools/testing/selftests/bpf/test_bpftool_synctypes.py
> > @@ -374,7 +374,7 @@ class ManProgExtractor(ManPageExtractor):
> >      """
> >      An extractor for bpftool-prog.rst.
> >      """
> > -    filename = os.path.join(BPFTOOL_DIR, 'Documentation/bpftool-prog.rst')
> > +    filename = os.path.join(BPFTOOL_DIR, 'tools/bpf/bpftool/Documentation/bpftool-prog.rst')
> >  
> >      def get_attach_types(self):
> >          return self.get_rst_list('ATTACH_TYPE')
> >   
> 
> No I don't believe it should. BPFTOOL_DIR already contains
> 'tools/bpf/bpftool' and the os.path.join() concatenates the two path
> fragments.
> 
> Where is this suggestion coming from? Did you face an issue with the script?

No, I didn't face any issues with this script.

The suggestion cames from the script at:

	./scripts/documentation-file-ref-check

which is meant to discover broken doc references. 

Such script has already a rule to handle stuff under tools/:

		# Accept relative Documentation patches for tools/
		if ($f =~ m/tools/) {
			my $path = $f;
			$path =~ s,(.*)/.*,$1,;
			next if (grep -e, glob("$path/$ref $path/../$ref $path/$fulref"));
		}

but it seems it needs a fixup in order for it to stop reporting issues
at test_bpftool_synctypes.py:

	$ ./scripts/documentation-file-ref-check 
	...
	tools/testing/selftests/bpf/test_bpftool_synctypes.py: Documentation/bpftool-prog.rst
	tools/testing/selftests/bpf/test_bpftool_synctypes.py: Documentation/bpftool-map.rst
	tools/testing/selftests/bpf/test_bpftool_synctypes.py: Documentation/bpftool-cgroup.rst

I'll drop the patches touching it for a next version, probably
adding a fix for such script.

Thanks,
Mauro
Quentin Monnet Sept. 16, 2021, 10:57 a.m. UTC | #3
2021-09-16 12:49 UTC+0200 ~ Mauro Carvalho Chehab
<mchehab+huawei@kernel.org>
> Hi Quentin,
> 
> Em Thu, 16 Sep 2021 10:43:45 +0100
> Quentin Monnet <quentin@isovalent.com> escreveu:
> 
>> 2021-09-16 11:14 UTC+0200 ~ Mauro Carvalho Chehab
>> <mchehab+huawei@kernel.org>
>>> The file name: Documentation/bpftool-prog.rst
>>> should be, instead: tools/bpf/bpftool/Documentation/bpftool-prog.rst.
>>>
>>> Update its cross-reference accordingly.
>>>
>>> Fixes: a2b5944fb4e0 ("selftests/bpf: Check consistency between bpftool source, doc, completion")
>>> Fixes: ff69c21a85a4 ("tools: bpftool: add documentation")  
>>
>> Hi,
>> How is this a fix for the commit that added the documentation in bpftool?
>>
>>> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
>>> ---
>>>  tools/testing/selftests/bpf/test_bpftool_synctypes.py | 2 +-
>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/tools/testing/selftests/bpf/test_bpftool_synctypes.py b/tools/testing/selftests/bpf/test_bpftool_synctypes.py
>>> index be54b7335a76..27a2c369a798 100755
>>> --- a/tools/testing/selftests/bpf/test_bpftool_synctypes.py
>>> +++ b/tools/testing/selftests/bpf/test_bpftool_synctypes.py
>>> @@ -374,7 +374,7 @@ class ManProgExtractor(ManPageExtractor):
>>>      """
>>>      An extractor for bpftool-prog.rst.
>>>      """
>>> -    filename = os.path.join(BPFTOOL_DIR, 'Documentation/bpftool-prog.rst')
>>> +    filename = os.path.join(BPFTOOL_DIR, 'tools/bpf/bpftool/Documentation/bpftool-prog.rst')
>>>  
>>>      def get_attach_types(self):
>>>          return self.get_rst_list('ATTACH_TYPE')
>>>   
>>
>> No I don't believe it should. BPFTOOL_DIR already contains
>> 'tools/bpf/bpftool' and the os.path.join() concatenates the two path
>> fragments.
>>
>> Where is this suggestion coming from? Did you face an issue with the script?
> 
> No, I didn't face any issues with this script.
> 
> The suggestion cames from the script at:
> 
> 	./scripts/documentation-file-ref-check
> 
> which is meant to discover broken doc references. 
> 
> Such script has already a rule to handle stuff under tools/:
> 
> 		# Accept relative Documentation patches for tools/
> 		if ($f =~ m/tools/) {
> 			my $path = $f;
> 			$path =~ s,(.*)/.*,$1,;
> 			next if (grep -e, glob("$path/$ref $path/../$ref $path/$fulref"));
> 		}
> 
> but it seems it needs a fixup in order for it to stop reporting issues
> at test_bpftool_synctypes.py:
> 
> 	$ ./scripts/documentation-file-ref-check 
> 	...
> 	tools/testing/selftests/bpf/test_bpftool_synctypes.py: Documentation/bpftool-prog.rst
> 	tools/testing/selftests/bpf/test_bpftool_synctypes.py: Documentation/bpftool-map.rst
> 	tools/testing/selftests/bpf/test_bpftool_synctypes.py: Documentation/bpftool-cgroup.rst

Oh, I see, thanks for explaining. I didn't know this script would catch
the paths in bpftool's test file.

> 
> I'll drop the patches touching it for a next version, probably
> adding a fix for such script.
> 
> Thanks,
> Mauro
> 

Sounds good to me, thanks a lot!
Quentin
Mauro Carvalho Chehab Sept. 16, 2021, 11:30 a.m. UTC | #4
Em Thu, 16 Sep 2021 11:57:51 +0100
Quentin Monnet <quentin@isovalent.com> escreveu:

> 2021-09-16 12:49 UTC+0200 ~ Mauro Carvalho Chehab
> <mchehab+huawei@kernel.org>
> > Hi Quentin,
> > 
> > Em Thu, 16 Sep 2021 10:43:45 +0100
> > Quentin Monnet <quentin@isovalent.com> escreveu:
> >   
> >> 2021-09-16 11:14 UTC+0200 ~ Mauro Carvalho Chehab
> >> <mchehab+huawei@kernel.org>  
> >>> The file name: Documentation/bpftool-prog.rst
> >>> should be, instead: tools/bpf/bpftool/Documentation/bpftool-prog.rst.
> >>>
> >>> Update its cross-reference accordingly.
> >>>
> >>> Fixes: a2b5944fb4e0 ("selftests/bpf: Check consistency between bpftool source, doc, completion")
> >>> Fixes: ff69c21a85a4 ("tools: bpftool: add documentation")    
> >>
> >> Hi,
> >> How is this a fix for the commit that added the documentation in bpftool?
> >>  
> >>> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
> >>> ---
> >>>  tools/testing/selftests/bpf/test_bpftool_synctypes.py | 2 +-
> >>>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>>
> >>> diff --git a/tools/testing/selftests/bpf/test_bpftool_synctypes.py b/tools/testing/selftests/bpf/test_bpftool_synctypes.py
> >>> index be54b7335a76..27a2c369a798 100755
> >>> --- a/tools/testing/selftests/bpf/test_bpftool_synctypes.py
> >>> +++ b/tools/testing/selftests/bpf/test_bpftool_synctypes.py
> >>> @@ -374,7 +374,7 @@ class ManProgExtractor(ManPageExtractor):
> >>>      """
> >>>      An extractor for bpftool-prog.rst.
> >>>      """
> >>> -    filename = os.path.join(BPFTOOL_DIR, 'Documentation/bpftool-prog.rst')
> >>> +    filename = os.path.join(BPFTOOL_DIR, 'tools/bpf/bpftool/Documentation/bpftool-prog.rst')
> >>>  
> >>>      def get_attach_types(self):
> >>>          return self.get_rst_list('ATTACH_TYPE')
> >>>     
> >>
> >> No I don't believe it should. BPFTOOL_DIR already contains
> >> 'tools/bpf/bpftool' and the os.path.join() concatenates the two path
> >> fragments.
> >>
> >> Where is this suggestion coming from? Did you face an issue with the script?  
> > 
> > No, I didn't face any issues with this script.
> > 
> > The suggestion cames from the script at:
> > 
> > 	./scripts/documentation-file-ref-check
> > 
> > which is meant to discover broken doc references. 
> > 
> > Such script has already a rule to handle stuff under tools/:
> > 
> > 		# Accept relative Documentation patches for tools/
> > 		if ($f =~ m/tools/) {
> > 			my $path = $f;
> > 			$path =~ s,(.*)/.*,$1,;
> > 			next if (grep -e, glob("$path/$ref $path/../$ref $path/$fulref"));
> > 		}
> > 
> > but it seems it needs a fixup in order for it to stop reporting issues
> > at test_bpftool_synctypes.py:
> > 
> > 	$ ./scripts/documentation-file-ref-check 
> > 	...
> > 	tools/testing/selftests/bpf/test_bpftool_synctypes.py: Documentation/bpftool-prog.rst
> > 	tools/testing/selftests/bpf/test_bpftool_synctypes.py: Documentation/bpftool-map.rst
> > 	tools/testing/selftests/bpf/test_bpftool_synctypes.py: Documentation/bpftool-cgroup.rst  
> 
> Oh, I see, thanks for explaining. I didn't know this script would catch
> the paths in bpftool's test file.
> 
> > 
> > I'll drop the patches touching it for a next version, probably
> > adding a fix for such script.
> > 
> > Thanks,
> > Mauro
> >   
> 
> Sounds good to me, thanks a lot!

The enclosed patch should do the trick.

> Quentin

Thanks,
Mauro

[PATCH] scripts: documentation-file-ref-check: fix bpf selftests path

tools/testing/selftests/bpf/test_bpftool_synctypes.py use
relative patches on the top of BPFTOOL_DIR:

	BPFTOOL_DIR = os.path.join(LINUX_ROOT, 'tools/bpf/bpftool')

Change the script to automatically convert:

	testing/selftests/bpf -> bpf/bpftool

In order to properly check the files used by such script.

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

diff --git a/scripts/documentation-file-ref-check b/scripts/documentation-file-ref-check
index 7187ea5e5149..2d91cfe11cd2 100755
--- a/scripts/documentation-file-ref-check
+++ b/scripts/documentation-file-ref-check
@@ -144,6 +144,7 @@ while (<IN>) {
 		if ($f =~ m/tools/) {
 			my $path = $f;
 			$path =~ s,(.*)/.*,$1,;
+			$path =~ s,testing/selftests/bpf,bpf/bpftool,;
 			next if (grep -e, glob("$path/$ref $path/../$ref $path/$fulref"));
 		}
Quentin Monnet Sept. 16, 2021, 12:12 p.m. UTC | #5
2021-09-16 13:30 UTC+0200 ~ Mauro Carvalho Chehab
<mchehab+huawei@kernel.org>

> [PATCH] scripts: documentation-file-ref-check: fix bpf selftests path
> 
> tools/testing/selftests/bpf/test_bpftool_synctypes.py use
> relative patches on the top of BPFTOOL_DIR:
> 
> 	BPFTOOL_DIR = os.path.join(LINUX_ROOT, 'tools/bpf/bpftool')
> 
> Change the script to automatically convert:
> 
> 	testing/selftests/bpf -> bpf/bpftool
> 
> In order to properly check the files used by such script.
> 
> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
> 
> diff --git a/scripts/documentation-file-ref-check b/scripts/documentation-file-ref-check
> index 7187ea5e5149..2d91cfe11cd2 100755
> --- a/scripts/documentation-file-ref-check
> +++ b/scripts/documentation-file-ref-check
> @@ -144,6 +144,7 @@ while (<IN>) {
>  		if ($f =~ m/tools/) {
>  			my $path = $f;
>  			$path =~ s,(.*)/.*,$1,;
> +			$path =~ s,testing/selftests/bpf,bpf/bpftool,;
>  			next if (grep -e, glob("$path/$ref $path/../$ref $path/$fulref"));
>  		}
>  
> 
> 
> 

I tested the patch and it works well on my side.

However, this looks a bit fragile to me. There is no particular reason
to have testing/selftests/bpf point to bpf/bpftool other than to
accommodate the current case, we could imagine other selftest files
pointing to other parts of the documentation in the future. I would
instead make an exception for test_bpftool_synctypes.py specifically
(other selftest files don't usually parse documentation anyway).
Alternatively, I would look at excluding lines where the path is used in
code (tricky to detect), maybe at least when used with os.path.join():

    next if ($ln =~ m,os\.path\.join\([^\,]*\,\s*['"]$fulref,);

But I'm not familiar with documentation-file-ref-check in the first
place, so these are just my two cents.

Thanks,
Quentin
diff mbox series

Patch

diff --git a/tools/testing/selftests/bpf/test_bpftool_synctypes.py b/tools/testing/selftests/bpf/test_bpftool_synctypes.py
index be54b7335a76..27a2c369a798 100755
--- a/tools/testing/selftests/bpf/test_bpftool_synctypes.py
+++ b/tools/testing/selftests/bpf/test_bpftool_synctypes.py
@@ -374,7 +374,7 @@  class ManProgExtractor(ManPageExtractor):
     """
     An extractor for bpftool-prog.rst.
     """
-    filename = os.path.join(BPFTOOL_DIR, 'Documentation/bpftool-prog.rst')
+    filename = os.path.join(BPFTOOL_DIR, 'tools/bpf/bpftool/Documentation/bpftool-prog.rst')
 
     def get_attach_types(self):
         return self.get_rst_list('ATTACH_TYPE')