Re: [PATCH] scripts/kernel-doc: fix make htmldoc warning

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On Mon, Oct 30, 2023 at 09:02:32AM +0900, Akira Yokosawa wrote:
> Hi,
> 
> On Date: Sun, 29 Oct 2023 12:06:58 -0600, Jonathan Corbet wrote:
> > Swarup Laxman Kotiaklapudi <swarupkotikalapudi@xxxxxxxxx> writes:
> > 
> >> make htmldocs has below warnings:
> >>
> >> ..
> >> Variable length lookbehind is experimental in regex;
> >> marked by <-- HERE in m/(?<=^|\s)-Werror(?=$|\s)
> >> <-- HERE / at ./scripts/kernel-doc line 188.
> >> ...
> > 
> > So how do you get this warning?  I've not seen it.  Which version of
> > Perl? 
> 
> I get this warning on Ubuntu 22.04LTS, whose perl is v5.34.0.
> 
> Swarup's change silences the warning there.
> 
> I could provide a tested-by: tag if I was familiar with that
> "variable length lookbehind" thing ...
> 
>         Thanks, Akira
> 
> > 
> >> "-Werror" option in make command,
> >> needs "-Werror" to have space before
> >> and after while running make command,
> >> hence space checking is sepratly done,
> >> and is not part of lookbehind regular expression.

Thanks a lot for the input, but I'm afraid that "have space before
and after -Werror" is not very general use case.

For example, the following command only has "-Werror" in KCFLAGS env
variable, no space before or after it. The purpose of this command is to
turn all warnings into errors, including kernel-doc ones, but after
applying your fix patch, the kernel-doc warnings are not considered as
errors:

$ make W=1 KCFLAGS="-Werror" kernel/fork.o
...
  CC      kernel/fork.o
kernel/fork.c:1405: warning: Function parameter or member 'mm' not described in 'set_mm_exe_file'
kernel/fork.c:1405: warning: Function parameter or member 'new_exe_file' not described in 'set_mm_exe_file'
kernel/fork.c:1442: warning: Function parameter or member 'mm' not described in 'replace_mm_exe_file'
kernel/fork.c:1442: warning: Function parameter or member 'new_exe_file' not described in 'replace_mm_exe_file'
kernel/fork.c:1494: warning: Function parameter or member 'mm' not described in 'get_mm_exe_file'
kernel/fork.c:1513: warning: Function parameter or member 'task' not described in 'get_task_exe_file'
kernel/fork.c:1537: warning: Function parameter or member 'task' not described in 'get_task_mm'
kernel/fork.c:2112: warning: bad line:
kernel/fork.c:2133: warning: Function parameter or member 'ret' not described in '__pidfd_prepare'
kernel/fork.c:2133: warning: Excess function parameter 'pidfd' description in '__pidfd_prepare'
kernel/fork.c:2182: warning: Function parameter or member 'ret' not described in 'pidfd_prepare'
kernel/fork.c:2182: warning: Excess function parameter 'pidfd' description in 'pidfd_prepare'
kernel/fork.c:3198: warning: expecting prototype for clone3(). Prototype was for sys_clone3() instead
$ echo $?
0

As I described in the message of commit 91f950e8b9d8, this regex should
match the general case that "there needs to be a space *OR* start of string
before -Werror, and a space *OR* end of string after -Werror."

Please feel free to try the followinn cases to see if all of them can
work as expected. MATCH means kernel-doc warnings are considered as
errors, while NO MATCH means not.

    KCFLAGS="-Werror" make W=1 kernel/fork.o [MATCH]
    KCFLAGS="-Werror=return-type" make W=1 kernel/fork.o [NO MATCH]
    KCFLAGS="-Wcomment -Werror" make W=1 kernel/fork.o [MATCH]
    KCFLAGS="-Wcomment -Werror=return-type" make W=1 kernel/fork.o [NO MATCH]
    KCFLAGS="-Werror -Wundef" make W=1 kernel/fork.o [MATCH]
    KCFLAGS="-Werror=return-type -Wundef" make W=1 kernel/fork.o [NO MATCH]
    KCFLAGS="-Wcomment -Werror -Wundef" make W=1 kernel/fork.o [MATCH]
    KCFLAGS="-Wcomment -Werror=return-type -Wundef" make W=1 kernel/fork.o [NO MATCH]

Best Regards,
Yujie

> >>
> >> Below command also didn't
> >> show any error:
> >>  make KCFLAGS="-Werror=return-type" W=1 kernel/fork.o
> >>
> >> Fixes: 91f950e8b9d8 ("scripts/kernel-doc: match -Werror flag strictly")
> >> Signed-off-by: Swarup Laxman Kotiaklapudi <swarupkotikalapudi@xxxxxxxxx>
> >> ---
> >>  scripts/kernel-doc | 2 +-
> >>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/scripts/kernel-doc b/scripts/kernel-doc
> >> index d660e1f4b483..aa9e3e198d12 100755
> >> --- a/scripts/kernel-doc
> >> +++ b/scripts/kernel-doc
> >> @@ -185,7 +185,7 @@ if (defined($ENV{'KBUILD_VERBOSE'}) && $ENV{'KBUILD_VERBOSE'} =~ '1') {
> >>  if (defined($ENV{'KCFLAGS'})) {
> >>  	my $kcflags = "$ENV{'KCFLAGS'}";
> >>  
> >> -	if ($kcflags =~ /(?<=^|\s)-Werror(?=$|\s)/) {
> >> +	if ($kcflags =~ /(?<=^|)(\s)-Werror(?=$|)(\s)/) {
> >>  		$Werror = 1;
> >>  	}
> >>  }
> > 
> > Thanks,
> > 
> > jon
> 




[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux