| Index: editor/tools/compile_analyzer.py
|
| ===================================================================
|
| --- editor/tools/compile_analyzer.py (revision 0)
|
| +++ editor/tools/compile_analyzer.py (revision 0)
|
| @@ -0,0 +1,86 @@
|
| +#!/usr/bin/env python
|
| +# Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
|
| +# for details. All rights reserved. Use of this source code is governed by a
|
| +# BSD-style license that can be found in the LICENSE file.
|
| +#
|
| +# Script to compile the analyzer.
|
| +#
|
| +# Usage: compile_analyzer.py OPTIONS files
|
| +#
|
| +
|
| +import optparse
|
| +import os
|
| +import shutil
|
| +import subprocess
|
| +import sys
|
| +
|
| +def GetOptions():
|
| + options = optparse.OptionParser(usage='usage: %prog [options] <output>')
|
| + options.add_option("--class_path_file",
|
| + help='File describing the classpath in manifest style')
|
| + options.add_option("--output_dir",
|
| + help='Where to output files')
|
| + options.add_option("--jar_file_name",
|
| + help='Name of the resulting jar file')
|
| + options.add_option("--jar_entry_directory",
|
| + help='Which directory within output to pack into the jar files')
|
| + options.add_option("--entry_point",
|
| + help='The entry point for running the program.')
|
| + options.add_option("--dependent_jar_files",
|
| + help='The jar files that we link against, space separated.')
|
| + return options.parse_args()
|
| +
|
| +def CompileAnalyzer(options, args):
|
| + # We rely on all jar files being copied to the output dir.
|
| + class_path = options.output_dir + '*'
|
| + cmd = ['javac',
|
| + '-sourcepath', 'foobar',
|
| + '-source', '6',
|
| + '-target', '6',
|
| + '-implicit:none',
|
| + '-d', options.output_dir,
|
| + '-cp', class_path,
|
| + ]
|
| + cmd.extend(args)
|
| + subprocess.call(cmd)
|
| +
|
| +def CreateJarFile(options):
|
| + class_path_file_name = options.output_dir + options.class_path_file
|
| + jar_file_name = options.output_dir + options.jar_file_name
|
| + cmd = ['jar', 'cfem', jar_file_name, options.entry_point,
|
| + class_path_file_name,
|
| + '-C', options.output_dir, options.jar_entry_directory];
|
| + subprocess.call(cmd)
|
| +
|
| +def CopyFiles(options):
|
| + # Strip " from the string
|
| + files = options.dependent_jar_files.replace('"', '');
|
| + for f in files.split(" "):
|
| + shutil.copy(f, options.output_dir)
|
| +
|
| +def CreateClassPathFile(options):
|
| + class_path_file_name = options.output_dir + options.class_path_file
|
| + with open(class_path_file_name, 'w') as output:
|
| + print >> output, 'Class-Path:', '.',
|
| + for r,d,f in os.walk(options.output_dir):
|
| + for file in f:
|
| + if file.endswith('.jar'):
|
| + print >> output, file,
|
| + # Add new line
|
| + print >> output
|
| +
|
| +def main():
|
| + (options, args) = GetOptions()
|
| + # Clean out everything whenever we do a build, guarantees that we don't have
|
| + # any leftover jar files.
|
| + shutil.rmtree(options.output_dir, ignore_errors=True)
|
| + os.makedirs(options.output_dir)
|
| +
|
| + CopyFiles(options)
|
| + CreateClassPathFile(options)
|
| + CompileAnalyzer(options, args)
|
| + CreateJarFile(options)
|
| +
|
| +
|
| +if __name__=='__main__':
|
| + main()
|
|
|