[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