| Index: build/android/gyp/create_java_binary_script.py
|
| diff --git a/build/android/gyp/create_java_binary_script.py b/build/android/gyp/create_java_binary_script.py
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..5de43f2d4a45d7f8b2b73394803926a5b5edd0cc
|
| --- /dev/null
|
| +++ b/build/android/gyp/create_java_binary_script.py
|
| @@ -0,0 +1,77 @@
|
| +#!/usr/bin/env 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.
|
| +
|
| +"""Creates a simple script to run a java "binary".
|
| +
|
| +This creates a script that sets up the java command line for running a java
|
| +jar. This includes correctly setting the classpath and the main class.
|
| +"""
|
| +
|
| +import optparse
|
| +import os
|
| +import sys
|
| +
|
| +from util import build_utils
|
| +
|
| +# The java command must be executed in the current directory because there may
|
| +# be user-supplied paths in the args. The script receives the classpath relative
|
| +# to the directory that the script is written in and then, when run, must
|
| +# recalculate the paths relative to the current directory.
|
| +script_template = """\
|
| +#!/usr/bin/env python
|
| +#
|
| +# This file was generated by build/android/gyp/create_java_binary_script.py
|
| +
|
| +import os
|
| +import sys
|
| +
|
| +self_dir = os.path.dirname(__file__)
|
| +classpath = [{classpath}]
|
| +if os.getcwd() != self_dir:
|
| + offset = os.path.relpath(self_dir, os.getcwd())
|
| + classpath = [os.path.join(offset, p) for p in classpath]
|
| +java_args = [
|
| + "java",
|
| + "-classpath", ":".join(classpath),
|
| + "-enableassertions",
|
| + \"{main_class}\"] + sys.argv[1:]
|
| +os.execvp("java", java_args)
|
| +"""
|
| +
|
| +def main(argv):
|
| + argv = build_utils.ExpandFileArgs(argv)
|
| + parser = optparse.OptionParser()
|
| + build_utils.AddDepfileOption(parser)
|
| + parser.add_option('--output', help='Output path for executable script.')
|
| + parser.add_option('--jar-path', help='Path to the main jar.')
|
| + parser.add_option('--main-class',
|
| + help='Name of the java class with the "main" entry point.')
|
| + parser.add_option('--classpath', action='append',
|
| + help='Classpath for running the jar.')
|
| + options, _ = parser.parse_args(argv)
|
| +
|
| + classpath = [options.jar_path]
|
| + for cp_arg in options.classpath:
|
| + classpath += build_utils.ParseGypList(cp_arg)
|
| +
|
| + run_dir = os.path.dirname(options.output)
|
| + classpath = [os.path.relpath(p, run_dir) for p in classpath]
|
| +
|
| + with open(options.output, 'w') as script:
|
| + script.write(script_template.format(
|
| + classpath=('"%s"' % '", "'.join(classpath)),
|
| + main_class=options.main_class))
|
| +
|
| + os.chmod(options.output, 0750)
|
| +
|
| + if options.depfile:
|
| + build_utils.WriteDepfile(
|
| + options.depfile,
|
| + build_utils.GetPythonDependencies())
|
| +
|
| +
|
| +if __name__ == '__main__':
|
| + sys.exit(main(sys.argv[1:]))
|
|
|