/hg/icedtea-web: Configure made more JDK9 friendly

jvanek at icedtea.classpath.org jvanek at icedtea.classpath.org
Wed Oct 26 14:02:07 UTC 2016


changeset 7e15398e117d in /hg/icedtea-web
details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=7e15398e117d
author: Jiri Vanek <jvanek at redhat.com>
date: Wed Oct 26 16:06:50 2016 +0200

	Configure made more JDK9 friendly

	* acinclude.m4: (IT_CHECK_FOR_CLASS) added support for modules, including support for access to private parts of module system removed IT_CHECK_FOR_HEXDUMPENCODER as jdk8/9 separation is done elsewhere anyway
	* configure.ac: IT_CHECK_FOR_HEXDUMPENCODER replaced by corresponding IT_CHECK_FOR_CLASS. All IT_CHECK_FOR_CLASS got corresponding module param. Module variables filled for jdk9, empty otherwise. Added checks for sun.misc.JarIndex (jdk8,9) and sun.misc.Launcher (jdk8 only, 9 have comment.. and troubles)


diffstat:

 ChangeLog    |  13 ++++++++++++
 acinclude.m4 |  61 +++++++++--------------------------------------------------
 configure.ac |  48 ++++++++++++++++++++++++++++------------------
 3 files changed, 52 insertions(+), 70 deletions(-)

diffs (167 lines):

diff -r 51d1bce42e06 -r 7e15398e117d ChangeLog
--- a/ChangeLog	Tue Oct 25 14:31:58 2016 +0200
+++ b/ChangeLog	Wed Oct 26 16:06:50 2016 +0200
@@ -1,3 +1,16 @@
+2016-10-26  Jiri Vanek <jvanek at redhat.com>
+
+	Configure made more JDK9 friendly
+	* acinclude.m4: (IT_CHECK_FOR_CLASS) added support for modules,
+	including support for access to private parts of module system
+	removed IT_CHECK_FOR_HEXDUMPENCODER as jdk8/9 separation is done
+	elsewhere anyway
+	* configure.ac: IT_CHECK_FOR_HEXDUMPENCODER replaced by corresponding
+	IT_CHECK_FOR_CLASS. All IT_CHECK_FOR_CLASS got corresponding module param.
+	Module variables filled for jdk9, empty otherwise. Added checks for
+	sun.misc.JarIndex (jdk8,9) and sun.misc.Launcher (jdk8 only, 9 have comment.. and troubles)
+
+
 2016-10-25  Jiri Vanek <jvanek at redhat.com>
 
 	JDialog removed as main keeper of information in SecurityDialog class
diff -r 51d1bce42e06 -r 7e15398e117d acinclude.m4
--- a/acinclude.m4	Tue Oct 25 14:31:58 2016 +0200
+++ b/acinclude.m4	Wed Oct 26 16:06:50 2016 +0200
@@ -466,8 +466,15 @@
 AC_REQUIRE([IT_FIND_JAVAC])
 AC_REQUIRE([IT_FIND_JAVA])
 AC_CACHE_CHECK([if $2 is available], it_cv_$1, [
-# first param is name of class to find, second is name of package to make check in.
+# first is the variableto save in, second  param is name of class to find,
+# third  is name of package to make check in.
 # mostly some.pkg is ok, but some tests must bedone in sun.applet or other special directory
+# fourth, optional is module
+MODULE_NAME="$4"
+if test -n "$MODULE_NAME" ; then
+  XMODULE="-Xmodule:$MODULE_NAME"
+  PATCH_MODULE="--patch-module $MODULE_NAME=."
+fi
 PKGPATH=`echo $3 | sed "s;\\.;/;g" `
 CLASS=$PKGPATH/Test.java
 BYTECODE=$(echo $CLASS|sed 's#\.java##')
@@ -489,8 +496,8 @@
 }
 ]
 EOF
-if $JAVAC -cp . $JAVACFLAGS -nowarn $CLASS >&AS_MESSAGE_LOG_FD 2>&1; then
-  if $JAVA -classpath . $BYTECODE >&AS_MESSAGE_LOG_FD 2>&1; then
+if $JAVAC -cp . $XMODULE $JAVACFLAGS -nowarn $CLASS >&AS_MESSAGE_LOG_FD 2>&1; then
+  if $JAVA $PATCH_MODULE -classpath . $BYTECODE >&AS_MESSAGE_LOG_FD 2>&1; then
       it_cv_$1=yes;
   else
       it_cv_$1=no;
@@ -509,54 +516,6 @@
 AC_PROVIDE([$0])dnl
 ])
 
