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

Side by Side Diff: tools/licenses.py

Issue 10830201: Update license tool to check several additional directories (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 4 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 | Annotate | Revision Log
OLDNEW
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
11 Commands: 11 Commands:
12 scan scan third_party directories, verifying that we have licensing info 12 scan scan third_party directories, verifying that we have licensing info
13 credits generate about:credits on stdout 13 credits generate about:credits on stdout
14 14
15 (You can also import this as a module.) 15 (You can also import this as a module.)
16 """ 16 """
17 17
18 import cgi 18 import cgi
19 import os 19 import os
20 import sys 20 import sys
21 21
22 # Paths from the root of the tree to directories to skip. 22 # Paths from the root of the tree to directories to skip.
23 PRUNE_PATHS = set([ 23 PRUNE_PATHS = set([
24 # Same module occurs in both the top-level third_party and others.
25 os.path.join('base','third_party','icu'),
26
27 # Assume for now that breakpad has their licensing in order.
28 os.path.join('breakpad'),
29
30 # Assume for now that native client has their licensing in order.
31 os.path.join('native_client'),
32
33 # Same module occurs in chrome/ and in net/, so skip one of them.
34 os.path.join('net','third_party','mozilla_security_manager'),
35
36 # Same module occurs in base/, net/, and src/ so skip all but one of them. 24 # Same module occurs in base/, net/, and src/ so skip all but one of them.
37 os.path.join('third_party','nss'), 25 os.path.join('third_party','nss'),
38 os.path.join('net','third_party','nss'),
39 26
40 # Placeholder directory only, not third-party code. 27 # Placeholder directory only, not third-party code.
41 os.path.join('third_party','adobe'), 28 os.path.join('third_party','adobe'),
42 29
43 # Same license as Chromium.
44 os.path.join('third_party','lss'),
45
46 # Only binaries, used during development. 30 # Only binaries, used during development.
47 os.path.join('third_party','valgrind'), 31 os.path.join('third_party','valgrind'),
48 32
49 # Directories that are the same as those in base/third_party.
50 os.path.join('v8','src','third_party','valgrind'),
51
52 # Used for development and test, not in the shipping product. 33 # Used for development and test, not in the shipping product.
53 os.path.join('third_party','bidichecker'), 34 os.path.join('third_party','bidichecker'),
54 os.path.join('third_party','cygwin'), 35 os.path.join('third_party','cygwin'),
55 os.path.join('third_party','gold'), 36 os.path.join('third_party','gold'),
56 os.path.join('third_party','lighttpd'), 37 os.path.join('third_party','lighttpd'),
57 os.path.join('third_party','mingw-w64'), 38 os.path.join('third_party','mingw-w64'),
58 os.path.join('third_party','pefile'), 39 os.path.join('third_party','pefile'),
59 os.path.join('third_party','python_26'), 40 os.path.join('third_party','python_26'),
60 41
61 # Stuff pulled in from chrome-internal for official builds/tools. 42 # Stuff pulled in from chrome-internal for official builds/tools.
62 os.path.join('third_party', 'clear_cache'), 43 os.path.join('third_party', 'clear_cache'),
63 os.path.join('third_party', 'gnu'), 44 os.path.join('third_party', 'gnu'),
64 os.path.join('third_party', 'googlemac'), 45 os.path.join('third_party', 'googlemac'),
65 os.path.join('third_party', 'pcre'), 46 os.path.join('third_party', 'pcre'),
66 os.path.join('third_party', 'psutils'), 47 os.path.join('third_party', 'psutils'),
67 os.path.join('third_party', 'sawbuck'), 48 os.path.join('third_party', 'sawbuck'),
68 49
69 # Redistribution does not require attribution in documentation. 50 # Redistribution does not require attribution in documentation.
70 os.path.join('third_party','directxsdk'), 51 os.path.join('third_party','directxsdk'),
71 os.path.join('third_party','platformsdk_win2008_6_1'), 52 os.path.join('third_party','platformsdk_win2008_6_1'),
72 os.path.join('third_party','platformsdk_win7'), 53 os.path.join('third_party','platformsdk_win7'),
73
74 # Harfbuzz-ng is not currently shipping in any product:
75 os.path.join('third_party','harfbuzz-ng'),
76 ]) 54 ])
77 55
78 # Directories we don't scan through. 56 # Directories we don't scan through.
79 PRUNE_DIRS = ('.svn', '.git', # VCS metadata 57 PRUNE_DIRS = ('.svn', '.git', # VCS metadata
80 'out', 'Debug', 'Release', # build files 58 'out', 'Debug', 'Release', # build files
81 'layout_tests') # lots of subdirs 59 'layout_tests') # lots of subdirs
82 60
83 ADDITIONAL_PATHS = ( 61 ADDITIONAL_PATHS = (
62 os.path.join('breakpad'),
63 os.path.join('chrome', 'common', 'extensions', 'docs', 'examples'),
64 os.path.join('chrome', 'test', 'chromeos', 'autotest'),
84 os.path.join('googleurl'), 65 os.path.join('googleurl'),
66 os.path.join('native_client'),
85 os.path.join('native_client_sdk'), 67 os.path.join('native_client_sdk'),
68 os.path.join('net', 'tools', 'spdyshark'),
86 os.path.join('ppapi'), 69 os.path.join('ppapi'),
70 os.path.join('sandbox', 'linux', 'seccomp-legacy'),
71 os.path.join('sdch', 'open-vcdiff'),
72 os.path.join('testing', 'gmock'),
73 os.path.join('testing', 'gtest'),
87 # The directory with the word list for Chinese and Japanese segmentation 74 # The directory with the word list for Chinese and Japanese segmentation
88 # with different license terms than ICU. 75 # with different license terms than ICU.
89 os.path.join('third_party','icu','source','data','brkitr'), 76 os.path.join('third_party','icu','source','data','brkitr'),
77 os.path.join('tools', 'grit'),
78 os.path.join('tools', 'gyp'),
79 os.path.join('tools', 'page_cycler', 'acid3'),
80 os.path.join('v8'),
90 # Fake directory so we can include the strongtalk license. 81 # Fake directory so we can include the strongtalk license.
91 os.path.join('v8', 'strongtalk'), 82 os.path.join('v8', 'strongtalk'),
92 ) 83 )
93 84
94 85
95 # Directories where we check out directly from upstream, and therefore 86 # Directories where we check out directly from upstream, and therefore
96 # can't provide a README.chromium. Please prefer a README.chromium 87 # can't provide a README.chromium. Please prefer a README.chromium
97 # wherever possible. 88 # wherever possible.
98 SPECIAL_CASES = { 89 SPECIAL_CASES = {
99 'googleurl': { 90 os.path.join('googleurl'): {
100 "Name": "google-url", 91 "Name": "google-url",
101 "URL": "http://code.google.com/p/google-url/", 92 "URL": "http://code.google.com/p/google-url/",
102 "License": "BSD and MPL 1.1/GPL 2.0/LGPL 2.1", 93 "License": "BSD and MPL 1.1/GPL 2.0/LGPL 2.1",
103 "License File": "LICENSE.txt", 94 "License File": "LICENSE.txt",
104 }, 95 },
96 os.path.join('native_client'): {
97 "Name": "native client",
98 "URL": "http://code.google.com/p/nativeclient",
99 "License": "BSD",
100 },
101 os.path.join('sandbox', 'linux', 'seccomp-legacy'): {
102 "Name": "seccompsandbox",
103 "URL": "http://code.google.com/p/seccompsandbox",
104 "License": "BSD",
105 },
106 os.path.join('sdch', 'open-vcdiff'): {
107 "Name": "open-vcdiff",
108 "URL": "http://code.google.com/p/open-vcdiff",
109 "License": "Apache 2.0, MIT, GPL v2 and custom licenses",
110 },
111 os.path.join('testing', 'gmock'): {
112 "Name": "gmock",
113 "URL": "http://code.google.com/p/googlemock",
114 "License": "BSD",
115 },
116 os.path.join('testing', 'gtest'): {
117 "Name": "gtest",
118 "URL": "http://code.google.com/p/googletest",
119 "License": "BSD",
120 },
105 os.path.join('third_party', 'angle'): { 121 os.path.join('third_party', 'angle'): {
106 "Name": "Almost Native Graphics Layer Engine", 122 "Name": "Almost Native Graphics Layer Engine",
107 "URL": "http://code.google.com/p/angleproject/", 123 "URL": "http://code.google.com/p/angleproject/",
108 "License": "BSD", 124 "License": "BSD",
109 }, 125 },
110 os.path.join('third_party', 'cros_system_api'): { 126 os.path.join('third_party', 'cros_system_api'): {
111 "Name": "Chromium OS system API", 127 "Name": "Chromium OS system API",
112 "URL": "http://www.chromium.org/chromium-os", 128 "URL": "http://www.chromium.org/chromium-os",
113 "License": "BSD", 129 "License": "BSD",
114 # Absolute path here is resolved as relative to the source root. 130 # Absolute path here is resolved as relative to the source root.
115 "License File": "/LICENSE.chromium_os", 131 "License File": "/LICENSE.chromium_os",
116 }, 132 },
117 os.path.join('third_party', 'GTM'): { 133 os.path.join('third_party', 'GTM'): {
118 "Name": "Google Toolbox for Mac", 134 "Name": "Google Toolbox for Mac",
119 "URL": "http://code.google.com/p/google-toolbox-for-mac/", 135 "URL": "http://code.google.com/p/google-toolbox-for-mac/",
120 "License": "Apache 2.0", 136 "License": "Apache 2.0",
121 "License File": "COPYING", 137 "License File": "COPYING",
122 }, 138 },
123 os.path.join('third_party', 'lss'): { 139 os.path.join('third_party', 'lss'): {
124 "Name": "linux-syscall-support", 140 "Name": "linux-syscall-support",
125 "URL": "http://code.google.com/p/lss/", 141 "URL": "http://code.google.com/p/lss/",
142 "License": "BSD",
143 "License File": "/LICENSE",
126 }, 144 },
127 os.path.join('third_party', 'ots'): { 145 os.path.join('third_party', 'ots'): {
128 "Name": "OTS (OpenType Sanitizer)", 146 "Name": "OTS (OpenType Sanitizer)",
129 "URL": "http://code.google.com/p/ots/", 147 "URL": "http://code.google.com/p/ots/",
130 "License": "BSD", 148 "License": "BSD",
131 }, 149 },
132 os.path.join('third_party', 'pdfsqueeze'): { 150 os.path.join('third_party', 'pdfsqueeze'): {
133 "Name": "pdfsqueeze", 151 "Name": "pdfsqueeze",
134 "URL": "http://code.google.com/p/pdfsqueeze/", 152 "URL": "http://code.google.com/p/pdfsqueeze/",
135 "License": "Apache 2.0", 153 "License": "Apache 2.0",
(...skipping 23 matching lines...) Expand all
159 "URL": "http://webkit.org/", 177 "URL": "http://webkit.org/",
160 "License": "BSD and GPL v2", 178 "License": "BSD and GPL v2",
161 # Absolute path here is resolved as relative to the source root. 179 # Absolute path here is resolved as relative to the source root.
162 "License File": "/webkit/LICENSE", 180 "License File": "/webkit/LICENSE",
163 }, 181 },
164 os.path.join('third_party', 'webpagereplay'): { 182 os.path.join('third_party', 'webpagereplay'): {
165 "Name": "webpagereplay", 183 "Name": "webpagereplay",
166 "URL": "http://code.google.com/p/web-page-replay", 184 "URL": "http://code.google.com/p/web-page-replay",
167 "License": "Apache 2.0", 185 "License": "Apache 2.0",
168 }, 186 },
187 os.path.join('tools', 'grit'): {
188 "Name": "grit",
189 "URL": "http://code.google.com/p/grit-i18n",
190 "License": "BSD",
191 },
192 os.path.join('tools', 'gyp'): {
193 "Name": "gyp",
194 "URL": "http://code.google.com/p/gyp",
195 "License": "BSD",
196 },
197 os.path.join('v8'): {
198 "Name": "gyp",
199 "URL": "http://code.google.com/p/v8",
200 "License": "BSD",
201 },
169 os.path.join('v8', 'strongtalk'): { 202 os.path.join('v8', 'strongtalk'): {
170 "Name": "Strongtalk", 203 "Name": "Strongtalk",
171 "URL": "http://www.strongtalk.org/", 204 "URL": "http://www.strongtalk.org/",
172 "License": "BSD", 205 "License": "BSD",
173 # Absolute path here is resolved as relative to the source root. 206 # Absolute path here is resolved as relative to the source root.
174 "License File": "/v8/LICENSE.strongtalk", 207 "License File": "/v8/LICENSE.strongtalk",
175 }, 208 },
176 } 209 }
177 210
178 class LicenseError(Exception): 211 class LicenseError(Exception):
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
379 elif command == 'credits': 412 elif command == 'credits':
380 if not GenerateCredits(): 413 if not GenerateCredits():
381 return 1 414 return 1
382 else: 415 else:
383 print __doc__ 416 print __doc__
384 return 1 417 return 1
385 418
386 419
387 if __name__ == '__main__': 420 if __name__ == '__main__':
388 sys.exit(main()) 421 sys.exit(main())
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698