resolve merge conflicts of 8afe1d6 to nyc-dev-plus-aosp am: 0d151184d5 am: f47f5ecf0b
[platform/upstream/VK-GL-CTS.git] / scripts / src_util / check_license.py
1 # -*- coding: utf-8 -*-
2
3 #-------------------------------------------------------------------------
4 # drawElements Quality Program utilities
5 # --------------------------------------
6 #
7 # Copyright 2016 The Android Open Source Project
8 #
9 # Licensed under the Apache License, Version 2.0 (the "License");
10 # you may not use this file except in compliance with the License.
11 # You may obtain a copy of the License at
12 #
13 #      http://www.apache.org/licenses/LICENSE-2.0
14 #
15 # Unless required by applicable law or agreed to in writing, software
16 # distributed under the License is distributed on an "AS IS" BASIS,
17 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 # See the License for the specific language governing permissions and
19 # limitations under the License.
20 #
21 #-------------------------------------------------------------------------
22
23 import sys
24 from common import isTextFile
25 from fnmatch import fnmatch
26
27 LICENSE_APACHE2  = 0
28 LICENSE_MIT      = 1
29 LICENSE_MULTIPLE = 2
30 LICENSE_UNKNOWN  = 3
31
32 LICENSE_KEYS    = [
33         # \note Defined this way to avoid triggering license check error on this file
34         ("P" + "ermission is hereby granted, free of charge",    LICENSE_MIT),
35         ("L" + "icensed under the Apache License, Version 2.0",  LICENSE_APACHE2),
36 ]
37
38 SOURCE_FILES    = ["*.py", "*.java", "*.c", "*.h", "*.cpp", "*.hpp"]
39
40 def readFile (file):
41         f = open(file, 'rb')
42         c = f.read()
43         f.close()
44         return c
45
46 def getFileLicense (file):
47         contents        = readFile(file)
48         detected        = LICENSE_UNKNOWN
49
50         for searchStr, license in LICENSE_KEYS:
51                 if contents.find(searchStr) != -1:
52                         if detected != LICENSE_UNKNOWN:
53                                 detected = LICENSE_MULTIPLE
54                         else:
55                                 detected = license
56
57         return detected
58
59 def checkFileLicense (file):
60         license = getFileLicense(file)
61
62         if license == LICENSE_MIT:
63                 print "%s: contains MIT license" % file
64         elif license == LICENSE_MULTIPLE:
65                 print "%s: contains multiple licenses" % file
66         elif license == LICENSE_UNKNOWN:
67                 print "%s: missing/unknown license" % file
68
69         return license == LICENSE_APACHE2
70
71 def isSourceFile (file):
72         for ptrn in SOURCE_FILES:
73                 if fnmatch(file, ptrn):
74                         return True
75         return False
76
77 def checkLicense (files):
78         error = False
79         for file in files:
80                 if isTextFile(file) and isSourceFile(file):
81                         if not checkFileLicense(file):
82                                 error = True
83
84         return not error