Re: [PATCH] USB: add SPDX identifiers to all files in drivers/usb/
From: Thomas Gleixner
Date: Thu Oct 19 2017 - 04:50:55 EST
On Thu, 19 Oct 2017, Greg Kroah-Hartman wrote:
> It's good to have SPDX identifiers in all files to make it easier to
> audit the kernel tree for correct licenses. This patch adds these
> identifiers to all files in drivers/usb/ based on a script and data from
> Thomas Gleixner, Philippe Ombredanne, and Kate Stewart.
>
> Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
> Cc: Kate Stewart <kstewart@xxxxxxxxxxxxxxxxxxx>
> Cc: Philippe Ombredanne <pombredanne@xxxxxxxx>
> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
> ---
> Unless someone really complains, I'm going to add this to my tree for
> 4.15-rc1.
>
>
> diff --git a/drivers/usb/Makefile b/drivers/usb/Makefile
> index 9650b351c26c..cb8d902b801d 100644
> --- a/drivers/usb/Makefile
> +++ b/drivers/usb/Makefile
> @@ -1,6 +1,7 @@
> #
> # Makefile for the kernel USB device drivers.
> #
> +# SPDX-License-Identifier: GPL-2.0
The last discussion about this was to add the identifier as the first line
of the file or as the second in case of files with a shebang in the first
one.
I think you missed the last version of the script. Attached.
Thanks,
tglx
#!/usr/bin/env python
#
import sys
import os
def insert_at(srclines, pos, tag, style):
srclines.insert(pos, '%s SPDX-License-Identifier: %s\n' %(style, tag))
return True
def handle_c_h(srclines, tag):
return insert_at(srclines, 0, tag, '//')
def handle_asm(srclines, tag):
# Stupid search for a proper style to comment the SPDX tag
pos = 0
style = None
for line in srclines:
pos += 1
if line.startswith(';;;'):
style = ';;;'
elif line.startswith(';;'):
style = ';;'
elif line.startswith(';'):
style = ';'
elif line.startswith('|'):
style = '|'
elif line.startswith('!'):
style = '!'
elif line.startswith('//'):
style = '//'
elif line.startswith("/*"):
style = '//'
else:
continue
return insert_at(srclines, 0, tag, style)
return False
def handle_sh(srclines, tag):
return insert_at(srclines, 1, tag, '#')
tf = open(sys.argv[1])
for entry in tf.readlines():
if len(entry.strip()) == 0:
continue
nr, fname, tag = entry.strip().split(',')
# FIXME: Use a proper encoder
fname = fname.replace('%2C',',')
if tag == 'NOTAG':
print("Skipping %s" %fname)
continue
if not os.path.isfile(fname):
print("FAIL: File %s does not exist anymore" %fname)
continue
srclines = open(fname).readlines()
done = False
for line in srclines:
if line.find('SPDX-License-Identifier') >= 0:
done = True
break
if done:
print("SPDX id exists already in %s" %fname)
continue
ok = False
if fname.endswith('.c') or fname.endswith('.h') or fname.endswith('.uc'):
ok = handle_c_h(srclines, tag)
elif fname.endswith('.S'):
ok = handle_asm(srclines, tag)
elif fname.endswith('.cocci'):
ok = insert_at(srclines, 0, tag, '//')
elif fname.endswith('.dts') or fname.endswith('.dtsi'):
ok = insert_at(srclines, 0, tag, '//')
elif fname.endswith('.py') or fname.endswith('.tc') or fname.endswith('.sh'):
ok = insert_at(srclines, 1, tag, '#')
elif fname.endswith('Makefile') or fname.find('Kconfig') > 0 or fname.find('Kbuild') > 0:
ok = insert_at(srclines, 0, tag, '#')
else:
print("Unhandled or ignored file %s" %fname)
continue
if ok:
open(fname, 'w').writelines(srclines)
print("Inserted %s into %s" %(tag, fname))
else:
print("FAIL: No place for insertion found %s" %fname)