# HG changeset patch # User Doug Simon # Date 1399288652 -7200 # Node ID f5eba273a4f266f77de1b4acbb343b1bceae71aa # Parent 9c66a589ef6328aa9f91b52a4531f4e76e866f3d mx: factored out detection of JDT compilation diff -r 9c66a589ef63 -r f5eba273a4f2 mxtool/mx.py --- a/mxtool/mx.py Mon May 05 00:16:46 2014 +0200 +++ b/mxtool/mx.py Mon May 05 13:17:32 2014 +0200 @@ -1811,7 +1811,7 @@ return get_env('JDT', join(_primary_suite.mxDir, 'ecj.jar')) class JavaCompileTask: - def __init__(self, args, proj, reason, javafilelist, jdk, outputDir, deps): + def __init__(self, args, proj, reason, javafilelist, jdk, outputDir, jdtJar, deps): self.proj = proj self.reason = reason self.javafilelist = javafilelist @@ -1819,6 +1819,7 @@ self.jdk = jdk self.outputDir = outputDir self.done = False + self.jdtJar = jdtJar self.args = args def __str__(self): @@ -1853,20 +1854,8 @@ cp = classpath(self.proj.name, includeSelf=True) toBeDeleted = [argfileName] - jdtJar = None - if not args.javac and args.jdt is not None: - if not args.jdt.endswith('.jar'): - abort('Path for Eclipse batch compiler does not look like a jar file: ' + args.jdt) - jdtJar = args.jdt - if not exists(jdtJar): - if os.path.abspath(jdtJar) == os.path.abspath(_defaultEcjPath()) and get_env('JDT', None) is None: - # Silently ignore JDT if default location is used but does not exist - jdtJar = None - else: - abort('Eclipse batch compiler jar does not exist: ' + args.jdt) - try: - if not jdtJar: + if not self.jdtJar: mainJava = java() if not args.error_prone: self.logCompilation('javac') @@ -1891,7 +1880,7 @@ else: self.logCompilation('JDT') - jdtVmArgs = ['-Xmx1g', '-jar', jdtJar] + jdtVmArgs = ['-Xmx1g', '-jar', self.jdtJar] jdtArgs = ['-' + compliance, '-cp', cp, '-g', '-enableJavadoc', @@ -1959,12 +1948,23 @@ compilerSelect.add_argument('--jdt', help='path to ecj.jar, the Eclipse batch compiler', default=_defaultEcjPath(), metavar='') compilerSelect.add_argument('--force-javac', action='store_true', dest='javac', help='use javac despite ecj.jar is found or not') - if suppliedParser: parser.add_argument('remainder', nargs=REMAINDER, metavar='...') args = parser.parse_args(args) + jdtJar = None + if not args.javac and args.jdt is not None: + if not args.jdt.endswith('.jar'): + abort('Path for Eclipse batch compiler does not look like a jar file: ' + args.jdt) + jdtJar = args.jdt + if not exists(jdtJar): + if os.path.abspath(jdtJar) == os.path.abspath(_defaultEcjPath()) and get_env('JDT', None) is None: + # Silently ignore JDT if default location is used but does not exist + jdtJar = None + else: + abort('Eclipse batch compiler jar does not exist: ' + args.jdt) + if args.only is not None: # N.B. This build will not include dependencies including annotation processor dependencies sortedProjects = [project(name) for name in args.only.split(',')] @@ -2100,7 +2100,7 @@ logv('[no Java sources for {0} - skipping]'.format(p.name)) continue - task = JavaCompileTask(args, p, buildReason, javafilelist, jdk, outputDir, taskDeps) + task = JavaCompileTask(args, p, buildReason, javafilelist, jdk, outputDir, jdtJar, taskDeps) if args.parallelize: # Best to initialize class paths on main process