java-17-openjdk 17.0.0.35-1 (x86_64;aarch64;znver1) 2021-14136
0
| Status | rejected | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Submitter | cris [@T] beebames.com | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Platform | rolling | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Repository | main | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| URL | https://abf.openmandriva.org/build_lists/91469 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Packages |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Build Date | 2021-09-04 18:56:52 +0000 UTC | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Last Updated | 2021-11-26 21:33:07.080842111 +0000 UTC |
$ git show --format=fuller --patch-with-stat --summary a4f04eab276362b9a1721ad279036ad0e87bf867
commit a4f04eab276362b9a1721ad279036ad0e87bf867
Author: Crispin Boylan <crisb@mandriva.org>
AuthorDate: Fri Sep 3 23:22:45 2021 +0100
Commit: Crispin Boylan <crisb@mandriva.org>
CommitDate: Fri Sep 3 23:22:45 2021 +0100
17.0.0.35 (rc)
---
.abf.yml | 2 +
TestCryptoLevel.java | 72 +++
TestECDSA.java | 49 ++
java-12-buildfix.patch | 16 +
java-12-compile.patch | 14 +
java-17-openjdk.spec | 602 +++++++++++++++++++++
openjdk-13-fix-build.patch | 12 +
openjdk-15-nss-3.57.patch | 24 +
openjdk-16-glibc-2.34.patch | 14 +
...-support_fedora_rhel_system_crypto_policy.patch | 88 +++
...accessible_toolkit_crash_do_not_break_jvm.patch | 16 +
...ted_out_nss_cfg_provider_to_java_security.patch | 11 +
...44-java_access_bridge_privileged_security.patch | 20 +
...libjpeg_turbo_1_4_compat_for_jdk10_and_up.patch | 19 +
14 files changed, 959 insertions(+)
create mode 100644 .abf.yml
create mode 100644 TestCryptoLevel.java
create mode 100644 TestECDSA.java
create mode 100644 java-12-buildfix.patch
create mode 100644 java-12-compile.patch
create mode 100644 java-17-openjdk.spec
create mode 100644 openjdk-13-fix-build.patch
create mode 100644 openjdk-15-nss-3.57.patch
create mode 100644 openjdk-16-glibc-2.34.patch
create mode 100644 pr3183-rh1340845-support_fedora_rhel_system_crypto_policy.patch
create mode 100644 rh1648242-accessible_toolkit_crash_do_not_break_jvm.patch
create mode 100644 rh1648249-add_commented_out_nss_cfg_provider_to_java_security.patch
create mode 100644 rh1648644-java_access_bridge_privileged_security.patch
create mode 100644 rh649512-remove_uses_of_far_in_jpeg_libjpeg_turbo_1_4_compat_for_jdk10_and_up.patch
diff --git a/.abf.yml b/.abf.yml
new file mode 100644
index 0000000..417dea5
--- /dev/null
+++ b/.abf.yml
@@ -0,0 +1,2 @@
+sources:
+ jdk-17.0.0+35.tar.gz: c3ebde044be72b48d0534ed47a8fbb1ef9aa8918
diff --git a/TestCryptoLevel.java b/TestCryptoLevel.java
new file mode 100644
index 0000000..b32b7ae
--- /dev/null
+++ b/TestCryptoLevel.java
@@ -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);
+ }
+ }
+}
diff --git a/TestECDSA.java b/TestECDSA.java
new file mode 100644
index 0000000..6eb9cb2
--- /dev/null
+++ b/TestECDSA.java
@@ -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.");
+ }
+}
diff --git a/java-12-buildfix.patch b/java-12-buildfix.patch
new file mode 100644
index 0000000..fd0d392
--- /dev/null
+++ b/java-12-buildfix.patch
@@ -0,0 +1,16 @@
+diff -up openjdk/src/hotspot/share/gc/g1/g1CodeBlobClosure.cpp.omv~ openjdk/src/hotspot/share/gc/g1/g1CodeBlobClosure.cpp
+--- openjdk/src/hotspot/share/gc/g1/g1CodeBlobClosure.cpp.omv~ 2019-02-15 23:07:42.313110651 +0100
++++ openjdk/src/hotspot/share/gc/g1/g1CodeBlobClosure.cpp 2019-02-15 23:07:56.346351166 +0100
+@@ -26,6 +26,7 @@
+ #include "code/nmethod.hpp"
+ #include "gc/g1/g1CodeBlobClosure.hpp"
+ #include "gc/g1/g1CollectedHeap.inline.hpp"
++#include "gc/g1/g1OopClosures.inline.hpp"
+ #include "gc/g1/heapRegion.hpp"
+ #include "gc/g1/heapRegionRemSet.hpp"
+ #include "oops/access.inline.hpp"
+@@ -62,4 +63,3 @@ void G1CodeBlobClosure::do_code_blob(Cod
+ }
+ }
+ }
+-
diff --git a/java-12-compile.patch b/java-12-compile.patch
new file mode 100644
index 0000000..4e9f697
--- /dev/null
+++ b/java-12-compile.patch
@@ -0,0 +1,14 @@
+diff -up openjdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/pkcs11wrapper.h.omv~ openjdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/pkcs11wrapper.h
+--- openjdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/pkcs11wrapper.h.omv~ 2019-02-14 18:47:55.481557046 +0100
++++ openjdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/pkcs11wrapper.h 2019-02-14 18:49:42.450345463 +0100
+@@ -170,8 +170,8 @@
+ #define min(a, b) (((a) < (b)) ? (a) : (b))
+ #endif
+
+-#define ckBBoolToJBoolean(x) ((x == TRUE) ? JNI_TRUE : JNI_FALSE);
+-#define jBooleanToCKBBool(x) ((x == JNI_TRUE) ? TRUE : FALSE);
++#define ckBBoolToJBoolean(x) ((x) ? JNI_TRUE : JNI_FALSE);
++#define jBooleanToCKBBool(x) ((x == JNI_TRUE) ? 1 : 0);
+
+ #define ckByteToJByte(x) ((jbyte) x)
+ #define jByteToCKByte(x) ((CK_BYTE) x)
diff --git a/java-17-openjdk.spec b/java-17-openjdk.spec
new file mode 100644
index 0000000..addb40c
--- /dev/null
+++ b/java-17-openjdk.spec
@@ -0,0 +1,602 @@
+# Use gcc instead of clang
+%bcond_without gcc
+%bcond_with system_jdk
+# Without bootstrap, the package BuildRequires
+# rpm-javamacros (which in turn requires this package)
+# so jmod(*) and java(*) Provides: can be generated correctly.
+%bcond_without bootstrap
+# Using rpm's debug package splitter is suboptimal because OpenJDK
+# packages various shared library files inside zip (jmod) packages.
+# Those aren't seen by the splitter and therefore get insanely large.
+# Better to use OpenJDK's own debuginfo splitter here even if it
+# results in somewhat nonstandard locations for debuginfo files.
+# This results in partially empty debug packages (debugsource from
+# rpm, *.debug files from OpenJDK build system)
+%global _empty_manifest_terminate_build 0
+
+# OpenJDK builds a lot of underlinked libraries and tools...
+%global _disable_ld_no_undefined 1
+%global _jvmdir %{_prefix}/lib/jvm
+
+%define major %(echo %{version} |cut -d. -f1)
+%define ver %(echo %{version} |rev |cut -d. -f2- |rev)
+%define minor 35
+#For non-GA releases: %(echo %{version} |rev |cut -d. -f1 |rev)
+# OpenJDK X requires OpenJDK >= X-1 to build -- so we need
+# to determine the previous version to get build dependencies
+# right
+%define oldmajor %(echo $((%{major}-1)))
+
+Name: java-17-openjdk
+Version: 17.0.0.%{minor}
+Release: 1
+Summary: Java Runtime Environment (JRE) %{major}
+Group: Development/Languages
+License: GPLv2, ASL 1.1, ASL 2.0, LGPLv2.1
+URL: http://openjdk.java.net/
+Source0: https://github.com/openjdk/jdk17u/archive/refs/tags/jdk-%{ver}+%{minor}.tar.gz
+# Extra tests
+Source50: TestCryptoLevel.java
+Source51: TestECDSA.java
+# Patches from Fedora
+Patch0: https://src.fedoraproject.org/rpms/java-openjdk/raw/master/f/rh1648249-add_commented_out_nss_cfg_provider_to_java_security.patch
+Patch1: https://src.fedoraproject.org/rpms/java-openjdk/raw/master/f/rh1648242-accessible_toolkit_crash_do_not_break_jvm.patch
+Patch2: https://src.fedoraproject.org/rpms/java-openjdk/raw/master/f/rh1648644-java_access_bridge_privileged_security.patch
+Patch3: https://src.fedoraproject.org/rpms/java-openjdk/raw/master/f/rh649512-remove_uses_of_far_in_jpeg_libjpeg_turbo_1_4_compat_for_jdk10_and_up.patch
+Patch4: https://src.fedoraproject.org/rpms/java-openjdk/raw/master/f/pr3183-rh1340845-support_fedora_rhel_system_crypto_policy.patch
+# Patches from OpenMandriva
+Patch1002: java-12-compile.patch
+Patch1003: openjdk-15-nss-3.57.patch
+Patch1004: openjdk-16-glibc-2.34.patch
+#Patch1005: openjdk-13-fix-build.patch
+BuildRequires: autoconf
+BuildRequires: automake
+BuildRequires: binutils
+BuildRequires: cups-devel
+BuildRequires: desktop-file-utils
+BuildRequires: fontconfig
+BuildRequires: xsltproc
+BuildRequires: zip
+BuildRequires: pkgconfig(freetype2)
+BuildRequires: giflib-devel
+BuildRequires: pkgconfig(alsa)
+BuildRequires: pkgconfig(gtk+-2.0)
+BuildRequires: pkgconfig(nss)
+BuildRequires: pkgconfig(lcms2)
+BuildRequires: pkgconfig(libjpeg)
+BuildRequires: pkgconfig(libpng)
+BuildRequires: pkgconfig(x11)
+BuildRequires: pkgconfig(xext)
+BuildRequires: pkgconfig(xi)
+BuildRequires: pkgconfig(xcomposite)
+BuildRequires: pkgconfig(xinerama)
+BuildRequires: pkgconfig(xrandr)
+BuildRequires: pkgconfig(xrender)
+BuildRequires: pkgconfig(xt)
+BuildRequires: pkgconfig(xtst)
+BuildRequires: pkgconfig(xproto)
+# For testing
+BuildRequires: gdb
+# For freebl
+BuildRequires: nss-static-devel
+# Zero-assembler build requirement.
+%ifnarch %{jit_arches}
+BuildRequires: pkgconfig(libffi)
+%endif
+
+# cacerts build requirement.
+BuildRequires: openssl
+
+%if %{with system_jdk}
+Provides: jre-current = %{EVRD}
+Provides: java-current = %{EVRD}
+%endif
+%if %{with bootstrap}
+# In a bootstrap build, we can't have jmod(*) dependencies
+# because openjdk 12's jmod has no idea how to read openjdk
+# 13's module files.
+BuildRequires: java-%{oldmajor}-openjdk-devel
+# Let's provide some basics...
+Provides: jmod(java.base) = %{EVRD}
+%else
+BuildRequires: rpm-javamacros
+BuildRequires: java-%{major}-openjdk-devel
+%endif
+
+# For compatibility with JPackage/Fedora/Mageia packaging
+Provides: java-%{major}-openjdk-headless = 1:%{version}-%{release}
+Provides: java-openjdk-headless = 1:%{version}-%{release}
+Provides: java-headless = 1:%{version}-%{release}
+
+%description
+OpenJDK Java runtime and development environment
+
+# Macro for packaging individual jmod files
+%define modpackage()\
+%%package module-%{1}\
+Summary: The Java %{1} module, provided by OpenJDK\
+Group: Development/Languages\
+%%description module-%{1}\
+The Java %{1} module, provided by OpenJDK\
+%%files module-%{1}\
+%{_jvmdir}/java-%{major}-openjdk/jmods/%{1}.jmod \
+%optional %doc %{_jvmdir}/java-%{major}-openjdk/legal/%{1}
+
+%package gui
+Summary: Graphical user interface libraries for OpenJDK %{major}
+Group: Development/Languages
+%if %{with system_jdk}
+Provides: jre-gui-current = %{EVRD}
+Provides: java-gui-current = %{EVRD}
+%endif
+# We really need to require %{name} = %{EVRD}, but this gets
+# messed up by the compatibility provides below
+# (java-%{major}-openjdk == %{name})
+# So we have to require one of the compatibility provides of
+# the main package instead.
+Requires: java-%{major}-openjdk-headless = 1:%{version}-%{release}
+# For compatibility with JPackage/Fedora/Mageia packaging
+Provides: java-%{major}-openjdk = %{EVRD}
+Provides: java-openjdk = %{EVRD}
+Provides: java = %{EVRD}
+
+%description gui
+Graphical user interface libraries for OpenJDK %{major}
+
+%package devel
+Summary: Java Development Kit (JDK) %{major}
+Group: Development/Languages
+%if %{with system_jdk}
+Provides: jdk-current = %{EVRD}
+Provides: java-current-devel = %{EVRD}
+%endif
+Requires: rpm-javamacros
+Requires: %{name} = %{EVRD}
+Suggests: %{name}-gui = %{EVRD}
+# For compatibility with JPackage/Fedora/Mageia packaging
+Provides: java-openjdk-devel = %{EVRD}
+Provides: java-devel = %{EVRD}
+
+%description devel
+Java Development Kit (JDK) %{major}
+
+%package source
+Summary: Source files for the Java class library
+Group: Development/Languages
+Recommends: %{name} = %{EVRD}
+
+%description source
+Source files for the Java class library
+
+%package demo
+Summary: Demo/Example applications for OpenJDK
+Group: Development/Languages
+
+%description demo
+Demo/Example applications for OpenJDK
+
+%package debug
+Summary: Debug information for package %{name}
+Group: Development/Debug
+
+%description debug
+Debug information for package %{name}
+
+%prep
+%autosetup -p1 -n jdk17u-jdk-17-%{minor}
+
+EXTRA_CFLAGS="$(echo %{optflags} -fuse-ld=bfd -Wno-error -fno-delete-null-pointer-checks -Wformat -Wno-cpp |sed -r -e 's|-O[0-9sz]*||;s|-Werror=format-security||g')"
+EXTRA_CXXFLAGS="$EXTRA_CFLAGS"
+%if %{with gcc}
+EXTRA_CFLAGS="$EXTRA_CFLAGS -fno-lifetime-dse"
+EXTRA_CXXFLAGS="$EXTRA_CFLAGS -fno-lifetime-dse"
+%ifarch %{ix86}
+# https://bugs.openjdk.java.net/browse/JDK-8199936
+EXTRA_CFLAGS="$EXTRA_CFLAGS -mincoming-stack-boundary=2"
+EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS -mincoming-stack-boundary=2"
+%endif
+export CC=gcc
+export CXX=g++
+%else
+%ifarch %{ix86}
+# https://bugs.openjdk.java.net/browse/JDK-8199936
+EXTRA_CFLAGS="$EXTRA_CFLAGS -mstack-alignment=16"
+EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS -mstack-alignment=16"
+%endif
+%endif
+
+NUM_PROC="$(getconf _NPROCESSORS_ONLN)"
+[ -z "$NUM_PROC" ] && NUM_PROC=8
+
+mkdir build
+cd build
+
+%if %{with gcc}
+export NM=gcc-nm
+export AR=gcc-ar
+%else
+export NM=llvm-nm
+export AR=llvm-ar
+%endif
+
+if ! bash ../configure \
+ --prefix=%{_prefix} \
+ --libdir=%{_libdir} \
+ --sysconfdir=%{_sysconfdir} \
+ --mandir=%{_mandir} \
+%if %{with gcc}
+ --with-toolchain-type=gcc \
+%else
+ --with-toolchain-type=clang \
+%endif
+ --with-boot-jdk=$(ls -d %{_jvmdir}/java-%{oldmajor}-openjdk-* |head -n1) \
+ --with-vendor-name="OpenMandriva" \
+ --with-vendor-url="http://openmandriva.org/" \
+ --with-vendor-version-string="OpenMandriva-%{version}-%{release}" \
+ --with-debug-level=release \
+ --with-native-debug-symbols=external \
+ --enable-unlimited-crypto \
+ --with-freetype=system \
+ --with-zlib=system \
+ --with-giflib=system \
+ --with-harfbuzz=system \
+ --with-libjpeg=system \
+ --with-libpng=system \
+ --with-lcms=system \
+ --with-stdc++lib=dynamic \
+ --with-extra-cflags="$EXTRA_CFLAGS" \
+ --with-extra-cxxflags="$EXTRA_CXXFLAGS" \
+ --with-extra-ldflags="%{ldflags}" \
+ --with-num-cores="$NUM_PROC" \
+ --with-jobs="$NUM_PROC" \
+%ifarch %{x86_64}
+ --with-jvm-features=zgc \
+%endif
+ --disable-warnings-as-errors; then
+ echo "Configure failed -- see config.log:"
+ cat config.log
+ exit 1
+fi
+
+
+%build
+# YYYYYYYUUUUUCCCCCCCKKKKKK! The build process really needs more than
+# 1024 files open at the same time!
+ulimit -Sn 65536
+
+# With LTO enabled, /tmp (tmpfs) tends to run out of space.
+# Temporary LTO files for openjdk 12 easily take 50+ GB.
+# Hopefully the build directory has more free space.
+mkdir -p compilertemp
+export TMPDIR="$(pwd)/compilertemp"
+
+cd build
+# We intentionally don't use %%make_build - OpenJDK doesn't like -j at all
+make -j1 bootcycle-images all docs
+
+%install
+mkdir -p %{buildroot}%{_jvmdir}
+cp -a build/images/jdk %{buildroot}%{_jvmdir}/java-%{major}-openjdk
+ln -s java-%{major}-openjdk %{buildroot}%{_jvmdir}/jre-%{major}-openjdk
+
+%if %{with system_jdk}
+ln -s java-%{major}-openjdk %{buildroot}%{_jvmdir}/java-openjdk
+ln -s java-%{major}-openjdk %{buildroot}%{_jvmdir}/java
+ln -s java-%{major}-openjdk %{buildroot}%{_jvmdir}/jre-openjdk
+ln -s java-%{major}-openjdk %{buildroot}%{_jvmdir}/jre
+
+mkdir -p %{buildroot}%{_mandir}
+mv %{buildroot}%{_jvmdir}/java-%{major}-openjdk/man/* %{buildroot}%{_mandir}
+rmdir %{buildroot}%{_jvmdir}/java-%{major}-openjdk/man
+
+mkdir -p %{buildroot}%{_sysconfdir}/ld.so.conf.d
+echo %{_jvmdir}/java-%{major}-openjdk/lib >%{buildroot}%{_sysconfdir}/ld.so.conf.d/java.conf
+
+mkdir -p %{buildroot}%{_sysconfdir}/profile.d
+cat >%{buildroot}%{_sysconfdir}/profile.d/90java.sh <<'EOF'
+export JAVA_HOME=%{_jvmdir}/java-%{major}-openjdk
+export PATH=$PATH:$JAVA_HOME/bin
+EOF
+cat >%{buildroot}%{_sysconfdir}/profile.d/90java.csh <<'EOF'
+setenv JAVA_HOME %{_jvmdir}/java-%{major}-openjdk
+setenv PATH ${PATH}:${JAVA_HOME}/bin
+EOF
+chmod +x %{buildroot}%{_sysconfdir}/profile.d/*.*sh
+%endif
+
+%files
+%if %{with system_jdk}
+%dir %{_jvmdir}
+%{_jvmdir}/java
+%{_jvmdir}/java-openjdk
+%{_jvmdir}/jre
+%{_jvmdir}/jre-openjdk
+%endif
+%dir %{_jvmdir}/java-%{major}-openjdk/bin
+%dir %{_jvmdir}/java-%{major}-openjdk/conf
+%dir %{_jvmdir}/java-%{major}-openjdk/jmods
+%{_jvmdir}/java-%{major}-openjdk/jmods/java.base.jmod
+%dir %{_jvmdir}/java-%{major}-openjdk/legal
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/java.base
+%dir %{_jvmdir}/java-%{major}-openjdk/lib
+%config(noreplace) %{_jvmdir}/java-%{major}-openjdk/conf/*
+%{_jvmdir}/java-%{major}-openjdk/release
+%{_jvmdir}/java-%{major}-openjdk/bin/java
+%{_jvmdir}/java-%{major}-openjdk/bin/jpackage
+%{_jvmdir}/java-%{major}-openjdk/bin/keytool
+%{_jvmdir}/java-%{major}-openjdk/bin/rmiregistry
+%{_jvmdir}/java-%{major}-openjdk/lib/classlist
+%{_jvmdir}/java-%{major}-openjdk/lib/ct.sym
+%{_jvmdir}/java-%{major}-openjdk/lib/jexec
+%{_jvmdir}/java-%{major}-openjdk/lib/jfr
+%{_jvmdir}/java-%{major}-openjdk/lib/jrt-fs.jar
+%{_jvmdir}/java-%{major}-openjdk/lib/jspawnhelper
+%{_jvmdir}/java-%{major}-openjdk/lib/jvm.cfg
+%{_jvmdir}/java-%{major}-openjdk/lib/libattach.so
+%{_jvmdir}/java-%{major}-openjdk/lib/libawt.so
+%{_jvmdir}/java-%{major}-openjdk/lib/libawt_headless.so
+%{_jvmdir}/java-%{major}-openjdk/lib/libdt_socket.so
+%{_jvmdir}/java-%{major}-openjdk/lib/libextnet.so
+%{_jvmdir}/java-%{major}-openjdk/lib/libfontmanager.so
+%{_jvmdir}/java-%{major}-openjdk/lib/libinstrument.so
+%{_jvmdir}/java-%{major}-openjdk/lib/libj2gss.so
+%{_jvmdir}/java-%{major}-openjdk/lib/libj2pcsc.so
+%{_jvmdir}/java-%{major}-openjdk/lib/libj2pkcs11.so
+%{_jvmdir}/java-%{major}-openjdk/lib/libjaas.so
+%{_jvmdir}/java-%{major}-openjdk/lib/libjavajpeg.so
+%{_jvmdir}/java-%{major}-openjdk/lib/libjava.so
+%{_jvmdir}/java-%{major}-openjdk/lib/libjdwp.so
+%{_jvmdir}/java-%{major}-openjdk/lib/libjimage.so
+%{_jvmdir}/java-%{major}-openjdk/lib/libjli.so
+%{_jvmdir}/java-%{major}-openjdk/lib/libjsig.so
+%{_jvmdir}/java-%{major}-openjdk/lib/libjsound.so
+%{_jvmdir}/java-%{major}-openjdk/lib/liblcms.so
+%{_jvmdir}/java-%{major}-openjdk/lib/libmanagement_agent.so
+%{_jvmdir}/java-%{major}-openjdk/lib/libmanagement_ext.so
+%{_jvmdir}/java-%{major}-openjdk/lib/libmanagement.so
+%{_jvmdir}/java-%{major}-openjdk/lib/libmlib_image.so
+%{_jvmdir}/java-%{major}-openjdk/lib/libnet.so
+%{_jvmdir}/java-%{major}-openjdk/lib/libnio.so
+%{_jvmdir}/java-%{major}-openjdk/lib/libprefs.so
+%{_jvmdir}/java-%{major}-openjdk/lib/librmi.so
+%{_jvmdir}/java-%{major}-openjdk/lib/libsaproc.so
+%{_jvmdir}/java-%{major}-openjdk/lib/libsctp.so
+%ifarch %{x86_64}
+%{_jvmdir}/java-%{major}-openjdk/lib/libsvml.so
+%endif
+%{_jvmdir}/java-%{major}-openjdk/lib/libsyslookup.so
+%{_jvmdir}/java-%{major}-openjdk/lib/libverify.so
+%{_jvmdir}/java-%{major}-openjdk/lib/libzip.so
+%{_jvmdir}/java-%{major}-openjdk/lib/modules
+%{_jvmdir}/java-%{major}-openjdk/lib/psfontj2d.properties
+%{_jvmdir}/java-%{major}-openjdk/lib/psfont.properties.ja
+%{_jvmdir}/java-%{major}-openjdk/lib/security
+%{_jvmdir}/java-%{major}-openjdk/lib/server
+%{_jvmdir}/java-%{major}-openjdk/lib/tzdb.dat
+%{_jvmdir}/jre-%{major}-openjdk
+%if %{with system_jdk}
+%{_mandir}/man1/java.1*
+%{_mandir}/man1/jpackage.1*
+%{_mandir}/man1/keytool.1*
+%{_mandir}/man1/rmiregistry.1*
+%{_mandir}/man1/jdeprscan.1*
+%{_mandir}/man1/jfr.1*
+%{_mandir}/man1/jhsdb.1*
+%{_mandir}/man1/jlink.1*
+%{_mandir}/man1/jmod.1*
+%{_mandir}/man1/jshell.1*
+%{_sysconfdir}/profile.d/*
+%{_sysconfdir}/ld.so.conf.d/java.conf
+%else
+%dir %{_jvmdir}/java-%{major}-openjdk/man
+%dir %{_jvmdir}/java-%{major}-openjdk/man/man1
+%{_jvmdir}/java-%{major}-openjdk/man/man1/java.1*
+%{_jvmdir}/java-%{major}-openjdk/man/man1/jpackage.1*
+%{_jvmdir}/java-%{major}-openjdk/man/man1/keytool.1*
+%{_jvmdir}/java-%{major}-openjdk/man/man1/rmiregistry.1*
+%{_jvmdir}/java-%{major}-openjdk/man/man1/jdeprscan.1*
+%{_jvmdir}/java-%{major}-openjdk/man/man1/jfr.1*
+%{_jvmdir}/java-%{major}-openjdk/man/man1/jhsdb.1*
+%{_jvmdir}/java-%{major}-openjdk/man/man1/jlink.1*
+%{_jvmdir}/java-%{major}-openjdk/man/man1/jmod.1*
+%{_jvmdir}/java-%{major}-openjdk/man/man1/jshell.1*
+%endif
+
+%files gui
+%{_jvmdir}/java-%{major}-openjdk/lib/libawt_xawt.so
+%{_jvmdir}/java-%{major}-openjdk/lib/libjawt.so
+%{_jvmdir}/java-%{major}-openjdk/lib/libsplashscreen.so
+%{_jvmdir}/java-%{major}-openjdk/jmods/java.desktop.jmod
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/java.desktop
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.unsupported.desktop
+
+%files devel
+%{_jvmdir}/java-%{major}-openjdk/include
+%{_jvmdir}/java-%{major}-openjdk/jmods/jdk.internal.ed.jmod
+%{_jvmdir}/java-%{major}-openjdk/jmods/jdk.internal.jvmstat.jmod
+%{_jvmdir}/java-%{major}-openjdk/jmods/jdk.internal.le.jmod
+%{_jvmdir}/java-%{major}-openjdk/jmods/jdk.internal.opt.jmod
+%{_jvmdir}/java-%{major}-openjdk/jmods/jdk.internal.vm.ci.jmod
+%{_jvmdir}/java-%{major}-openjdk/jmods/jdk.internal.vm.compiler.jmod
+%{_jvmdir}/java-%{major}-openjdk/jmods/jdk.internal.vm.compiler.management.jmod
+%{_jvmdir}/java-%{major}-openjdk/jmods/jdk.internal.jvmstat.jmod
+%{_jvmdir}/java-%{major}-openjdk/bin/jar
+%{_jvmdir}/java-%{major}-openjdk/bin/jarsigner
+%{_jvmdir}/java-%{major}-openjdk/bin/javac
+%{_jvmdir}/java-%{major}-openjdk/bin/javadoc
+%{_jvmdir}/java-%{major}-openjdk/bin/javap
+%{_jvmdir}/java-%{major}-openjdk/bin/jcmd
+%{_jvmdir}/java-%{major}-openjdk/bin/jconsole
+%{_jvmdir}/java-%{major}-openjdk/bin/jdb
+%{_jvmdir}/java-%{major}-openjdk/bin/jdeprscan
+%{_jvmdir}/java-%{major}-openjdk/bin/jdeps
+%{_jvmdir}/java-%{major}-openjdk/bin/jfr
+%{_jvmdir}/java-%{major}-openjdk/bin/jhsdb
+%{_jvmdir}/java-%{major}-openjdk/bin/jimage
+%{_jvmdir}/java-%{major}-openjdk/bin/jinfo
+%{_jvmdir}/java-%{major}-openjdk/bin/jlink
+%{_jvmdir}/java-%{major}-openjdk/bin/jmap
+%{_jvmdir}/java-%{major}-openjdk/bin/jmod
+%{_jvmdir}/java-%{major}-openjdk/bin/jps
+%{_jvmdir}/java-%{major}-openjdk/bin/jrunscript
+%{_jvmdir}/java-%{major}-openjdk/bin/jshell
+%{_jvmdir}/java-%{major}-openjdk/bin/jstack
+%{_jvmdir}/java-%{major}-openjdk/bin/jstat
+%{_jvmdir}/java-%{major}-openjdk/bin/jstatd
+%{_jvmdir}/java-%{major}-openjdk/bin/serialver
+%if %{with system_jdk}
+%{_mandir}/man1/jar.1*
+%{_mandir}/man1/jarsigner.1*
+%{_mandir}/man1/javac.1*
+%{_mandir}/man1/javadoc.1*
+%{_mandir}/man1/javap.1*
+%{_mandir}/man1/jcmd.1*
+%{_mandir}/man1/jconsole.1*
+%{_mandir}/man1/jdb.1*
+%{_mandir}/man1/jdeps.1*
+%{_mandir}/man1/jinfo.1*
+%{_mandir}/man1/jmap.1*
+%{_mandir}/man1/jps.1*
+%{_mandir}/man1/jrunscript.1*
+%{_mandir}/man1/jstack.1*
+%{_mandir}/man1/jstat.1*
+%{_mandir}/man1/jstatd.1*
+%{_mandir}/man1/serialver.1*
+%else
+%{_jvmdir}/java-%{major}-openjdk/man/man1/jar.1*
+%{_jvmdir}/java-%{major}-openjdk/man/man1/jarsigner.1*
+%{_jvmdir}/java-%{major}-openjdk/man/man1/javac.1*
+%{_jvmdir}/java-%{major}-openjdk/man/man1/javadoc.1*
+%{_jvmdir}/java-%{major}-openjdk/man/man1/javap.1*
+%{_jvmdir}/java-%{major}-openjdk/man/man1/jcmd.1*
+%{_jvmdir}/java-%{major}-openjdk/man/man1/jconsole.1*
+%{_jvmdir}/java-%{major}-openjdk/man/man1/jdb.1*
+%{_jvmdir}/java-%{major}-openjdk/man/man1/jdeps.1*
+%{_jvmdir}/java-%{major}-openjdk/man/man1/jinfo.1*
+%{_jvmdir}/java-%{major}-openjdk/man/man1/jmap.1*
+%{_jvmdir}/java-%{major}-openjdk/man/man1/jps.1*
+%{_jvmdir}/java-%{major}-openjdk/man/man1/jrunscript.1*
+%{_jvmdir}/java-%{major}-openjdk/man/man1/jstack.1*
+%{_jvmdir}/java-%{major}-openjdk/man/man1/jstat.1*
+%{_jvmdir}/java-%{major}-openjdk/man/man1/jstatd.1*
+%{_jvmdir}/java-%{major}-openjdk/man/man1/serialver.1*
+%endif
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.accessibility
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.attach
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.charsets
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.compiler
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.crypto.cryptoki
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.crypto.ec
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.dynalink
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.editpad
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.hotspot.agent
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.httpserver
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.incubator.foreign
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.internal.ed
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.internal.jvmstat
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.internal.le
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.internal.opt
+%ifnarch %{ix86} %{arm}
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.internal.vm.ci
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.internal.vm.compiler.management
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.internal.vm.compiler
+%endif
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.jartool
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.javadoc
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.jcmd
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.jconsole
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.jdeps
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.jdi
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.jdwp.agent
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.jfr
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.jlink
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.jshell
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.jsobject
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.jstatd
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.localedata
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.management.agent
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.management.jfr
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.management
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.naming.dns
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.naming.rmi
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.net
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.nio.mapmode
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.sctp
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.security.auth
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.security.jgss
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.unsupported
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.xml.dom
+%doc %{_jvmdir}/java-%{major}-openjdk/legal/jdk.zipfs
+
+%files demo
+%{_jvmdir}/java-%{major}-openjdk/demo
+
+%files source
+%{_jvmdir}/java-%{major}-openjdk/lib/src.zip
+
+%files debug
+%{_jvmdir}/java-%{major}-openjdk/bin/*.debuginfo
+%{_jvmdir}/java-%{major}-openjdk/lib/*.debuginfo
+
+%modpackage java.compiler
+%modpackage java.datatransfer
+%modpackage java.instrument
+%modpackage java.logging
+%modpackage java.management
+%modpackage java.management.rmi
+%modpackage java.naming
+%modpackage java.net.http
+%modpackage java.prefs
+%modpackage java.rmi
+%modpackage java.scripting
+%modpackage java.se
+%modpackage java.security.jgss
+%modpackage java.security.sasl
+%modpackage java.smartcardio
+%modpackage java.sql
+%modpackage java.sql.rowset
+%modpackage java.transaction.xa
+%modpackage java.xml
+%modpackage java.xml.crypto
+
+%modpackage jdk.accessibility
+%modpackage jdk.attach
+%modpackage jdk.charsets
+%modpackage jdk.compiler
+%modpackage jdk.crypto.cryptoki
+%modpackage jdk.crypto.ec
+%modpackage jdk.dynalink
+%modpackage jdk.editpad
+%modpackage jdk.hotspot.agent
+%modpackage jdk.httpserver
+%modpackage jdk.incubator.foreign
+%modpackage jdk.incubator.vector
+%modpackage jdk.jartool
+%modpackage jdk.javadoc
+%modpackage jdk.jcmd
+%modpackage jdk.jconsole
+%modpackage jdk.jdeps
+%modpackage jdk.jdi
+%modpackage jdk.jdwp.agent
+%modpackage jdk.jfr
+%modpackage jdk.jlink
+%modpackage jdk.jpackage
+%modpackage jdk.jshell
+%modpackage jdk.jsobject
+%modpackage jdk.jstatd
+%modpackage jdk.localedata
+%modpackage jdk.management.agent
+%modpackage jdk.management.jfr
+%modpackage jdk.management
+%modpackage jdk.naming.dns
+%modpackage jdk.naming.rmi
+%modpackage jdk.net
+%modpackage jdk.nio.mapmode
+%modpackage jdk.random
+%modpackage jdk.sctp
+%modpackage jdk.security.auth
+%modpackage jdk.security.jgss
+%modpackage jdk.unsupported.desktop
+%modpackage jdk.unsupported
+%modpackage jdk.xml.dom
+%modpackage jdk.zipfs
diff --git a/openjdk-13-fix-build.patch b/openjdk-13-fix-build.patch
new file mode 100644
index 0000000..41c1188
--- /dev/null
+++ b/openjdk-13-fix-build.patch
@@ -0,0 +1,12 @@
+diff -up openjdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_convert.c.omv~ openjdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_convert.c
+--- openjdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_convert.c.omv~ 2019-09-21 10:36:54.069646376 +0200
++++ openjdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_convert.c 2019-09-21 10:37:15.900024315 +0200
+@@ -1438,7 +1438,7 @@ CK_VOID_PTR jMechParamToCKMechParamPtrSl
+ (CK_X9_42_DH2_DERIVE_PARAMS_PTR) ckpParamPtr);
+ break;
+ // defined by pkcs11.h but we don't support
+- case CKM_KEA_DERIVE: // CK_KEA_DERIVE_PARAMS
++ case CKM_KEA_KEY_DERIVE: // CK_KEA_DERIVE_PARAMS
+ case CKM_RC2_CBC: // CK_RC2_CBC_PARAMS
+ case CKM_RC2_MAC_GENERAL: // CK_RC2_MAC_GENERAL_PARAMS
+ case CKM_RC5_ECB: // CK_RC5_PARAMS
diff --git a/openjdk-15-nss-3.57.patch b/openjdk-15-nss-3.57.patch
new file mode 100644
index 0000000..bc9d5e6
--- /dev/null
+++ b/openjdk-15-nss-3.57.patch
@@ -0,0 +1,24 @@
+diff -up openjdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_convert.c.omv~ openjdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_convert.c
+--- openjdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_convert.c.omv~ 2020-10-19 16:01:54.532719666 +0200
++++ openjdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_convert.c 2020-10-19 16:02:06.560871871 +0200
+@@ -1471,7 +1471,7 @@ CK_VOID_PTR jMechParamToCKMechParamPtrSl
+ ckpParamPtr = jX942Dh2DeriveParamToCKX942Dh2DeriveParamPtr(env, jParam, ckpLength);
+ break;
+ // defined by pkcs11.h but we don't support
+- case CKM_KEA_DERIVE: // CK_KEA_DERIVE_PARAMS
++ case CKM_KEA_KEY_DERIVE: // CK_KEA_DERIVE_PARAMS
+ case CKM_RC2_CBC: // CK_RC2_CBC_PARAMS
+ case CKM_RC2_MAC_GENERAL: // CK_RC2_MAC_GENERAL_PARAMS
+ case CKM_RC5_ECB: // CK_RC5_PARAMS
+diff -up openjdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_util.c.omv~ openjdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_util.c
+--- openjdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_util.c.omv~ 2020-10-19 16:02:41.622315525 +0200
++++ openjdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_util.c 2020-10-19 16:06:38.215308758 +0200
+@@ -381,7 +381,7 @@ void freeCKMechanismPtr(CK_MECHANISM_PTR
+ case CKM_TLS_MAC:
+ case CKM_AES_CTR:
+ case CKM_RSA_PKCS_PSS:
+- case CKM_CAMELLIA_CTR:
++ //case CKM_CAMELLIA_CTR: // FIXME gone in nss 3.56 -- does anything replace this?
+ // params do not contain pointers
+ break;
+ default:
diff --git a/openjdk-16-glibc-2.34.patch b/openjdk-16-glibc-2.34.patch
new file mode 100644
index 0000000..b7c4f3c
--- /dev/null
+++ b/openjdk-16-glibc-2.34.patch
@@ -0,0 +1,14 @@
+diff -up openjdk/test/hotspot/jtreg/runtime/StackGuardPages/exeinvoke.c.8~ openjdk/test/hotspot/jtreg/runtime/StackGuardPages/exeinvoke.c
+--- openjdk/test/hotspot/jtreg/runtime/StackGuardPages/exeinvoke.c.8~ 2021-08-25 22:18:29.985273769 +0200
++++ openjdk/test/hotspot/jtreg/runtime/StackGuardPages/exeinvoke.c 2021-08-25 22:19:22.321395441 +0200
+@@ -68,7 +68,9 @@ static void handler(int sig, siginfo_t *
+ }
+
+ void set_signal_handler() {
+- static char altstack[SIGSTKSZ];
++ static char *altstack=(char*)NULL;
++
++ if(!altstack) altstack=(char*)malloc(SIGSTKSZ);
+
+ stack_t ss = {
+ .ss_size = SIGSTKSZ,
diff --git a/pr3183-rh1340845-support_fedora_rhel_system_crypto_policy.patch b/pr3183-rh1340845-support_fedora_rhel_system_crypto_policy.patch
new file mode 100644
index 0000000..4efbe9a
--- /dev/null
+++ b/pr3183-rh1340845-support_fedora_rhel_system_crypto_policy.patch
@@ -0,0 +1,88 @@
+
+# HG changeset patch
+# User andrew
+# Date 1478057514 0
+# Node ID 1c4d5cb2096ae55106111da200b0bcad304f650c
+# Parent 3d53f19b48384e5252f4ec8891f7a3a82d77af2a
+PR3183: Support Fedora/RHEL system crypto policy
+diff -r 3d53f19b4838 -r 1c4d5cb2096a src/java.base/share/classes/java/security/Security.java
+--- a/src/java.base/share/classes/java/security/Security.java Wed Oct 26 03:51:39 2016 +0100
++++ b/src/java.base/share/classes/java/security/Security.java Wed Nov 02 03:31:54 2016 +0000
+@@ -43,6 +43,9 @@
+ * implementation-specific location, which is typically the properties file
+ * {@code conf/security/java.security} in the Java installation directory.
+ *
++ * <p>Additional default values of security properties are read from a
++ * system-specific location, if available.</p>
++ *
+ * @author Benjamin Renaud
+ * @since 1.1
+ */
+@@ -52,6 +55,10 @@
+ private static final Debug sdebug =
+ Debug.getInstance("properties");
+
++ /* System property file*/
++ private static final String SYSTEM_PROPERTIES =
++ "/etc/crypto-policies/back-ends/java.config";
++
+ /* The java.security properties */
+ private static Properties props;
+
+@@ -93,6 +100,7 @@
+ if (sdebug != null) {
+ sdebug.println("reading security properties file: " +
+ propFile);
++ sdebug.println(props.toString());
+ }
+ } catch (IOException e) {
+ if (sdebug != null) {
+@@ -114,6 +122,31 @@
+ }
+
+ if ("true".equalsIgnoreCase(props.getProperty
++ ("security.useSystemPropertiesFile"))) {
++
++ // now load the system file, if it exists, so its values
++ // will win if they conflict with the earlier values
++ try (BufferedInputStream bis =
++ new BufferedInputStream(new FileInputStream(SYSTEM_PROPERTIES))) {
++ props.load(bis);
++ loadedProps = true;
++
++ if (sdebug != null) {
++ sdebug.println("reading system security properties file " +
++ SYSTEM_PROPERTIES);
++ sdebug.println(props.toString());
++ }
++ } catch (IOException e) {
++ if (sdebug != null) {
++ sdebug.println
++ ("unable to load security properties from " +
++ SYSTEM_PROPERTIES);
++ e.printStackTrace();
++ }
++ }
++ }
++
++ if ("true".equalsIgnoreCase(props.getProperty
+ ("security.overridePropertiesFile"))) {
+
+ String extraPropFile = System.getProperty
+diff -r 3d53f19b4838 -r 1c4d5cb2096a src/java.base/share/conf/security/java.security
+--- a/src/java.base/share/conf/security/java.security Wed Oct 26 03:51:39 2016 +0100
++++ b/src/java.base/share/conf/security/java.security Wed Nov 02 03:31:54 2016 +0000
+@@ -276,6 +276,13 @@
+ security.overridePropertiesFile=true
+
+ #
++# Determines whether this properties file will be appended to
++# using the system properties file stored at
++# /etc/crypto-policies/back-ends/java.config
++#
++security.useSystemPropertiesFile=true
++
++#
+ # Determines the default key and trust manager factory algorithms for
+ # the javax.net.ssl package.
+ #
diff --git a/rh1648242-accessible_toolkit_crash_do_not_break_jvm.patch b/rh1648242-accessible_toolkit_crash_do_not_break_jvm.patch
new file mode 100644
index 0000000..3042186
--- /dev/null
+++ b/rh1648242-accessible_toolkit_crash_do_not_break_jvm.patch
@@ -0,0 +1,16 @@
+diff -r 618ad1237e73 src/java.desktop/share/classes/java/awt/Toolkit.java
+--- a/src/java.desktop/share/classes/java/awt/Toolkit.java Thu Jun 13 19:37:49 2019 +0200
++++ b/src/java.desktop/share/classes/java/awt/Toolkit.java Thu Jul 04 10:35:42 2019 +0200
+@@ -595,7 +595,11 @@
+ toolkit = new HeadlessToolkit(toolkit);
+ }
+ if (!GraphicsEnvironment.isHeadless()) {
+- loadAssistiveTechnologies();
++ try {
++ loadAssistiveTechnologies();
++ } catch (AWTError error) {
++ // ignore silently
++ }
+ }
+ }
+ return toolkit;
diff --git a/rh1648249-add_commented_out_nss_cfg_provider_to_java_security.patch b/rh1648249-add_commented_out_nss_cfg_provider_to_java_security.patch
new file mode 100644
index 0000000..5ae3b00
--- /dev/null
+++ b/rh1648249-add_commented_out_nss_cfg_provider_to_java_security.patch
@@ -0,0 +1,11 @@
+diff -up openjdk/src/java.base/share/conf/security/java.security.1~ openjdk/src/java.base/share/conf/security/java.security
+--- openjdk/src/java.base/share/conf/security/java.security.1~ 2020-10-19 10:54:38.224370673 +0200
++++ openjdk/src/java.base/share/conf/security/java.security 2020-10-19 10:56:08.598815470 +0200
+@@ -78,6 +78,7 @@ security.provider.tbd=SunMSCAPI
+ security.provider.tbd=Apple
+ #endif
+ security.provider.tbd=SunPKCS11
++#security.provider.tbd=SunPKCS11 ${java.home}/lib/security/nss.cfg
+
+ #
+ # A list of preferred providers for specific algorithms. These providers will
diff --git a/rh1648644-java_access_bridge_privileged_security.patch b/rh1648644-java_access_bridge_privileged_security.patch
new file mode 100644
index 0000000..53026ad
--- /dev/null
+++ b/rh1648644-java_access_bridge_privileged_security.patch
@@ -0,0 +1,20 @@
+--- openjdk/src/java.base/share/conf/security/java.security
++++ openjdk/src/java.base/share/conf/security/java.security
+@@ -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
diff --git a/rh649512-remove_uses_of_far_in_jpeg_libjpeg_turbo_1_4_compat_for_jdk10_and_up.patch b/rh649512-remove_uses_of_far_in_jpeg_libjpeg_turbo_1_4_compat_for_jdk10_and_up.patch
new file mode 100644
index 0000000..1b706a1
--- /dev/null
+++ b/rh649512-remove_uses_of_far_in_jpeg_libjpeg_turbo_1_4_compat_for_jdk10_and_up.patch
@@ -0,0 +1,19 @@
+Remove uses of FAR in jpeg code
+
+Upstream libjpeg-trubo removed the (empty) FAR macro:
+http://sourceforge.net/p/libjpeg-turbo/code/1312/
+
+Adjust our code to not use the undefined FAR macro anymore.
+
+diff --git a/jdk/src/java.desktop/share/native/libjavajpeg/imageioJPEG.c b/jdk/src/java.desktop/share/native/libjavajpeg/imageioJPEG.c
+--- openjdk/src/java.desktop/share/native/libjavajpeg/imageioJPEG.c
++++ openjdk/src/java.desktop/share/native/libjavajpeg/imageioJPEG.c
+@@ -1385,7 +1385,7 @@
+ /* and fill it in */
+ dst_ptr = icc_data;
+ for (seq_no = first; seq_no < last; seq_no++) {
+- JOCTET FAR *src_ptr = icc_markers[seq_no]->data + ICC_OVERHEAD_LEN;
++ JOCTET *src_ptr = icc_markers[seq_no]->data + ICC_OVERHEAD_LEN;
+ unsigned int length =
+ icc_markers[seq_no]->data_length - ICC_OVERHEAD_LEN;
+
Not Available
| robxu9 [@T] gmail.com | clearing (potentially) old builds | 1487d 20hrs |