| Index: tools/licenses.py
|
| diff --git a/tools/licenses.py b/tools/licenses.py
|
| index cd33aa6655e0d5555397cf0d73c412969f0aeadd..d67c08226518b7b8811a58ec43adfc2087fffcb2 100755
|
| --- a/tools/licenses.py
|
| +++ b/tools/licenses.py
|
| @@ -21,34 +21,16 @@ import sys
|
|
|
| # Paths from the root of the tree to directories to skip.
|
| PRUNE_PATHS = set([
|
| - # Same module occurs in both the top-level third_party and others.
|
| - os.path.join('base','third_party','icu'),
|
| -
|
| - # Assume for now that breakpad has their licensing in order.
|
| - os.path.join('breakpad'),
|
| -
|
| - # Assume for now that native client has their licensing in order.
|
| - os.path.join('native_client'),
|
| -
|
| - # Same module occurs in chrome/ and in net/, so skip one of them.
|
| - os.path.join('net','third_party','mozilla_security_manager'),
|
| -
|
| - # Same module occurs in base/, net/, and src/ so skip all but one of them.
|
| + # Same module occurs in crypto/third_party/nss and net/third_party/nss, so
|
| + # skip this one.
|
| os.path.join('third_party','nss'),
|
| - os.path.join('net','third_party','nss'),
|
|
|
| # Placeholder directory only, not third-party code.
|
| os.path.join('third_party','adobe'),
|
|
|
| - # Same license as Chromium.
|
| - os.path.join('third_party','lss'),
|
| -
|
| # Only binaries, used during development.
|
| os.path.join('third_party','valgrind'),
|
|
|
| - # Directories that are the same as those in base/third_party.
|
| - os.path.join('v8','src','third_party','valgrind'),
|
| -
|
| # Used for development and test, not in the shipping product.
|
| os.path.join('third_party','bidichecker'),
|
| os.path.join('third_party','cygwin'),
|
| @@ -70,9 +52,6 @@ PRUNE_PATHS = set([
|
| os.path.join('third_party','directxsdk'),
|
| os.path.join('third_party','platformsdk_win2008_6_1'),
|
| os.path.join('third_party','platformsdk_win7'),
|
| -
|
| - # Harfbuzz-ng is not currently shipping in any product:
|
| - os.path.join('third_party','harfbuzz-ng'),
|
| ])
|
|
|
| # Directories we don't scan through.
|
| @@ -81,12 +60,26 @@ PRUNE_DIRS = ('.svn', '.git', # VCS metadata
|
| 'layout_tests') # lots of subdirs
|
|
|
| ADDITIONAL_PATHS = (
|
| + os.path.join('breakpad'),
|
| + os.path.join('chrome', 'common', 'extensions', 'docs', 'examples'),
|
| + os.path.join('chrome', 'test', 'chromeos', 'autotest'),
|
| + os.path.join('chrome', 'test', 'data'),
|
| os.path.join('googleurl'),
|
| + os.path.join('native_client'),
|
| os.path.join('native_client_sdk'),
|
| + os.path.join('net', 'tools', 'spdyshark'),
|
| os.path.join('ppapi'),
|
| + os.path.join('sandbox', 'linux', 'seccomp-legacy'),
|
| + os.path.join('sdch', 'open-vcdiff'),
|
| + os.path.join('testing', 'gmock'),
|
| + os.path.join('testing', 'gtest'),
|
| # The directory with the word list for Chinese and Japanese segmentation
|
| # with different license terms than ICU.
|
| os.path.join('third_party','icu','source','data','brkitr'),
|
| + os.path.join('tools', 'grit'),
|
| + os.path.join('tools', 'gyp'),
|
| + os.path.join('tools', 'page_cycler', 'acid3'),
|
| + os.path.join('v8'),
|
| # Fake directory so we can include the strongtalk license.
|
| os.path.join('v8', 'strongtalk'),
|
| )
|
| @@ -96,12 +89,37 @@ ADDITIONAL_PATHS = (
|
| # can't provide a README.chromium. Please prefer a README.chromium
|
| # wherever possible.
|
| SPECIAL_CASES = {
|
| - 'googleurl': {
|
| + os.path.join('googleurl'): {
|
| "Name": "google-url",
|
| "URL": "http://code.google.com/p/google-url/",
|
| "License": "BSD and MPL 1.1/GPL 2.0/LGPL 2.1",
|
| "License File": "LICENSE.txt",
|
| },
|
| + os.path.join('native_client'): {
|
| + "Name": "native client",
|
| + "URL": "http://code.google.com/p/nativeclient",
|
| + "License": "BSD",
|
| + },
|
| + os.path.join('sandbox', 'linux', 'seccomp-legacy'): {
|
| + "Name": "seccompsandbox",
|
| + "URL": "http://code.google.com/p/seccompsandbox",
|
| + "License": "BSD",
|
| + },
|
| + os.path.join('sdch', 'open-vcdiff'): {
|
| + "Name": "open-vcdiff",
|
| + "URL": "http://code.google.com/p/open-vcdiff",
|
| + "License": "Apache 2.0, MIT, GPL v2 and custom licenses",
|
| + },
|
| + os.path.join('testing', 'gmock'): {
|
| + "Name": "gmock",
|
| + "URL": "http://code.google.com/p/googlemock",
|
| + "License": "BSD",
|
| + },
|
| + os.path.join('testing', 'gtest'): {
|
| + "Name": "gtest",
|
| + "URL": "http://code.google.com/p/googletest",
|
| + "License": "BSD",
|
| + },
|
| os.path.join('third_party', 'angle'): {
|
| "Name": "Almost Native Graphics Layer Engine",
|
| "URL": "http://code.google.com/p/angleproject/",
|
| @@ -123,6 +141,8 @@ SPECIAL_CASES = {
|
| os.path.join('third_party', 'lss'): {
|
| "Name": "linux-syscall-support",
|
| "URL": "http://code.google.com/p/lss/",
|
| + "License": "BSD",
|
| + "License File": "/LICENSE",
|
| },
|
| os.path.join('third_party', 'ots'): {
|
| "Name": "OTS (OpenType Sanitizer)",
|
| @@ -166,6 +186,21 @@ SPECIAL_CASES = {
|
| "URL": "http://code.google.com/p/web-page-replay",
|
| "License": "Apache 2.0",
|
| },
|
| + os.path.join('tools', 'grit'): {
|
| + "Name": "grit",
|
| + "URL": "http://code.google.com/p/grit-i18n",
|
| + "License": "BSD",
|
| + },
|
| + os.path.join('tools', 'gyp'): {
|
| + "Name": "gyp",
|
| + "URL": "http://code.google.com/p/gyp",
|
| + "License": "BSD",
|
| + },
|
| + os.path.join('v8'): {
|
| + "Name": "gyp",
|
| + "URL": "http://code.google.com/p/v8",
|
| + "License": "BSD",
|
| + },
|
| os.path.join('v8', 'strongtalk'): {
|
| "Name": "Strongtalk",
|
| "URL": "http://www.strongtalk.org/",
|
| @@ -175,6 +210,11 @@ SPECIAL_CASES = {
|
| },
|
| }
|
|
|
| +# Special value for 'License File' field used to indicate that the license file
|
| +# should not be used in about:credits.
|
| +NOT_SHIPPED = "NOT_SHIPPED"
|
| +
|
| +
|
| class LicenseError(Exception):
|
| """We raise this exception when a directory's licensing info isn't
|
| fully filled out."""
|
| @@ -234,19 +274,22 @@ def ParseDir(path):
|
| "in README.chromium or licences.py "
|
| "SPECIAL_CASES")
|
|
|
| - # Check that the license file exists.
|
| - for filename in (metadata["License File"], "COPYING"):
|
| - license_path = AbsolutePath(path, filename)
|
| - if license_path is not None:
|
| - metadata["License File"] = license_path
|
| - break
|
| + # Special-case modules that aren't in the shipping product, so don't need
|
| + # their license in about:credits.
|
| + if metadata["License File"] != NOT_SHIPPED:
|
| + # Check that the license file exists.
|
| + for filename in (metadata["License File"], "COPYING"):
|
| + license_path = AbsolutePath(path, filename)
|
| + if license_path is not None:
|
| + metadata["License File"] = license_path
|
| + break
|
|
|
| - if not license_path:
|
| - raise LicenseError("License file not found. "
|
| - "Either add a file named LICENSE, "
|
| - "import upstream's COPYING if available, "
|
| - "or add a 'License File:' line to README.chromium "
|
| - "with the appropriate path.")
|
| + if not license_path:
|
| + raise LicenseError("License file not found. "
|
| + "Either add a file named LICENSE, "
|
| + "import upstream's COPYING if available, "
|
| + "or add a 'License File:' line to "
|
| + "README.chromium with the appropriate path.")
|
|
|
| if "Required Text" in metadata:
|
| required_path = AbsolutePath(path, metadata["Required Text"])
|
| @@ -350,6 +393,10 @@ def GenerateCredits():
|
| print >>sys.stderr, ("WARNING: licensing info for " + path +
|
| " is incomplete, skipping.")
|
| continue
|
| + if metadata['License File'] == NOT_SHIPPED:
|
| + print >>sys.stderr, ("Path " + path + " marked as " + NOT_SHIPPED +
|
| + ", skipping.")
|
| + continue
|
| env = {
|
| 'name': metadata['Name'],
|
| 'url': metadata['URL'],
|
|
|