Re: [PATCH] buildscript java version detection fails on Linux/Ubuntu on Picked up JAVA_TOOL_OPTIONS
Since I haven't received any additional feedback, should I push this patch? Op 27 aug. 2015 15:56 schreef i...@cuhka.com: I've adapted the build.gradle to use java -fullversion instead of java -version, parsing the result with a regexp. diff -r 9b5fc7c1e5e6 build.gradle --- a/build.gradle Fri Aug 07 18:35:42 2015 -0700 +++ b/build.gradle Thu Aug 27 15:52:11 2015 +0200 @@ -719,29 +719,27 @@ if (!file(JAVAH).exists()) throw new Exception(Missing or incorrect path to 'javah': '$JAVAH'. Perhaps bad JDK_HOME? $JDK_HOME) if (!file(JAVADOC).exists()) throw new Exception(Missing or incorrect path to 'javadoc': '$JAVADOC'. Perhaps bad JDK_HOME? $JDK_HOME) - + // Determine the verion of Java in JDK_HOME. It looks like this: // -// $ java -version -// 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())); +// $ java -fullversion +// for OpenJDK: openjdk full version 1.8.0_45-internal-b14 +// for Oracle JDK: java full version 1.8.0_45-b14 + +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(); - if (v != null) { - int ib = v.indexOf( (build ); - if (ib != -1) { - String ver = v.substring(ib + 8, v.size() - 1); - - defineProperty(jdkRuntimeVersion, ver) - defineProperty(jdkVersion, jdkRuntimeVersion.split(-)[0]) - defineProperty(jdkBuildNumber, jdkRuntimeVersion.substring(jdkRuntimeVersion.lastIndexOf(-b) + 2)) - } - } + def v = inStream.readLine(); + + if (v != null) { + def pattern = java.util.regex.Pattern.compile(^[^\]*\((\\d+(?:\\.\\d+)*)_(\\d+))(?:-\\w+)?(?:-b(\\d+))\\$) + def matcher = pattern.matcher(v) + + if (matcher.matches()) { + defineProperty(jdkVersion, matcher.group(1)) + defineProperty(jdkRuntimeVersion, matcher.group(2)) + defineProperty(jdkUpdate, matcher.group(3)) + defineProperty(jdkBuildNumber, matcher.group(4)) + } } } finally { inStream.close();
Re: [PATCH] buildscript java version detection fails on Linux/Ubuntu on Picked up JAVA_TOOL_OPTIONS
Hi Maurice, No, you cannot simply push this patch. Please refer to the OpenJDK Wiki [1] for information on contributing patches to OpenJFX. Additional information on Submitting OpenJFX bugs [2] and Code Review policies [3] are also on the Wiki. I note that simple patches such as this can be accepted without an OCA being signed (although if you want to contribute a non-trivial patch you will need to sign the OCA). Everything starts out with a bug report, which you can submit if you like. However, in this case, I am likely to just fix this as part of fixing JDK-8133750 [4] since the version detection logic also needs to be modified for the new Java version string JEP as described in that bug report. So: Either I can add your information to JDK-8133750 or you can file a new bug and I will link them together and fix them at the same time. -- Kevin [1] http://openjdk.java.net/contribute/ [2] https://wiki.openjdk.java.net/display/OpenJFX/Submitting+a+Bug+Report [3] https://wiki.openjdk.java.net/display/OpenJFX/Code+Reviews [4] https://bugs.openjdk.java.net/browse/JDK-8133750 Maurice le Rutte wrote: Since I haven't received any additional feedback, should I push this patch? Op 27 aug. 2015 15:56 schreef i...@cuhka.com: I've adapted the build.gradle to use java -fullversion instead of java -version, parsing the result with a regexp. diff -r 9b5fc7c1e5e6 build.gradle --- a/build.gradle Fri Aug 07 18:35:42 2015 -0700 +++ b/build.gradle Thu Aug 27 15:52:11 2015 +0200 @@ -719,29 +719,27 @@ if (!file(JAVAH).exists()) throw new Exception(Missing or incorrect path to 'javah': '$JAVAH'. Perhaps bad JDK_HOME? $JDK_HOME) if (!file(JAVADOC).exists()) throw new Exception(Missing or incorrect path to 'javadoc': '$JAVADOC'. Perhaps bad JDK_HOME? $JDK_HOME) - + // Determine the verion of Java in JDK_HOME. It looks like this: // -// $ java -version -// 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())); +// $ java -fullversion +// for OpenJDK: openjdk full version 1.8.0_45-internal-b14 +// for Oracle JDK: java full version 1.8.0_45-b14 + +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(); -if (v != null) { -int ib = v.indexOf( (build ); -if (ib != -1) { -String ver = v.substring(ib + 8, v.size() - 1); - -defineProperty(jdkRuntimeVersion, ver) -defineProperty(jdkVersion, jdkRuntimeVersion.split(-)[0]) -defineProperty(jdkBuildNumber, jdkRuntimeVersion.substring(jdkRuntimeVersion.lastIndexOf(-b) + 2)) -} -} +def v = inStream.readLine(); + +if (v != null) { + def pattern = java.util.regex.Pattern.compile(^[^\]*\((\\d+(?:\\.\\d+)*)_(\\d+))(?:-\\w+)?(?:-b(\\d+))\\$) + def matcher = pattern.matcher(v) + + if (matcher.matches()) { +defineProperty(jdkVersion, matcher.group(1)) +defineProperty(jdkRuntimeVersion, matcher.group(2)) +defineProperty(jdkUpdate, matcher.group(3)) +defineProperty(jdkBuildNumber, matcher.group(4)) + } } } finally { inStream.close();
Re: [PATCH] buildscript java version detection fails on Linux/Ubuntu on Picked up JAVA_TOOL_OPTIONS
Citeren Kevin Rushforth kevin.rushfo...@oracle.com: Either I can add your information to JDK-8133750 or you can file a new bug and I will link them together and fix them at the same time. I'd prefer the former over the latter. Maurice.
[PATCH] buildscript java version detection fails on Linux/Ubuntu on Picked up JAVA_TOOL_OPTIONS
I've adapted the build.gradle to use java -fullversion instead of java -version, parsing the result with a regexp. diff -r 9b5fc7c1e5e6 build.gradle --- a/build.gradle Fri Aug 07 18:35:42 2015 -0700 +++ b/build.gradle Thu Aug 27 15:52:11 2015 +0200 @@ -719,29 +719,27 @@ if (!file(JAVAH).exists()) throw new Exception(Missing or incorrect path to 'javah': '$JAVAH'. Perhaps bad JDK_HOME? $JDK_HOME) if (!file(JAVADOC).exists()) throw new Exception(Missing or incorrect path to 'javadoc': '$JAVADOC'. Perhaps bad JDK_HOME? $JDK_HOME) - + // Determine the verion of Java in JDK_HOME. It looks like this: // -// $ java -version -// 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())); +// $ java -fullversion +// for OpenJDK: openjdk full version 1.8.0_45-internal-b14 +// for Oracle JDK: java full version 1.8.0_45-b14 + +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(); -if (v != null) { -int ib = v.indexOf( (build ); -if (ib != -1) { -String ver = v.substring(ib + 8, v.size() - 1); - -defineProperty(jdkRuntimeVersion, ver) -defineProperty(jdkVersion, jdkRuntimeVersion.split(-)[0]) -defineProperty(jdkBuildNumber, jdkRuntimeVersion.substring(jdkRuntimeVersion.lastIndexOf(-b) + 2)) -} -} +def v = inStream.readLine(); + +if (v != null) { + def pattern = java.util.regex.Pattern.compile(^[^\]*\((\\d+(?:\\.\\d+)*)_(\\d+))(?:-\\w+)?(?:-b(\\d+))\\$) + def matcher = pattern.matcher(v) + + if (matcher.matches()) { +defineProperty(jdkVersion, matcher.group(1)) +defineProperty(jdkRuntimeVersion, matcher.group(2)) +defineProperty(jdkUpdate, matcher.group(3)) +defineProperty(jdkBuildNumber, matcher.group(4)) + } } } finally { inStream.close();