Here is a new patch, using --list-mods instead, seems cleaner to me.

diff -r 84c58139cbd3 common/autoconf/boot-jdk.m4
--- a/common/autoconf/boot-jdk.m4
+++ b/common/autoconf/boot-jdk.m4
@@ -305,9 +305,8 @@
   BOOT_JDK_SOURCETARGET="-source 8 -target 8"
   AC_SUBST(BOOT_JDK_SOURCETARGET)

-  ADD_JVM_ARG_IF_OK([--patch-module foo=bar], dummy, [$JAVA])
   AC_MSG_CHECKING([if Boot JDK supports modules])
-  if test "x$JVM_ARG_OK" = "xtrue"; then
+  if "$JAVA" --list-modules > /dev/null 2>&1; then
     AC_MSG_RESULT([yes])
     BOOT_JDK_MODULAR="true"
   else


/Erik


On 2016-12-22 17:48, Erik Joelsson wrote:
Hello,

Thanks for the suggestions. The way the test is currently implemented is using a framework for finding valid JVM parameters. It basically runs:

java $ArgToTest -version

and parses the output for warnings and verifies that the version was printed. After looking at this more closely, I realize the --patch-module option was chosen to fit this kind of test. On the other hand, we could easily change the implementation here to just run "java --list-modules > /devnull" and check the return code. That's probably cleaner anyway.

/Erik

On 2016-12-22 17:33, Mandy Chung wrote:
Using —-patch-module is one option.

Alternatively, you can use other new options such as:
   $ java --dry-run -m jdk.compiler/com.sun.tools.javac.Main

This stops before invoking the main method.

or
   $ java —-list-modules

This lists the observable modules in the image.

Mandy

On Dec 22, 2016, at 1:39 AM, Erik Joelsson <erik.joels...@oracle.com> wrote:

Hello,

Configure has a check to see if the boot jdk is module aware/enabled. Like many others, the build needs to adapt its behavior when using such a boot jdk. The current check is no longer compatible with the latest JDK 9 builds:

java -version --patch-module foo=bar
WARNING: Unknown module: foo specified in --patch-module

I propose a simple adjustment, to instead specify java.base as the module to patch. I also made it explicit that the directory to patch from does not exist.

I'm open to suggestions on better tests though, but would prefer if they can be as simple as checking for a command line argument.

Bug: https://bugs.openjdk.java.net/browse/JDK-8171859

Patch:

diff -r 84c58139cbd3 common/autoconf/boot-jdk.m4
--- a/common/autoconf/boot-jdk.m4
+++ b/common/autoconf/boot-jdk.m4
@@ -305,7 +305,9 @@
   BOOT_JDK_SOURCETARGET="-source 8 -target 8"
   AC_SUBST(BOOT_JDK_SOURCETARGET)

-  ADD_JVM_ARG_IF_OK([--patch-module foo=bar], dummy, [$JAVA])
+ # Use a non existing directory as the directory will be scanned otherwise
+  # and can potentially take a lot of time.
+ ADD_JVM_ARG_IF_OK([--patch-module java.base=SOME_DIR_THAT_DOES_NOT_EXIST], dummy, [$JAVA])
   AC_MSG_CHECKING([if Boot JDK supports modules])
   if test "x$JVM_ARG_OK" = "xtrue"; then
     AC_MSG_RESULT([yes])


/Erik



Reply via email to