[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-awt-dev
Subject:    Re: <AWT Dev> java-atk-wrapper accessibility and openjdk9
From:       Fridrich Strba <fridrich.strba () suse ! com>
Date:       2017-11-14 7:26:06
Message-ID: 3d4d8e81-0c7a-8ce9-402e-ddf7c97ebaae () suse ! com
[Download RAW message or body]

[Attachment #2 (multipart/mixed)]

[Attachment #4 (multipart/mixed)]


Hello, good people,

I am answering this for those who might fall on the thread and feel like
it went hanging.

On 25/10/17 22:04, mandy chung wrote:
> The maintainer of java-atk-wrapper was informed of the new
> javax.accessibility.AccessibilityProvider service interface during JDK 9
> development.     java-atk-wrapper will need to implement a provider of
> AccessibilityProvider to run on JDK 9 [1].
> Adding to Phil's comment, java-atk-wrapper can become a modular JAR.
> Alternatively it can deploy as a service provider on classpath by
> including a service configuration file under META-INF/services/ [2]
> I suggest you to contact the library maintainer to get a version of
> java-atk-wrapper that supports JDK 9.

I contacted the maintainer and am still waiting for the answer :(
Nevertheless, I went ahead and ported java-atk-wrapper to JDK 9. There
are two bugs in gnome bugzilla having my patches:

https://bugzilla.gnome.org/show_bug.cgi?id=789956 is having all the
patches that don't bump the required JDK to 9, but solve several issues
I met when I was porting it.

https://bugzilla.gnome.org/show_bug.cgi?id=789959 is having two patches,
one implementing the new provider and the other making j-a-w a module
called atk.wrapper.

I am also attaching minimal versions of the patches that allow just
build the java-atk-wrapper-0.33.2 tarball using the built jdk9 in our
RPM files. They don't allow build out of the tree and install has to be
done by "cp", but they work. This is the snippet that builds and
integrates it:

export JAVA_HOME=$(pwd)/%{buildoutputdir}/%{imagesdir}/jdk
....
pushd java-atk-wrapper-%{java_atk_wrapper_version}
autoreconf --force --install
rm wrapper/org/GNOME/Accessibility/AtkWrapper.java
%configure \
	--without-jdk-auto-detect \
	JDK_SRC=$JAVA_HOME
rm wrapper/org/GNOME/Accessibility/AtkWrapper.java
make %{?_smp_mflags}
cp wrapper/java-atk-wrapper.jar $JAVA_HOME/../jmods/
cp jni/src/.libs/libatk-wrapper.so $JAVA_HOME/lib/
popd
# Merge the java-atk-wrapper into the JDK
source $JAVA_HOME/release; export MODULES
$JAVA_HOME/bin/jlink --module-path $JAVA_HOME/../jmods --add-modules
"atk.wrapper,${MODULES//\ /,}" --output $JAVA_HOME/../newjdk
cp -rf $JAVA_HOME/../newjdk/* $JAVA_HOME/
rm -rf $JAVA_HOME/../newjdk

Needless to say that the patch patching the class loader is in the bin.

Thanks for your ideas

Fridrich

["jaw-jdk9.patch" (text/x-patch)]

--- java-atk-wrapper-0.33.2/configure.ac	2017-11-06 13:37:11.504756491 +0100
+++ java-atk-wrapper-0.33.2/configure.ac	2017-11-06 13:37:47.224756626 +0100
@@ -64,7 +64,7 @@
 # java wrapper
 
 AM_CONDITIONAL(USER, test `whoami` = "root")
-JAVA_REQUIRED=1.7.0
+JAVA_REQUIRED=9.0.0
 JAVA_ERROR_MESSAGE="Java $JAVA_REQUIRED or later is required to build \
java-access-bridge"  
 AC_ARG_VAR([JAVA_HOME],[Java Runtime Environment location])
@@ -170,6 +170,8 @@
     wrapper/org/GNOME/Makefile
     wrapper/org/GNOME/Accessibility/Makefile
     wrapper/org/GNOME/Accessibility/AtkWrapper.java
+    wrapper/META-INF/Makefile
+    wrapper/META-INF/services/Makefile
 ])
 AC_OUTPUT
 
--- java-atk-wrapper-0.33.2/wrapper/Makefile.am	2017-11-06 13:37:11.504756491 +0100
+++ java-atk-wrapper-0.33.2/wrapper/Makefile.am	2017-11-06 13:47:48.648845631 +0100
@@ -1,4 +1,4 @@
-SUBDIRS=org
+SUBDIRS=org META-INF
 JARFILES=java-atk-wrapper.jar
 ALL_CLASSES=org/GNOME/Accessibility/*.class
 DEP_CLASSES=$(wildcard $(ALL_CLASSES))
@@ -14,10 +14,13 @@
 java_atk_wrapper_DATA = $(JARFILES)
 properties_DATA = accessibility.properties
 EXTRA_DIST = $(properties_DATA) \
-	     manifest.txt
+	     manifest.txt module-info.java
 
-$(JARFILES) : $(DEP_CLASSES)
-	$(JAR) cfm $(JARFILES) manifest.txt org/GNOME/Accessibility/*.class
+module-info.class : $(srcdir)/module-info.java
+	$(JAVAC) -cp $(top_builddir)/wrapper -sourcepath \
$(top_srcdir)/wrapper:$(top_builddir)/wrapper $(JAVACFLAGS) -d \
$(top_builddir)/wrapper $< +
+$(JARFILES) : $(DEP_CLASSES) module-info.class
+	$(JAR) cfm $(JARFILES) manifest.txt org/GNOME/Accessibility/*.class \
module-info.class META-INF/services/javax.accessibility.AccessibilityProvider  
 all-local : $(DATA) $(JARFILES)
 
--- java-atk-wrapper-0.33.2/wrapper/META-INF/Makefile.am	1970-01-01 \
                01:00:00.000000000 +0100
+++ java-atk-wrapper-0.33.2/wrapper/META-INF/Makefile.am	2017-11-06 \
13:37:47.224756626 +0100 @@ -0,0 +1 @@
+SUBDIRS=services
--- java-atk-wrapper-0.33.2/wrapper/META-INF/services/javax.accessibility.AccessibilityProvider	1970-01-01 \
                01:00:00.000000000 +0100
+++ java-atk-wrapper-0.33.2/wrapper/META-INF/services/javax.accessibility.AccessibilityProvider	2017-11-06 \
13:37:47.224756626 +0100 @@ -0,0 +1 @@
+org.GNOME.Accessibility.AtkProvider
--- java-atk-wrapper-0.33.2/wrapper/META-INF/services/Makefile.am	1970-01-01 \
                01:00:00.000000000 +0100
+++ java-atk-wrapper-0.33.2/wrapper/META-INF/services/Makefile.am	2017-11-06 \
13:37:47.224756626 +0100 @@ -0,0 +1 @@
+EXTRA_DIST = javax.accessibility.AccessibilityProvider
--- java-atk-wrapper-0.33.2/wrapper/module-info.java	1970-01-01 01:00:00.000000000 \
                +0100
+++ java-atk-wrapper-0.33.2/wrapper/module-info.java	2017-11-06 13:42:08.850466481 \
+0100 @@ -0,0 +1,6 @@
+module atk.wrapper {
+    exports org.GNOME.Accessibility;
+    requires java.desktop;
+    provides javax.accessibility.AccessibilityProvider
+        with org.GNOME.Accessibility.AtkProvider;
+}
--- java-atk-wrapper-0.33.2/wrapper/org/GNOME/Accessibility/AtkProvider.java	1970-01-01 \
                01:00:00.000000000 +0100
+++ java-atk-wrapper-0.33.2/wrapper/org/GNOME/Accessibility/AtkProvider.java	2017-11-06 \
13:37:47.224756626 +0100 @@ -0,0 +1,38 @@
+/*
+ * Java ATK Wrapper for GNOME
+ * Copyright (C) 2017 Oracle and/or its affiliates.
+ * Copyright (C) 2017 Fridrich Strba <fridrich.strba@bluewin.ch>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+package org.GNOME.Accessibility;
+
+import javax.accessibility.AccessibilityProvider;
+
+public final class AtkProvider extends AccessibilityProvider {
+    private final String name = "org.GNOME.Accessibility.AtkWrapper";
+
+    public AtkProvider() {}
+
+    public String getName() {
+        return name;
+    }
+
+    public void activate() {
+        new AtkWrapper();
+    }
+
+}
--- java-atk-wrapper-0.33.2/wrapper/org/GNOME/Accessibility/Makefile.am	2015-06-30 \
                23:56:32.000000000 +0200
+++ java-atk-wrapper-0.33.2/wrapper/org/GNOME/Accessibility/Makefile.am	2017-10-26 \
17:42:11.472221491 +0200 @@ -10,7 +10,7 @@
 	sed -e "s;\@XPROP\@;${XPROP};g" \
 		< $< >$@
 
-%.class : %.java
+%.class : %.java AtkWrapper.java
 	CLASSPATH=$(top_srcdir)/wrapper $(JAVAC) $(JAVACFLAGS) -d $(top_builddir)/wrapper \
$<  
 clean-local:


["jaw-misc.patch" (text/x-patch)]

--- java-atk-wrapper-0.33.2/configure.ac	2015-07-07 13:52:28.000000000 +0200
+++ java-atk-wrapper-0.33.2/configure.ac	2017-11-06 17:00:37.366413136 +0100
@@ -46,7 +46,6 @@
   glib-2.0 >= 2.32.0
   gthread-2.0
   gdk-2.0
-  gdk-3.0
   gobject-2.0
 ])
 AC_SUBST(JAW_LIBS)
@@ -64,7 +63,7 @@
 # java wrapper
 
 AM_CONDITIONAL(USER, test `whoami` = "root")
-JAVA_REQUIRED=1.6
+JAVA_REQUIRED=1.7.0
 JAVA_ERROR_MESSAGE="Java $JAVA_REQUIRED or later is required to build java-access-bridge"
 
 AC_ARG_VAR([JAVA_HOME],[Java Runtime Environment location])
@@ -125,7 +124,7 @@
 
 
 if test "x$GCC" = xyes; then
-  JAW_CFLAGS=$JAW_CFLAGS $CFLAGS
+  JAW_CFLAGS="$JAW_CFLAGS $CFLAGS"
 else
   AC_MSG_ERROR("You should compile with GCC")
 fi
@@ -169,6 +168,7 @@
     wrapper/org/Makefile
     wrapper/org/GNOME/Makefile
     wrapper/org/GNOME/Accessibility/Makefile
+    wrapper/org/GNOME/Accessibility/AtkWrapper.java
 ])
 AC_OUTPUT
 
--- java-atk-wrapper-0.33.2/wrapper/Makefile.am	2015-07-01 02:19:15.000000000 +0200
+++ java-atk-wrapper-0.33.2/wrapper/Makefile.am	2017-11-06 17:00:07.962413025 +0100
@@ -13,7 +13,8 @@
 
 java_atk_wrapper_DATA = $(JARFILES)
 properties_DATA = accessibility.properties
-EXTRA_DIST = $(properties_DATA)
+EXTRA_DIST = $(properties_DATA) \
+	     manifest.txt
 
 $(JARFILES) : $(DEP_CLASSES)
 	$(JAR) cfm $(JARFILES) manifest.txt org/GNOME/Accessibility/*.class
--- java-atk-wrapper-0.33.2/wrapper/manifest.txt	1970-01-01 01:00:00.000000000 +0100
+++ java-atk-wrapper-0.33.2/wrapper/manifest.txt	2017-10-26 15:25:02.159429001 +0200
@@ -0,0 +1,2 @@
+Main-Class: org.GNOME.Accessibility.AtkWrapper
+

["signature.asc" (application/pgp-signature)]

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic