Re: [PATCH] staging: vt6656: Use the correct style for SPDX license Identifier

From: Joe Perches
Date: Thu Feb 07 2019 - 02:17:50 EST


On Wed, 2019-02-06 at 17:25 +0100, Greg Kroah-Hartman wrote:
> On Tue, Feb 05, 2019 at 10:59:40AM -0800, Joe Perches wrote:
> > On Tue, 2019-02-05 at 19:44 +0100, Greg Kroah-Hartman wrote:
> > > On Tue, Feb 05, 2019 at 08:36:24PM +0530, Nishad Kamdar wrote:
> > > > This patch corrects the style for SPDX license Identifier in mac.h
> > > > by using "/* */" in place of "//" as per Linux kernel licensing rules.
> > > > Issue found by checkpatch.
> > > >
> > > > Signed-off-by: Nishad Kamdar <nishadkamdar@xxxxxxxxx>
> > > > ---
> > > > drivers/staging/vt6656/mac.h | 4 ++--
> > > > 1 file changed, 2 insertions(+), 2 deletions(-)
> > > >
> > > > diff --git a/drivers/staging/vt6656/mac.h b/drivers/staging/vt6656/mac.h
> > > > index 94e700fcd0b6..75166020f7c6 100644
> > > > --- a/drivers/staging/vt6656/mac.h
> > > > +++ b/drivers/staging/vt6656/mac.h
> > > > @@ -1,5 +1,5 @@
> > > > -// SPDX-License-Identifier: GPL-2.0+
> > > > -/*
> > > > +/* SPDX-License-Identifier: GPL-2.0+
> > >
> > > Should really be:
> > >
> > > /* SPDX-License-Identifier: GPL-2.0+ */
> >
> > There's a fair number of style inconsistencies in the kernel
> > sources for that already.
> >
> > ~8% of the .h files that have an 'SPDX-License-Identifier:'
> > don't use the recommended style.
> >
> > $ git grep -h "SPDX-License" -- '*.h' | \
> > perl -p -e 's@Identifier:.*\*/*@Identifier: ... */@; s@Identifier: [^\.].*@Identifier:@' | \
> > sort | uniq -c | sort -rn
> > 8506 /* SPDX-License-Identifier: ... */
> > 593 // SPDX-License-Identifier:
> > 154 /* SPDX-License-Identifier:
> > 53 * SPDX-License-Identifier:
> > 1 * SPDX-License-Identifier: GPL-2.0
> > 1 //SPDX-License-Identifier:
> > 1 /* SPDX-License-Identifier: ... */
>
> Then let's fix them, the documentation says what the correct format is,
> there's no reason we can't actually follow what is written...

So here's a script that does most all of them except
the 50 or so that use the SPDX-License-Identifier
in the middle of a comment block.

Using:

$ git grep --name-only 'SPDX-License-Identifier:' -- '*.h' | \
xargs grep -L '/\* SPDX-License-Identifier:.*\*/'| \
while read file ; do perl -i update_spdx.perl $file ; done

produces

$ git diff --shortstat
748 files changed, 902 insertions(+), 902 deletions(-)

And

$ git grep -h "SPDX-License" -- '*.h' | \
perl -p -e 's@Identifier:.*\*/*@Identifier: ... */@; s@Identifier: [^\.].*@Identifier:@' | \
sort | uniq -c | sort -rn
9254 /* SPDX-License-Identifier: ... */
53 * SPDX-License-Identifier:
1 * SPDX-License-Identifier: GPL-2.0
1 /* SPDX-License-Identifier: ... */

and the perl script below is also attached

$ cat update_spdx.perl
local $/;
my $file = (<>);

my $spdx_regex = '/\*[ \t]*SPDX-License-Identifier:[ \t]*';
my $spdx_actual = '/* SPDX-License-Identifier: ';

# any // use converted to /* ... */
$file =~ s@^//[ \t]*SPDX-License-Identifier:[ \t]*(.*)\n@/* SPDX-License-Identifier: $1 */\n@;

# first line use with /* without trailing */ gets */ added and 2nd line updated
$file =~ m@^\s*${spdx_regex}([^\n]+)\n@;
if (defined $1 && $1 !~ m@\*/$@) {
$file =~ s@^[ \t]*${spdx_regex}([^\n]+)\n@${spdx_actual}$1 */\n/* @;
$file =~ s@^[ \t]*${spdx_regex}([^\n]+)\n[ \t]*/\*[ \t]+\*@${spdx_actual}$1\n/* @;
$file =~ s@^\s*${spdx_regex}([^\n]+)\n/\* \n@${spdx_actual}$1\n/*\n@;
}

print $file;

Attachment: update_spdx.perl
Description: Perl program