/hg/icedtea7: PR1404: Failure to bootstrap with ecj 4.2

andrew at icedtea.classpath.org andrew at icedtea.classpath.org
Fri Apr 19 11:37:31 PDT 2013


changeset 3757116b4861 in /hg/icedtea7
details: http://icedtea.classpath.org/hg/icedtea7?cmd=changeset;node=3757116b4861
author: Andrew John Hughes <gnu_andrew at member.fsf.org>
date: Fri Apr 19 19:37:22 2013 +0100

	PR1404: Failure to bootstrap with ecj 4.2

	2013-04-18  Andrew John Hughes  <gnu.andrew at member.fsf.org>

		PR1404: Failure to bootstrap with ecj 4.2
		* Makefile.am:
		(ICEDTEA_BOOTSTRAP_CLASSES): Add SSLContext,
		SSLEngine and SslRMIServerSocketFactory if
		methods are missing.
		(IT_LANGUAGE_SOURCE_VERSION): Set to 7 if supported.
		(IT_CLASS_TARGET_VERSION): Likewise.
		* configure.ac: Mention bugs in comments.
		Add tests for getDefaultSSLParameters/setSSLParameters
		and new 7 SslRMIServerSocketFactory.
		* NEWS: Updated.

	2013-01-11  Andrew John Hughes  <gnu.andrew at redhat.com>

		* acinclude.m4:
		(IT_CHECK_FOR_CLASS): Write class toString() output
		to System.err rather than throwing it away.  It then
		appears in config.log and may be useful in debugging.
		(IT_CHECK_FOR_METHOD): Fix documentation and add
		System.err output as for IT_CHECK_FOR_CLASS.
		(IT_CHECK_FOR_CONSTRUCTOR): New macro to test for
		the presence of a specific constructor.  Works
		with both private & protected constructors by
		using a subclass for the compile test.


diffstat:

 ChangeLog    |  26 ++++++++++++++++++++
 Makefile.am  |  22 +++++++++++++++++
 acinclude.m4 |  77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++----
 configure.ac |  25 +++++++++++++++++++
 4 files changed, 144 insertions(+), 6 deletions(-)

diffs (223 lines):

diff -r 397dd0f8e62a -r 3757116b4861 ChangeLog
--- a/ChangeLog	Thu Apr 04 22:52:56 2013 +0100
+++ b/ChangeLog	Fri Apr 19 19:37:22 2013 +0100
@@ -1,3 +1,29 @@
+2013-04-18  Andrew John Hughes  <gnu.andrew at member.fsf.org>
+
+	PR1404: Failure to bootstrap with ecj 4.2
+	* Makefile.am:
+	(ICEDTEA_BOOTSTRAP_CLASSES): Add SSLContext,
+	SSLEngine and SslRMIServerSocketFactory if
+	methods are missing.
+	(IT_LANGUAGE_SOURCE_VERSION): Set to 7 if supported.
+	(IT_CLASS_TARGET_VERSION): Likewise.
+	* configure.ac: Mention bugs in comments.
+	Add tests for getDefaultSSLParameters/setSSLParameters
+	and new 7 SslRMIServerSocketFactory.
+
+2013-01-11  Andrew John Hughes  <gnu.andrew at redhat.com>
+
+	* acinclude.m4:
+	(IT_CHECK_FOR_CLASS): Write class toString() output
+	to System.err rather than throwing it away.  It then
+	appears in config.log and may be useful in debugging.
+	(IT_CHECK_FOR_METHOD): Fix documentation and add
+	System.err output as for IT_CHECK_FOR_CLASS.
+	(IT_CHECK_FOR_CONSTRUCTOR): New macro to test for
+	the presence of a specific constructor.  Works
+	with both private & protected constructors by
+	using a subclass for the compile test.
+
 2013-04-04  Andrew John Hughes  <gnu_andrew at member.fsf.org>
 
 	* patches/zero_libffi.patch:
diff -r 397dd0f8e62a -r 3757116b4861 Makefile.am
--- a/Makefile.am	Thu Apr 04 22:52:56 2013 +0100
+++ b/Makefile.am	Fri Apr 19 19:37:22 2013 +0100
@@ -117,10 +117,32 @@
 	$(SHARE)/javax/swing/plaf/basic/BasicDirectoryModel.java
 endif
 
