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)