Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(263)

Unified Diff: editor/tools/compile_analyzer.py

Issue 12262040: Add support for building the new analyzer using gyp. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « editor/analyzer.gyp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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()
« no previous file with comments | « editor/analyzer.gyp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698