OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 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 """Utility for checking and processing licensing information in third_party | 6 """Utility for checking and processing licensing information in third_party |
7 directories. | 7 directories. |
8 | 8 |
9 Usage: licenses.py <command> | 9 Usage: licenses.py <command> |
10 | 10 |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
103 ) | 103 ) |
104 | 104 |
105 | 105 |
106 # Directories where we check out directly from upstream, and therefore | 106 # Directories where we check out directly from upstream, and therefore |
107 # can't provide a README.chromium. Please prefer a README.chromium | 107 # can't provide a README.chromium. Please prefer a README.chromium |
108 # wherever possible. | 108 # wherever possible. |
109 SPECIAL_CASES = { | 109 SPECIAL_CASES = { |
110 'googleurl': { | 110 'googleurl': { |
111 "Name": "google-url", | 111 "Name": "google-url", |
112 "URL": "http://code.google.com/p/google-url/", | 112 "URL": "http://code.google.com/p/google-url/", |
| 113 "License": "BSD and MPL 1.1/GPL 2.0/LGPL 2.1", |
113 "License File": "LICENSE.txt", | 114 "License File": "LICENSE.txt", |
114 }, | 115 }, |
115 os.path.join('third_party', 'angle'): { | 116 os.path.join('third_party', 'angle'): { |
116 "Name": "Almost Native Graphics Layer Engine", | 117 "Name": "Almost Native Graphics Layer Engine", |
117 "URL": "http://code.google.com/p/angleproject/", | 118 "URL": "http://code.google.com/p/angleproject/", |
| 119 "License": "BSD", |
118 }, | 120 }, |
119 os.path.join('third_party', 'cros_system_api'): { | 121 os.path.join('third_party', 'cros_system_api'): { |
120 "Name": "Chromium OS system API", | 122 "Name": "Chromium OS system API", |
121 "URL": "http://www.chromium.org/chromium-os", | 123 "URL": "http://www.chromium.org/chromium-os", |
122 "License": "BSD", | 124 "License": "BSD", |
123 # Absolute path here is resolved as relative to the source root. | 125 # Absolute path here is resolved as relative to the source root. |
124 "License File": "/LICENSE.chromium_os", | 126 "License File": "/LICENSE.chromium_os", |
125 }, | 127 }, |
126 os.path.join('third_party', 'GTM'): { | 128 os.path.join('third_party', 'GTM'): { |
127 "Name": "Google Toolbox for Mac", | 129 "Name": "Google Toolbox for Mac", |
128 "URL": "http://code.google.com/p/google-toolbox-for-mac/", | 130 "URL": "http://code.google.com/p/google-toolbox-for-mac/", |
129 "License": "Apache 2.0", | 131 "License": "Apache 2.0", |
130 "License File": "COPYING", | 132 "License File": "COPYING", |
131 }, | 133 }, |
132 os.path.join('third_party', 'lss'): { | 134 os.path.join('third_party', 'lss'): { |
133 "Name": "linux-syscall-support", | 135 "Name": "linux-syscall-support", |
134 "URL": "http://code.google.com/p/lss/", | 136 "URL": "http://code.google.com/p/lss/", |
135 }, | 137 }, |
136 os.path.join('third_party', 'ots'): { | 138 os.path.join('third_party', 'ots'): { |
137 "Name": "OTS (OpenType Sanitizer)", | 139 "Name": "OTS (OpenType Sanitizer)", |
138 "URL": "http://code.google.com/p/ots/", | 140 "URL": "http://code.google.com/p/ots/", |
| 141 "License": "BSD", |
139 }, | 142 }, |
140 os.path.join('third_party', 'pdfsqueeze'): { | 143 os.path.join('third_party', 'pdfsqueeze'): { |
141 "Name": "pdfsqueeze", | 144 "Name": "pdfsqueeze", |
142 "URL": "http://code.google.com/p/pdfsqueeze/", | 145 "URL": "http://code.google.com/p/pdfsqueeze/", |
143 "License": "Apache 2.0", | 146 "License": "Apache 2.0", |
144 "License File": "COPYING", | 147 "License File": "COPYING", |
145 }, | 148 }, |
146 os.path.join('third_party', 'ppapi'): { | 149 os.path.join('third_party', 'ppapi'): { |
147 "Name": "ppapi", | 150 "Name": "ppapi", |
148 "URL": "http://code.google.com/p/ppapi/", | 151 "URL": "http://code.google.com/p/ppapi/", |
149 }, | 152 }, |
150 os.path.join('third_party', 'scons-2.0.1'): { | 153 os.path.join('third_party', 'scons-2.0.1'): { |
151 "Name": "scons-2.0.1", | 154 "Name": "scons-2.0.1", |
152 "URL": "http://www.scons.org", | 155 "URL": "http://www.scons.org", |
153 "License": "MIT", | 156 "License": "MIT", |
154 }, | 157 }, |
155 os.path.join('third_party', 'trace-viewer'): { | 158 os.path.join('third_party', 'trace-viewer'): { |
156 "Name": "trace-viewer", | 159 "Name": "trace-viewer", |
157 "URL": "http://code.google.com/p/trace-viewer", | 160 "URL": "http://code.google.com/p/trace-viewer", |
158 "License": "BSD", | 161 "License": "BSD", |
159 }, | 162 }, |
160 os.path.join('third_party', 'v8-i18n'): { | 163 os.path.join('third_party', 'v8-i18n'): { |
161 "Name": "Internationalization Library for v8", | 164 "Name": "Internationalization Library for v8", |
162 "URL": "http://code.google.com/p/v8-i18n/", | 165 "URL": "http://code.google.com/p/v8-i18n/", |
| 166 "License": "Apache 2.0, BSD and others", |
163 }, | 167 }, |
164 os.path.join('third_party', 'WebKit'): { | 168 os.path.join('third_party', 'WebKit'): { |
165 "Name": "WebKit", | 169 "Name": "WebKit", |
166 "URL": "http://webkit.org/", | 170 "URL": "http://webkit.org/", |
167 "License": "BSD and GPL v2", | 171 "License": "BSD and GPL v2", |
168 # Absolute path here is resolved as relative to the source root. | 172 # Absolute path here is resolved as relative to the source root. |
169 "License File": "/webkit/LICENSE", | 173 "License File": "/webkit/LICENSE", |
170 }, | 174 }, |
171 os.path.join('third_party', 'webpagereplay'): { | 175 os.path.join('third_party', 'webpagereplay'): { |
172 "Name": "webpagereplay", | 176 "Name": "webpagereplay", |
173 "URL": "http://code.google.com/p/web-page-replay", | 177 "URL": "http://code.google.com/p/web-page-replay", |
174 "License": "Apache 2.0", | 178 "License": "Apache 2.0", |
175 }, | 179 }, |
176 os.path.join('v8', 'strongtalk'): { | 180 os.path.join('v8', 'strongtalk'): { |
177 "Name": "Strongtalk", | 181 "Name": "Strongtalk", |
178 "URL": "http://www.strongtalk.org/", | 182 "URL": "http://www.strongtalk.org/", |
| 183 "License": "BSD", |
179 # Absolute path here is resolved as relative to the source root. | 184 # Absolute path here is resolved as relative to the source root. |
180 "License File": "/v8/LICENSE.strongtalk", | 185 "License File": "/v8/LICENSE.strongtalk", |
181 }, | 186 }, |
182 } | 187 } |
183 | 188 |
184 class LicenseError(Exception): | 189 class LicenseError(Exception): |
185 """We raise this exception when a directory's licensing info isn't | 190 """We raise this exception when a directory's licensing info isn't |
186 fully filled out.""" | 191 fully filled out.""" |
187 pass | 192 pass |
188 | 193 |
(...skipping 12 matching lines...) Expand all Loading... |
201 | 206 |
202 def ParseDir(path): | 207 def ParseDir(path): |
203 """Examine a third_party/foo component and extract its metadata.""" | 208 """Examine a third_party/foo component and extract its metadata.""" |
204 | 209 |
205 # Parse metadata fields out of README.chromium. | 210 # Parse metadata fields out of README.chromium. |
206 # We examine "LICENSE" for the license file by default. | 211 # We examine "LICENSE" for the license file by default. |
207 metadata = { | 212 metadata = { |
208 "License File": "LICENSE", # Relative path to license text. | 213 "License File": "LICENSE", # Relative path to license text. |
209 "Name": None, # Short name (for header on about:credits). | 214 "Name": None, # Short name (for header on about:credits). |
210 "URL": None, # Project home page. | 215 "URL": None, # Project home page. |
| 216 "License": None, # Software license. |
211 } | 217 } |
212 | 218 |
213 # Relative path to a file containing some html we're required to place in | 219 # Relative path to a file containing some html we're required to place in |
214 # about:credits. | 220 # about:credits. |
215 optional_keys = ["Required Text"] | 221 optional_keys = ["Required Text"] |
216 | 222 |
217 if path in SPECIAL_CASES: | 223 if path in SPECIAL_CASES: |
218 metadata.update(SPECIAL_CASES[path]) | 224 metadata.update(SPECIAL_CASES[path]) |
219 else: | 225 else: |
220 # Try to find README.chromium. | 226 # Try to find README.chromium. |
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
384 elif command == 'credits': | 390 elif command == 'credits': |
385 if not GenerateCredits(): | 391 if not GenerateCredits(): |
386 return 1 | 392 return 1 |
387 else: | 393 else: |
388 print __doc__ | 394 print __doc__ |
389 return 1 | 395 return 1 |
390 | 396 |
391 | 397 |
392 if __name__ == '__main__': | 398 if __name__ == '__main__': |
393 sys.exit(main()) | 399 sys.exit(main()) |
OLD | NEW |