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

Side by Side Diff: tools/licenses.py

Issue 1121003: Pass license-checker script for base/third_party/*. (Closed)
Patch Set: Created 10 years, 9 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 unified diff | Download patch
OLDNEW
1 #!/usr/bin/python 1 #!/usr/bin/python
2 # Copyright (c) 2010 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2010 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """ 6 """
7 Utilities for checking and processing licensing information in third_party 7 Utilities for checking and processing licensing information in third_party
8 directories. 8 directories.
9 """ 9 """
10 10
11 import os 11 import os
12 12
13 13
14 class LicenseError(Exception): 14 class LicenseError(Exception):
15 """We raise this exception when a directory's licensing info isn't 15 """We raise this exception when a directory's licensing info isn't
16 fully filled out.""" 16 fully filled out."""
17 pass 17 pass
18 18
19 19
20 def ParseDir(path): 20 def ParseDir(path):
21 """Examine a third_party/foo component and extract its metadata.""" 21 """Examine a third_party/foo component and extract its metadata."""
22 22
23 # Try to find README.chromium. 23 # Try to find README.chromium.
24 readme_path = os.path.join(path, 'README.chromium') 24 readme_path = os.path.join(path, 'README.chromium')
25 if not os.path.exists(readme_path): 25 if not os.path.exists(readme_path):
26 raise LicenseError("missing README.chromium") 26 raise LicenseError("missing README.chromium")
27 27
28 # Parse metadata fields out of README.chromium. 28 # Parse metadata fields out of README.chromium.
29 # We provide a default value of "LICENSE" for the license file.
29 metadata = { 30 metadata = {
30 "License File": None, # Relative path to license text. 31 "License File": "LICENSE", # Relative path to license text.
31 "Name": None, # Short name (for header on about:credits). 32 "Name": None, # Short name (for header on about:credits).
32 "URL": None, # Project home page. 33 "URL": None, # Project home page.
33 } 34 }
34 for line in open(readme_path): 35 for line in open(readme_path):
35 line = line.strip() 36 line = line.strip()
36 for key in metadata.keys(): 37 for key in metadata.keys():
37 field = key + ": " 38 field = key + ": "
38 if line.startswith(field): 39 if line.startswith(field):
39 metadata[key] = line[len(field):] 40 metadata[key] = line[len(field):]
40 41
41 # Check that all expected metadata is present. 42 # Check that all expected metadata is present.
42 for key, value in metadata.iteritems(): 43 for key, value in metadata.iteritems():
43 if not value: 44 if not value:
44 raise LicenseError("couldn't find '" + key + "' line " 45 raise LicenseError("couldn't find '" + key + "' line "
45 "in README.chromium") 46 "in README.chromium")
46 47
47 # Check that the license file exists. 48 # Check that the license file exists.
48 license_file = metadata["License File"] 49 license_file = metadata["License File"]
49 license_path = os.path.join(path, license_file) 50 license_path = os.path.join(path, license_file)
50 if not os.path.exists(license_path): 51 if not os.path.exists(license_path):
51 raise LicenseError("README.chromium mentions license file '" + 52 raise LicenseError("License file '" + license_file + "' doesn't exist. "
52 license_file + "' that doesn't exist") 53 "Either add a 'License File:' section to "
54 "README.chromium or add the missing file.")
53 55
54 return metadata 56 return metadata
55 57
56 58
57 def ScanThirdPartyDirs(third_party_dirs): 59 def ScanThirdPartyDirs(third_party_dirs):
58 """Scan a list of directories and report on any problems we find.""" 60 """Scan a list of directories and report on any problems we find."""
59 errors = [] 61 errors = []
60 for path in sorted(third_party_dirs): 62 for path in sorted(third_party_dirs):
61 try: 63 try:
62 metadata = ParseDir(path) 64 metadata = ParseDir(path)
(...skipping 26 matching lines...) Expand all
89 # Don't recurse into any subdirs from here. 91 # Don't recurse into any subdirs from here.
90 dirs[:] = [] 92 dirs[:] = []
91 continue 93 continue
92 94
93 return third_party_dirs 95 return third_party_dirs
94 96
95 97
96 if __name__ == '__main__': 98 if __name__ == '__main__':
97 third_party_dirs = FindThirdPartyDirs() 99 third_party_dirs = FindThirdPartyDirs()
98 ScanThirdPartyDirs(third_party_dirs) 100 ScanThirdPartyDirs(third_party_dirs)
OLDNEW
« base/third_party/nss/README.chromium ('K') | « base/third_party/xdg_user_dirs/README.chromium ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698