Re: [PATCH] checkpatch.pl: Add SPDX license tag check for dts files and headers

From: Joe Perches
Date: Thu Feb 23 2017 - 14:11:09 EST


On Thu, 2017-02-23 at 12:45 -0600, Rob Herring wrote:
> On Thu, Feb 23, 2017 at 11:51 AM, Joe Perches <joe@xxxxxxxxxxx> wrote:
> > On Thu, 2017-02-23 at 09:56 -0600, Rob Herring wrote:
> > > Add a check for using SPDX-License-Identifier tags to define the license of
> > > .dts{i} and DT header files rather than using free form license text. This
> > > check looks for GPL, BSD, or X11(really incorrectly labeled MIT license)
> > > license text which are the commonly used DT licenses.
> >
> > Hi Rob.
> >
> > > Signed-off-by: Rob Herring <robh@xxxxxxxxxx>
> > > Cc: Andy Whitcroft <apw@xxxxxxxxxxxxx>
> > > Cc: Joe Perches <joe@xxxxxxxxxxx>
> > > ---
> > > scripts/checkpatch.pl | 13 +++++++++++++
> > > 1 file changed, 13 insertions(+)
> > >
> > > diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> > > index 982c52ca6473..ce802b3146e3 100755
> > > --- a/scripts/checkpatch.pl
> > > +++ b/scripts/checkpatch.pl
> > > @@ -2139,6 +2139,7 @@ sub process {
> > > my $commit_log_has_diff = 0;
> > > my $reported_maintainer_file = 0;
> > > my $non_utf8_charset = 0;
> > > + my $licensefile = '';
> >
> > Maybe this should be $spdx_license_file
> > but what's the actual reason to check if
> > multiple license bits are in a single file?
>
> Yes, just to get a single warning per file since the license matching
> can get multiple hits.
>
> Really what I'd like to do is warn if an SPDX tag is not present in
> any added file. Having a check for something missing doesn't really
> work well with checkpatch at least in a scalable way that I saw.

That isn't really possible with checkpatch as
I'm sure you know that it looks at patch
contexts and it isn't really meant to scan
entire files.

You might be better off with a separate script
like the checkincludes.pl one.

You might possibly integrate that script into
checkpatch by looking at the "new file mode"
block, remember those and see if in the patch
each appropriate file has one of the spdx tags.