# HG changeset patch # User Doug Simon # Date 1429099577 -7200 # Node ID 05e1ab8c5c6a87861b7dfb372182f092ae908ed5 # Parent 56a30cfcefafc9e4d944a6568bf534d42d43350e relax expectations on JDK library locations diff -r 56a30cfcefaf -r 05e1ab8c5c6a mxtool/mx.py --- a/mxtool/mx.py Wed Apr 15 03:14:27 2015 +0200 +++ b/mxtool/mx.py Wed Apr 15 14:06:17 2015 +0200 @@ -2097,7 +2097,9 @@ return cmp(self.parts, other.parts) def _filter_non_existant_paths(paths): - return os.pathsep.join([path for path in _separatedCygpathW2U(paths).split(os.pathsep) if exists(path)]) + if paths: + return os.pathsep.join([path for path in _separatedCygpathW2U(paths).split(os.pathsep) if exists(path)]) + return None """ A JavaConfig object encapsulates info on how Java commands are run. @@ -2161,11 +2163,14 @@ if not exists(outDir): os.makedirs(outDir) javaSource = join(myDir, 'ClasspathDump.java') - if not exists(join(outDir, 'ClasspathDump.class')): + javaClass = join(outDir, 'ClasspathDump.class') + if not exists(javaClass) or getmtime(javaClass) < getmtime(javaSource): subprocess.check_call([self.javac, '-d', _cygpathU2W(outDir), _cygpathU2W(javaSource)], stderr=subprocess.PIPE, stdout=subprocess.PIPE) self._bootclasspath, self._extdirs, self._endorseddirs = [x if x != 'null' else None for x in subprocess.check_output([self.java, '-cp', _cygpathU2W(outDir), 'ClasspathDump'], stderr=subprocess.PIPE).split('|')] - if not self._bootclasspath or not self._extdirs or not self._endorseddirs: - warn("Could not find all classpaths: boot='" + str(self._bootclasspath) + "' extdirs='" + str(self._extdirs) + "' endorseddirs='" + str(self._endorseddirs) + "'") + if self.javaCompliance <= JavaCompliance('1.8'): + # All 3 system properties accessed by ClasspathDump are expected to exist + if not self._bootclasspath or not self._extdirs or not self._endorseddirs: + warn("Could not find all classpaths: boot='" + str(self._bootclasspath) + "' extdirs='" + str(self._extdirs) + "' endorseddirs='" + str(self._endorseddirs) + "'") self._bootclasspath = _filter_non_existant_paths(self._bootclasspath) self._extdirs = _filter_non_existant_paths(self._extdirs) self._endorseddirs = _filter_non_existant_paths(self._endorseddirs) @@ -2214,6 +2219,33 @@ self._init_classpaths() return _separatedCygpathU2W(self._endorseddirs) + """ + Add javadoc style options for the library paths of this JDK. + """ + def javadocLibOptions(self, args): + if args is None: + args = [] + if self.bootclasspath(): + args.append('-bootclasspath') + args.append(self.bootclasspath()) + if self.endorseddirs(): + args.append('-endorseddirs') + args.append(self.endorseddirs()) + if self.extdirs(): + args.append('-extdirs') + args.append(self.extdirs()) + return args + + """ + Add javac style options for the library paths of this JDK. + """ + def javacLibOptions(self, args): + args = self.javadocLibOptions(args) + if self.endorseddirs(): + args.append('-endorseddirs') + args.append(self.endorseddirs()) + return args + def containsJar(self, jar): if self._bootclasspath is None: self._init_classpaths() @@ -2447,7 +2479,8 @@ if not args.error_prone: javac = args.alt_javac if args.alt_javac else mainJava.javac self.logCompilation('javac' if not args.alt_javac else args.alt_javac) - javacCmd = [javac, '-g', '-J-Xmx1g', '-source', compliance, '-target', compliance, '-classpath', cp, '-d', outputDir, '-bootclasspath', jdk.bootclasspath(), '-endorseddirs', jdk.endorseddirs(), '-extdirs', jdk.extdirs()] + javacCmd = [javac, '-g', '-J-Xmx1g', '-source', compliance, '-target', compliance, '-classpath', cp, '-d', outputDir] + jdk.javacLibOptions(javacCmd) if jdk.debug_port is not None: javacCmd += ['-J-Xdebug', '-J-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=' + str(jdk.debug_port)] javacCmd += processorArgs @@ -2459,7 +2492,8 @@ else: self.logCompilation('javac (with error-prone)') javaArgs = ['-Xmx1g'] - javacArgs = ['-g', '-source', compliance, '-target', compliance, '-classpath', cp, '-d', outputDir, '-bootclasspath', jdk.bootclasspath(), '-endorseddirs', jdk.endorseddirs(), '-extdirs', jdk.extdirs()] + javacArgs = ['-g', '-source', compliance, '-target', compliance, '-classpath', cp, '-d', outputDir] + jdk.javacLibOptions(javacCmd) javacArgs += processorArgs javacArgs += ['@' + argfile.name] if not args.warnAPI: @@ -2472,10 +2506,8 @@ jdtArgs = ['-' + compliance, '-cp', cp, '-g', '-enableJavadoc', - '-d', outputDir, - '-bootclasspath', jdk.bootclasspath(), - '-endorseddirs', jdk.endorseddirs(), - '-extdirs', jdk.extdirs()] + '-d', outputDir] + jdk.javacLibOptions(jdtArgs) jdtArgs += processorArgs jdtProperties = join(self.proj.dir, '.settings', 'org.eclipse.jdt.core.prefs') @@ -4840,9 +4872,8 @@ '-d', out, '-overview', overviewFile, '-sourcepath', sp, - '-source', str(projectJava.javaCompliance), - '-bootclasspath', projectJava.bootclasspath(), - '-extdirs', projectJava.extdirs()] + + '-source', str(projectJava.javaCompliance)] + + projectJava.javadocLibOptions() + ([] if projectJava.javaCompliance < JavaCompliance('1.8') else ['-Xdoclint:none']) + links + extraArgs +