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 <t...@linutronix.de>
> Cc: Kate Stewart <kstew...@linuxfoundation.org>
> Cc: Philippe Ombredanne <pombreda...@nexb.com>
> Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org>
> ---
> 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)


Reply via email to