summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/WebKit/Source/devtools/scripts/compiler-runner/build_compiler_runner_jar.py
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/WebKit/Source/devtools/scripts/compiler-runner/build_compiler_runner_jar.py')
-rwxr-xr-xchromium/third_party/WebKit/Source/devtools/scripts/compiler-runner/build_compiler_runner_jar.py73
1 files changed, 73 insertions, 0 deletions
diff --git a/chromium/third_party/WebKit/Source/devtools/scripts/compiler-runner/build_compiler_runner_jar.py b/chromium/third_party/WebKit/Source/devtools/scripts/compiler-runner/build_compiler_runner_jar.py
new file mode 100755
index 00000000000..c0e8daca82b
--- /dev/null
+++ b/chromium/third_party/WebKit/Source/devtools/scripts/compiler-runner/build_compiler_runner_jar.py
@@ -0,0 +1,73 @@
+#!/usr/bin/python
+
+import os
+import shutil
+import subprocess
+import sys
+import tempfile
+
+
+def rel_to_abs(rel_path):
+ return os.path.join(script_path, rel_path)
+
+
+java_bin_path = os.getenv('JAVA_HOME', '')
+if java_bin_path:
+ java_bin_path = os.path.join(java_bin_path, 'bin')
+
+main_class = 'org.chromium.devtools.compiler.Runner'
+jar_name = 'closure-runner.jar'
+src_dir = 'src'
+script_path = os.path.dirname(os.path.abspath(__file__))
+closure_jar_relpath = os.path.join('..', 'closure', 'compiler.jar')
+src_path = rel_to_abs(src_dir)
+
+
+def run_and_communicate(command, error_template):
+ proc = subprocess.Popen(command, stdout=subprocess.PIPE, shell=True)
+ proc.communicate()
+ if proc.returncode:
+ print >> sys.stderr, error_template % proc.returncode
+ sys.exit(proc.returncode)
+
+
+def build_artifacts():
+ print 'Compiling...'
+ java_files = []
+ for root, dirs, files in sorted(os.walk(src_path)):
+ for file_name in files:
+ java_files.append(os.path.join(root, file_name))
+
+ bin_path = tempfile.mkdtemp()
+ manifest_file = tempfile.NamedTemporaryFile(mode='wt', delete=False)
+ try:
+ manifest_file.write('Class-Path: %s\n' % closure_jar_relpath)
+ manifest_file.close()
+ javac_path = os.path.join(java_bin_path, 'javac')
+ javac_command = '%s -d %s -cp %s %s' % (javac_path, bin_path, rel_to_abs(closure_jar_relpath), ' '.join(java_files))
+ run_and_communicate(javac_command, 'Error: javac returned %d')
+
+ print 'Building jar...'
+ artifact_path = rel_to_abs(jar_name)
+ jar_path = os.path.join(java_bin_path, 'jar')
+ jar_command = '%s cvfme %s %s %s -C %s .' % (jar_path, artifact_path, manifest_file.name, main_class, bin_path)
+ run_and_communicate(jar_command, 'Error: jar returned %d')
+ finally:
+ os.remove(manifest_file.name)
+ shutil.rmtree(bin_path, True)
+
+
+def help():
+ print 'usage: %s' % os.path.basename(__file__)
+ print 'Builds compiler-runner.jar from the %s directory contents' % src_dir
+
+
+def main():
+ if len(sys.argv) > 1:
+ help()
+ return
+ build_artifacts()
+ print 'Done.'
+
+if __name__ == '__main__':
+ main()