blob: 663f298ba03be7c62f48db82b0ac53fb9a14aa5c [file] [log] [blame]
#!/usr/bin/python3
#coding:utf-8
#
# Copyright (c) 2021-2022 Amlogic, Inc. All rights reserved.
#
# SPDX-License-Identifier: MIT
#
import os
import sys
import string
import re
#file type contains .[chS]/.ld
def src_file_check_license(line):
license =\
'''/*
* Copyright (c) 2021-2022 Amlogic, Inc. All rights reserved.
*
* SPDX-License-Identifier: MIT
*/\n
'''
if(line.find('\r\n') > 0):
line_new = re.sub("\r\n", "\n", line)
return line_new.find(license)
else:
return line.find(license)
#file type contains Script/defconfig/prj.conf
def script_file_check_license(line):
license =\
'''#
# Copyright (c) 2021-2022 Amlogic, Inc. All rights reserved.
#
# SPDX-License-Identifier: MIT
#\n
'''
if(line.find('\r\n') > 0):
line_new = re.sub("\r\n", "\n", line)
return line_new.find(license)
else:
return line.find(license)
#file type contains Kconfig/CMakeLists.txt
def cfg_file_check_license(line):
license =\
'''# Copyright (c) 2021-2022 Amlogic, Inc. All rights reserved.
# SPDX-License-Identifier: MIT\n
'''
if(line.find('\r\n') > 0):
line_new = re.sub("\r\n", "\n", line)
return line_new.find(license)
else:
return line.find(license)
if __name__ == '__main__':
check_ret = 0
src_type = ['.c','.h','.S', '.ld']
cfg_type = ['Kconfig', 'CMakeLists.txt', '.cmake']
script_type = ['.sh', '.py', '.conf', 'defconfig']
line = sys.stdin.readline()
while line:
if 'diff --git' in line:
#diff start of file, and get the file name
file = line.split(' ')[-1].strip()
file = file.split('/', 1)[1]
line = sys.stdin.readline()
patch_str = ''
if 'new file mode' in line:
#new file in patch, and save the patch string
try:
for line in sys.stdin:
if 'diff --git' in line:
break
patch_str += line[1:]
except:
print("read patch exception!!")
if file.split('/')[-1] in cfg_type:
ret = cfg_file_check_license(patch_str)
if ret < 0:
print(file + ' license error\r\n')
check_ret = 1
continue
if os.path.splitext(file)[-1] in src_type:
ret = src_file_check_license(patch_str)
if ret < 0:
print(file + ' license error\r\n')
check_ret = 1
continue
if os.path.splitext(file)[-1] in script_type:
ret = script_file_check_license(patch_str)
if ret < 0:
print(file + ' license error\r\n')
check_ret = 1
continue
line = sys.stdin.readline()
if check_ret != 0:
print('\nRTOS Opensource License Check Failed, ')
print('refs http://tee.amlogic.com:8000/Documents/Ecosystem/RTOS/rtos-sdk/licensing.html')
else:
print('\nRTOS Opensource License Check Success\n')