+#PR56553 - SSLParameters support missing
+if LACKS_JAVAX_NET_SSL_SSLCONTEXT_GETDEFAULTSSLPARAMETERS
+ICEDTEA_BOOTSTRAP_CLASSES += \
+	$(SHARE)/javax/net/ssl/SSLContext.java
+endif
+if LACKS_JAVAX_NET_SSL_SSLENGINE_SETSSLPARAMETERS
+ICEDTEA_BOOTSTRAP_CLASSES += \
+	$(SHARE)/javax/net/ssl/SSLEngine.java
+endif
+
+#PR57008 - Add missing SslRMIServerSocketFactory constructor from 7
+if LACKS_JAVAX_RMI_SSL_SSLRMISERVERSOCKETFACTORY_7
+ICEDTEA_BOOTSTRAP_CLASSES += \
+	$(SHARE)/javax/rmi/ssl/SslRMIServerSocketFactory.java
+endif
+
 # Settings for javac
 
+if NO_BYTECODE7
 IT_LANGUAGE_SOURCE_VERSION=6
 IT_CLASS_TARGET_VERSION=6
+else
+IT_LANGUAGE_SOURCE_VERSION=7
+IT_CLASS_TARGET_VERSION=7
+endif
+
 IT_JAVAC_SETTINGS=-g -encoding utf-8 $(JAVACFLAGS) $(MEMORY_LIMIT) $(PREFER_SOURCE)
 IT_JAVACFLAGS=$(IT_JAVAC_SETTINGS) -source $(IT_LANGUAGE_SOURCE_VERSION) -target $(IT_CLASS_TARGET_VERSION)
 
diff -r 397dd0f8e62a -r 3757116b4861 acinclude.m4
--- a/acinclude.m4	Thu Apr 04 22:52:56 2013 +0100
+++ b/acinclude.m4	Fri Apr 19 19:37:22 2013 +0100
@@ -1506,7 +1506,7 @@
 {
   public static void main(String[] args)
   {
-    $2.class.toString();
+    System.err.println("Class found: " + $2.class);
   }
 }
 ]
@@ -2298,11 +2298,12 @@
 ])
 
 dnl Generic macro to check for a Java method
