/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