-dnl Macro to check for a Java class HexDumpEncoder
-AC_DEFUN([IT_CHECK_FOR_HEXDUMPENCODER],[
-AC_REQUIRE([IT_FIND_JAVAC])
-AC_REQUIRE([IT_FIND_JAVA])
-AC_CACHE_CHECK([if HexDumpEncoder is available], it_cv_HEXDUMPENCODER, [
-CLASS=ssun/aapplet/Test.java
-BYTECODE=$(echo $CLASS|sed 's#\.java##')
-mkdir -p tmp.$$/$(dirname $CLASS)
-cd tmp.$$
-cat << \EOF > $CLASS
-[/* [#]line __oline__ "configure" */
-package ssun.aapplet;
-
-import sun.misc.*;
-import sun.security.util.*;
-
-public class Test
-{
-  public static void main(String[] args)
-    throws Exception
-  {
-    try {
-      System.out.println(Class.forName("sun.misc.HexDumpEncoder"));
-    } catch (ClassNotFoundException e) {
-      System.out.println(Class.forName("sun.security.util.HexDumpEncoder"));
-    }
-  }
-}
-]
-EOF
-if $JAVAC -cp . $JAVACFLAGS -nowarn $CLASS >&AS_MESSAGE_LOG_FD 2>&1; then
-  if $JAVA -classpath . $BYTECODE >&AS_MESSAGE_LOG_FD 2>&1; then
-      it_cv_HEXDUMPENCODER=yes;
-  else
-      it_cv_HEXDUMPENCODER=no;
-  fi
-else
-  it_cv_HEXDUMPENCODER=no;
-fi
-])
-rm -f $CLASS *.class
-cd ..
-# should be rmdir but has to be rm -rf due to sun.applet usage
-rm -rf tmp.$$
-if test x"${it_cv_HEXDUMPENCODER}" = "xno"; then
-   AC_MSG_ERROR([HexDumpEncoder not found.])
-fi
-])
 
 AC_DEFUN_ONCE([IT_CHECK_FOR_MERCURIAL],
 [
diff -r 51d1bce42e06 -r 7e15398e117d configure.ac
--- a/configure.ac	Tue Oct 25 14:31:58 2016 +0200
+++ b/configure.ac	Wed Oct 26 16:06:50 2016 +0200
@@ -64,28 +64,38 @@
 dnl IT575 - Plugin depends on com.sun/jndi.toolkit.url.UrlUtil
 dnl IT576 - Plugin depends on sun.applet.AppletImageRef
 dnl IT578 - Remove need for patching AppletPanel for Plugin/Webstart
-IT_CHECK_FOR_CLASS(JAVA_UTIL_JAR_PACK200, [java.util.jar.Pack200], [some.pkg])
-IT_CHECK_FOR_CLASS(JAVA_NET_COOKIEMANAGER, [java.net.CookieManager], [some.pkg])
-IT_CHECK_FOR_CLASS(JAVA_NET_HTTPCOOKIE, [java.net.HttpCookie], [some.pkg])
-IT_CHECK_FOR_CLASS(JAVA_NET_COOKIEHANDLER, [java.net.CookieHandler], [some.pkg])
 if test x"$HAVE_JAVA9" = xyes ; then
-   echo "skipping x509,SecurityConstants, sun.net ...  checks"
-   echo "The skip is wrong. Thy must be handled for jdk9 anyway!"
-#   TODO!
+  JAVA_BASE=java.base
+  JAVA_DESKTOP=java.desktop
+  JAVA_NAMING=java.naming
+fi
+IT_CHECK_FOR_CLASS(JAVA_UTIL_JAR_PACK200, [java.util.jar.Pack200], [some.pkg], [])
+IT_CHECK_FOR_CLASS(JAVA_NET_COOKIEMANAGER, [java.net.CookieManager], [some.pkg], [])
+IT_CHECK_FOR_CLASS(JAVA_NET_HTTPCOOKIE, [java.net.HttpCookie], [some.pkg], [])
+IT_CHECK_FOR_CLASS(JAVA_NET_COOKIEHANDLER, [java.net.CookieHandler], [some.pkg], [])
+# in jdk9, those classes are using internal apis, must be enabled via module cheats
+IT_CHECK_FOR_CLASS(SUN_SECURITY_PROVIDER_X509FACTORY, [sun.security.provider.X509Factory], [some.pkg], [$JAVA_BASE])
+IT_CHECK_FOR_CLASS(SUN_SECURITY_UTIL_SECURITYCONSTANTS, [sun.security.util.SecurityConstants], [some.pkg], [$JAVA_BASE])
+IT_CHECK_FOR_CLASS(SUN_SECURITY_UTIL_HOSTNAMECHECKER, [sun.security.util.HostnameChecker], [some.pkg], [$JAVA_BASE])
+IT_CHECK_FOR_CLASS(SUN_SECURITY_X509_X500NAME, [sun.security.x509.X500Name], [some.pkg], [$JAVA_BASE])
+# the classname cant be substitued by variable, as it is substituted to inner class
+if test x"$HAVE_JAVA9" = xyes ; then
+  IT_CHECK_FOR_CLASS(HEXDUMPENCODER, [sun.security.util.HexDumpEncoder], [some.pkg], [$JAVA_BASE])
+  IT_CHECK_FOR_CLASS(SUN_MISC_JARINDEX, [jdk.internal.util.jar.JarIndex], [some.pkg], [$JAVA_BASE])
+  # jdk9 do not have sun.misc.Launcher. It must be patched in code.
 else
-  IT_CHECK_FOR_CLASS(SUN_SECURITY_PROVIDER_X509FACTORY, [sun.security.provider.X509Factory], [some.pkg])
-  IT_CHECK_FOR_CLASS(SUN_SECURITY_UTIL_SECURITYCONSTANTS, [sun.security.util.SecurityConstants], [some.pkg])
-  IT_CHECK_FOR_CLASS(SUN_SECURITY_UTIL_HOSTNAMECHECKER, [sun.security.util.HostnameChecker], [some.pkg])
-  IT_CHECK_FOR_CLASS(SUN_SECURITY_X509_X500NAME, [sun.security.x509.X500Name], [some.pkg])
-  IT_CHECK_FOR_HEXDUMPENCODER
-  IT_CHECK_FOR_CLASS(SUN_SECURITY_VALIDATOR_VALIDATOREXCEPTION, [sun.security.validator.ValidatorException], [some.pkg])
-  IT_CHECK_FOR_CLASS(COM_SUN_NET_SSL_INTERNAL_SSL_X509EXTENDEDTRUSTMANAGER, [com.sun.net.ssl.internal.ssl.X509ExtendedTrustManager], [some.pkg])
-  IT_CHECK_FOR_CLASS(SUN_NET_WWW_PROTOCOL_JAR_URLJARFILE, [sun.net.www.protocol.jar.URLJarFile], [some.pkg])
-  IT_CHECK_FOR_CLASS(SUN_NET_WWW_PROTOCOL_JAR_URLJARFILECALLBACK, [sun.net.www.protocol.jar.URLJarFileCallBack], [some.pkg])
-  IT_CHECK_FOR_CLASS(SUN_AWT_X11_XEMBEDDEDFRAME, [sun.awt.X11.XEmbeddedFrame], [some.pkg])
-  IT_CHECK_FOR_CLASS(COM_SUN_JNDI_TOOLKIT_URL_URLUTIL, [com.sun.jndi.toolkit.url.UrlUtil], [some.pkg])
-  IT_CHECK_FOR_CLASS(SUN_APPLET_APPLETIMAGEREF, [sun.applet.AppletImageRef], [sun.applet], [sun.applet])
+  IT_CHECK_FOR_CLASS(HEXDUMPENCODER, [sun.misc.HexDumpEncoder], [some.pkg], [$JAVA_BASE])
+  IT_CHECK_FOR_CLASS(SUN_MISC_JARINDEX, [sun.misc.JarIndex], [some.pkg], [$JAVA_BASE])
+  IT_CHECK_FOR_CLASS(SUN_MISC_LAUNCHER, [sun.misc.Launcher], [some.pkg], [$JAVA_BASE])
 fi
+IT_CHECK_FOR_CLASS(SUN_SECURITY_VALIDATOR_VALIDATOREXCEPTION, [sun.security.validator.ValidatorException], [some.pkg], [$JAVA_BASE])
+IT_CHECK_FOR_CLASS(COM_SUN_NET_SSL_INTERNAL_SSL_X509EXTENDEDTRUSTMANAGER, [com.sun.net.ssl.internal.ssl.X509ExtendedTrustManager], [some.pkg], [$JAVA_BASE])
+IT_CHECK_FOR_CLASS(SUN_NET_WWW_PROTOCOL_JAR_URLJARFILE, [sun.net.www.protocol.jar.URLJarFile], [some.pkg], [$JAVA_BASE])
+IT_CHECK_FOR_CLASS(SUN_NET_WWW_PROTOCOL_JAR_URLJARFILECALLBACK, [sun.net.www.protocol.jar.URLJarFileCallBack], [some.pkg], [$JAVA_BASE])
+IT_CHECK_FOR_CLASS(SUN_AWT_X11_XEMBEDDEDFRAME, [sun.awt.X11.XEmbeddedFrame], [some.pkg], [$JAVA_DESKTOP])
+IT_CHECK_FOR_CLASS(COM_SUN_JNDI_TOOLKIT_URL_URLUTIL, [com.sun.jndi.toolkit.url.UrlUtil], [some.pkg], [$JAVA_NAMING])
+IT_CHECK_FOR_CLASS(SUN_APPLET_APPLETIMAGEREF, [sun.applet.AppletImageRef], [sun.applet], [$JAVA_DESKTOP])
+
 IT_CHECK_FOR_SUN_APPLET_ACCESSIBILITY
 IT_CHECK_GLIB_VERSION
 IT_CHECK_XULRUNNER_MIMEDESCRIPTION_CONSTCHAR


More information about the distro-pkg-dev mailing list