-dnl Takes four arguments: the name of the macro,
-dnl the name of the class, the method signature
-dnl and an example call to the method.  The macro name
-dnl is usually the name of the class with '.'
-dnl replaced by '_' and all letters capitalised.
+dnl Takes five arguments: the name of the macro,
+dnl the name of the method, the name of the class,
+dnl the method signature and an example call to the
+dnl method.  The macro name is usually the name of
+dnl the class with '.' replaced by '_' and all letters
+dnl capitalised.
 dnl e.g. IT_CHECK_FOR_METHOD([JAVA_UTIL_REGEX_MATCHER_QUOTEREPLACEMENT],[java.util.regex.Matcher.quoteReplacement],[java.util.regex.Matcher],["quoteReplacement",String.class],java.util.regex.Matcher.quoteReplacement("Blah"))
 AC_DEFUN([IT_CHECK_FOR_METHOD],[
 AC_REQUIRE([IT_CHECK_JAVA_AND_JAVAC_WORK])
@@ -2323,6 +2324,7 @@
     try
       {
         Method m = cl.getDeclaredMethod($4);
+	System.err.println("Method found: " + m);
       }
     catch (NoSuchMethodException e)
       {
@@ -2398,3 +2400,66 @@
   AC_MSG_RESULT([$enable_jar_compression])
   AM_CONDITIONAL([ENABLE_JAR_COMPRESSION], test x"${enable_jar_compression}" = "xyes")
 ])
+
+dnl Generic macro to check for a Java constructor
+dnl Takes four arguments: the name of the macro,
+dnl the name of the class, the method signature
+dnl and an example call to the method.  The macro name
+dnl is usually the name of the class with '.'
+dnl replaced by '_' and all letters capitalised.
+dnl e.g. IT_CHECK_FOR_CONSTRUCTOR([JAVAX_MANAGEMENT_STANDARDMBEAN_MXBEAN_TWO_ARG],[javax.management.StandardMBean],[Class.class,Boolean.TYPE],[Object.class, true])
+AC_DEFUN([IT_CHECK_FOR_CONSTRUCTOR],[
+AC_REQUIRE([IT_CHECK_JAVA_AND_JAVAC_WORK])
+AC_CACHE_CHECK([if $2($3) is missing], it_cv_$1, [
+CLASS=Test.java
+BYTECODE=$(echo $CLASS|sed 's#\.java##')
+mkdir tmp.$$
+cd tmp.$$
+cat << \EOF > $CLASS
+[/* [#]line __oline__ "configure" */
+import java.lang.reflect.Constructor;
+
+public class Test
+{
+  public static void main(String[] args)
+  {
+    Class<?> cl = $2.class;
+    try
+      {
+      	Constructor<?> cons = cl.getDeclaredConstructor($3);
+	System.err.println("Constructor found: " + cons);
+      }
+    catch (NoSuchMethodException e)
+      {
+        System.exit(-1);
+      }
+  }
+
+  private class TestCons extends $2
+  {
+     TestCons()
+     {
+       super($4);
+     }
+  }
+
+}
+
+]
+EOF
+if $JAVAC -cp . $JAVACFLAGS -source 5 -target 5 -nowarn $CLASS >&AS_MESSAGE_LOG_FD 2>&1; then
+  if $JAVA -classpath . $BYTECODE >&AS_MESSAGE_LOG_FD 2>&1; then
+      it_cv_$1=no;
+  else
+      it_cv_$1=yes;
+  fi
+else
+  it_cv_$1=yes;
+fi
+])
+rm -f $CLASS *.class
+cd ..
+rmdir tmp.$$
+AM_CONDITIONAL([LACKS_$1], test x"${it_cv_$1}" = "xyes")
+AC_PROVIDE([$0])dnl
+])
diff -r 397dd0f8e62a -r 3757116b4861 configure.ac
--- a/configure.ac	Thu Apr 04 22:52:56 2013 +0100
+++ b/configure.ac	Fri Apr 19 19:37:22 2013 +0100
@@ -109,20 +109,45 @@
 IT_PR40630_CHECK
 IT_CHECK_FOR_CLASS([JAVAX_ANNOTATION_RESOURCE], [javax.annotation.Resource])
 IT_GETDTDTYPE_CHECK
+dnl PR48033 - Missing javax.management.remote.JMXServiceURL
 IT_CHECK_FOR_CLASS([JAVAX_MANAGEMENT_REMOTE_JMXSERVICEURL], [javax.management.remote.JMXServiceURL])
+dnl PR48034 - javax.management.modelmbean.ModelMBeanInfo
 IT_CHECK_FOR_CLASS([JAVAX_MANAGEMENT_MODELMBEAN_MODELMBEANINFO], [javax.management.modelmbean.ModelMBeanInfo])
+dnl PR43148 - javac fails due to missing java.util.regex.Matcher.quoteReplacement
 IT_CHECK_FOR_METHOD([JAVA_UTIL_REGEX_MATCHER_QUOTEREPLACEMENT],
   [java.util.regex.Matcher.quoteReplacement],
   [java.util.regex.Matcher],
   ["quoteReplacement",String.class],
   [java.util.regex.Matcher.quoteReplacement("Blah")]
 )
+dnl PR42003 - Missing javax.swing.plaf.basic.BasicDirectoryModel methods cause OpenJDK build failure 
 IT_CHECK_FOR_METHOD([JAVAX_SWING_PLAF_BASIC_BASICDIRECTORYMODEL_ADDPROPERTYCHANGELISTENER],
   [javax.swing.plaf.basic.BasicDirectoryModel.addPropertyChangeListener],
   [javax.swing.plaf.basic.BasicDirectoryModel],
   ["addPropertyChangeListener",java.beans.PropertyChangeListener.class],
   [javax.swing.plaf.basic.BasicDirectoryModel model = new javax.swing.plaf.basic.BasicDirectoryModel(new javax.swing.JFileChooser()); model.addPropertyChangeListener(model)]
 )
+dnl PR56553 - SSLParameters support missing
+IT_CHECK_FOR_METHOD([JAVAX_NET_SSL_SSLCONTEXT_GETDEFAULTSSLPARAMETERS],
+  [javax.net.ssl.SSLContext.getDefaultSSLParameters],
+  [javax.net.ssl.SSLContext],
+  ["getDefaultSSLParameters"],
+  [try { javax.net.ssl.SSLContext.getDefault().getDefaultSSLParameters(); } catch (Exception e) {}]
+)
+IT_CHECK_FOR_METHOD([JAVAX_NET_SSL_SSLENGINE_SETSSLPARAMETERS],
+  [javax.net.ssl.SSLEngine.setSSLParameters],
+  [javax.net.ssl.SSLEngine],
+  ["setSSLParameters", javax.net.ssl.SSLParameters.class],
+  [try { javax.net.ssl.SSLContext.getDefault().createSSLEngine().setSSLParameters(new javax.net.ssl.SSLParameters()); }
+   catch (Exception e) {}]
+)
+dnl PR57008 - Add missing SslRMIServerSocketFactory constructor from 7
+IT_CHECK_FOR_CONSTRUCTOR([JAVAX_RMI_SSL_SSLRMISERVERSOCKETFACTORY_7],
+  [javax.rmi.ssl.SslRMIServerSocketFactory],
+  [javax.net.ssl.SSLContext.class,String@<:@@:>@.class,String@<:@@:>@.class,Boolean.TYPE],
+  [null,null,null,true]
+)
+
 IT_CHECK_ENABLE_WARNINGS
 IT_DIAMOND_CHECK
 IT_BYTECODE7_CHECK



More information about the distro-pkg-dev mailing list