Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(876)

Unified Diff: third_party/PRESUBMIT.py

Issue 146803006: Add checking for license formats to third_party/PRESUBMIT (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased and fixed regexes for 'Security critical' and 'Android compatible' Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « android_webview/tools/webview_licenses.py ('k') | third_party/README.chromium.template » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/PRESUBMIT.py
diff --git a/third_party/PRESUBMIT.py b/third_party/PRESUBMIT.py
index 4a6cba81e640304285cd986d166f5d97f82b22bc..623b14b9088df4a1a04743de3a070b23c8890640 100644
--- a/third_party/PRESUBMIT.py
+++ b/third_party/PRESUBMIT.py
@@ -2,6 +2,34 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
+ANDROID_WHITELISTED_LICENSES = [
+ 'A(pple )?PSL 2(\.0)?',
+ 'Apache( Version)? 2(\.0)?',
+ '(New )?([23]-Clause )?BSD( [23]-Clause)?( with advertising clause)?',
+ 'L?GPL ?v?2(\.[01])?( or later)?',
+ 'MIT(/X11)?(-like)?',
+ 'MPL 1\.1 ?/ ?GPL 2(\.0)? ?/ ?LGPL 2\.1',
+ 'MPL 2(\.0)?',
+ 'Microsoft Limited Public License',
+ 'Microsoft Permissive License',
+ 'Public Domain',
+ 'Python',
+ 'SGI Free Software License B',
+ 'University of Illinois\/NCSA Open Source',
+ 'X11',
+]
+
+def LicenseIsCompatibleWithAndroid(input_api, license):
+ regex = '^(%s)$' % '|'.join(ANDROID_WHITELISTED_LICENSES)
+ tokens = \
+ [x.strip() for x in input_api.re.split(' and |,', license) if len(x) > 0]
+ has_compatible_license = False
+ for token in tokens:
+ if input_api.re.match(regex, token, input_api.re.IGNORECASE):
+ has_compatible_license = True
+ break
+ return has_compatible_license
+
def _CheckThirdPartyReadmesUpdated(input_api, output_api):
"""
Checks to make sure that README.chromium files are properly updated
@@ -36,10 +64,13 @@ def _CheckThirdPartyReadmesUpdated(input_api, output_api):
r'^Version: [a-zA-Z0-9_\-\.:]+\r?$',
input_api.re.IGNORECASE | input_api.re.MULTILINE)
release_pattern = input_api.re.compile(
- r'^Security Critical: (yes)|(no)\r?$',
+ r'^Security Critical: (yes|no)\r?$',
input_api.re.IGNORECASE | input_api.re.MULTILINE)
license_pattern = input_api.re.compile(
- r'^License: .+\r?$',
+ r'^License: (.+)\r?$',
+ input_api.re.IGNORECASE | input_api.re.MULTILINE)
+ license_android_compatible_pattern = input_api.re.compile(
+ r'^License Android Compatible: (yes|no)\r?$',
input_api.re.IGNORECASE | input_api.re.MULTILINE)
for f in readmes:
@@ -68,12 +99,21 @@ def _CheckThirdPartyReadmesUpdated(input_api, output_api):
'field. This field specifies whether the package is built with\n'
'Chromium. Check README.chromium.template for details.',
[f]))
- if not license_pattern.search(contents):
+ license_match = license_pattern.search(contents)
+ if not license_match:
errors.append(output_api.PresubmitError(
'Third party README files should contain a \'License\' field.\n'
'This field specifies the license used by the package. Check\n'
'README.chromium.template for details.',
[f]))
+ elif not LicenseIsCompatibleWithAndroid(input_api, license_match.group(1)) \
+ and not license_android_compatible_pattern.search(contents):
+ errors.append(output_api.PresubmitPromptWarning(
+ 'Cannot determine whether specified license is compatible with\n' +
+ 'the Android licensing requirements. Please check that the license\n' +
+ 'name is spelled according to third_party/PRESUBMIT.py. Please see\n' +
+ 'README.chromium.template for details.',
+ [f]))
return errors
« no previous file with comments | « android_webview/tools/webview_licenses.py ('k') | third_party/README.chromium.template » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698