#!/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)