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

Side by Side Diff: tools/compile_java/compile_java.py

Issue 350483003: Build Tools Cleanup (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: more fixes as reviewed by ricow Created 6 years, 5 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « tools/build.py ('k') | tools/compiler_scripts/generate_source_list.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 1 # Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 # for details. All rights reserved. Use of this source code is governed by a 2 # for details. All rights reserved. Use of this source code is governed by a
3 # BSD-style license that can be found in the LICENSE file. 3 # BSD-style license that can be found in the LICENSE file.
4 4
5 # This python script compiles a set of java files and puts them all into a 5 # This python script compiles a set of java files and puts them all into a
6 # single .jar file. 6 # single .jar file.
7 7
8 import os 8 import os
9 import shutil 9 import shutil
10 import sys 10 import sys
11 import tempfile 11 import tempfile
12 from optparse import OptionParser 12 from optparse import OptionParser
13 13
14 # Filters out all arguments until the next '--' argument 14 # Filters out all arguments until the next '--' argument
15 # occurs. 15 # occurs.
16 def ListArgCallback(option, opt_str, value, parser): 16 def ListArgCallback(option, value, parser):
17 if value is None: 17 if value is None:
18 value = [] 18 value = []
19 19
20 for arg in parser.rargs: 20 for arg in parser.rargs:
21 if arg[:2].startswith('--'): 21 if arg[:2].startswith('--'):
22 break 22 break
23 value.append(arg) 23 value.append(arg)
24 24
25 del parser.rargs[:len(value)] 25 del parser.rargs[:len(value)]
26 setattr(parser.values, option.dest, value) 26 setattr(parser.values, option.dest, value)
(...skipping 11 matching lines...) Expand all
38 38
39 if os.path.exists(classOutputDir): 39 if os.path.exists(classOutputDir):
40 shutil.rmtree(classOutputDir) 40 shutil.rmtree(classOutputDir)
41 os.makedirs(classOutputDir) 41 os.makedirs(classOutputDir)
42 42
43 # Find all java files and write them in a temp file. 43 # Find all java files and write them in a temp file.
44 (tempFileDescriptor, javaFilesTempFileName) = tempfile.mkstemp() 44 (tempFileDescriptor, javaFilesTempFileName) = tempfile.mkstemp()
45 javaFilesTempFile = os.fdopen(tempFileDescriptor, "w") 45 javaFilesTempFile = os.fdopen(tempFileDescriptor, "w")
46 try: 46 try:
47 if srcDirectories: 47 if srcDirectories:
48 def findJavaFiles(arg, dirName, names): 48 def findJavaFiles(dirName, names):
49 for fileName in names: 49 for fileName in names:
50 (base, ext) = os.path.splitext(fileName) 50 (base, ext) = os.path.splitext(fileName)
51 if ext == '.java': 51 if ext == '.java':
52 javaFilesTempFile.write(os.path.join(dirName, fileName) + '\n') 52 javaFilesTempFile.write(os.path.join(dirName, fileName) + '\n')
53 for srcDir in srcDirectories: 53 for srcDir in srcDirectories:
54 os.path.walk(srcDir, findJavaFiles, None) 54 os.path.walk(srcDir, findJavaFiles, None)
55 55
56 if srcList: 56 if srcList:
57 f = open(srcList, 'r') 57 f = open(srcList, 'r')
58 for line in f: 58 for line in f:
59 javaFilesTempFile.write(os.path.abspath(line)) 59 javaFilesTempFile.write(os.path.abspath(line))
60 f.close() 60 f.close()
61 61
62 javaFilesTempFile.flush() 62 javaFilesTempFile.flush()
63 javaFilesTempFile.close() 63 javaFilesTempFile.close()
64 64
65 # Prepare javac command. 65 # Prepare javac command.
66 command = [javac]
67
68 # Use a large enough heap to be able to compile all of the classes in one 66 # Use a large enough heap to be able to compile all of the classes in one
69 # big compilation step. 67 # big compilation step.
70 command.append('-J-Xmx256m') 68 command = [javac, '-J-Xmx256m']
71 69
72 if buildConfig == 'Debug': 70 if buildConfig == 'Debug':
73 command.append('-g') 71 command.append('-g')
74 72
75 if srcDirectories: 73 if srcDirectories:
76 command.append('-sourcepath') 74 command.append('-sourcepath')
77 command.append(os.pathsep.join(srcDirectories)) 75 command.append(os.pathsep.join(srcDirectories))
78 76
79 if classpath: 77 if classpath:
80 command.append('-classpath') 78 command.append('-classpath')
(...skipping 14 matching lines...) Expand all
95 # Compile. 93 # Compile.
96 sys.stdout.write(' \\\n '.join(command) + '\n') 94 sys.stdout.write(' \\\n '.join(command) + '\n')
97 if os.system(' '.join(command)): 95 if os.system(' '.join(command)):
98 sys.stderr.write('java compilation failed\n') 96 sys.stderr.write('java compilation failed\n')
99 return False 97 return False
100 return True 98 return True
101 finally: 99 finally:
102 os.remove(javaFilesTempFileName) 100 os.remove(javaFilesTempFileName)
103 101
104 def copyProperties(propertyFiles, classOutputDir): 102 def copyProperties(propertyFiles, classOutputDir):
105 for file in propertyFiles: 103 for property_file in propertyFiles:
106 if not os.path.isfile(file): 104 if not os.path.isfile(property_file):
107 sys.stderr.write('property file not found: ' + file + '\n') 105 sys.stderr.write('property file not found: ' + property_file + '\n')
108 return False 106 return False
109 107
110 if not os.path.exists(classOutputDir): 108 if not os.path.exists(classOutputDir):
111 sys.stderr.write('classes dir not found: ' + classOutputDir + '\n') 109 sys.stderr.write('classes dir not found: ' + classOutputDir + '\n')
112 return False 110 return False
113 111
114 if propertyFiles == []: 112 if not propertyFiles:
115 return True 113 return True
116 114
117 command = ['cp'] + propertyFiles + [classOutputDir] 115 command = ['cp'] + propertyFiles + [classOutputDir]
118 commandStr = ' '.join(command) 116 commandStr = ' '.join(command)
119 sys.stdout.write(commandStr + '\n') 117 sys.stdout.write(commandStr + '\n')
120 if os.system(commandStr): 118 if os.system(commandStr):
121 sys.stderr.write('property file copy failed\n') 119 sys.stderr.write('property file copy failed\n')
122 return False 120 return False
123 return True 121 return True
124 122
125 def createJar(classOutputDir, jarFileName): 123 def createJar(classOutputDir, jarFileName):
126 if not os.path.exists(classOutputDir): 124 if not os.path.exists(classOutputDir):
127 sys.stderr.write('classes dir not found: ' + classOutputDir + '\n') 125 sys.stderr.write('classes dir not found: ' + classOutputDir + '\n')
128 return False 126 return False
129 127
130 command = ['jar', 'cf', jarFileName, '-C', classOutputDir, '.'] 128 command = ['jar', 'cf', jarFileName, '-C', classOutputDir, '.']
131 commandStr = ' '.join(command) 129 commandStr = ' '.join(command)
132 sys.stdout.write(commandStr + '\n') 130 sys.stdout.write(commandStr + '\n')
133 if os.system(commandStr): 131 if os.system(commandStr):
134 sys.stderr.write('jar creation failed\n') 132 sys.stderr.write('jar creation failed\n')
135 return False 133 return False
136 return True 134 return True
137 135
138 136
139 def main(args): 137 def main():
140 try: 138 try:
141 # Parse input. 139 # Parse input.
142 parser = OptionParser() 140 parser = OptionParser()
143 parser.add_option("--javac", default="javac", 141 parser.add_option("--javac", default="javac",
144 action="store", type="string", 142 action="store", type="string",
145 help="location of javac command") 143 help="location of javac command")
146 parser.add_option("--sourceDir", dest="sourceDirs", default=[], 144 parser.add_option("--sourceDir", dest="sourceDirs", default=[],
147 action="callback", callback=ListArgCallback, 145 action="callback", callback=ListArgCallback,
148 help="specify a list of directories to look for " + 146 help="specify a list of directories to look for " +
149 ".java files to compile") 147 ".java files to compile")
(...skipping 23 matching lines...) Expand all
173 help="specify a list of property files to copy") 171 help="specify a list of property files to copy")
174 172
175 (options, args) = parser.parse_args() 173 (options, args) = parser.parse_args()
176 if not options.classesDir: 174 if not options.classesDir:
177 sys.stderr.write('--classesDir not specified\n') 175 sys.stderr.write('--classesDir not specified\n')
178 return -1 176 return -1
179 if not options.jarFileName: 177 if not options.jarFileName:
180 sys.stderr.write('--jarFileName not specified\n') 178 sys.stderr.write('--jarFileName not specified\n')
181 return -1 179 return -1
182 if len(options.sourceDirs) > 0 and options.sourceList: 180 if len(options.sourceDirs) > 0 and options.sourceList:
183 sys.stderr.write("--sourceDir and --sourceList cannot be both specified"); 181 sys.stderr.write("--sourceDir and --sourceList cannot be both specified")
184 return -1 182 return -1
185 183
186 # Compile and put into .jar file. 184 # Compile and put into .jar file.
187 if not javaCompile(options.javac, options.sourceDirs, 185 if not javaCompile(options.javac, options.sourceDirs,
188 options.sourceList, options.classpath, 186 options.sourceList, options.classpath,
189 options.classesDir, options.buildConfig, 187 options.classesDir, options.buildConfig,
190 options.javacArgs, options.sources): 188 options.javacArgs, options.sources):
191 return -1 189 return -1
192 if not copyProperties(options.propertyFiles, options.classesDir): 190 if not copyProperties(options.propertyFiles, options.classesDir):
193 return -1 191 return -1
194 if not createJar(options.classesDir, options.jarFileName): 192 if not createJar(options.classesDir, options.jarFileName):
195 return -1 193 return -1
196 194
197 return 0 195 return 0
198 except Exception, inst: 196 except Exception, inst:
199 sys.stderr.write('compile_java.py exception\n') 197 sys.stderr.write('compile_java.py exception\n')
200 sys.stderr.write(str(inst)) 198 sys.stderr.write(str(inst))
201 return -1 199 return -1
202 200
203 if __name__ == '__main__': 201 if __name__ == '__main__':
204 sys.exit(main(sys.argv)) 202 sys.exit(main())
OLDNEW
« no previous file with comments | « tools/build.py ('k') | tools/compiler_scripts/generate_source_list.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698