Fridrich Strba 2022-05-09 18:14:59 +00:00 committed by Git OBS Bridge
commit 48019723c4
27 changed files with 2102 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.osc

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:122f6fc146e36191da167f4f33abbfca02f974f8acee81a323e2988e771dc536
size 27990342

72
TestCryptoLevel.java Normal file
View File

@ -0,0 +1,72 @@
/* TestCryptoLevel -- Ensure unlimited crypto policy is in use.
Copyright (C) 2012 Red Hat, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program 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 Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.InvocationTargetException;
import java.security.Permission;
import java.security.PermissionCollection;
public class TestCryptoLevel
{
public static void main(String[] args)
throws NoSuchFieldException, ClassNotFoundException,
IllegalAccessException, InvocationTargetException
{
Class<?> cls = null;
Method def = null, exempt = null;
try
{
cls = Class.forName("javax.crypto.JceSecurity");
}
catch (ClassNotFoundException ex)
{
System.err.println("Running a non-Sun JDK.");
System.exit(0);
}
try
{
def = cls.getDeclaredMethod("getDefaultPolicy");
exempt = cls.getDeclaredMethod("getExemptPolicy");
}
catch (NoSuchMethodException ex)
{
System.err.println("Running IcedTea with the original crypto patch.");
System.exit(0);
}
def.setAccessible(true);
exempt.setAccessible(true);
PermissionCollection defPerms = (PermissionCollection) def.invoke(null);
PermissionCollection exemptPerms = (PermissionCollection) exempt.invoke(null);
Class<?> apCls = Class.forName("javax.crypto.CryptoAllPermission");
Field apField = apCls.getDeclaredField("INSTANCE");
apField.setAccessible(true);
Permission allPerms = (Permission) apField.get(null);
if (defPerms.implies(allPerms) && (exemptPerms == null || exemptPerms.implies(allPerms)))
{
System.err.println("Running with the unlimited policy.");
System.exit(0);
}
else
{
System.err.println("WARNING: Running with a restricted crypto policy.");
System.exit(-1);
}
}
}

49
TestECDSA.java Normal file
View File

@ -0,0 +1,49 @@
/* TestECDSA -- Ensure ECDSA signatures are working.
Copyright (C) 2016 Red Hat, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program 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 Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import java.math.BigInteger;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.Signature;
/**
* @test
*/
public class TestECDSA {
public static void main(String[] args) throws Exception {
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("EC");
KeyPair key = keyGen.generateKeyPair();
byte[] data = "This is a string to sign".getBytes("UTF-8");
Signature dsa = Signature.getInstance("NONEwithECDSA");
dsa.initSign(key.getPrivate());
dsa.update(data);
byte[] sig = dsa.sign();
System.out.println("Signature: " + new BigInteger(1, sig).toString(16));
Signature dsaCheck = Signature.getInstance("NONEwithECDSA");
dsaCheck.initVerify(key.getPublic());
dsaCheck.update(data);
boolean success = dsaCheck.verify(sig);
if (!success) {
throw new RuntimeException("Test failed. Signature verification error");
}
System.out.println("Test passed.");
}
}

10
_constraints Normal file
View File

@ -0,0 +1,10 @@
<constraints>
<hardware>
<physicalmemory>
<size unit="M">4096</size>
</physicalmemory>
<disk>
<size unit="G">20</size>
</disk>
</hardware>
</constraints>

20
aarch64.patch Normal file
View File

@ -0,0 +1,20 @@
--- openj9-openjdk-jdk11/omr/ddr/tools/ddrgen/Makefile 2020-04-21 15:53:10.964314332 +0200
+++ openj9-openjdk-jdk11/omr/ddr/tools/ddrgen/Makefile 2020-04-21 15:53:55.292575567 +0200
@@ -35,15 +35,9 @@
$(top_srcdir)/include_core
ifeq (linux,$(OMR_HOST_OS))
- MODULE_SHARED_LIBS += rt pthread dwarf
- ifeq (x86,$(OMR_HOST_ARCH))
- MODULE_SHARED_LIBS += elf
- endif
- ifeq (ppc,$(OMR_HOST_ARCH))
- MODULE_SHARED_LIBS += elf
- endif
+ MODULE_SHARED_LIBS += rt pthread dwarf elf
ifeq (s390,$(OMR_HOST_ARCH))
- MODULE_SHARED_LIBS += elf z
+ MODULE_SHARED_LIBS += z
endif
endif

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5ef24809ee60389cdb63b3df3cb8d265466bd02c01530e5b1f4cacf629d4d0de
size 10935643

111
alternative-tzdb_dat.patch Normal file
View File

