./build.gradle
Print this page
rev 9457 : 8133750: Parse new JDK version string format in build.gradle
Reviewed-by:
@@ -208,10 +208,33 @@
} finally {
try { propStream.close() } catch (Exception e) { }
}
}
+String[] parseJavaVersion(String jRuntimeVersion) {
+ def jVersion = jRuntimeVersion.split("[-\\+]")[0]
+ def tmpBuildNumber = "0"
+ if (jVersion.startsWith("1.")) {
+ // This is a pre-JEP-223 version string
+ def dashbIdx = jRuntimeVersion.lastIndexOf("-b")
+ if (dashbIdx != -1) {
+ tmpBuildNumber = jRuntimeVersion.substring(dashbIdx + 2)
+ }
+ } else {
+ // This is a post-JEP-223 version string
+ def plusIdx = jRuntimeVersion.indexOf("+")
+ if (plusIdx != -1) {
+ tmpBuildNumber = jRuntimeVersion.substring(plusIdx + 1)
+ }
+ }
+ def jBuildNumber = tmpBuildNumber.split("[-\\+]")[0]
+ def versionInfo = new String[2];
+ versionInfo[0] = jVersion
+ versionInfo[1] = jBuildNumber
+ return versionInfo
+}
+
/**
* Fails the build with the specified error message
*
* @param msg the reason for the failure
*/
@@ -276,12 +299,13 @@
defineProperty("JAVAH", cygpath("$JDK_HOME/bin/javah${IS_WINDOWS ? '.exe' : ''}"))
defineProperty("JAVADOC", cygpath("$JDK_HOME/bin/javadoc${IS_WINDOWS ? '.exe' : ''}"))
defineProperty("JDK_DOCS", "https://docs.oracle.com/javase/8/docs/api/")
defineProperty("javaRuntimeVersion", System.getProperty("java.runtime.version"))
-defineProperty("javaVersion", javaRuntimeVersion.split("-")[0])
-defineProperty("javaBuildNumber", javaRuntimeVersion.substring(javaRuntimeVersion.lastIndexOf("-b") + 2))
+def javaVersionInfo = parseJavaVersion(javaRuntimeVersion)
+defineProperty("javaVersion", javaVersionInfo[0])
+defineProperty("javaBuildNumber", javaVersionInfo[1])
loadProperties("$projectDir/build.properties")
def String closedCacheStubRuntime = cygpath("$projectDir") + "/../caches/sdk/rt"
defineProperty("STUB_RUNTIME", BUILD_CLOSED ? closedCacheStubRuntime : cygpath("$JDK_HOME/jre"))
@@ -751,23 +775,23 @@
// java version "1.7.0_45"
// Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
// Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)
//
// We need to parse the second line
-def inStream = new java.io.BufferedReader(new java.io.InputStreamReader(new java.lang.ProcessBuilder(JAVA, "-version").start().getErrorStream()));
+def inStream = new java.io.BufferedReader(new java.io.InputStreamReader(new java.lang.ProcessBuilder(JAVA, "-fullversion").start().getErrorStream()));
try {
- if (inStream.readLine() != null) {
- String v = inStream.readLine();
+ String v = inStream.readLine().trim();
if (v != null) {
- int ib = v.indexOf(" (build ");
+ int ib = v.indexOf("full version \"");
if (ib != -1) {
- String ver = v.substring(ib + 8, v.size() - 1);
+ String str = v.substring(ib);
+ String ver = str.substring(str.indexOf("\"") + 1, str.size() - 1);
defineProperty("jdkRuntimeVersion", ver)
- defineProperty("jdkVersion", jdkRuntimeVersion.split("-")[0])
- defineProperty("jdkBuildNumber", jdkRuntimeVersion.substring(jdkRuntimeVersion.lastIndexOf("-b") + 2))
- }
+ def jdkVersionInfo = parseJavaVersion(ver)
+ defineProperty("jdkVersion", jdkVersionInfo[0])
+ defineProperty("jdkBuildNumber", jdkVersionInfo[1])
}
}
} finally {
inStream.close();
}
@@ -826,11 +850,12 @@
logger.quiet("java version: ${javaVersion}")
logger.quiet("java build number: ${javaBuildNumber}")
logger.quiet("jdk.runtime.version: ${jdkRuntimeVersion}")
logger.quiet("jdk version: ${jdkVersion}")
logger.quiet("jdk build number: ${jdkBuildNumber}")
-logger.quiet("minimum java build number: ${jfxBuildJdkBuildnumMin}")
+logger.quiet("minimum jdk version: ${jfxBuildJdkVersion}")
+logger.quiet("minimum jdk build number: ${jfxBuildJdkBuildnumMin}")
logger.quiet("CONF: $CONF")
logger.quiet("NUM_COMPILE_THREADS: $NUM_COMPILE_THREADS")
logger.quiet("COMPILE_TARGETS: $COMPILE_TARGETS")
logger.quiet("COMPILE_FLAGS_FILES: $COMPILE_FLAGS_FILES")
logger.quiet("HUDSON_JOB_NAME: $HUDSON_JOB_NAME")
@@ -1048,11 +1073,11 @@
*/
List parseJdkVersion(String version) {
def arr = version.split("[_\\.]");
def intArr = [];
arr.each { s -> intArr += Integer.parseInt(s); }
- if (intArr.size() < 4) intArr += 0;
+ while (intArr.size() < 4) intArr += 0;
return intArr;
}
/**
* Returns -1, 0, or 1 depending on whether JDK version "a" is less than,
@@ -1076,11 +1101,11 @@
if (status < 0) {
fail("java version mismatch: JDK version (${jdkVersion}) < minimum version (${jfxBuildJdkVersion})")
} else if (status == 0) {
def buildNum = Integer.parseInt(jdkBuildNumber)
def minBuildNum = Integer.parseInt(jfxBuildJdkBuildnumMin)
- if (buildNum < minBuildNum) {
+ if (buildNum != 0 && buildNum < minBuildNum) {
fail("JDK build number ($buildNum) < minimum build number ($minBuildNum)")
}
}
}
}