Index: components/cronet/tools/cronet_licenses.py |
diff --git a/components/cronet/tools/cronet_licenses.py b/components/cronet/tools/cronet_licenses.py |
new file mode 100755 |
index 0000000000000000000000000000000000000000..57f6bfd8ea38bd433555ba213d3dfb0096269e79 |
--- /dev/null |
+++ b/components/cronet/tools/cronet_licenses.py |
@@ -0,0 +1,99 @@ |
+#!/usr/bin/python |
+# Copyright 2014 The Chromium Authors. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+"""Generates the contents of an Cronet LICENSE file for the third-party code. |
+ |
+It makes use of src/tools/licenses.py and the README.chromium files on which |
+it depends. Based on android_webview/tools/webview_licenses.py. |
+""" |
+ |
+import optparse |
+import os |
+import sys |
+import textwrap |
+ |
+REPOSITORY_ROOT = os.path.abspath(os.path.join( |
+ os.path.dirname(__file__), '..', '..', '..')) |
+ |
+sys.path.append(os.path.join(REPOSITORY_ROOT, 'tools')) |
+import licenses |
+ |
+def _ReadFile(path): |
+ """Reads a file from disk. |
+ Args: |
+ path: The path of the file to read, relative to the root of the repository. |
+ Returns: |
+ The contents of the file as a string. |
+ """ |
+ return open(os.path.join(REPOSITORY_ROOT, path), 'rb').read() |
+ |
+ |
+def GenerateLicense(): |
+ """Generates the contents of an Cronet LICENSE file for the third-party code. |
+ Returns: |
+ The contents of the LICENSE file. |
+ """ |
+ # TODO(mef): Generate list of third_party libraries using checkdeps. |
+ third_party_dirs = [ |
+ "libevent", |
+ "ashmem", |
+ "zlib", |
+ "modp_b64", |
+ "openssl" |
+ ] |
+ |
+ # Start with Chromium's LICENSE file |
+ content = [_ReadFile('LICENSE')] |
+ |
+ # Add necessary third_party. |
+ for directory in sorted(third_party_dirs): |
+ metadata = licenses.ParseDir("third_party/" + directory, REPOSITORY_ROOT, |
+ require_license_file=True) |
+ content.append("-" * 20) |
+ content.append(directory) |
+ content.append("-" * 20) |
+ license_file = metadata['License File'] |
+ if license_file and license_file != licenses.NOT_SHIPPED: |
+ content.append(_ReadFile(license_file)) |
+ |
+ return '\n'.join(content) |
+ |
+ |
+def main(): |
+ class FormatterWithNewLines(optparse.IndentedHelpFormatter): |
+ def format_description(self, description): |
+ paras = description.split('\n') |
+ formatted_paras = [textwrap.fill(para, self.width) for para in paras] |
+ return '\n'.join(formatted_paras) + '\n' |
+ |
+ parser = optparse.OptionParser(formatter=FormatterWithNewLines(), |
+ usage='%prog command [options]') |
+ parser.description = (__doc__ + |
+ '\nCommands:\n' \ |
+ ' license [filename]\n' \ |
+ ' Generate Cronet LICENSE to filename or stdout.\n') |
+ (_, args) = parser.parse_args() |
+ if not args: |
+ parser.print_help() |
+ return 1 |
+ |
+ if args[0] == 'license': |
+ if len(args) > 1: |
+ print 'Saving license to %s' % args[1] |
+ f = open(args[1], "w") |
+ try: |
+ f.write(GenerateLicense()) |
+ finally: |
+ f.close() |
+ else: |
+ print GenerateLicense() |
+ return 0 |
+ |
+ parser.print_help() |
+ return 1 |
+ |
+ |
+if __name__ == '__main__': |
+ sys.exit(main()) |