@ -0,0 +1,111 @@
--- a/src/java.base/share/classes/java/time/zone/TzdbZoneRulesProvider.java Thu Jun 28 17:49:13 2018 -0700
+++ b/src/java.base/share/classes/java/time/zone/TzdbZoneRulesProvider.java Fri Jun 29 08:23:40 2018 +0200
@@ -74,6 +74,7 @@
import java.util.List;
import java.util.Map;
import java.util.NavigableMap;
+import java.util.Properties;
import java.util.Set;
import java.util.TreeMap;
import java.util.concurrent.ConcurrentHashMap;
@@ -106,7 +107,14 @@
*/
public TzdbZoneRulesProvider() {
try {
- String libDir = StaticProperty.javaHome() + File.separator + "lib";
+ final String homeDir = StaticProperty.javaHome();
+ if (homeDir == null) {
+ throw new Error("java.home is not set");
+ }
+ String libDir = homeDir + File.separator + "lib";
+ String otherDir = getZoneInfoDir(homeDir);
+ if (otherDir != null)
+ libDir = otherDir;
try (DataInputStream dis = new DataInputStream(
new BufferedInputStream(new FileInputStream(
new File(libDir, "tzdb.dat"))))) {
@@ -117,6 +125,28 @@
}
}
+ private static String getZoneInfoDir(final String homeDir) {
+ try {
+ File f = new File(homeDir + File.separator + "conf" +
+ File.separator + "tz.properties");
+ if (!f.exists())
+ return null;
+ BufferedInputStream bin = new BufferedInputStream(new FileInputStream(f));
+ Properties props = new Properties();
+ props.load(bin);
+ bin.close();
+ String dir = props.getProperty("sun.zoneinfo.dir");
+ if (dir == null)
+ return null;
+ File tzdbdat = new File(dir, "tzdb.dat");
+ if (tzdbdat.exists())
+ return dir;
+ return null;
+ } catch (Exception x) {
+ return null;
+ }
+ }
+
@Override
protected Set<String> provideZoneIds() {
return new HashSet<>(regionIds);
--- a/src/java.base/share/classes/sun/util/calendar/ZoneInfoFile.java Thu Jun 28 17:49:13 2018 -0700
+++ b/src/java.base/share/classes/sun/util/calendar/ZoneInfoFile.java Fri Jun 29 08:23:40 2018 +0200
@@ -45,6 +45,7 @@
import java.util.List;
import java.util.Locale;
import java.util.Map;
+import java.util.Properties;
import java.util.SimpleTimeZone;
import java.util.concurrent.ConcurrentHashMap;
import java.util.zip.CRC32;
@@ -251,7 +252,15 @@
AccessController.doPrivileged(new PrivilegedAction<Void>() {
public Void run() {
try {
- String libDir = StaticProperty.javaHome() + File.separator + "lib";
+ final String homeDir = StaticProperty.javaHome();
+ if (homeDir == null) {
+ throw new Error("java.home is not set");
+ }
+ String libDir = homeDir + File.separator + "lib";
+ String otherDir = getZoneInfoDir(homeDir);
+ if (otherDir != null)
+ libDir = otherDir;
+
try (DataInputStream dis = new DataInputStream(
new BufferedInputStream(new FileInputStream(
new File(libDir, "tzdb.dat"))))) {
@@ -265,6 +274,28 @@
});
}
+ private static String getZoneInfoDir(final String homeDir) {
+ try {
+ File f = new File(homeDir + File.separator + "conf" +
+ File.separator + "tz.properties");
+ if (!f.exists())
+ return null;
+ BufferedInputStream bin = new BufferedInputStream(new FileInputStream(f));
+ Properties props = new Properties();
+ props.load(bin);
+ bin.close();
+ String dir = props.getProperty("sun.zoneinfo.dir");
+ if (dir == null)
+ return null;
+ File tzdbdat = new File(dir, "tzdb.dat");
+ if (tzdbdat.exists())
+ return dir;
+ return null;
+ } catch (Exception x) {
+ return null;
+ }
+ }
+
private static void addOldMapping() {
for (String[] alias : oldMappings) {
aliases.put(alias[0], alias[1]);

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:346efa0d79779326c43070051441116fb8a46a680f8186e75bc5675fe9e92cab
size 166773465

View File

@ -0,0 +1,41 @@
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/BaseConfiguration.java
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/BaseConfiguration.java
@@ -767,7 +767,7 @@ public abstract class BaseConfiguration {
}
} else {
// no -Xmsgs options of any kind, use default
- doclintOpts.add(DocLint.XMSGS_OPTION);
+ return;
}
if (!customTagNames.isEmpty()) {
--- a/test/langtools/jdk/javadoc/tool/doclint/DocLintTest.java
+++ b/test/langtools/jdk/javadoc/tool/doclint/DocLintTest.java
@@ -155,12 +155,12 @@ public class DocLintTest {
files = List.of(new TestJFO("Test.java", code));
test(List.of(htmlVersion),
- Main.Result.ERROR,
- EnumSet.of(Message.DL_ERR9A, Message.DL_WRN12A));
+ Main.Result.OK,
+ EnumSet.of(Message.JD_WRN10, Message.JD_WRN13));
test(List.of(htmlVersion, rawDiags),
- Main.Result.ERROR,
- EnumSet.of(Message.DL_ERR9, Message.DL_WRN12));
+ Main.Result.OK,
+ EnumSet.of(Message.JD_WRN10, Message.JD_WRN13));
// test(List.of("-Xdoclint:none"),
// Main.Result.OK,
@@ -183,8 +183,8 @@ public class DocLintTest {
EnumSet.of(Message.DL_WRN12));
test(List.of(htmlVersion, rawDiags, "-private"),
- Main.Result.ERROR,
- EnumSet.of(Message.DL_ERR6, Message.DL_ERR9, Message.DL_WRN12));
+ Main.Result.OK,
+ EnumSet.of(Message.JD_WRN10, Message.JD_WRN13));
test(List.of(htmlVersion, rawDiags, "-Xdoclint:missing,syntax", "-private"),
Main.Result.ERROR,

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9be4c63f2d68d915daffbef9c8a9b63394a41a846871978be0421c962b51b603
size 1254826

3
freemarker-2.3.29.jar Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ce9ffbcd065cbce1d5bf295755965167cdbaea4d13039a09e842cea32f0d7655
size 1586948

View File

@ -0,0 +1,10 @@
--- jdk10/src/java.instrument/share/native/libinstrument/JarFacade.c 2014-10-02 10:59:00.105666221 +0200
+++ jdk10/src/java.instrument/share/native/libinstrument/JarFacade.c 2014-10-02 11:59:03.355452975 +0200
@@ -23,6 +23,7 @@
* questions.
*/
+#include <ctype.h>
#include <string.h>
#include <stdlib.h>

986
java-17-openj9.spec Normal file
View File

@ -0,0 +1,986 @@
#
# spec file
#
# Copyright (c) 2022 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%{!?aarch64:%global aarch64 aarch64 arm64 armv8}
%global debug 0
%global is_release 1
# Convert an absolute path to a relative path. Each symbolic link is
# specified relative to the directory in which it is installed so that
# it will resolve properly within chrooted installations.
%global script 'use File::Spec; print File::Spec->abs2rel($ARGV[0], $ARGV[1])'
%global abs2rel perl -e %{script}
%global syslibdir %{_libdir}
%global archname %{name}
# Standard JPackage naming and versioning defines.
%global featurever 17
%global interimver 0
%global updatever 3
%global datever 2022-04-19
%global buildver 7
%global root_repository https://github.com/ibmruntimes/openj9-openjdk-jdk17/archive
%global root_revision dc07fd49b926c28c33b17053b11ad3121429239f
%global root_branch v0.32.0-release
%global omr_repository https://github.com/eclipse/openj9-omr/archive
%global omr_revision ab24b6666596140516d3f240486aa1c84a726775
%global omr_branch v0.32.0-release
%global openj9_repository https://github.com/eclipse/openj9/archive
%global openj9_revision 9a84ec34ed321967cdbe67b29ddcd732b591d051
%global openj9_branch v0.32.0-release
%global openj9_tag openj9-0.32.0
%global freemarker_version 2.3.29
%global java_atk_wrapper_version 0.33.2
# priority must be 6 digits in total
%global priority 2101
%global javaver %{featurever}
# Standard JPackage directories and symbolic links.
%global sdklnk java-%{javaver}-openj9
%global archname %{sdklnk}
%global jrelnk jre-%{javaver}-openj9
%global jrebindir %{_jvmdir}/%{jrelnk}/bin
%global sdkdir %{sdklnk}-%{javaver}
%global sdkbindir %{_jvmdir}/%{sdklnk}/bin
# Prevent brp-java-repack-jars from being run.
%global __jar_repack 0
# cacert symlink
%global cacerts %{_jvmdir}/%{sdkdir}/lib/security/cacerts
# real file made by update-ca-certificates
%global javacacerts %{_var}/lib/ca-certificates/java-cacerts
%global bootcycle 0
%if %{debug}
%global debugbuild slowdebug
%else
%global debugbuild release
%endif
%if %{bootcycle}
%global imagesdir build/%{debugbuild}/bootcycle-build/images
%global imagestarget bootcycle-images
%else
%global imagesdir build/%{debugbuild}/images
%global imagestarget images
%endif
%global bits 64
# Turn on/off some features
%global with_system_pcsc 1
%global with_system_harfbuzz 1
%if %{is_release}
%global package_version %{featurever}.%{interimver}.%{updatever}.%{?patchver:%{patchver}}%{!?patchver:0}
%else
%global package_version %{featurever}.%{interimver}.%{updatever}.%{?patchver:%{patchver}}%{!?patchver:0}~%{buildver}
%endif
Name: java-%{featurever}-openj9
Version: %{package_version}
Release: 0
Summary: OpenJDK %{featurever} Runtime Environment with Eclipse OpenJ9 virtual machine
License: Apache-1.1 AND Apache-2.0 AND EPL-2.0 AND GPL-1.0-or-later AND GPL-2.0-only AND GPL-2.0-only WITH Classpath-exception-2.0 AND LGPL-2.0-only AND MPL-1.0 AND MPL-1.1 AND SUSE-Public-Domain AND W3C
Group: Development/Languages/Java
URL: https://openjdk.java.net/
# Sources from upstream OpenJ9 project.
Source0: %{root_repository}/%{root_revision}.zip
Source1: %{omr_repository}/%{omr_revision}.zip
Source2: %{openj9_repository}/%{openj9_revision}.zip
# Use the freemarker jar from maven central
Source3: https://repo1.maven.org/maven2/org/freemarker/freemarker/%{freemarker_version}/freemarker-%{freemarker_version}.jar
# Package also the sources
Source4: https://repo1.maven.org/maven2/org/freemarker/freemarker/%{freemarker_version}/freemarker-%{freemarker_version}-sources.jar
# Accessibility support
Source8: https://download.gnome.org/sources/java-atk-wrapper/0.33/java-atk-wrapper-%{java_atk_wrapper_version}.tar.xz
# Desktop files. Adapted from IcedTea.
Source11: jconsole.desktop.in
# nss configuration file
Source13: nss.cfg
# Ensure we aren't using the limited crypto policy
Source14: TestCryptoLevel.java
# Ensure ECDSA is working
Source15: TestECDSA.java
Source100: openj9-nogit.patch.in
# Restrict access to java-atk-wrapper classes
Patch3: java-atk-wrapper-security.patch
# Allow building with newer libdwarf
Patch4: libdwarf-fix.patch
# Allow multiple initialization of PKCS11 libraries
Patch5: multiple-pkcs11-library-init.patch
# Fix: implicit-pointer-decl
Patch13: implicit-pointer-decl.patch
#
Patch15: system-pcsclite.patch
#
Patch20: loadAssistiveTechnologies.patch
#
Patch31: aarch64.patch
#
# OpenJDK specific patches
#
Patch302: disable-doclint-by-default.patch
Patch303: alternative-tzdb_dat.patch
#
Patch400: jaw-misc.patch
Patch401: jaw-jdk10.patch
Patch402: jaw-nogtk.patch
#
BuildRequires: alsa-lib-devel
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: bc
BuildRequires: binutils
BuildRequires: cmake
BuildRequires: cups-devel
BuildRequires: desktop-file-utils
BuildRequires: fdupes
BuildRequires: fontconfig-devel
BuildRequires: freetype2-devel
BuildRequires: giflib-devel
BuildRequires: hicolor-icon-theme
BuildRequires: java-ca-certificates
BuildRequires: libX11-devel
BuildRequires: libXi-devel
BuildRequires: libXinerama-devel
BuildRequires: libXrandr-devel
BuildRequires: libXrender-devel
BuildRequires: libXt-devel
BuildRequires: libXtst-devel
BuildRequires: libdwarf-devel
BuildRequires: libelf-devel
BuildRequires: libjpeg-devel
BuildRequires: liblcms2-devel
BuildRequires: libnuma-devel
BuildRequires: libpng-devel
BuildRequires: libtool
BuildRequires: libxslt
BuildRequires: nasm
BuildRequires: openssl-devel
BuildRequires: pkgconfig
BuildRequires: unzip
BuildRequires: update-desktop-files
BuildRequires: xorg-x11-proto-devel
BuildRequires: xprop
BuildRequires: zip
BuildRequires: pkgconfig(atk) >= 2.14.0
BuildRequires: pkgconfig(atk-bridge-2.0)
BuildRequires: pkgconfig(atspi-2) >= 2.14.0
BuildRequires: pkgconfig(dbus-1)
BuildRequires: pkgconfig(glib-2.0) >= 2.32.0
BuildRequires: pkgconfig(gobject-2.0)
BuildRequires: pkgconfig(gthread-2.0)
# Requires rest of java
Requires: %{name}-headless = %{version}-%{release}
Requires: fontconfig
# mozilla-nss has to be installed to prevent
# java.security.ProviderException: Could not initialize NSS
# ...
# java.io.FileNotFoundException: /usr/lib64/libnss3.so
#was bnc#634793
Requires: mozilla-nss
Requires(post): file
# Standard JPackage base provides.
Provides: java = %{javaver}
Provides: java-%{javaver} = %{version}-%{release}
Provides: java-openj9 = %{version}-%{release}
Provides: java-openjdk = %{version}-%{release}
Provides: jre = %{javaver}
Provides: jre-%{javaver} = %{version}-%{release}
Provides: jre-%{javaver}-openj9 = %{version}-%{release}
Provides: jre-%{javaver}-openjdk = %{version}-%{release}
Provides: jre-openj9 = %{version}-%{release}
Provides: jre-openjdk = %{version}-%{release}
# Standard JPackage extensions provides.
Provides: java-fonts = %{version}
# Required at least by fop
Provides: java-%{bits} = %{javaver}
Provides: java-%{javaver}-%{bits}
Provides: java-openj9-%{bits} = %{version}-%{release}
Provides: java-openjdk-%{bits} = %{version}-%{release}
Provides: jre-%{bits} = %{javaver}
Provides: jre-%{javaver}-%{bits}
Provides: jre-%{javaver}-openj9-%{bits} = %{version}-%{release}
Provides: jre-%{javaver}-openjdk-%{bits} = %{version}-%{release}
Provides: jre-openj9-%{bits} = %{version}-%{release}
Provides: jre-openjdk-%{bits} = %{version}-%{release}
Provides: jre1.10.x
Provides: jre1.3.x
Provides: jre1.4.x
Provides: jre1.5.x
Provides: jre1.6.x
Provides: jre1.7.x
Provides: jre1.8.x
Provides: jre1.9.x
ExclusiveArch: x86_64 ppc64le s390x aarch64
%if 0%{?suse_version} >= 1550
BuildRequires: gcc7
BuildRequires: gcc7-c++
%else
BuildRequires: gcc >= 7
BuildRequires: gcc-c++ >= 7
%endif
%if %{bootcycle}
BuildRequires: java-devel >= 16
BuildConflicts: java-devel >= 18
%else
BuildRequires: java-%{javaver}-devel
%endif
%if %{with_system_harfbuzz}
BuildRequires: harfbuzz-devel
%endif
%if %{with_system_pcsc}
BuildRequires: pcsc-lite-devel
%endif
%description
The OpenJDK %{featurever} with Eclipse OpenJ9 virtual machine. Eclipse OpenJ9
is a Java Virtual Machine for OpenJDK that is optimized for small
footprint, fast start-up, and high throughput.
Supported architectures are ppc64le, s390x and x86_64
%package headless
Summary: OpenJDK %{featurever} Runtime Environment with Eclipse OpenJ9
Group: Development/Languages/Java
Requires: jpackage-utils
Requires(post): java-ca-certificates
# Post requires update-alternatives to install tool update-alternatives.
Requires(post): update-alternatives
# Postun requires update-alternatives to uninstall tool update-alternatives.
Requires(postun):update-alternatives
Recommends: tzdata-java8
# Standard JPackage base provides.
Provides: java-%{javaver}-headless = %{version}-%{release}
Provides: java-headless = %{javaver}
Provides: java-openj9-headless = %{version}-%{release}
Provides: java-openjdk-headless = %{version}-%{release}
Provides: jre-%{javaver}-headless = %{version}-%{release}
Provides: jre-%{javaver}-openj9-headless = %{version}-%{release}
Provides: jre-%{javaver}-openjdk-headless = %{version}-%{release}
Provides: jre-headless = %{javaver}
Provides: jre-openj9-headless = %{version}-%{release}
Provides: jre-openjdk-headless = %{version}-%{release}
# Standard JPackage extensions provides.
Provides: jaas = %{version}
Provides: java-sasl = %{version}
Provides: jce = %{version}
Provides: jdbc-stdext = 4.3
Provides: jndi = %{version}
Provides: jndi-cos = %{version}
Provides: jndi-dns = %{version}
Provides: jndi-ldap = %{version}
Provides: jndi-rmi = %{version}
Provides: jsse = %{version}
%description headless
The OpenJDK %{featurever} runtime environment without audio and video support.
Supported architectures are ppc64le, s390x and x86_64
%package devel
Summary: OpenJDK %{featurever} Development Environment
# Require base package.
Group: Development/Languages/Java
Requires: %{name} = %{version}-%{release}
# Post requires update-alternatives to install tool update-alternatives.
Requires(post): update-alternatives
# Postun requires update-alternatives to uninstall tool update-alternatives.
Requires(postun):update-alternatives
# Standard JPackage devel provides.
Provides: java-%{javaver}-devel = %{version}
Provides: java-devel = %{javaver}
Provides: java-devel-openj9 = %{version}
Provides: java-devel-openjdk = %{version}
Provides: java-sdk = %{javaver}
Provides: java-sdk-%{javaver} = %{version}
Provides: java-sdk-%{javaver}-openj9 = %{version}
Provides: java-sdk-%{javaver}-openjdk = %{version}
Provides: java-sdk-openj9 = %{version}
Provides: java-sdk-openjdk = %{version}
%description devel
The OpenJDK %{featurever} development tools.
Supported architectures are ppc64le, s390x and x86_64
%package jmods
Summary: JMods for OpenJDK %{featurever}
Group: Development/Languages/Java
Requires: %{name}-devel = %{version}-%{release}
%description jmods
The JMods for OpenJDK %{featurever}.
%package demo
Summary: OpenJDK %{featurever} Demos
Group: Development/Languages/Java
Requires: %{name} = %{version}-%{release}
%description demo
The OpenJDK %{featurever} demos.
%package src
Summary: OpenJDK %{featurever} Source Bundle
Group: Development/Languages/Java
Requires: %{name} = %{version}-%{release}
%description src
The OpenJDK %{featurever} source bundle.
%package javadoc
Summary: OpenJDK %{featurever} API Documentation
Group: Development/Languages/Java
Requires: jpackage-utils
# Post requires update-alternatives to install javadoc alternative.
Requires(post): update-alternatives
# Postun requires update-alternatives to uninstall javadoc alternative.
Requires(postun):update-alternatives
# Standard JPackage javadoc provides.
Provides: java-%{javaver}-javadoc = %{version}-%{release}
Provides: java-javadoc = %{version}-%{release}
BuildArch: noarch
%description javadoc
The OpenJDK %{featurever} API documentation.
%package accessibility
Summary: OpenJDK %{featurever} accessibility connector
Group: Development/Languages/Java
Requires: %{name} = %{version}-%{release}
Requires: xprop
%description accessibility
Enables accessibility support in OpenJDK %{featurever} by using java-atk-wrapper. This allows
compatible at-spi2 based accessibility programs to work for AWT and Swing-based
programs.
Please note, the java-atk-wrapper is still in beta, and OpenJDK itself is still
being tuned to be working with accessibility features. There are known issues
with accessibility on, so please do not install this package unless you really
need to.
%prep
%setup -q -n openj9-openjdk-jdk17-%{root_revision} -a 1 -a 2
%setup -q -D -n openj9-openjdk-jdk17-%{root_revision} -T -a 8
# Set up the build tree using the subrepository tarballs
pwd
mv openj9-omr-%{omr_revision} omr
mv openj9-%{openj9_revision} openj9
cp openj9/LICENSE LICENSE.openj9
# Remove libraries that are linked
rm -rvf src/java.base/share/native/libzip/zlib-*
find src/java.desktop/share/native/libjavajpeg ! -name imageioJPEG.c ! -name jpegdecoder.c -type f -delete
rm -rvf src/java.desktop/share/native/libsplashscreen/libpng
rm -rvf src/java.desktop/share/native/libsplashscreen/giflib
rm -rvf src/java.desktop/share/native/liblcms/cms*
rm -rvf src/java.desktop/share/native/liblcms/lcms2*
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch13 -p1
%if %{with_system_pcsc}
%patch15 -p1
%endif
%patch20 -p1
%patch31 -p1
%patch302 -p1
%patch303 -p1
%patch400
%patch401
%patch402
cat %{SOURCE100} \
| sed "s/@OPENJ9_SHA@/%{openj9_revision}/g" \
| sed "s/@OPENJ9_BRANCH@/%{openj9_branch}/g" \
| sed "s/@OPENJ9_TAG@/%{openj9_tag}/g" \
| sed "s/@OPENJ9OMR_SHA@/%{omr_revision}/g" \
| sed "s/@OPENJDK_SHA@/%{root_revision}/g" \
| patch -p1 -u -l
# Prepare desktop files
for file in %{SOURCE11} ; do
OUTPUT_FILE=`basename $file | sed -e s:\.in$::g`
sed -e s:@JAVA_HOME@:%{_jvmdir}/%{sdkdir}:g $file > $OUTPUT_FILE
sed -i -e s:@VERSION@:%{javaver}:g $OUTPUT_FILE
done
%build
export ARCH_DATA_MODEL=64
EXTRA_CFLAGS="-Wno-error -Wno-maybe-uninitialized -fno-delete-null-pointer-checks -fno-lifetime-dse"
EXTRA_CPP_FLAGS="-Wno-error -Wno-maybe-uninitialized -std=gnu++98 -fno-delete-null-pointer-checks -fno-lifetime-dse"
%ifarch ppc64le
EXTRA_CFLAGS="$EXTRA_CFLAGS -fno-strict-aliasing"
%endif
bash configure \
%if 0%{?suse_version} >= 1550
CPP=cpp-7 \
CXX=g++-7 \
CC=gcc-7 \
NM=gcc-nm-7 \
%endif
--with-version-feature=%{featurever} \
--with-version-interim=%{interimver} \
--with-version-update=%{updatever} \
--with-version-patch=%{?patchver:%{patchver}}%{!?patchver:0} \
--with-version-date=%{datever} \
--with-version-build=%{buildver} \
--with-version-pre="" \
--with-version-opt="suse-%{release}-%{_arch}" \
--disable-warnings-as-errors \
--disable-warnings-as-errors-omr \
--disable-warnings-as-errors-openj9 \
--disable-keep-packaged-modules \
--with-debug-level=%{debugbuild} \
--with-conf-name=%{debugbuild} \
--with-zlib=system \
--with-libjpeg=system \
--with-giflib=system \
--with-libpng=system \
--with-lcms=system \
--with-openssl=system \
%if %{with_system_pcsc}
--with-pcsclite=system \
%endif
%if %{with_system_harfbuzz}
--with-harfbuzz=system \
%endif
--with-stdc++lib=dynamic \
--with-extra-cxxflags="$EXTRA_CPP_FLAGS" \
--with-extra-cflags="$EXTRA_CFLAGS" \
--disable-javac-server \
--enable-demos \
--with-freemarker-jar=%{SOURCE3}
make \
LOG=trace \
%{imagestarget} docs
# remove redundant *diz and *debuginfo files
find %{imagesdir}/jdk -iname '*.diz' -exec rm {} \;
find %{imagesdir}/jdk -iname '*.debuginfo' -exec rm {} \;
export JAVA_HOME=$(pwd)/%{imagesdir}/jdk
# Copy tz.properties
echo "sun.zoneinfo.dir=%{_datadir}/javazi" >> $JAVA_HOME/conf/tz.properties
# Build the accessibility plugin
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
# cacerts are generated in runtime in openSUSE
if [ -f %{imagesdir}/jdk/lib/security/cacerts ]; then
rm %{imagesdir}/jdk/lib/security/cacerts
fi
# Check unlimited policy has been used
$JAVA_HOME/bin/javac -d . %{SOURCE14}
$JAVA_HOME/bin/java --add-opens java.base/javax.crypto=ALL-UNNAMED TestCryptoLevel
# Check ECC is working
$JAVA_HOME/bin/javac -d . %{SOURCE15}
#FIXME make it run after system NSS support?
$JAVA_HOME/bin/java $(echo $(basename %{SOURCE15})|sed "s|\.java||") || true
%install
export LANG=en_US.UTF-8
#bnc#530046
export STRIP_KEEP_SYMTAB=libjvm*
# skip /usr/lib/rpm/brp-check-bytecode-version:
export NO_BRP_CHECK_BYTECODE_VERSION=true
pushd %{imagesdir}/jdk
# Install main files.
install -d -m 755 %{buildroot}%{_jvmdir}/%{sdkdir}
cp -a bin include lib conf release %{buildroot}%{_jvmdir}/%{sdkdir}
# Install JCE policy symlinks.
install -d -m 755 %{buildroot}%{_jvmprivdir}/%{archname}/jce/vanilla
# Install versionless symlinks.
pushd %{buildroot}%{_jvmdir}
ln -sf %{sdkdir} %{jrelnk}
ln -sf %{sdkdir} %{sdklnk}
popd
# Remove javaws man page
rm -f man/man1/javaws*
# Install man pages.
install -d -m 755 %{buildroot}%{_mandir}/man1
rm -f man/man1/javah*.1
rm -f man/man1/jinfo.1*
rm -f man/man1/jstatd.1*
for manpage in man/man1/*
do
# Convert man pages to UTF8 encoding.
iconv -f ISO_8859-1 -t UTF8 $manpage -o $manpage.tmp
mv -f $manpage.tmp $manpage
install -m 644 -p $manpage %{buildroot}%{_mandir}/man1/$(basename \
$manpage .1)-%{sdklnk}.1
done
# Install demos and samples.
cp -a demo %{buildroot}%{_jvmdir}/%{sdkdir}
# enable short-circuit
mkdir -p sample/rmi
[ -f bin/java-rmi.cgi ] && mv bin/java-rmi.cgi sample/rmi
cp -a sample %{buildroot}%{_jvmdir}/%{sdkdir}
popd
pushd %{imagesdir}
# Install jmods
cp -a jmods %{buildroot}%{_jvmdir}/%{sdkdir}
# Install nss.cfg
install -m 644 %{SOURCE13} %{buildroot}%{_jvmdir}/%{sdkdir}/lib/security/
# Install Javadoc documentation.
install -d -m 755 %{buildroot}%{_javadocdir}
cp -a docs %{buildroot}%{_javadocdir}/%{sdklnk}
popd
# Install icons and menu entries.
for s in 16 24 32 48 ; do
install -D -p -m 644 \
src/java.desktop/unix/classes/sun/awt/X11/java-icon${s}.png \
%{buildroot}%{_datadir}/icons/hicolor/${s}x${s}/apps/java-%{javaver}-openj9.png
done
# Install desktop file.
install -d -m 0755 %{buildroot}%{_datadir}/{applications,pixmaps}
install -d -m 0755 %{buildroot}/%{_jvmdir}/%{sdkdir}/lib/desktop/
install -m 0644 jconsole.desktop %{buildroot}/%{_jvmdir}/%{sdkdir}/lib/desktop/
%suse_update_desktop_file %{buildroot}/%{_jvmdir}/%{sdkdir}/lib/desktop/jconsole.desktop
# Find demo directories.
find %{buildroot}%{_jvmdir}/%{sdkdir}/demo \
%{buildroot}%{_jvmdir}/%{sdkdir}/sample -type d \
| sed 's|'%{buildroot}'|%dir |' \
> %{name}-demo.files
# FIXME: remove SONAME entries from demo DSOs. See
# https://bugzilla.redhat.com/show_bug.cgi?id=436497
# Find non-documentation demo files.
find %{buildroot}%{_jvmdir}/%{sdkdir}/demo \
%{buildroot}%{_jvmdir}/%{sdkdir}/sample \
-type f -o -type l | sort \
| grep -v README \
| sed 's|'%{buildroot}'||' \
>> %{name}-demo.files
# Find documentation demo files.
find %{buildroot}%{_jvmdir}/%{sdkdir}/demo \
%{buildroot}%{_jvmdir}/%{sdkdir}/sample \
-type f -o -type l | sort \
| grep README \
| sed 's|'%{buildroot}'||' \
| sed 's|^|%doc |' \
>> %{name}-demo.files
# Create a config file to enable java-atk-wrapper
pushd %{buildroot}/%{_jvmdir}/%{sdkdir}/conf/
echo "#Config file to enable java-atk-wrapper" > accessibility.properties
echo "" >> accessibility.properties
echo "assistive_technologies=org.GNOME.Accessibility.AtkWrapper" >> accessibility.properties
echo "" >> accessibility.properties
popd
# fdupes links the files from JDK to JRE, so it breaks a JRE
# use it carefully :))
%fdupes -s %{buildroot}/%{_jvmdir}/%{sdkdir}/
%fdupes -s %{buildroot}/%{_jvmdir}/%{sdkdir}/demo
%fdupes -s %{buildroot}%{_javadocdir}/%{sdklnk}
%post headless
ext=.gz
update-alternatives \
--install %{_bindir}/java java %{jrebindir}/java %{priority} \
--slave %{_jvmdir}/jre jre %{_jvmdir}/%{jrelnk} \
--slave %{_bindir}/keytool keytool %{jrebindir}/keytool \
--slave %{_bindir}/rmiregistry rmiregistry %{jrebindir}/rmiregistry \
--slave %{_mandir}/man1/java.1$ext java.1$ext \
%{_mandir}/man1/java-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/keytool.1$ext keytool.1$ext \
%{_mandir}/man1/keytool-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/rmiregistry.1$ext rmiregistry.1$ext \
%{_mandir}/man1/rmiregistry-%{sdklnk}.1$ext \
|| :
update-alternatives \
--install %{_jvmdir}/jre-openjdk \
jre_openjdk %{_jvmdir}/%{jrelnk} %{priority}
update-alternatives \
--install %{_jvmdir}/jre-%{javaver} \
jre_%{javaver} %{_jvmdir}/%{jrelnk} %{priority}
%postun headless
if [ $1 -eq 0 ]
then
if test -f /proc/sys/fs/binfmt_misc/jarexec
then
echo '-1' > /proc/sys/fs/binfmt_misc/jarexec
fi
update-alternatives --remove java %{jrebindir}/java
update-alternatives --remove jre_openjdk %{_jvmdir}/%{jrelnk}
update-alternatives --remove jre_%{javaver} %{_jvmdir}/%{jrelnk}
fi
%posttrans headless
# bnc#781690#c11: don't trust user defined JAVA_HOME and use the current VM
# XXX: this might conflict between various versions of openjdk
export JAVA_HOME=%{_jvmdir}/%{jrelnk}
# check if the java-cacerts is a valid keystore (bnc#781690)
if [ X"`%{_bindir}/file --mime-type -b %{javacacerts}`" \
!= "Xapplication/x-java-keystore;" ]; then
%if 0%{?suse_version} <= 1310
# workaround for bnc#847952 - pre 13.1 keyring.jar attempts to load invalid keystore and fail on it
rm -f "%{javacacerts}"
%endif
%{_sbindir}/update-ca-certificates
fi
# remove the default empty cacert file, if it's installed
if [ 0`stat -c "%{s}" %{cacerts} 2>/dev/null` = "032" ] ; then
rm -f %{cacerts}
fi
# if cacerts does exists, neither does not contain/point to a
# valid keystore (bnc#781690) ...
if [ X"`%{_bindir}/file --mime-type -b -L %{cacerts}`" \
!= "Xapplication/x-java-keystore;" ]; then
# bnc#727223
rm -f %{cacerts}
ln -s %{javacacerts} %{cacerts}
fi
%post devel
ext=.gz
update-alternatives \
--install %{_bindir}/javac javac %{sdkbindir}/javac %{priority} \
--slave %{_jvmdir}/java java_sdk %{_jvmdir}/%{sdklnk} \
--slave %{_bindir}/jar jar %{sdkbindir}/jar \
--slave %{_bindir}/jarsigner jarsigner %{sdkbindir}/jarsigner \
--slave %{_bindir}/javadoc javadoc %{sdkbindir}/javadoc \
--slave %{_bindir}/javap javap %{sdkbindir}/javap \
--slave %{_bindir}/jcmd jcmd %{sdkbindir}/jcmd \
--slave %{_bindir}/jconsole jconsole %{sdkbindir}/jconsole \
--slave %{_bindir}/jdb jdb %{sdkbindir}/jdb \
--slave %{_bindir}/jdeprscan jdeprscan %{sdkbindir}/jdeprscan \
--slave %{_bindir}/jdeps jdeps %{sdkbindir}/jdeps \
--slave %{_bindir}/jimage jimage %{sdkbindir}/jimage \
--slave %{_bindir}/jlink jlink %{sdkbindir}/jlink \
--slave %{_bindir}/jmap jmap %{sdkbindir}/jmap \
--slave %{_bindir}/jmod jmod %{sdkbindir}/jmod \
--slave %{_bindir}/jps jps %{sdkbindir}/jps \
--slave %{_bindir}/jrunscript jrunscript %{sdkbindir}/jrunscript \
--slave %{_bindir}/jshell jshell %{sdkbindir}/jshell \
--slave %{_bindir}/jstack jstack %{sdkbindir}/jstack \
--slave %{_bindir}/jstat jstat %{sdkbindir}/jstat \
--slave %{_bindir}/rmic rmic %{sdkbindir}/rmic \
--slave %{_bindir}/serialver serialver %{sdkbindir}/serialver \
--slave %{_mandir}/man1/jar.1$ext jar.1$ext \
%{_mandir}/man1/jar-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/jarsigner.1$ext jarsigner.1$ext \
%{_mandir}/man1/jarsigner-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/javac.1$ext javac.1$ext \
%{_mandir}/man1/javac-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/javadoc.1$ext javadoc.1$ext \
%{_mandir}/man1/javadoc-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/javap.1$ext javap.1$ext \
%{_mandir}/man1/javap-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/jconsole.1$ext jconsole.1$ext \
%{_mandir}/man1/jconsole-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/jdb.1$ext jdb.1$ext \
%{_mandir}/man1/jdb-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/jdeps.1$ext jdeps.1$ext \
%{_mandir}/man1/jdeps-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/jrunscript.1$ext jrunscript.1$ext \
%{_mandir}/man1/jrunscript-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/rmic.1$ext rmic.1$ext \
%{_mandir}/man1/rmic-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/serialver.1$ext serialver.1$ext \
%{_mandir}/man1/serialver-%{sdklnk}.1$ext \
--slave %{_datadir}/applications/jconsole.desktop jconsole.desktop \
%{_jvmdir}/%{sdkdir}/lib/desktop/jconsole.desktop \
|| :
update-alternatives \
--install %{_jvmdir}/java-openjdk \
java_sdk_openjdk %{_jvmdir}/%{sdklnk} %{priority}
update-alternatives \
--install %{_jvmdir}/java-%{javaver} \
java_sdk_%{javaver} %{_jvmdir}/%{sdklnk} %{priority}
%postun devel
if [ $1 -eq 0 ]
then
update-alternatives --remove javac %{sdkbindir}/javac
update-alternatives --remove java_sdk_openjdk %{_jvmdir}/%{sdklnk}
update-alternatives --remove java_sdk_%{javaver} %{_jvmdir}/%{sdklnk}
fi
%post javadoc
# in some settings, the %{_javadocdir}/%{sdklnk}/api does not exist
# and the update-alternatives call ends up in error. So, filter this
# cases out.
if [ -d %{_javadocdir}/%{sdklnk}/api ]
then
update-alternatives \
--install %{_javadocdir}/java javadocdir %{_javadocdir}/%{sdklnk}/api \
%{priority}
fi
%postun javadoc
if [ $1 -eq 0 ]
then
# in some settings, the %{_javadocdir}/%{sdklnk}/api does not exist
# and the update-alternatives call ends up in error. So, filter this
# cases out.
if [ -d %{_javadocdir}/%{sdklnk}/api ]
then
update-alternatives --remove javadocdir %{_javadocdir}/%{sdklnk}/api
fi
fi
%files
%dir %{_jvmdir}/%{sdkdir}/lib
%{_jvmdir}/%{sdkdir}/lib/libawt_xawt.so
%{_jvmdir}/%{sdkdir}/lib/libjawt.so
%{_jvmdir}/%{sdkdir}/lib/libsplashscreen.so
%dir %{_datadir}/icons/hicolor
%{_datadir}/icons/hicolor/*x*/apps/java-%{javaver}-openj9.png
%files headless
%dir %{_jvmdir}
%dir %{_jvmdir}/%{sdkdir}
%dir %{_jvmdir}/%{sdkdir}/bin
%dir %{_jvmdir}/%{sdkdir}/lib
%dir %{_jvmdir}/%{sdkdir}/lib/server
%dir %{_jvmdir}/%{sdkdir}/lib/default
%dir %{_jvmdir}/%{sdkdir}/lib/desktop
%dir %{_jvmdir}/%{sdkdir}/lib/security
%dir %{_jvmdir}/%{sdkdir}/lib/j9vm
%dir %{_jvmdir}/%{sdkdir}/conf
%dir %{_jvmdir}/%{sdkdir}/conf/security
%dir %{_jvmdir}/%{sdkdir}/conf/security/policy
%dir %{_jvmdir}/%{sdkdir}/conf/security/policy/unlimited
%dir %{_jvmdir}/%{sdkdir}/conf/security/policy/limited
%dir %{_jvmdir}/%{sdkdir}/conf/management
%{_jvmdir}/%{jrelnk}
%{_jvmprivdir}/*
%{_jvmdir}/%{sdkdir}/bin/java
%{_jvmdir}/%{sdkdir}/bin/keytool
%{_jvmdir}/%{sdkdir}/bin/rmiregistry
%{_jvmdir}/%{sdkdir}/conf/logging.properties
%{_jvmdir}/%{sdkdir}/conf/management/jmxremote.access
%{_jvmdir}/%{sdkdir}/conf/management/jmxremote.password.template
%{_jvmdir}/%{sdkdir}/conf/management/management.properties
%{_jvmdir}/%{sdkdir}/conf/net.properties
%{_jvmdir}/%{sdkdir}/conf/security/java.policy
%{_jvmdir}/%{sdkdir}/conf/security/java.security
%{_jvmdir}/%{sdkdir}/conf/security/policy/limited/default_local.policy
%{_jvmdir}/%{sdkdir}/conf/security/policy/limited/default_US_export.policy
%{_jvmdir}/%{sdkdir}/conf/security/policy/limited/exempt_local.policy
%{_jvmdir}/%{sdkdir}/conf/security/policy/README.txt
%{_jvmdir}/%{sdkdir}/conf/security/policy/unlimited/default_local.policy
%{_jvmdir}/%{sdkdir}/conf/security/policy/unlimited/default_US_export.policy
%{_jvmdir}/%{sdkdir}/conf/sound.properties
%{_jvmdir}/%{sdkdir}/conf/tz.properties
%{_jvmdir}/%{sdkdir}/lib/J9TraceFormat.dat
%{_jvmdir}/%{sdkdir}/lib/OMRTraceFormat.dat
%{_jvmdir}/%{sdkdir}/lib/default/j9ddr.dat
%{_jvmdir}/%{sdkdir}/lib/default/libcuda4j29.so
%{_jvmdir}/%{sdkdir}/lib/default/libj9dmp29.so
%{_jvmdir}/%{sdkdir}/lib/default/libj9gc29.so
%{_jvmdir}/%{sdkdir}/lib/default/libj9gcchk29.so
%{_jvmdir}/%{sdkdir}/lib/default/libj9gcchk_full29.so
%{_jvmdir}/%{sdkdir}/lib/default/libj9gc_full29.so
%{_jvmdir}/%{sdkdir}/lib/default/libj9hookable29.so
%{_jvmdir}/%{sdkdir}/lib/default/libj9jextract.so
%{_jvmdir}/%{sdkdir}/lib/default/libj9jit29.so
%{_jvmdir}/%{sdkdir}/lib/default/libj9jnichk29.so
%{_jvmdir}/%{sdkdir}/lib/default/libj9jvmti29.so
%{_jvmdir}/%{sdkdir}/lib/default/libj9prt29.so
%{_jvmdir}/%{sdkdir}/lib/default/libj9shr29.so
%{_jvmdir}/%{sdkdir}/lib/default/libj9thr29.so
%{_jvmdir}/%{sdkdir}/lib/default/libj9trc29.so
%{_jvmdir}/%{sdkdir}/lib/default/libj9vm29.so
%{_jvmdir}/%{sdkdir}/lib/default/libj9vmchk29.so
%{_jvmdir}/%{sdkdir}/lib/default/libj9vrb29.so
%{_jvmdir}/%{sdkdir}/lib/default/libj9vrb_full29.so
%{_jvmdir}/%{sdkdir}/lib/default/libj9zlib29.so
%{_jvmdir}/%{sdkdir}/lib/default/libjclse29.so
%{_jvmdir}/%{sdkdir}/lib/default/libmanagement_ext.so
%{_jvmdir}/%{sdkdir}/lib/default/libomrsig.so
%{_jvmdir}/%{sdkdir}/lib/desktop/jconsole.desktop
%{_jvmdir}/%{sdkdir}/lib/java*.properties
%{_jvmdir}/%{sdkdir}/lib/jexec
%{_jvmdir}/%{sdkdir}/lib/jrt-fs.jar
%{_jvmdir}/%{sdkdir}/lib/jspawnhelper
%{_jvmdir}/%{sdkdir}/lib/jvm.cfg
%{_jvmdir}/%{sdkdir}/lib/libawt_headless.so
%{_jvmdir}/%{sdkdir}/lib/libawt.so
%{_jvmdir}/%{sdkdir}/lib/libdt_socket.so
%{_jvmdir}/%{sdkdir}/lib/libextnet.so
%{_jvmdir}/%{sdkdir}/lib/libfontmanager.so
%if ! %{with_system_harfbuzz}
%{_jvmdir}/%{sdkdir}/lib/libharfbuzz.so
%endif
%{_jvmdir}/%{sdkdir}/lib/libinstrument.so
%{_jvmdir}/%{sdkdir}/lib/libj2gss.so
%{_jvmdir}/%{sdkdir}/lib/libj2pcsc.so
%{_jvmdir}/%{sdkdir}/lib/libj2pkcs11.so
%{_jvmdir}/%{sdkdir}/lib/libjaas.so
%{_jvmdir}/%{sdkdir}/lib/libjavajpeg.so
%{_jvmdir}/%{sdkdir}/lib/libjava.so
%{_jvmdir}/%{sdkdir}/lib/libjdwp.so
%{_jvmdir}/%{sdkdir}/lib/libjimage.so
%{_jvmdir}/%{sdkdir}/lib/libjncrypto.so
%{_jvmdir}/%{sdkdir}/lib/libjsig.so
%{_jvmdir}/%{sdkdir}/lib/libjsound.so
%{_jvmdir}/%{sdkdir}/lib/liblcms.so
%{_jvmdir}/%{sdkdir}/lib/libmanagement.so
%{_jvmdir}/%{sdkdir}/lib/libmanagement_agent.so
%{_jvmdir}/%{sdkdir}/lib/libmlib_image.so
%{_jvmdir}/%{sdkdir}/lib/libnet.so
%{_jvmdir}/%{sdkdir}/lib/libnio.so
%{_jvmdir}/%{sdkdir}/lib/libprefs.so
%{_jvmdir}/%{sdkdir}/lib/librmi.so
%{_jvmdir}/%{sdkdir}/lib/libsctp.so
%{_jvmdir}/%{sdkdir}/lib/libverify.so
%{_jvmdir}/%{sdkdir}/lib/libzip.so
%{_jvmdir}/%{sdkdir}/lib/modules
#%{_jvmdir}/%{sdkdir}/lib/openj9-notices.html
%{_jvmdir}/%{sdkdir}/lib/options.default
%{_jvmdir}/%{sdkdir}/lib/psfontj2d.properties
%{_jvmdir}/%{sdkdir}/lib/psfont.properties.ja
%{_jvmdir}/%{sdkdir}/lib/tzdb.dat
%{_jvmdir}/%{sdkdir}/lib/*/libjsig.so
%{_jvmdir}/%{sdkdir}/lib/*/libjvm.so
%config(noreplace) %{_jvmdir}/%{sdkdir}/lib/security/blocked.certs
%config(noreplace) %{_jvmdir}/%{sdkdir}/lib/security/nss.cfg
%{_jvmdir}/%{sdkdir}/lib/security/default.policy
%{_jvmdir}/%{sdkdir}/lib/security/public_suffix_list.dat
%{_mandir}/man1/java-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/keytool-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/rmiregistry-%{sdklnk}.1%{?ext_man}
%files devel
%dir %{_jvmdir}/%{sdkdir}/bin
%dir %{_jvmdir}/%{sdkdir}/include
%dir %{_jvmdir}/%{sdkdir}/include/linux
%dir %{_jvmdir}/%{sdkdir}/lib
%{_jvmdir}/%{sdkdir}/bin/jar
%{_jvmdir}/%{sdkdir}/bin/jarsigner
%{_jvmdir}/%{sdkdir}/bin/javac
%{_jvmdir}/%{sdkdir}/bin/javadoc
%{_jvmdir}/%{sdkdir}/bin/javap
%{_jvmdir}/%{sdkdir}/bin/jcmd
%{_jvmdir}/%{sdkdir}/bin/jconsole
%{_jvmdir}/%{sdkdir}/bin/jdb
%{_jvmdir}/%{sdkdir}/bin/jdeprscan
%{_jvmdir}/%{sdkdir}/bin/jdeps
%{_jvmdir}/%{sdkdir}/bin/jdmpview
%{_jvmdir}/%{sdkdir}/bin/jextract
%{_jvmdir}/%{sdkdir}/bin/jimage
%{_jvmdir}/%{sdkdir}/bin/jlink
%{_jvmdir}/%{sdkdir}/bin/jmap
%{_jvmdir}/%{sdkdir}/bin/jmod
%{_jvmdir}/%{sdkdir}/bin/jpackcore
%{_jvmdir}/%{sdkdir}/bin/jps
%{_jvmdir}/%{sdkdir}/bin/jrunscript
%{_jvmdir}/%{sdkdir}/bin/jshell
%{_jvmdir}/%{sdkdir}/bin/jstack
%{_jvmdir}/%{sdkdir}/bin/jstat
%{_jvmdir}/%{sdkdir}/bin/rmic
%{_jvmdir}/%{sdkdir}/bin/serialver
%{_jvmdir}/%{sdkdir}/bin/traceformat
%{_jvmdir}/%{sdkdir}/include/classfile_constants.h
%{_jvmdir}/%{sdkdir}/include/ibmjvmti.h
%{_jvmdir}/%{sdkdir}/include/jawt.h
%{_jvmdir}/%{sdkdir}/include/jdwpTransport.h
%{_jvmdir}/%{sdkdir}/include/jni.h
%{_jvmdir}/%{sdkdir}/include/jvmticmlr.h
%{_jvmdir}/%{sdkdir}/include/jvmti.h
%{_jvmdir}/%{sdkdir}/lib/ct.sym
%{_jvmdir}/%{sdkdir}/lib/libattach.so
%{_jvmdir}/%{sdkdir}/include/linux/jawt_md.h
%{_jvmdir}/%{sdkdir}/include/linux/jni_md.h
%{_jvmdir}/%{sdklnk}
%{_mandir}/man1/jar-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/jarsigner-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/javac-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/javadoc-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/javap-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/jconsole-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/jdb-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/jdeps-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/jrunscript-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/rmic-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/serialver-%{sdklnk}.1%{?ext_man}
%files jmods
%dir %{_jvmdir}/%{sdkdir}/jmods
%{_jvmdir}/%{sdkdir}/release
%{_jvmdir}/%{sdkdir}/jmods/*.jmod
%{_jvmdir}/%{sdkdir}/jmods/java-atk-wrapper.jar
%files demo -f %{name}-demo.files
%files src
%{_jvmdir}/%{sdkdir}/lib/src.zip
%files javadoc
%dir %{_javadocdir}
%dir %{_javadocdir}/%{sdklnk}
%{_javadocdir}/%{sdklnk}/*
%files accessibility
%config(noreplace) %{_jvmdir}/%{sdkdir}/conf/accessibility.properties
%{_jvmdir}/%{sdkdir}/lib/libatk-wrapper.so
%changelog

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b8f685caed7c424babac8b158f51355c772d1e2a0b8a1ce8ced4980edae223e2
size 293364

View File

@ -0,0 +1,20 @@
--- jdk10/src/java.base/share/conf/security/java.security 2017-01-23 23:56:02.000000000 +0100
+++ jdk10/src/java.base/share/conf/security/java.security 2017-01-27 08:41:10.551819770 +0100
@@ -304,6 +304,8 @@
#
package.access=sun.misc.,\
sun.reflect.,\
+ org.GNOME.Accessibility.,\
+ org.GNOME.Bonobo.,\
#
# List of comma-separated packages that start with or equal this string
@@ -316,6 +318,8 @@
#
package.definition=sun.misc.,\
sun.reflect.,\
+ org.GNOME.Accessibility.,\
+ org.GNOME.Bonobo.,\
#
# Determines whether this properties file can be appended to

118
jaw-jdk10.patch Normal file
View File

@ -0,0 +1,118 @@
--- 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:

66
jaw-misc.patch Normal file
View File

@ -0,0 +1,66 @@
--- 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])
@@ -98,12 +98,6 @@ if test -z "$JAVAC"; then
fi
AC_SUBST(JAVAC)
-AC_PATH_PROG(JAVAH,javah,,${JAVA_PATH})
-if test -z "$JAVAH"; then
- AC_MSG_ERROR([$JAVA_ERROR_MESSAGE])
-fi
-AC_SUBST(JAVAH)
-
AC_SUBST(JAVACFLAGS)
AC_PATH_PROG(JAR,jar,,${JAVA_PATH})
@@ -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
+

148
jaw-nogtk.patch Normal file
View File

@ -0,0 +1,148 @@
--- java-atk-wrapper-0.33.2/configure.ac 2018-08-21 13:51:47.158216451 +0200
+++ java-atk-wrapper-0.33.2/configure.ac 2018-08-21 13:52:22.122434818 +0200
@@ -45,7 +45,6 @@
dbus-1
glib-2.0 >= 2.32.0
gthread-2.0
- gdk-2.0
gobject-2.0
])
AC_SUBST(JAW_LIBS)
--- java-atk-wrapper-0.33.2/jni/src/AtkWrapper.c 2015-07-02 15:18:08.000000000 +0200
+++ java-atk-wrapper-0.33.2/jni/src/AtkWrapper.c 2018-08-21 13:53:20.206797576 +0200
@@ -23,9 +23,6 @@
#include <stdlib.h>
#include <glib.h>
#include <atk-bridge.h>
-#include <gdk/gdk.h>
-#include <gdk/gdkx.h>
-#include <gtk/gtk.h>
#include <X11/Xlib.h>
#include "jawutil.h"
#include "jawimpl.h"
@@ -258,7 +255,7 @@
{
jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
CallbackPara *para = alloc_callback_para(global_ac);
- gdk_threads_add_idle(focus_notify_handler, para);
+ g_idle_add(focus_notify_handler, para);
}
static gboolean
@@ -336,7 +333,7 @@
jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
CallbackPara *para = alloc_callback_para(global_ac);
para->is_toplevel = (jIsToplevel == JNI_TRUE) ? TRUE : FALSE;
- gdk_threads_add_idle(window_open_handler, para);
+ g_idle_add(window_open_handler, para);
}
static gboolean
@@ -413,7 +410,7 @@
jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
CallbackPara *para = alloc_callback_para(global_ac);
para->is_toplevel = (jIsToplevel == JNI_TRUE) ? TRUE : FALSE;
- gdk_threads_add_idle(window_close_handler, para);
+ g_idle_add(window_close_handler, para);
}
static gboolean
@@ -462,7 +459,7 @@
{
jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
CallbackPara *para = alloc_callback_para(global_ac);
- gdk_threads_add_idle(window_minimize_handler, para);
+ g_idle_add(window_minimize_handler, para);
}
static gboolean
@@ -511,7 +508,7 @@
{
jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
CallbackPara *para = alloc_callback_para(global_ac );
- gdk_threads_add_idle(window_maximize_handler, para);
+ g_idle_add(window_maximize_handler, para);
}
static gboolean
@@ -561,7 +558,7 @@
jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
CallbackPara *para = alloc_callback_para(global_ac);
- gdk_threads_add_idle(window_restore_handler, para);
+ g_idle_add(window_restore_handler, para);
}
static gboolean
@@ -609,7 +606,7 @@
jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
CallbackPara *para = alloc_callback_para(global_ac);
- gdk_threads_add_idle(window_activate_handler, para);
+ g_idle_add(window_activate_handler, para);
}
static gboolean
@@ -659,7 +656,7 @@
jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
CallbackPara *para = alloc_callback_para(global_ac);
- gdk_threads_add_idle(window_deactivate_handler, para);
+ g_idle_add(window_deactivate_handler, para);
}
static gboolean
@@ -710,7 +707,7 @@
jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
CallbackPara *para = alloc_callback_para(global_ac);
- gdk_threads_add_idle(window_state_change_handler, para);
+ g_idle_add(window_state_change_handler, para);
}
static gchar
@@ -1047,7 +1044,7 @@
CallbackPara *para = alloc_callback_para(global_ac);
para->signal_id = (gint)id;
para->args = global_args;
- gdk_threads_add_idle(signal_emit_handler, para);
+ g_idle_add(signal_emit_handler, para);
}
static gboolean
@@ -1106,7 +1103,7 @@
} else {
para->state_value = FALSE;
}
- gdk_threads_add_idle(object_state_change_handler, para);
+ g_idle_add(object_state_change_handler, para);
}
static gboolean
@@ -1163,7 +1160,7 @@
{
jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
CallbackPara *para = alloc_callback_para(global_ac);
- gdk_threads_add_idle(component_added_handler, para);
+ g_idle_add(component_added_handler, para);
}
static gboolean
@@ -1222,7 +1219,7 @@
{
jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
CallbackPara *para = alloc_callback_para(global_ac);
- gdk_threads_add_idle(component_removed_handler, para);
+ g_idle_add(component_removed_handler, para);
}
static gboolean
@@ -1340,7 +1337,7 @@
{
jboolean key_consumed;
jobject global_key_event = (*jniEnv)->NewGlobalRef(jniEnv, jAtkKeyEvent);
- gdk_threads_add_idle(key_dispatch_handler, (gpointer)global_key_event);
+ g_idle_add(key_dispatch_handler, (gpointer)global_key_event);
if(jaw_debug)
printf("key_dispatch_result saved = %d\n ", key_dispatch_result);

11
jconsole.desktop.in Normal file
View File

@ -0,0 +1,11 @@
[Desktop Entry]
Name=OpenJDK @VERSION@ Monitoring & Management Console
GenericName=OpenJDK Monitoring & Management Console
Comment=Monitor and manage OpenJDK applications
Exec=@JAVA_HOME@/bin/jconsole
Icon=java
Terminal=false
Type=Application
StartupWMClass=sun-tools-jconsole-JConsole
Categories=Development;Profiling;
Version=1.0

85
libdwarf-fix.patch Normal file
View File

@ -0,0 +1,85 @@
--- a/omr/ddr/lib/ddr-scanner/dwarf/DwarfScanner.cpp
+++ b/omr/ddr/lib/ddr-scanner/dwarf/DwarfScanner.cpp
@@ -1497,6 +1497,13 @@ DwarfScanner::traverse_cu_in_debug_section(Symbol_IR *ir)
Dwarf_Half addressSize = 0;
Dwarf_Unsigned nextCUheader = 0;
Dwarf_Error error = NULL;
+#ifdef DW_LIBDWARF_VERSION_MAJOR
+ Dwarf_Half lengthSize = 0;
+ Dwarf_Half extensionSize = 0;
+ Dwarf_Sig8 typeSignature;
+ Dwarf_Unsigned typeOffset = 0;
+ Dwarf_Half nextCUheaderType = 0;
+#endif
/* Go over each cu header. */
while (DDR_RC_OK == rc) {
@@ -1504,7 +1511,11 @@ DwarfScanner::traverse_cu_in_debug_section(Symbol_IR *ir)
_typeOffsetMap.clear();
_ir = &newIR;
+#ifdef DW_LIBDWARF_VERSION_MAJOR
+ int ret = dwarf_next_cu_header_d(_debug, true, &cuHeaderLength, &versionStamp, &abbrevOffset, &addressSize, &lengthSize, &extensionSize, &typeSignature, &typeOffset, &nextCUheader, &nextCUheaderType, &error);
+#else
int ret = dwarf_next_cu_header(_debug, &cuHeaderLength, &versionStamp, &abbrevOffset, &addressSize, &nextCUheader, &error);
+#endif
if (DW_DLV_ERROR == ret) {
ERRMSG("Failed to get next dwarf CU header.");
rc = DDR_RC_ERROR;
@@ -1518,7 +1529,11 @@ DwarfScanner::traverse_cu_in_debug_section(Symbol_IR *ir)
Dwarf_Die childDie = NULL;
/* Expect the CU to have a single sibling - a DIE */
+#ifdef DW_LIBDWARF_VERSION_MAJOR
+ if (DW_DLV_ERROR == dwarf_siblingof_b(_debug, NULL, true, &cuDie, &error)) {
+#else
if (DW_DLV_ERROR == dwarf_siblingof(_debug, NULL, &cuDie, &error)) {
+#endif
ERRMSG("Getting sibling of CU: %s\n", dwarf_errmsg(error));
rc = DDR_RC_ERROR;
break;
@@ -1617,12 +1632,20 @@ DwarfScanner::scanFile(OMRPortLibrary *portLibrary, Symbol_IR *ir, const char *f
}
if (DDR_RC_OK == rc) {
+#ifdef DW_LIBDWARF_VERSION_MAJOR
+ unsigned int groupNumber = DW_GROUPNUMBER_ANY;
+#else
Dwarf_Unsigned access = DW_DLC_READ;
+#endif
Dwarf_Handler errhand = 0;
Dwarf_Ptr errarg = NULL;
intptr_t native_fd = omrfile_convert_omrfile_fd_to_native_fd(fd);
DwarfScanner::scanFileName = filepath;
+#ifdef DW_LIBDWARF_VERSION_MAJOR
+ res = dwarf_init_b((int)native_fd, groupNumber, errhand, errarg, &_debug, &error);
+#else
res = dwarf_init((int)native_fd, access, errhand, errarg, &_debug, &error);
+#endif
if (DW_DLV_OK != res) {
ERRMSG("Failed to initialize libDwarf scanning %s: %s\nExiting...\n", filepath, dwarf_errmsg(error));
if (NULL != error) {
@@ -1640,7 +1663,11 @@ DwarfScanner::scanFile(OMRPortLibrary *portLibrary, Symbol_IR *ir, const char *f
DEBUGPRINTF("Unloading libDwarf");
+#ifdef DW_LIBDWARF_VERSION_MAJOR
+ res = dwarf_finish(_debug);
+#else
res = dwarf_finish(_debug, &error);
+#endif
if (DW_DLV_OK != res) {
ERRMSG("Failed to Unload libDwarf: %s\nExiting...\n", dwarf_errmsg(error));
if (NULL != error) {
@@ -1681,7 +1708,11 @@ DwarfScanner::getNextSibling(Dwarf_Die *die)
Dwarf_Error err = NULL;
/* Get the next sibling and free the previous one if successful. */
+#ifdef DW_LIBDWARF_VERSION_MAJOR
+ int ret = dwarf_siblingof_b(_debug, *die, true, &nextSibling, &err);
+#else
int ret = dwarf_siblingof(_debug, *die, &nextSibling, &err);
+#endif
if (DW_DLV_ERROR == ret) {
ERRMSG("Getting sibling of die:%s\n", dwarf_errmsg(err));
} else if (DW_DLV_OK == ret) {

View File

@ -0,0 +1,15 @@
--- openjdk/src/java.desktop/share/classes/java/awt/Toolkit.java
+++ openjdk/src/java.desktop/share/classes/java/awt/Toolkit.java
@@ -883,7 +883,11 @@
toolkit = new HeadlessToolkit(toolkit);
}
if (!GraphicsEnvironment.isHeadless()) {
- loadAssistiveTechnologies();
+ try {
+ loadAssistiveTechnologies();
+ } catch (AWTError error) {
+ // ignore silently
+ }
}
}
return toolkit;

View File

@ -0,0 +1,65 @@
--- jdk10/src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/Config.java 2016-12-20 23:13:34.000000000 +0100
+++ jdk10/src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/Config.java 2016-12-22 11:45:10.418651583 +0100
@@ -51,6 +51,7 @@
static final int ERR_HALT = 1;
static final int ERR_IGNORE_ALL = 2;
static final int ERR_IGNORE_LIB = 3;
+ static final int ERR_IGNORE_MULTI_INIT = 4;
// same as allowSingleThreadedModules but controlled via a system property
// and applied to all providers. if set to false, no SunPKCS11 instances
@@ -992,6 +993,8 @@
handleStartupErrors = ERR_IGNORE_LIB;
} else if (val.equals("halt")) {
handleStartupErrors = ERR_HALT;
+ } else if (val.equals("ignoreMultipleInitialisation")) {
+ handleStartupErrors = ERR_IGNORE_MULTI_INIT;
} else {
throw excToken("Invalid value for handleStartupErrors:");
}
--- jdk10/src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/SunPKCS11.java 2016-12-20 23:13:34.000000000 +0100
+++ jdk10/src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/SunPKCS11.java 2016-12-22 11:45:10.418651583 +0100
@@ -174,26 +174,37 @@
String nssLibraryDirectory = config.getNssLibraryDirectory();
String nssSecmodDirectory = config.getNssSecmodDirectory();
boolean nssOptimizeSpace = config.getNssOptimizeSpace();
+ int errorHandling = config.getHandleStartupErrors();
if (secmod.isInitialized()) {
if (nssSecmodDirectory != null) {
String s = secmod.getConfigDir();
if ((s != null) &&
(s.equals(nssSecmodDirectory) == false)) {
- throw new ProviderException("Secmod directory "
- + nssSecmodDirectory
- + " invalid, NSS already initialized with "
- + s);
+ String msg = "Secmod directory " + nssSecmodDirectory
+ + " invalid, NSS already initialized with " + s;
+ if (errorHandling == Config.ERR_IGNORE_MULTI_INIT ||
+ errorHandling == Config.ERR_IGNORE_ALL) {
+ throw new UnsupportedOperationException(msg);
+ } else {
+ throw new ProviderException(msg);
+ }
}
}
if (nssLibraryDirectory != null) {
String s = secmod.getLibDir();
if ((s != null) &&
(s.equals(nssLibraryDirectory) == false)) {
- throw new ProviderException("NSS library directory "
+ String msg = "NSS library directory "
+ nssLibraryDirectory
+ " invalid, NSS already initialized with "
- + s);
+ + s;
+ if (errorHandling == Config.ERR_IGNORE_MULTI_INIT ||
+ errorHandling == Config.ERR_IGNORE_ALL) {
+ throw new UnsupportedOperationException(msg);
+ } else {
+ throw new ProviderException(msg);
+ }
}
}
} else {

4
nss.cfg Normal file
View File

@ -0,0 +1,4 @@
name = NSS
nssLibraryDirectory =
nssDbMode = noDb
attributes = compatibility

52
openj9-nogit.patch.in Normal file
View File

@ -0,0 +1,52 @@
diff --git a/closed/OpenJ9.gmk b/closed/OpenJ9.gmk
index 8b7990a0cb..8559b989a0 100644
--- a/closed/OpenJ9.gmk
+++ b/closed/OpenJ9.gmk
@@ -32,20 +32,20 @@ ifeq (,$(BUILD_ID))
BUILD_ID := 000000
endif
-OPENJDK_SHA := $(shell $(GIT) -C $(TOPDIR) rev-parse --short HEAD)
+OPENJDK_SHA := @OPENJDK_SHA@
ifeq (,$(OPENJDK_SHA))
$(error Could not determine OpenJDK SHA)
endif
-OPENJ9_SHA := $(shell $(GIT) -C $(OPENJ9_TOPDIR) rev-parse --short HEAD)
+OPENJ9_SHA := @OPENJ9_SHA@
ifeq (,$(OPENJ9_SHA))
$(error Could not determine OpenJ9 SHA)
endif
# Find OpenJ9 tag associated with current commit (suppressing stderr in case there is no such tag).
-OPENJ9_TAG := $(shell $(GIT) -C $(OPENJ9_TOPDIR) describe --exact-match HEAD 2>/dev/null)
+OPENJ9_TAG := @OPENJ9_TAG@
ifeq (,$(OPENJ9_TAG))
- OPENJ9_BRANCH := $(shell $(GIT) -C $(OPENJ9_TOPDIR) rev-parse --abbrev-ref HEAD)
+ OPENJ9_BRANCH := @OPENJ9_BRANCH@
ifeq (,$(OPENJ9_BRANCH))
$(error Could not determine OpenJ9 branch)
endif
@@ -54,7 +54,7 @@ else
OPENJ9_VERSION_STRING := $(OPENJ9_TAG)
endif
-OPENJ9OMR_SHA := $(shell $(GIT) -C $(OPENJ9OMR_TOPDIR) rev-parse --short HEAD)
+OPENJ9OMR_SHA := @OPENJ9OMR_SHA@
ifeq (,$(OPENJ9OMR_SHA))
$(error Could not determine OMR SHA)
endif
diff --git a/closed/custom/ReleaseFile.gmk b/closed/custom/ReleaseFile.gmk
index 8512c7702f..767b199992 100644
--- a/closed/custom/ReleaseFile.gmk
+++ b/closed/custom/ReleaseFile.gmk
@@ -18,6 +18,6 @@
# 2 along with this work; if not, see <http://www.gnu.org/licenses/>.
# ===========================================================================
-SOURCE_REVISION := OpenJDK:$(shell $(GIT) -C $(TOPDIR) rev-parse --short HEAD)
-SOURCE_REVISION += OpenJ9:$(shell $(GIT) -C $(OPENJ9_TOPDIR) rev-parse --short HEAD)
-SOURCE_REVISION += OMR:$(shell $(GIT) -C $(OPENJ9OMR_TOPDIR) rev-parse --short HEAD)
+SOURCE_REVISION := OpenJDK:@OPENJ9_SHA@
+SOURCE_REVISION += OpenJ9:@OPENJ9_SHA@
+SOURCE_REVISION += OMR:@OPENJ9OMR_SHA@

177
system-pcsclite.patch Normal file
View File

@ -0,0 +1,177 @@
--- jdk11/make/autoconf/lib-bundled.m4 2021-01-19 09:46:26.193562524 +0100
+++ jdk11/make/autoconf/lib-bundled.m4 2021-01-19 09:47:38.465983974 +0100
@@ -38,6 +38,7 @@
LIB_SETUP_ZLIB
LIB_SETUP_LCMS
LIB_SETUP_HARFBUZZ
+ LIB_SETUP_PCSCLITE
])
################################################################################
@@ -301,3 +302,41 @@
AC_SUBST(HARFBUZZ_CFLAGS)
AC_SUBST(HARFBUZZ_LIBS)
])
+
+################################################################################
+# Setup pcsclite
+################################################################################
+AC_DEFUN_ONCE([LIB_SETUP_PCSCLITE],
+[
+ AC_ARG_WITH(pcsclite, [AS_HELP_STRING([--with-pcsclite],
+ [use pcsclite from build system or OpenJDK source (system, bundled) @<:@bundled@:>@])])
+
+ AC_MSG_CHECKING([for which pcsclite to use])
+
+ # default is bundled
+ DEFAULT_PCSCLITE=bundled
+ # if user didn't specify, use DEFAULT_PCSCLITE
+ if test "x${with_pcsclite}" = "x"; then
+ with_libpng=${DEFAULT_PCSCLITE}
+ fi
+
+ if test "x${with_pcsclite}" = "xbundled"; then
+ USE_EXTERNAL_PCSCLITE=false
+ AC_MSG_RESULT([bundled])
+ elif test "x${with_pcsclite}" = "xsystem"; then
+ PKG_CHECK_MODULES(PCSCLITE, libpcsclite,
+ [ PCSCLITE_FOUND=yes ],
+ [ PCSCLITE_FOUND=no ])
+ if test "x${PCSCLITE_FOUND}" = "xyes"; then
+ USE_EXTERNAL_PCSCLITE=true
+ AC_MSG_RESULT([system])
+ else
+ AC_MSG_RESULT([system not found])
+ AC_MSG_ERROR([--with-pcsclite=system specified, but no pcsclite found!])
+ fi
+ else
+ AC_MSG_ERROR([Invalid value of --with-pcsclite: ${with_pcsclite}, use 'system' or 'bundled'])
+ fi
+
+ AC_SUBST(USE_EXTERNAL_PCSCLITE)
+])
--- jdk11/make/autoconf/spec.gmk.in 2021-01-19 09:46:26.193562524 +0100
+++ jdk11/make/autoconf/spec.gmk.in 2021-01-19 09:47:10.805822676 +0100
@@ -763,6 +763,7 @@
# Build setup
USE_EXTERNAL_LIBJPEG:=@USE_EXTERNAL_LIBJPEG@
USE_EXTERNAL_LIBGIF:=@USE_EXTERNAL_LIBGIF@
+USE_EXTERNAL_LIBPCSCLITE:=@USE_EXTERNAL_LIBPCSCLITE@
USE_EXTERNAL_LIBZ:=@USE_EXTERNAL_LIBZ@
LIBZ_CFLAGS:=@LIBZ_CFLAGS@
LIBZ_LIBS:=@LIBZ_LIBS@
--- jdk11/make/modules/java.smartcardio/Lib.gmk 2021-01-19 09:46:26.245562827 +0100
+++ jdk11/make/modules/java.smartcardio/Lib.gmk 2021-01-19 09:47:10.805822676 +0100
@@ -30,12 +30,12 @@
$(eval $(call SetupJdkLibrary, BUILD_LIBJ2PCSC, \
NAME := j2pcsc, \
CFLAGS := $(CFLAGS_JDKLIB), \
- CFLAGS_unix := -D__sun_jdk, \
- EXTRA_HEADER_DIRS := libj2pcsc/MUSCLE, \
+ CFLAGS_unix := -D__sun_jdk -DUSE_SYSTEM_LIBPCSCLITE, \
+ EXTRA_HEADER_DIRS := /usr/include/PCSC, \
OPTIMIZATION := LOW, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
- LIBS_unix := $(LIBDL), \
+ LIBS_unix := -lpcsclite $(LIBDL), \
LIBS_windows := winscard.lib, \
))
--- jdk11/src/java.smartcardio/unix/native/libj2pcsc/pcsc_md.c 2021-01-19 09:46:26.681565369 +0100
+++ jdk11/src/java.smartcardio/unix/native/libj2pcsc/pcsc_md.c 2021-01-19 09:47:10.809822699 +0100
@@ -36,6 +36,7 @@
#include "pcsc_md.h"
+#ifndef USE_SYSTEM_LIBPCSCLITE
void *hModule;
FPTR_SCardEstablishContext scardEstablishContext;
FPTR_SCardConnect scardConnect;
@@ -47,6 +48,7 @@
FPTR_SCardBeginTransaction scardBeginTransaction;
FPTR_SCardEndTransaction scardEndTransaction;
FPTR_SCardControl scardControl;
+#endif
/*
* Throws a Java Exception by name
@@ -75,6 +77,7 @@
throwByName(env, "java/io/IOException", msg);
}
+#ifndef USE_SYSTEM_LIBPCSCLITE
void *findFunction(JNIEnv *env, void *hModule, char *functionName) {
void *fAddress = dlsym(hModule, functionName);
if (fAddress == NULL) {
@@ -85,9 +88,11 @@
}
return fAddress;
}
+#endif
JNIEXPORT void JNICALL Java_sun_security_smartcardio_PlatformPCSC_initialize
(JNIEnv *env, jclass thisClass, jstring jLibName) {
+#ifndef USE_SYSTEM_LIBPCSCLITE
const char *libName = (*env)->GetStringUTFChars(env, jLibName, NULL);
if (libName == NULL) {
throwNullPointerException(env, "PCSC library name is null");
@@ -141,4 +146,5 @@
#else
scardControl = (FPTR_SCardControl) findFunction(env, hModule, "SCardControl132");
#endif // __APPLE__
+#endif
}
--- jdk11/src/java.smartcardio/unix/native/libj2pcsc/pcsc_md.h 2021-01-19 09:46:26.681565369 +0100
+++ jdk11/src/java.smartcardio/unix/native/libj2pcsc/pcsc_md.h 2021-01-19 09:47:10.809822699 +0100
@@ -23,6 +23,8 @@
* questions.
*/
+#ifndef USE_SYSTEM_LIBPCSCLITE
+
typedef LONG (*FPTR_SCardEstablishContext)(DWORD dwScope,
LPCVOID pvReserved1,
LPCVOID pvReserved2,
@@ -111,3 +113,41 @@
extern FPTR_SCardBeginTransaction scardBeginTransaction;
extern FPTR_SCardEndTransaction scardEndTransaction;
extern FPTR_SCardControl scardControl;
+
+#else
+
+#define CALL_SCardEstablishContext(dwScope, pvReserved1, pvReserved2, phContext) \
+ (SCardEstablishContext(dwScope, pvReserved1, pvReserved2, phContext))
+
+#define CALL_SCardConnect(hContext, szReader, dwSharedMode, dwPreferredProtocols, phCard, pdwActiveProtocols) \
+ (SCardConnect(hContext, szReader, dwSharedMode, dwPreferredProtocols, phCard, pdwActiveProtocols))
+
+#define CALL_SCardDisconnect(hCard, dwDisposition) \
+ (SCardDisconnect(hCard, dwDisposition))
+
+#define CALL_SCardStatus(hCard, mszReaderNames, pcchReaderLen, pdwState, pdwProtocol, pbAtr, pcbAtrLen) \
+ (SCardStatus(hCard, mszReaderNames, pcchReaderLen, pdwState, pdwProtocol, pbAtr, pcbAtrLen))
+
+#define CALL_SCardGetStatusChange(hContext, dwTimeout, rgReaderStates, cReaders) \
+ (SCardGetStatusChange(hContext, dwTimeout, rgReaderStates, cReaders))
+
+#define CALL_SCardTransmit(hCard, pioSendPci, pbSendBuffer, cbSendLength, \
+ pioRecvPci, pbRecvBuffer, pcbRecvLength) \
+ (SCardTransmit(hCard, pioSendPci, pbSendBuffer, cbSendLength, \
+ pioRecvPci, pbRecvBuffer, pcbRecvLength))
+
+#define CALL_SCardListReaders(hContext, mszGroups, mszReaders, pcchReaders) \
+ (SCardListReaders(hContext, mszGroups, mszReaders, pcchReaders))
+
+#define CALL_SCardBeginTransaction(hCard) \
+ (SCardBeginTransaction(hCard))
+
+#define CALL_SCardEndTransaction(hCard, dwDisposition) \
+ (SCardEndTransaction(hCard, dwDisposition))
+
+#define CALL_SCardControl(hCard, dwControlCode, pbSendBuffer, cbSendLength, \
+ pbRecvBuffer, pcbRecvLength, lpBytesReturned) \
+ (SCardControl(hCard, dwControlCode, pbSendBuffer, cbSendLength, \
+ pbRecvBuffer, pcbRecvLength, lpBytesReturned))
+
+#endif