From f3e5179cf625dabd3f53014b6bca8e3dc78c6b3dee23d0f9682485a4f349c9dc Mon Sep 17 00:00:00 2001 From: Fridrich Strba Date: Fri, 7 Feb 2025 14:36:44 +0000 Subject: [PATCH] OBS-URL: https://build.opensuse.org/package/show/Java:Factory/java-17-openj9?expand=0&rev=75 --- .gitattributes | 23 + .gitignore | 1 + 1a6f6128aa2f639de1e33cae77a31f474ba6b1a9.zip | 3 + 254af5a0452934f62e3253c5565b183c682d3495.zip | 3 + 3c3d179854a524d7f95225999169ee09fda46033.zip | 3 + 5d7d758b682a0b0f3fd0ee54713abc8f749fc86d.zip | 3 + 784bd66222d3a9569eff3335f33b48b5e611b518.zip | 3 + 840a9adba4548aa546e36c97a1150b7306a7e07b.zip | 3 + TestCryptoLevel.java | 72 ++ TestECDSA.java | 49 + _constraints | 10 + aarch64.patch | 20 + b0699311c7d9341f3d0ebf9a7a4b5546a7ca7004.zip | 3 + cbbc8b94a625528b517fc01a8050d5f14c893962.zip | 3 + disable-doclint-by-default.patch | 41 + e49875871c2862e0d132e3695d55273bfbac08b6.zip | 3 + implicit-pointer-decl.patch | 10 + java-17-openj9-rpmlintrc | 1 + java-17-openj9.changes | 172 ++++ java-17-openj9.spec | 934 +++++++++++++++++++ java-atk-wrapper-security.patch | 20 + jconsole.desktop.in | 11 + libdwarf-fix.patch | 85 ++ loadAssistiveTechnologies.patch | 15 + multiple-pkcs11-library-init.patch | 65 ++ openj9-no-narrowing.patch | 21 + openj9-nogit.patch.in | 55 ++ openj9-openssl.patch | 13 + stringop-overflow.patch | 20 + system-pcsclite.patch | 177 ++++ 30 files changed, 1842 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 1a6f6128aa2f639de1e33cae77a31f474ba6b1a9.zip create mode 100644 254af5a0452934f62e3253c5565b183c682d3495.zip create mode 100644 3c3d179854a524d7f95225999169ee09fda46033.zip create mode 100644 5d7d758b682a0b0f3fd0ee54713abc8f749fc86d.zip create mode 100644 784bd66222d3a9569eff3335f33b48b5e611b518.zip create mode 100644 840a9adba4548aa546e36c97a1150b7306a7e07b.zip create mode 100644 TestCryptoLevel.java create mode 100644 TestECDSA.java create mode 100644 _constraints create mode 100644 aarch64.patch create mode 100644 b0699311c7d9341f3d0ebf9a7a4b5546a7ca7004.zip create mode 100644 cbbc8b94a625528b517fc01a8050d5f14c893962.zip create mode 100644 disable-doclint-by-default.patch create mode 100644 e49875871c2862e0d132e3695d55273bfbac08b6.zip create mode 100644 implicit-pointer-decl.patch create mode 100644 java-17-openj9-rpmlintrc create mode 100644 java-17-openj9.changes create mode 100644 java-17-openj9.spec create mode 100644 java-atk-wrapper-security.patch create mode 100644 jconsole.desktop.in create mode 100644 libdwarf-fix.patch create mode 100644 loadAssistiveTechnologies.patch create mode 100644 multiple-pkcs11-library-init.patch create mode 100644 openj9-no-narrowing.patch create mode 100644 openj9-nogit.patch.in create mode 100644 openj9-openssl.patch create mode 100644 stringop-overflow.patch create mode 100644 system-pcsclite.patch diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -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 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/1a6f6128aa2f639de1e33cae77a31f474ba6b1a9.zip b/1a6f6128aa2f639de1e33cae77a31f474ba6b1a9.zip new file mode 100644 index 0000000..5bcd0dc --- /dev/null +++ b/1a6f6128aa2f639de1e33cae77a31f474ba6b1a9.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38371f6ef59ba89f89135dd5579d0952cc4d28adb452c25c194a248da70dc5fc +size 29265781 diff --git a/254af5a0452934f62e3253c5565b183c682d3495.zip b/254af5a0452934f62e3253c5565b183c682d3495.zip new file mode 100644 index 0000000..ae29e3b --- /dev/null +++ b/254af5a0452934f62e3253c5565b183c682d3495.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c01a2db59226a198abd2c6eae857ab1028c91b616fbf80ade639aaec2e21021 +size 11151844 diff --git a/3c3d179854a524d7f95225999169ee09fda46033.zip b/3c3d179854a524d7f95225999169ee09fda46033.zip new file mode 100644 index 0000000..ebea603 --- /dev/null +++ b/3c3d179854a524d7f95225999169ee09fda46033.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df644d51276ffeeb66096b374ca2693b1ffdc384b771bea376640e00f33cbf42 +size 29523888 diff --git a/5d7d758b682a0b0f3fd0ee54713abc8f749fc86d.zip b/5d7d758b682a0b0f3fd0ee54713abc8f749fc86d.zip new file mode 100644 index 0000000..2a7037e --- /dev/null +++ b/5d7d758b682a0b0f3fd0ee54713abc8f749fc86d.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:23b4784a86e39f6f11b08a701d30516ce600f18e8e7febd2d939f76a5f25b4d4 +size 169237014 diff --git a/784bd66222d3a9569eff3335f33b48b5e611b518.zip b/784bd66222d3a9569eff3335f33b48b5e611b518.zip new file mode 100644 index 0000000..647e76d --- /dev/null +++ b/784bd66222d3a9569eff3335f33b48b5e611b518.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ddda8eef9dbf5a90ebff67a5ec7bf54c63b2b3ee664ca7da146c9d53bafad23d +size 169255945 diff --git a/840a9adba4548aa546e36c97a1150b7306a7e07b.zip b/840a9adba4548aa546e36c97a1150b7306a7e07b.zip new file mode 100644 index 0000000..0126c67 --- /dev/null +++ b/840a9adba4548aa546e36c97a1150b7306a7e07b.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:31b067d16c7c9538d99db1fb9aee79d0e208a0173f1c5deb93aaaf96e66c5cca +size 11172351 diff --git a/TestCryptoLevel.java b/TestCryptoLevel.java new file mode 100644 index 0000000..325a89c --- /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 . +*/ + +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..ca7fe59 --- /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 . +*/ + +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/_constraints b/_constraints new file mode 100644 index 0000000..03d1b24 --- /dev/null +++ b/_constraints @@ -0,0 +1,10 @@ + + + + 4096 + + + 20 + + + diff --git a/aarch64.patch b/aarch64.patch new file mode 100644 index 0000000..e0e4ea6 --- /dev/null +++ b/aarch64.patch @@ -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 + diff --git a/b0699311c7d9341f3d0ebf9a7a4b5546a7ca7004.zip b/b0699311c7d9341f3d0ebf9a7a4b5546a7ca7004.zip new file mode 100644 index 0000000..e476b10 --- /dev/null +++ b/b0699311c7d9341f3d0ebf9a7a4b5546a7ca7004.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a44313209419f44cc293f1d08b545d81fd84672a0813d6e7d632a79b19cb0efa +size 29189918 diff --git a/cbbc8b94a625528b517fc01a8050d5f14c893962.zip b/cbbc8b94a625528b517fc01a8050d5f14c893962.zip new file mode 100644 index 0000000..ed4c9d8 --- /dev/null +++ b/cbbc8b94a625528b517fc01a8050d5f14c893962.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59c671e9b369d5e345450a76b217ac18f19724010e699d5396ef10e5926f7246 +size 170203900 diff --git a/disable-doclint-by-default.patch b/disable-doclint-by-default.patch new file mode 100644 index 0000000..55be3c1 --- /dev/null +++ b/disable-doclint-by-default.patch @@ -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, diff --git a/e49875871c2862e0d132e3695d55273bfbac08b6.zip b/e49875871c2862e0d132e3695d55273bfbac08b6.zip new file mode 100644 index 0000000..79cb5cf --- /dev/null +++ b/e49875871c2862e0d132e3695d55273bfbac08b6.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9630132f3973f2e44cf589e93ba466dda5350856ee93fbcfa8e59d515938bc31 +size 11213109 diff --git a/implicit-pointer-decl.patch b/implicit-pointer-decl.patch new file mode 100644 index 0000000..4365b43 --- /dev/null +++ b/implicit-pointer-decl.patch @@ -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 + #include + #include + diff --git a/java-17-openj9-rpmlintrc b/java-17-openj9-rpmlintrc new file mode 100644 index 0000000..fb4660a --- /dev/null +++ b/java-17-openj9-rpmlintrc @@ -0,0 +1 @@ +addFilter("executable-stack") diff --git a/java-17-openj9.changes b/java-17-openj9.changes new file mode 100644 index 0000000..1e82f68 --- /dev/null +++ b/java-17-openj9.changes @@ -0,0 +1,172 @@ +------------------------------------------------------------------- +Wed Feb 5 12:25:50 UTC 2025 - Stefan Dirsch + +- removed unneeded xorg-x11-proto-devel BuildRequires (bsc#1236804) + +------------------------------------------------------------------- +Tue Aug 6 08:24:25 UTC 2024 - Fridrich Strba + +- Update to OpenJDK 17.0.12 with OpenJ9 0.46.0 virtual machine +- Including Oracle July 2024 CPU changes + * CVE-2024-21131 (bsc#1228046), CVE-2024-21138 (bsc#1228047), + CVE-2024-21140 (bsc#1228048), CVE-2024-21147 (bsc#1228052), + CVE-2024-21145 (bsc#1228051) + * OpenJ9 changes, see + https://www.eclipse.org/openj9/docs/version0.46/ +- Removed patch: + * openj9-no-narrowing.patch + + fixed in upstream code + +------------------------------------------------------------------- +Thu May 23 17:42:26 UTC 2024 - Fridrich Strba + +- Update to OpenJDK 17.0.11 with OpenJ9 0.44.0 virtual machine +- Including Oracle April 2024 CPU changes + * CVE-2024-21012 (bsc#1222987), CVE-2024-21094 (bsc#1222986), + CVE-2024-21011 (bsc#1222979), CVE-2024-21068 (bsc#1222983) + * OpenJ9 changes, see + https://www.eclipse.org/openj9/docs/version0.44/ +- Added patch: + * openj9-openssl.patch + + fix build with older openssl that does not define + SSL_R_UNEXPECTED_EOF_WHILE_READING + +------------------------------------------------------------------- +Thu Mar 7 12:44:28 UTC 2024 - Fridrich Strba + +- Removed patch: + * alternative-tzdb_dat.patch + + Remove the possibility to use the system timezone-java. It + creates more problems then it solves (bsc#1213470) + +------------------------------------------------------------------- +Tue Feb 20 15:41:46 UTC 2024 - Fridrich Strba + +- Use %patch -P N instead of deprecated %patchN. + +------------------------------------------------------------------- +Mon Feb 12 16:18:17 UTC 2024 - Fridrich Strba + +- Update to OpenJDK 17.0.10 with OpenJ9 0.43.0 virtual machine +- Including Oracle January 2024 CPU changes + * CVE-2024-20918 (bsc#1218907), CVE-2024-20919 (bsc#1218903), + CVE-2024-20921 (bsc#1218905), CVE-2024-20932 (bsc#1218908), + CVE-2024-20945 (bsc#1218909), CVE-2024-20952 (bsc#1218911) + * OpenJ9 changes, see + https://www.eclipse.org/openj9/docs/version0.43/ +- Modified patches: + * alternative-tzdb_dat.patch + * openj9-nogit.patch.in + + rediff to changed context + +------------------------------------------------------------------- +Thu Nov 23 07:20:07 UTC 2023 - Fridrich Strba + +- Update to OpenJDK 17.0.9 with OpenJ9 0.41.0 virtual machine +- Including Oracle October 2023 CPU changes + * CVE-2023-22081, bsc#1216374 + * CVE-2023-22025, bsc#1216339 +- Including Openj9 0.41.0 fixes of CVE-2023-5676, bsc#1217214 + * For other OpenJ9 changes, see + https://www.eclipse.org/openj9/docs/version0.41 + +------------------------------------------------------------------- +Sat Aug 26 12:48:19 UTC 2023 - Fridrich Strba + +- Update to OpenJDK 17.0.8.1 with OpenJ9 0.40.0 virtual machine + * JDK-8313765: Invalid CEN header (invalid zip64 extra data + field size) + +------------------------------------------------------------------- +Tue Aug 15 07:23:28 UTC 2023 - Fridrich Strba + +- Update to OpenJDK 17.0.8 with OpenJ9 0.40.0 virtual machine +- Including Oracle July 2023 CPU changes + * CVE-2023-22006 (bsc#1213473), CVE-2023-22036 (bsc#1213474), + CVE-2023-22041 (bsc#1213475), CVE-2023-22044 (bsc#1213479), + CVE-2023-22045 (bsc#1213481), CVE-2023-22049 (bsc#1213482), + CVE-2023-25193 (bsc#1207922) + * OpenJ9 changes, see + https://www.eclipse.org/openj9/docs/version0.40 +- Modified patch: + * stringop-overflow.patch + + rediff to changed context + +------------------------------------------------------------------- +Mon Aug 14 19:58:17 UTC 2023 - Fridrich Strba + +- Update to OpenJDK 17.0.7 with OpenJ9 0.38.0 virtual machine +- Including Oracle April 2023 CPU changes + * CVE-2023-21930 (bsc#1210628), CVE-2023-21937 (bsc#1210631), + CVE-2023-21938 (bsc#1210632), CVE-2023-21939 (bsc#1210634), + CVE-2023-21954 (bsc#1210635), CVE-2023-21967 (bsc#1210636), + CVE-2023-21968 (bsc#1210637) + * OpenJ9 specific vulnerability: CVE-2023-2597 (bsc#1211615) + * OpenJ9 changes, see + https://www.eclipse.org/openj9/docs/version0.38 + +------------------------------------------------------------------- +Tue Mar 28 10:02:44 UTC 2023 - Fridrich Strba + +- Added patch: + * stringop-overflow.patch + + disable -Wstringop-overflow and fix build in Factory + +------------------------------------------------------------------- +Mon Mar 6 09:09:45 UTC 2023 - Fridrich Strba + +- Update to OpenJDK 17.0.6 with OpenJ9 0.36.0 virtual machine + * including Oracle January 2023 CPU changes + + CVE-2023-21835, bsc#1207246 + + CVE-2023-21843, bsc#1207248 + * OpenJ9 changes, see + https://www.eclipse.org/openj9/docs/version0.36 + +------------------------------------------------------------------- +Fri Feb 17 13:19:03 UTC 2023 - Fridrich Strba + +- Remove the accessibility sub-package, since it was never really + working and creates another problems (bsc#1206549). It can + eventually be built as standalone if needed +- Removed patches: + * jaw-jdk10.patch + * jaw-misc.patch + * jaw-nogtk.patch + + not needed after the removal of the accessibility sub-package + +------------------------------------------------------------------- +Mon Oct 31 12:04:30 UTC 2022 - Fridrich Strba + +- Update to OpenJDK 17.0.5 with OpenJ9 0.35.0 virtual machine + * Including Oracle October 2022 CPU changes + CVE-2022-21618 (bsc#1204468), CVE-2022-21619 (bsc#1204473), + CVE-2022-21626 (bsc#1204471), CVE-2022-21624 (bsc#1204475), + CVE-2022-21628 (bsc#1204472), CVE-2022-39399 (bsc#1204480) + * Fixes OpenJ9 vulnerability bsc#1204703, CVE-2022-3676 + * OpenJ9 changes, see + https://www.eclipse.org/openj9/docs/version0.35 + +------------------------------------------------------------------- +Tue Aug 16 06:55:36 UTC 2022 - Fridrich Strba + +- Update to OpenJDK 17.0.4 with OpenJ9 0.33.0 virtual machine + * Including Oracle July 2022 CPU changes + CVE-2022-21540 (bsc#1201694), CVE-2022-21541 (bsc#1201692), + CVE-2022-21549 (bsc#1201685), CVE-2022-34169 (bsc#1201684) + * OpenJ9 changes, see + https://www.eclipse.org/openj9/docs/version0.33 +- Modified template patch: + * openj9-nogit.patch.in + + The git commit hash code became more generic, so redo the + template patch +- Added patch: + * openj9-no-narrowing.patch + + Fix narrowing conversion error + +------------------------------------------------------------------- +Tue Jul 12 07:30:36 UTC 2022 - Fridrich Strba + +- Initial packaging of OpenJDK 17.0.3 with OpenJ9 0.32.0 virtual + machine + * OpenJ9 changes, see + https://www.eclipse.org/openj9/docs/version0.32 diff --git a/java-17-openj9.spec b/java-17-openj9.spec new file mode 100644 index 0000000..274356f --- /dev/null +++ b/java-17-openj9.spec @@ -0,0 +1,934 @@ +# +# spec file for package java-17-openj9 +# +# Copyright (c) 2025 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/ +# + + +# ugly hack to prevent spec-cleaner from changing make -> make_build +%global make make +%{!?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 14 +%global buildver 7 +%global root_repository https://github.com/ibmruntimes/openj9-openjdk-jdk17/archive +%global root_revision cbbc8b94a625528b517fc01a8050d5f14c893962 +%global root_branch v0.49.0-release +%global omr_repository https://github.com/eclipse/openj9-omr/archive +%global omr_revision e49875871c2862e0d132e3695d55273bfbac08b6 +%global omr_branch v0.49.0-release +%global openj9_repository https://github.com/eclipse/openj9/archive +%global openj9_revision 3c3d179854a524d7f95225999169ee09fda46033 +%global openj9_branch v0.49.0-release +%global openj9_tag openj9-0.49.0 +# priority must be 6 digits in total +%if 0%{?suse_version} > 1500 || 0%{?java_bootstrap} +%global priority 2701 +%else +%global priority 0 +%endif +%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 +# Desktop files. Adapted from IcedTea. +Source11: jconsole.desktop.in +# Ensure we aren't using the limited crypto policy +Source14: TestCryptoLevel.java +# Ensure ECDSA is working +Source15: TestECDSA.java +Source100: openj9-nogit.patch.in +Source1000: %{name}-rpmlintrc +# 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 build with older version of openssl +Patch7: openj9-openssl.patch +# Fix: implicit-pointer-decl +Patch13: implicit-pointer-decl.patch +# +Patch15: system-pcsclite.patch +# +Patch20: loadAssistiveTechnologies.patch +# +Patch31: aarch64.patch +# +Patch32: stringop-overflow.patch +# +# OpenJDK specific patches +# +Patch302: disable-doclint-by-default.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: java-devel >= 16 +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: xprop +BuildRequires: zip +BuildConflicts: java-devel >= 18 +# 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 +ExclusiveArch: x86_64 ppc64le s390x aarch64 +%if 0%{?suse_version} > 1500 || 0%{?java_bootstrap} +# 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 +%endif +%if 0%{?suse_version} < 1500 +BuildRequires: gcc7 +BuildRequires: gcc7-c++ +%else +BuildRequires: gcc >= 7 +BuildRequires: gcc-c++ >= 7 +%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 +Obsoletes: %{name}-accessibility +%if 0%{?suse_version} > 1500 || 0%{?java_bootstrap} +# 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} +%endif + +%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 +%if 0%{?suse_version} > 1500 || 0%{?java_bootstrap} +# 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} +%endif + +%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 +BuildArch: noarch +%if 0%{?suse_version} > 1500 || 0%{?java_bootstrap} +# Standard JPackage javadoc provides. +Provides: java-%{javaver}-javadoc = %{version}-%{release} +Provides: java-javadoc = %{version}-%{release} +%endif + +%description javadoc +The OpenJDK %{featurever} API documentation. + +%prep +%setup -q -n openj9-openjdk-jdk17-%{root_revision} -a 1 -a 2 + +# 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* + +%patch -P 3 -p1 +%patch -P 4 -p1 +%patch -P 5 -p1 +%patch -P 7 -p1 +%patch -P 13 -p1 + +%if %{with_system_pcsc} +%patch -P 15 -p1 +%endif + +%patch -P 20 -p1 + +%patch -P 31 -p1 +%patch -P 32 -p1 + +%patch -P 302 -p1 + +cat %{SOURCE100} \ + | sed "s/@OPENJ9_SHA@/`expr substr '%{openj9_revision}' 1 7`/g" \ + | sed "s/@OPENJ9_BRANCH@/%{openj9_branch}/g" \ + | sed "s/@OPENJ9_TAG@/%{openj9_tag}/g" \ + | sed "s/@OPENJ9OMR_SHA@/`expr substr '%{omr_revision}' 1 7`/g" \ + | sed "s/@OPENJDK_SHA@/`expr substr '%{root_revision}' 1 7`/g" \ + | patch -p1 -u -l + +sed -i -e "s//`expr substr '%{omr_revision}' 1 7`/g" \ + omr/cmake/versions.cmake + +# 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} < 1500 + CPP=cpp-7 \ + CXX=g++-7 \ + CC=gcc-7 \ + NM=gcc-nm-7 \ +%endif + --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 + +%{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 + +# 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 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 + +# 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}/jpackage jpackage %{sdkbindir}/jpackage \ + --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}/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/jdeprscan.1$ext jdeprscan.1$ext \ + %{_mandir}/man1/jdeprscan-%{sdklnk}.1$ext \ + --slave %{_mandir}/man1/jdeps.1$ext jdeps.1$ext \ + %{_mandir}/man1/jdeps-%{sdklnk}.1$ext \ + --slave %{_mandir}/man1/jlink.1$ext jlink.1$ext \ + %{_mandir}/man1/jlink-%{sdklnk}.1$ext \ + --slave %{_mandir}/man1/jmod.1$ext jmod.1$ext \ + %{_mandir}/man1/jmod-%{sdklnk}.1$ext \ + --slave %{_mandir}/man1/jpackage.1$ext jpackage.1$ext \ + %{_mandir}/man1/jpackage-%{sdklnk}.1$ext \ + --slave %{_mandir}/man1/jrunscript.1$ext jrunscript.1$ext \ + %{_mandir}/man1/jrunscript-%{sdklnk}.1$ext \ + --slave %{_mandir}/man1/jshell.1$ext jshell.1$ext \ + %{_mandir}/man1/jshell-%{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 +%dir %{_jvmdir}/%{sdkdir}/conf/sdp +%{_jvmdir}/%{jrelnk} +%{_jvmprivdir}/* + +%{_jvmdir}/%{sdkdir}/release +%{_jvmdir}/%{sdkdir}/bin/java +%{_jvmdir}/%{sdkdir}/bin/jitserver +%{_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/sdp/sdp.conf.template +%{_jvmdir}/%{sdkdir}/conf/security/java.policy +%{_jvmdir}/%{sdkdir}/conf/security/java.security +%ifnarch %{aarch64} +%{_jvmdir}/%{sdkdir}/conf/security/nss.fips.cfg +%endif +%{_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}/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/libjli.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/libsyslookup.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 +%{_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/jpackage +%{_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/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/jdeprscan-%{sdklnk}.1%{?ext_man} +%{_mandir}/man1/jdeps-%{sdklnk}.1%{?ext_man} +%{_mandir}/man1/jlink-%{sdklnk}.1%{?ext_man} +%{_mandir}/man1/jmod-%{sdklnk}.1%{?ext_man} +%{_mandir}/man1/jpackage-%{sdklnk}.1%{?ext_man} +%{_mandir}/man1/jrunscript-%{sdklnk}.1%{?ext_man} +%{_mandir}/man1/jshell-%{sdklnk}.1%{?ext_man} +%{_mandir}/man1/serialver-%{sdklnk}.1%{?ext_man} + +%files jmods +%dir %{_jvmdir}/%{sdkdir}/jmods +%{_jvmdir}/%{sdkdir}/jmods/*.jmod + +%files demo -f %{name}-demo.files + +%files src +%{_jvmdir}/%{sdkdir}/lib/src.zip + +%files javadoc +%dir %{_javadocdir} +%dir %{_javadocdir}/%{sdklnk} +%{_javadocdir}/%{sdklnk}/* + +%changelog diff --git a/java-atk-wrapper-security.patch b/java-atk-wrapper-security.patch new file mode 100644 index 0000000..d4b6747 --- /dev/null +++ b/java-atk-wrapper-security.patch @@ -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 diff --git a/jconsole.desktop.in b/jconsole.desktop.in new file mode 100644 index 0000000..ac50948 --- /dev/null +++ b/jconsole.desktop.in @@ -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 diff --git a/libdwarf-fix.patch b/libdwarf-fix.patch new file mode 100644 index 0000000..1f23ba6 --- /dev/null +++ b/libdwarf-fix.patch @@ -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) { diff --git a/loadAssistiveTechnologies.patch b/loadAssistiveTechnologies.patch new file mode 100644 index 0000000..6961eac --- /dev/null +++ b/loadAssistiveTechnologies.patch @@ -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; diff --git a/multiple-pkcs11-library-init.patch b/multiple-pkcs11-library-init.patch new file mode 100644 index 0000000..8cf3d3b --- /dev/null +++ b/multiple-pkcs11-library-init.patch @@ -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 { diff --git a/openj9-no-narrowing.patch b/openj9-no-narrowing.patch new file mode 100644 index 0000000..8a17225 --- /dev/null +++ b/openj9-no-narrowing.patch @@ -0,0 +1,21 @@ +--- a/openj9/runtime/compiler/env/j9methodServer.cpp ++++ b/openj9/runtime/compiler/env/j9methodServer.cpp +@@ -2634,7 +2634,7 @@ TR_ResolvedRelocatableJ9JITServerMethod::validateMethodFieldAttributes(const TR_ + return equal; + } + +-TR_J9ServerMethod::TR_J9ServerMethod(TR_FrontEnd * fe, TR_Memory * trMemory, J9Class * aClazz, uintptr_t cpIndex) ++TR_J9ServerMethod::TR_J9ServerMethod(TR_FrontEnd * fe, TR_Memory * trMemory, J9Class * aClazz, int32_t cpIndex) + : TR_J9Method() + { + TR_ASSERT(cpIndex != -1, "cpIndex shouldn't be -1"); +--- a/openj9/runtime/compiler/env/j9methodServer.hpp ++++ b/openj9/runtime/compiler/env/j9methodServer.hpp +@@ -326,6 +326,6 @@ protected: + class TR_J9ServerMethod : public TR_J9Method + { + public: +- TR_J9ServerMethod(TR_FrontEnd *trvm, TR_Memory *, J9Class * aClazz, uintptr_t cpIndex); ++ TR_J9ServerMethod(TR_FrontEnd *trvm, TR_Memory *, J9Class * aClazz, int32_t cpIndex); + }; + #endif // J9METHODSERVER_H diff --git a/openj9-nogit.patch.in b/openj9-nogit.patch.in new file mode 100644 index 0000000..9b84f2d --- /dev/null +++ b/openj9-nogit.patch.in @@ -0,0 +1,55 @@ +--- a/closed/OpenJ9.gmk ++++ b/closed/OpenJ9.gmk +@@ -41,11 +41,11 @@ VersionPairs := + # ---------- + # $1 - repository display name + # $2 - variable name +-# $3 - root directory of git repository ++# $3 - variable value + # $4 - 'required' for a required repository, anything else for an optional one + GetVersion = $(eval $(call GetVersionHelper,$(strip $1),$(strip $2),$(strip $3),$(strip $4))) + define GetVersionHelper +- $2 := $$(if $(wildcard $3),$$(shell $(GIT) -C $3 rev-parse --short HEAD)) ++ $2 := $3 + ifneq (,$$($2)) + VersionLabelWidth := $(shell $(ECHO) "$1" | $(AWK) "{ width = length; print (width > $(VersionLabelWidth) ? width : $(VersionLabelWidth)) }") + VersionPairs += "$1" "$$($2)" +@@ -61,17 +61,16 @@ define ShowVersions + @$(PRINTF) " %-$(VersionLabelWidth)s - %s\n" $(VersionPairs) + endef # ShowVersions + +-$(call GetVersion, openjdk, OPENJDK_SHA, $(TOPDIR), required) +-$(call GetVersion, openj9, OPENJ9_SHA, $(OPENJ9_TOPDIR), required) +-$(call GetVersion, omr, OPENJ9OMR_SHA, $(OPENJ9OMR_TOPDIR), required) +-$(call GetVersion, openssl, OPENSSL_SHA, $(OPENSSL_DIR)) ++$(call GetVersion, openjdk, OPENJDK_SHA, @OPENJDK_SHA@, required) ++$(call GetVersion, openj9, OPENJ9_SHA, @OPENJ9_SHA@, required) ++$(call GetVersion, omr, OPENJ9OMR_SHA, @OPENJ9OMR_SHA@, required) + + # 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@ + ifneq (,$(OPENJ9_TAG)) + OPENJ9_VERSION_STRING := $(OPENJ9_TAG) + else +- 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 +--- a/closed/custom/ReleaseFile.gmk ++++ b/closed/custom/ReleaseFile.gmk +@@ -18,9 +18,9 @@ + # 2 along with this work; if not, see . + # =========================================================================== + +-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@ + ifeq (true,$(BUILD_OPENJCEPLUS)) +- SOURCE_REVISION += OpenJCEPlus:$(shell $(GIT) -C $(OPENJCEPLUS_TOPDIR) rev-parse --short HEAD) ++ SOURCE_REVISION += OpenJCEPlus:@OPENJCEPLUS_SHA@ + endif diff --git a/openj9-openssl.patch b/openj9-openssl.patch new file mode 100644 index 0000000..ee392f5 --- /dev/null +++ b/openj9-openssl.patch @@ -0,0 +1,13 @@ +--- a/openj9/runtime/compiler/runtime/Listener.cpp ++++ b/openj9/runtime/compiler/runtime/Listener.cpp +@@ -44,6 +44,10 @@ + #include "runtime/CompileService.hpp" + #include "runtime/Listener.hpp" + ++#ifndef SSL_R_UNEXPECTED_EOF_WHILE_READING ++#define SSL_R_UNEXPECTED_EOF_WHILE_READING 294 ++#endif ++ + static bool + handleOpenSSLConnectionError(int connfd, SSL *&ssl, BIO *&bio, const char *errMsg, int ret, TR::CompilationInfo *compInfo) + { diff --git a/stringop-overflow.patch b/stringop-overflow.patch new file mode 100644 index 0000000..1e79fb3 --- /dev/null +++ b/stringop-overflow.patch @@ -0,0 +1,20 @@ +diff -urEbwB openj9-openjdk-jdk17.orig/omr/compiler/optimizer/OMRSimplifierHandlers.cpp openj9-openjdk-jdk17/omr/compiler/optimizer/OMRSimplifierHandlers.cpp +--- openj9-openjdk-jdk17.orig/omr/compiler/optimizer/OMRSimplifierHandlers.cpp 2023-03-28 09:18:57.979474249 +0200 ++++ openj9-openjdk-jdk17/omr/compiler/optimizer/OMRSimplifierHandlers.cpp 2023-03-28 09:49:47.316000333 +0200 +@@ -22,6 +22,9 @@ + #ifndef OMR_SIMPLIFIERHANDLERS_INCL + #define OMR_SIMPLIFIERHANDLERS_INCL + ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wstringop-overflow" ++ + #include "optimizer/OMRSimplifierHelpers.hpp" + #include "optimizer/SimplifierHandlers.hpp" + +@@ -17353,5 +17356,6 @@ + return node; + } + ++#pragma GCC diagnostic pop + + #endif diff --git a/system-pcsclite.patch b/system-pcsclite.patch new file mode 100644 index 0000000..458187f --- /dev/null +++ b/system-pcsclite.patch @@ -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