Compare commits

...

No commits in common. 'c9-beta' and 'c9' have entirely different histories.
c9-beta ... c9

2
.gitignore vendored

@ -1,2 +1,2 @@
SOURCES/openjdk-jdk21u-jdk-21+35.tar.xz
SOURCES/openjdk-21.0.6+7.tar.xz
SOURCES/tapsets-icedtea-6.0.0pre00-c848b93a8598.tar.xz

@ -1,2 +1,2 @@
96686100a34c1cb88947097f91769154066a5e92 SOURCES/openjdk-jdk21u-jdk-21+35.tar.xz
fad71f19631dab375285056d10d08374e869bb35 SOURCES/openjdk-21.0.6+7.tar.xz
c8281ee37b77d535c9c1af86609a531958ff7b34 SOURCES/tapsets-icedtea-6.0.0pre00-c848b93a8598.tar.xz

@ -0,0 +1,54 @@
From 7733d625ebdea5a6f323a0c5944fb8ab728d1b2b Mon Sep 17 00:00:00 2001
From: Andrew Hughes <gnu.andrew@redhat.com>
Date: Sat, 25 Nov 2023 17:29:36 +0000
Subject: [PATCH] Allow devkit to work with RHEL
---
make/devkit/Makefile | 2 +-
make/devkit/Tools.gmk | 10 +++++++++-
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/make/devkit/Makefile b/make/devkit/Makefile
index c85a7c21d29..8f69d23c325 100644
--- a/make/devkit/Makefile
+++ b/make/devkit/Makefile
@@ -58,7 +58,7 @@
COMMA := ,
os := $(shell uname -o)
-cpu := $(shell uname -p)
+cpu := $(shell uname -m)
# Figure out what platform this is building on.
me := $(cpu)-$(if $(findstring Linux,$(os)),linux-gnu)
diff --git a/make/devkit/Tools.gmk b/make/devkit/Tools.gmk
index 187320ca26e..001f4b1870c 100644
--- a/make/devkit/Tools.gmk
+++ b/make/devkit/Tools.gmk
@@ -62,6 +62,14 @@ ifeq ($(BASE_OS), OL)
BASE_URL := http://yum.oracle.com/repo/OracleLinux/OL6/4/base/$(ARCH)/
LINUX_VERSION := OL6.4
endif
+else ifeq ($(BASE_OS), RHEL)
+ ifeq ($(ARCH), aarch64)
+ BASE_URL := https://download.eng.brq.redhat.com/rhel-7/rel-eng/RHEL-7/latest-RHEL-ALT-7/compose/Server/$(ARCH)/os/Packages/
+ LINUX_VERSION := RHEL7.6
+ else
+ BASE_URL := https://download.eng.brq.redhat.com/rhel-7/rel-eng/RHEL-7/latest-RHEL-7/compose/Server/$(ARCH)/os/Packages/
+ LINUX_VERSION := RHEL7.9
+ endif
else ifeq ($(BASE_OS), Fedora)
ifeq ($(ARCH), riscv64)
DEFAULT_OS_VERSION := rawhide/68692
@@ -246,7 +254,7 @@ download-rpms:
# Only run this if rpm dir is empty.
ifeq ($(wildcard $(DOWNLOAD_RPMS)/*.rpm), )
cd $(DOWNLOAD_RPMS) && \
- wget -r -np -nd $(patsubst %, -A "*%*.rpm", $(RPM_LIST)) $(BASE_URL)
+ wget -r -e robots=off -np -nd $(patsubst %, -A "*%*.rpm", $(RPM_LIST)) $(BASE_URL)
endif
##########################################################################################
--
2.45.2

@ -0,0 +1,50 @@
From e55afc691c0105623e04a6e76369cf1438afb874 Mon Sep 17 00:00:00 2001
From: Andrew Hughes <gnu.andrew@redhat.com>
Date: Fri, 8 Dec 2023 21:22:02 +0000
Subject: [PATCH] Disable multilib on x86_64
---
make/devkit/Tools.gmk | 13 +++----------
1 file changed, 3 insertions(+), 10 deletions(-)
diff --git a/make/devkit/Tools.gmk b/make/devkit/Tools.gmk
index 001f4b1870c..9ede781413d 100644
--- a/make/devkit/Tools.gmk
+++ b/make/devkit/Tools.gmk
@@ -225,13 +225,7 @@ RPM_LIST := \
##########################################################################################
# Define common directories and files
-# Ensure we have 32-bit libs also for x64. We enable mixed-mode.
-ifeq (x86_64,$(ARCH))
- LIBDIRS := lib64 lib
- CFLAGS_lib := -m32
-else
- LIBDIRS := lib
-endif
+LIBDIRS := lib
# Define directories
BUILDDIR := $(OUTPUT_ROOT)/$(HOST)/$(TARGET)
@@ -289,8 +283,7 @@ $(foreach p,GCC BINUTILS CCACHE MPFR GMP MPC GDB,$(eval $(call Download,$(p))))
RPM_ARCHS := $(ARCH) noarch
ifeq ($(ARCH),x86_64)
- # Enable mixed mode.
- RPM_ARCHS += i386 i686
+ RPM_ARCHS += i686
else ifeq ($(ARCH),i686)
RPM_ARCHS += i386
else ifeq ($(ARCH), armhfp)
@@ -526,7 +519,7 @@ ifeq ($(ARCH), armhfp)
$(BUILDDIR)/$(gcc_ver)/Makefile : CONFIG += --with-float=hard
endif
-ifneq ($(filter riscv64 ppc64 ppc64le s390x, $(ARCH)), )
+ifneq ($(filter riscv64 ppc64 ppc64le s390x x86_64, $(ARCH)), )
# We only support 64-bit on these platforms anyway
CONFIG += --disable-multilib
endif
--
2.45.2

@ -0,0 +1,92 @@
From fbc27183b35df7778cf106450b144474f8e2a35c Mon Sep 17 00:00:00 2001
From: Andrew Hughes <gnu.andrew@redhat.com>
Date: Wed, 30 Oct 2024 00:42:06 +0000
Subject: [PATCH] Log devkit build to stdout
Resolves: OPENJDK-3071
---
make/devkit/Tools.gmk | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/make/devkit/Tools.gmk b/make/devkit/Tools.gmk
index 9ede781413d..b6f895f5a25 100644
--- a/make/devkit/Tools.gmk
+++ b/make/devkit/Tools.gmk
@@ -458,7 +458,7 @@ $(BUILDDIR)/$(binutils_ver)/Makefile \
--enable-multilib \
--enable-threads \
--enable-plugins \
- ) > $(@D)/log.config 2>&1
+ ) 2>&1 | tee $(@D)/log.config
@echo 'done'
$(BUILDDIR)/$(mpfr_ver)/Makefile \
@@ -473,7 +473,7 @@ $(BUILDDIR)/$(mpfr_ver)/Makefile \
--program-prefix=$(TARGET)- \
--enable-shared=no \
--with-gmp=$(PREFIX) \
- ) > $(@D)/log.config 2>&1
+ ) 2>&1 | tee $(@D)/log.config
@echo 'done'
$(BUILDDIR)/$(gmp_ver)/Makefile \
@@ -490,7 +490,7 @@ $(BUILDDIR)/$(gmp_ver)/Makefile \
--program-prefix=$(TARGET)- \
--enable-shared=no \
--with-mpfr=$(PREFIX) \
- ) > $(@D)/log.config 2>&1
+ ) 2>&1 | tee $(@D)/log.config
@echo 'done'
$(BUILDDIR)/$(mpc_ver)/Makefile \
@@ -506,7 +506,7 @@ $(BUILDDIR)/$(mpc_ver)/Makefile \
--enable-shared=no \
--with-mpfr=$(PREFIX) \
--with-gmp=$(PREFIX) \
- ) > $(@D)/log.config 2>&1
+ ) 2>&1 | tee $(@D)/log.config
@echo 'done'
# Only valid if glibc target -> linux
@@ -549,7 +549,7 @@ $(BUILDDIR)/$(gcc_ver)/Makefile \
--with-mpfr=$(PREFIX) \
--with-gmp=$(PREFIX) \
--with-mpc=$(PREFIX) \
- ) > $(@D)/log.config 2>&1
+ ) 2>&1 | tee $(@D)/log.config
@echo 'done'
# need binutils for gcc
@@ -571,7 +571,7 @@ ifeq ($(HOST), $(TARGET))
$(PATHPRE) $(ENVS) CFLAGS="$(CFLAGS)" $(GDB_CFG) \
$(CONFIG) \
--with-sysroot=$(SYSROOT) \
- ) > $(@D)/log.config 2>&1
+ ) 2>&1 | tee $(@D)/log.config
@echo 'done'
$(gdb): $(gcc)
@@ -593,7 +593,7 @@ $(BUILDDIR)/$(ccache_ver)/Makefile \
cd $(@D) ; \
$(PATHPRE) $(ENVS) $(CCACHE_CFG) \
$(CONFIG) \
- ) > $(@D)/log.config 2>&1
+ ) 2>&1 | tee $(@D)/log.config
@echo 'done'
gccpatch = $(TARGETDIR)/gcc-patched
@@ -641,9 +641,9 @@ endif
# Always need to build cross tools for build host self.
$(TARGETDIR)/%.done : $(BUILDDIR)/%/Makefile
$(info Building $(basename $@). Log in $(<D)/log.build)
- $(PATHPRE) $(ENVS) $(MAKE) $(BUILDPAR) -f $< -C $(<D) $(MAKECMD) $(MAKECMD.$(notdir $@)) > $(<D)/log.build 2>&1
+ $(PATHPRE) $(ENVS) $(MAKE) $(BUILDPAR) -f $< -C $(<D) $(MAKECMD) $(MAKECMD.$(notdir $@)) 2>&1 | tee $(<D)/log.build
@echo -n 'installing...'
- $(PATHPRE) $(MAKE) $(INSTALLPAR) -f $< -C $(<D) $(INSTALLCMD) $(MAKECMD.$(notdir $@)) > $(<D)/log.install 2>&1
+ $(PATHPRE) $(MAKE) $(INSTALLPAR) -f $< -C $(<D) $(INSTALLCMD) $(MAKECMD.$(notdir $@)) 2>&1 | tee $(<D)/log.install
@mkdir -p $(@D)
@touch $@
@echo 'done'
--
2.45.2

@ -0,0 +1,41 @@
From 3d81d23118aab95214e24ccc81eff61ac245a1ac Mon Sep 17 00:00:00 2001
From: Thomas Fitzsimmons <fitzsim@redhat.com>
Date: Wed, 20 Mar 2024 13:01:47 -0400
Subject: [PATCH] devkit: Remove .comment sections from sysroot objects
Otherwise the comment sections of C runtime objects, including those
in static libraries like libc_nonshared.a, contribute RPM package
version strings to the .comment section in devkit-produced binaries
and libraries. These RPM package strings change frequently, even
across minor toolchain updates. Their presence interferes when
comparing binaries built with devkits that use different sysroot RPM
package sets.
---
make/devkit/Tools.gmk | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/make/devkit/Tools.gmk b/make/devkit/Tools.gmk
index b6f895f5a25..37ea1a6a287 100644
--- a/make/devkit/Tools.gmk
+++ b/make/devkit/Tools.gmk
@@ -324,6 +324,9 @@ $(foreach p,$(RPM_FILE_LIST),$(eval $(call unrpm,$(p))))
# have it anyway, but just to make sure...
# Patch libc.so and libpthread.so to force linking against libraries in sysroot
# and not the ones installed on the build machine.
+# Remove comment sections from static libraries and C runtime objects
+# to prevent leaking RHEL-specific package versions into
+# devkit-produced binaries.
$(libs) : $(rpms)
@echo Patching libc and pthreads
@(for f in `find $(SYSROOT) -name libc.so -o -name libpthread.so`; do \
@@ -333,6 +336,7 @@ $(libs) : $(rpms)
-e 's|/lib/||g' ) > $$f.tmp ; \
mv $$f.tmp $$f ; \
done)
+ @find $(SYSROOT) -name '*.[ao]' -exec objcopy --remove-section .comment '{}' ';'
@mkdir -p $(SYSROOT)/usr/lib
@touch $@
--
2.45.2

@ -0,0 +1,35 @@
From c370e1194c707f3f6c470e147ec497cc4e76957e Mon Sep 17 00:00:00 2001
From: Thomas Fitzsimmons <fitzsim@redhat.com>
Date: Fri, 22 Mar 2024 16:03:17 -0400
Subject: [PATCH] Tools.gmk: Configure binutils with
--enable-deterministic-archives
---
make/devkit/Tools.gmk | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/make/devkit/Tools.gmk b/make/devkit/Tools.gmk
index 37ea1a6a287..22c6007000b 100644
--- a/make/devkit/Tools.gmk
+++ b/make/devkit/Tools.gmk
@@ -445,6 +445,9 @@ endif
# Makefile creation. Simply run configure in build dir.
# Setting CFLAGS to -O2 generates a much faster ld.
+# Use --enable-deterministic-archives so that make targets that
+# generate "ar" archives, such as "static-libs-image", produce
+# deterministic .a files.
$(bfdmakes) \
$(BUILDDIR)/$(binutils_ver)/Makefile \
: $(BINUTILS_CFG)
@@ -459,6 +462,7 @@ $(BUILDDIR)/$(binutils_ver)/Makefile \
--with-sysroot=$(SYSROOT) \
--disable-nls \
--program-prefix=$(TARGET)- \
+ --enable-deterministic-archives \
--enable-multilib \
--enable-threads \
--enable-plugins \
--
2.45.2

@ -0,0 +1,35 @@
From 5958274571b957617d0572101a92217fd5b2f312 Mon Sep 17 00:00:00 2001
From: Andrew Hughes <gnu.andrew@redhat.com>
Date: Wed, 27 Nov 2024 17:04:19 +0000
Subject: [PATCH] Tools.gmk: Add --enable-linker-build-id to gcc build
This causes --build-id to be passed to the linker, and the
.note.gnu.build-id section is added (OPENJDK-3068)
---
make/devkit/Tools.gmk | 3 +++
1 file changed, 3 insertions(+)
diff --git a/make/devkit/Tools.gmk b/make/devkit/Tools.gmk
index 22c6007000b..57d48ec5114 100644
--- a/make/devkit/Tools.gmk
+++ b/make/devkit/Tools.gmk
@@ -539,6 +539,8 @@ endif
# skip native language.
# and link and assemble with the binutils we created
# earlier, so --with-gnu*
+# Add --enable-linker-build-id so the .note.gnu.build-id
+# section is added by the linker (OPENJDK-3068)
$(BUILDDIR)/$(gcc_ver)/Makefile \
: $(GCC_CFG)
$(info Configuring $@. Log in $(@D)/log.config)
@@ -557,6 +559,7 @@ $(BUILDDIR)/$(gcc_ver)/Makefile \
--with-mpfr=$(PREFIX) \
--with-gmp=$(PREFIX) \
--with-mpc=$(PREFIX) \
+ --enable-linker-build-id \
) 2>&1 | tee $(@D)/log.config
@echo 'done'
--
2.45.2

@ -0,0 +1,38 @@
From 2617c050a909265444b32063b2d271eca42dcaa6 Mon Sep 17 00:00:00 2001
From: Andrew Hughes <gnu.andrew@redhat.com>
Date: Fri, 17 Jan 2025 21:11:01 +0000
Subject: [PATCH] Tools.gmk: Exclude systemtap-sdt-devel on s390x & ppc64*
There is no DTrace support on s390x (JDK-8305174) and ppc64
(JDK-8304867) so we don't need the RPMs. They also cause issues with
static linkage of libstdc++.a on s390x. It fails with 'error:
relocation refers to local symbol "" [9], which is defined in a
discarded section'.
Resolves: OPENJDK-3070
---
make/devkit/Tools.gmk | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/make/devkit/Tools.gmk b/make/devkit/Tools.gmk
index 57d48ec5114..07928f69ceb 100644
--- a/make/devkit/Tools.gmk
+++ b/make/devkit/Tools.gmk
@@ -219,9 +219,13 @@ RPM_LIST := \
zlib zlib-devel \
libffi libffi-devel \
fontconfig fontconfig-devel \
- systemtap-sdt-devel \
#
+# Only include SystemTap on supported architectures
+ifeq ($(filter ppc64 ppc64le s390x, $(ARCH)), )
+ RPM_LIST += systemtap-sdt-devel
+endif
+
##########################################################################################
# Define common directories and files
--
2.45.2

@ -0,0 +1,33 @@
From 9766818f55726cea630b432f09cce8f9c17c014d Mon Sep 17 00:00:00 2001
From: Andrew Hughes <gnu.andrew@redhat.com>
Date: Fri, 17 Jan 2025 21:27:58 +0000
Subject: [PATCH] Tools.gmk: Use update repository on RHEL rather than GA
It looks like we were using 7.6 & 7.9 GA repositories rather than
the latest updates.
Resolves: OPENJDK-3589
---
make/devkit/Tools.gmk | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/make/devkit/Tools.gmk b/make/devkit/Tools.gmk
index 07928f69ceb..5b39560ab11 100644
--- a/make/devkit/Tools.gmk
+++ b/make/devkit/Tools.gmk
@@ -64,10 +64,10 @@ ifeq ($(BASE_OS), OL)
endif
else ifeq ($(BASE_OS), RHEL)
ifeq ($(ARCH), aarch64)
- BASE_URL := https://download.eng.brq.redhat.com/rhel-7/rel-eng/RHEL-7/latest-RHEL-ALT-7/compose/Server/$(ARCH)/os/Packages/
+ BASE_URL := https://download.eng.brq.redhat.com/rhel-7/rel-eng/updates/RHEL-ALT-7/latest-RHEL-ALT-7/compose/Server/$(ARCH)/os/Packages/
LINUX_VERSION := RHEL7.6
else
- BASE_URL := https://download.eng.brq.redhat.com/rhel-7/rel-eng/RHEL-7/latest-RHEL-7/compose/Server/$(ARCH)/os/Packages/
+ BASE_URL := https://download.eng.brq.redhat.com/rhel-7/rel-eng/updates/RHEL-7/latest-RHEL-7/compose/Server/$(ARCH)/os/Packages/
LINUX_VERSION := RHEL7.9
endif
else ifeq ($(BASE_OS), Fedora)
--
2.45.2

File diff suppressed because it is too large Load Diff

@ -37,3 +37,10 @@ need to be modified if the version or rpmrelease values are changed in
To reduce the number of RPMs involved, the `fastdebug` and `slowdebug`
builds may be disabled using `--without fastdebug` and `--without
slowdebug`.
By default, the portable build on RHEL also uses a "devkit" (a
toolchain and system libraries) to build. This aids reproducibility
by removing build differences caused by differing system toolchains
and libraries. This dependency can be dropped by defining 'centos' to
a non-zero value (e.g. --define='centos 1') or a devkit can be built
using the `openjdk-devkit.specfile` and associated patches.

@ -116,7 +116,7 @@ index 00000000000..f48fc7f7e80
+ AC_SUBST(NSS_LIBDIR)
+])
diff --git a/make/autoconf/libraries.m4 b/make/autoconf/libraries.m4
index a1fc81564b1..ebad69d9dcf 100644
index 51d4f724c33..feb0bcf3e75 100644
--- a/make/autoconf/libraries.m4
+++ b/make/autoconf/libraries.m4
@@ -35,6 +35,7 @@ m4_include([lib-std.m4])
@ -127,7 +127,7 @@ index a1fc81564b1..ebad69d9dcf 100644
################################################################################
# Determine which libraries are needed for this configuration
@@ -134,6 +135,7 @@ AC_DEFUN_ONCE([LIB_SETUP_LIBRARIES],
@@ -128,6 +129,7 @@ AC_DEFUN_ONCE([LIB_SETUP_LIBRARIES],
LIB_SETUP_X11
LIB_TESTS_SETUP_GTEST
@ -136,10 +136,10 @@ index a1fc81564b1..ebad69d9dcf 100644
BASIC_JDKLIB_LIBS=""
BASIC_JDKLIB_LIBS_TARGET=""
diff --git a/make/autoconf/spec.gmk.in b/make/autoconf/spec.gmk.in
index 0f85917814e..9419562b654 100644
index f6def153c82..4d7abc33427 100644
--- a/make/autoconf/spec.gmk.in
+++ b/make/autoconf/spec.gmk.in
@@ -867,6 +867,11 @@ INSTALL_SYSCONFDIR=@sysconfdir@
@@ -873,6 +873,11 @@ INSTALL_SYSCONFDIR=@sysconfdir@
# Libraries
#
@ -2959,7 +2959,7 @@ index 00000000000..f8d505ca815
+}
\ No newline at end of file
diff --git a/src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/P11Key.java b/src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/P11Key.java
index 6b26297b1b4..7ee5e07756c 100644
index c3b412885a6..0e7ce73b158 100644
--- a/src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/P11Key.java
+++ b/src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/P11Key.java
@@ -37,6 +37,8 @@ import javax.crypto.*;
@ -2981,20 +2981,21 @@ index 6b26297b1b4..7ee5e07756c 100644
private static final String PUBLIC = "public";
private static final String PRIVATE = "private";
private static final String SECRET = "secret";
@@ -401,8 +406,10 @@ abstract class P11Key implements Key, Length {
@@ -401,9 +406,10 @@ abstract class P11Key implements Key, Length {
new CK_ATTRIBUTE(CKA_EXTRACTABLE),
});
- boolean keySensitive = (attrs[0].getBoolean() ||
- attrs[1].getBoolean() || !attrs[2].getBoolean());
- boolean keySensitive =
- (attrs[0].getBoolean() && P11Util.isNSS(session.token)) ||
- attrs[1].getBoolean() || !attrs[2].getBoolean();
+ boolean exportable = plainKeySupportEnabled && !algorithm.equals("DH");
+ boolean keySensitive = (!exportable &&
+ (attrs[0].getBoolean() ||
+ attrs[1].getBoolean() || !attrs[2].getBoolean()));
+ ((attrs[0].getBoolean() && P11Util.isNSS(session.token)) ||
+ attrs[1].getBoolean() || !attrs[2].getBoolean()));
return switch (algorithm) {
case "RSA" -> P11RSAPrivateKeyInternal.of(session, keyID, algorithm,
@@ -454,7 +461,8 @@ abstract class P11Key implements Key, Length {
@@ -455,7 +461,8 @@ abstract class P11Key implements Key, Length {
public String getFormat() {
token.ensureValid();
@ -3004,7 +3005,7 @@ index 6b26297b1b4..7ee5e07756c 100644
return null;
} else {
return "RAW";
@@ -1624,4 +1632,3 @@ final class SessionKeyRef extends PhantomReference<P11Key> {
@@ -1625,4 +1632,3 @@ final class SessionKeyRef extends PhantomReference<P11Key> {
this.clear();
}
}
@ -3204,7 +3205,7 @@ index 5cd6828d293..bae49c4e8a9 100644
debug.println("logout succeeded");
}
diff --git a/src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/Token.java b/src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/Token.java
index 3378409ca1c..7602a92a252 100644
index a6f5f0a8764..9a07c96ca4e 100644
--- a/src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/Token.java
+++ b/src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/Token.java
@@ -33,6 +33,7 @@ import java.lang.ref.*;

File diff suppressed because it is too large Load Diff

@ -1,125 +0,0 @@
commit d0523302416bc6507696f20d1068f16427bcf6b8
Author: Andrew Hughes <gnu.andrew@redhat.com>
Date: Thu Aug 24 01:23:49 2023 +0100
8009550: PlatformPCSC should load versioned so
diff --git a/src/java.base/share/classes/sun/security/util/Debug.java b/src/java.base/share/classes/sun/security/util/Debug.java
index bff273c6548..e5a6b288ff8 100644
--- a/src/java.base/share/classes/sun/security/util/Debug.java
+++ b/src/java.base/share/classes/sun/security/util/Debug.java
@@ -81,6 +81,7 @@ public static void Help()
System.err.println("logincontext login context results");
System.err.println("jca JCA engine class debugging");
System.err.println("keystore KeyStore debugging");
+ System.err.println("pcsc Smartcard library debugging");
System.err.println("policy loading and granting");
System.err.println("provider security provider debugging");
System.err.println("pkcs11 PKCS11 session manager debugging");
diff --git a/src/java.smartcardio/unix/classes/sun/security/smartcardio/PlatformPCSC.java b/src/java.smartcardio/unix/classes/sun/security/smartcardio/PlatformPCSC.java
index bacff32efbc..d9f605ada1e 100644
--- a/src/java.smartcardio/unix/classes/sun/security/smartcardio/PlatformPCSC.java
+++ b/src/java.smartcardio/unix/classes/sun/security/smartcardio/PlatformPCSC.java
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2005, 2021, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2023, Red Hat Inc. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -46,8 +47,13 @@ class PlatformPCSC {
private static final String PROP_NAME = "sun.security.smartcardio.library";
- private static final String LIB1 = "/usr/$LIBISA/libpcsclite.so";
- private static final String LIB2 = "/usr/local/$LIBISA/libpcsclite.so";
+ private static final String[] LIB_TEMPLATES = { "/usr/$LIBISA/libpcsclite.so",
+ "/usr/local/$LIBISA/libpcsclite.so",
+ "/usr/lib/$ARCH-linux-gnu/libpcsclite.so",
+ "/usr/lib/arm-linux-gnueabi/libpcsclite.so",
+ "/usr/lib/arm-linux-gnueabihf/libpcsclite.so",
+ "/usr/lib/$ARCH-kfreebsd-gnu/libpcsclite.so" };
+ private static final String[] LIB_SUFFIXES = { ".1", ".0", "" };
private static final String PCSC_FRAMEWORK = "/System/Library/Frameworks/PCSC.framework/Versions/Current/PCSC";
PlatformPCSC() {
@@ -73,23 +79,38 @@ public Throwable run() {
});
// expand $LIBISA to the system specific directory name for libraries
+ // expand $ARCH to the Debian system architecture in use
private static String expand(String lib) {
int k = lib.indexOf("$LIBISA");
- if (k == -1) {
- return lib;
+ if (k != -1) {
+ String libDir;
+ if ("64".equals(System.getProperty("sun.arch.data.model"))) {
+ // assume Linux convention
+ libDir = "lib64";
+ } else {
+ // must be 32-bit
+ libDir = "lib";
+ }
+ lib = lib.replace("$LIBISA", libDir);
}
- String s1 = lib.substring(0, k);
- String s2 = lib.substring(k + 7);
- String libDir;
- if ("64".equals(System.getProperty("sun.arch.data.model"))) {
- // assume Linux convention
- libDir = "lib64";
- } else {
- // must be 32-bit
- libDir = "lib";
+
+ k = lib.indexOf("$ARCH");
+ if (k != -1) {
+ String arch = System.getProperty("os.arch");
+ lib = lib.replace("$ARCH", getDebianArchitecture(arch));
}
- String s = s1 + libDir + s2;
- return s;
+
+ return lib;
+ }
+
+ private static String getDebianArchitecture(String jdkArch) {
+ return switch (jdkArch) {
+ case "amd64" -> "x86_64";
+ case "ppc" -> "powerpc";
+ case "ppc64" -> "powerpc64";
+ case "ppc64le" -> "powerpc64le";
+ default -> jdkArch;
+ };
}
private static String getLibraryName() throws IOException {
@@ -98,15 +119,18 @@ private static String getLibraryName() throws IOException {
if (lib.length() != 0) {
return lib;
}
- lib = expand(LIB1);
- if (new File(lib).isFile()) {
- // if LIB1 exists, use that
- return lib;
- }
- lib = expand(LIB2);
- if (new File(lib).isFile()) {
- // if LIB2 exists, use that
- return lib;
+
+ for (String template : LIB_TEMPLATES) {
+ for (String suffix : LIB_SUFFIXES) {
+ lib = expand(template) + suffix;
+ if (debug != null) {
+ debug.println("Looking for " + lib);
+ }
+ if (new File(lib).isFile()) {
+ // if library exists, use that
+ return lib;
+ }
+ }
}
// As of macos 11, framework libraries have been removed from the file

@ -0,0 +1,230 @@
# Spec file for building a devkit for OpenJDK builds
# We do not want debug packages
%global debug_package %{nil}
# Arch definitions from java-*-openjdk RPM
%global aarch64 aarch64 arm64 armv8
# x86 is not supported by OpenJDK 17
ExcludeArch: %{ix86}
# New Version-String scheme-style defines
%global featurever 21
%global interimver 0
%global updatever 5
%global patchver 0
%global buildver 11
# Define JDK versions
%global newjavaver %{featurever}.%{interimver}.%{updatever}.%{patchver}
%global javaver %{featurever}
# Strip up to 6 trailing zeros in newjavaver, as the JDK does, to get the correct version used in filenames
%global filever %(svn=%{newjavaver}; for i in 1 2 3 4 5 6 ; do svn=${svn%%.0} ; done; echo ${svn})
# The tag used to create the OpenJDK tarball
%global vcstag jdk-%{filever}+%{buildver}%{?tagsuffix:-%{tagsuffix}}
# Define milestone (EA for pre-releases, GA for releases)
# Release will be (where N is usually a number starting at 1):
# - 0.N%%{?extraver}%%{?dist} for EA releases,
# - N%%{?extraver}{?dist} for GA releases
%global is_ga 1
%if %{is_ga}
%global build_type GA
%global ea_designator ""
%global ea_designator_zip %{nil}
%global extraver %{nil}
%global eaprefix %{nil}
%else
%global build_type EA
%global ea_designator ea
%global ea_designator_zip -%{ea_designator}
%global extraver .%{ea_designator}
%global eaprefix 0.
%endif
# Date devkit RPMs were download
%global rpm_download_date 20250117
Name: openjdk-devkit
Version: 1.0
Release: 9%{?dist}
License: GPLv2
URL: http://openjdk.java.net/
Summary: OpenJDK Devkit
# The source tarball, generated using generate_source_tarball.sh
Source0: https://openjdk-sources.osci.io/openjdk%{featurever}/open%{vcstag}%{ea_designator_zip}.tar.xz
# The buildroot RPMs for each architecture
Source1: devkit-rpms-aarch64-%{rpm_download_date}.tar.xz
Source2: devkit-rpms-ppc64le-%{rpm_download_date}.tar.xz
Source3: devkit-rpms-s390x-%{rpm_download_date}.tar.xz
Source4: devkit-rpms-x86_64-%{rpm_download_date}.tar.xz
# Toolchain sources
Source5: binutils-2.39.tar.gz
Source6: gcc-11.3.0.tar.xz
Source7: gmp-6.2.1.tar.bz2
Source8: mpc-1.2.1.tar.gz
Source9: mpfr-4.1.1.tar.bz2
Source10: gdb-11.2.tar.xz
# Devkit patches; see https://github.com/rh-openjdk/jdk/tree/devkit
# To regenerate, use git format-patch -N jdk21u/master
# Add RHEL RPM URLs and turn off robots
Patch0: 0001-Allow-devkit-to-work-with-RHEL.patch
# Turn off multilib on x86_64
Patch1: 0002-Disable-multilib-on-x86_64.patch
# Improve build logging (OPENJDK-3071)
Patch2: 0003-Log-devkit-build-to-stdout.patch
# Remove .comment sections from sysroot objects
Patch3: 0004-devkit-Remove-.comment-sections-from-sysroot-objects.patch
# Configure binutils with --enable-deterministic-archives
Patch4: 0005-Tools.gmk-Configure-binutils-with-enable-determinist.patch
# Configure gcc with --enable-linker-build-id (OPENJDK-3068)
Patch5: 0006-Tools.gmk-Add-enable-linker-build-id-to-gcc-build.patch
# Exclude systemtap-sdt-devel on s390x & ppc64* (OPENJDK-3070)
Patch6: 0007-Tools.gmk-Exclude-systemtap-sdt-devel-on-s390x-ppc64.patch
# Use update repository on RHEL rather than GA (OPENJDK-3589)
Patch7: 0008-Tools.gmk-Use-update-repository-on-RHEL-rather-than-.patch
BuildRequires: make autoconf automake libtool gcc gcc-c++ wget glibc-devel texinfo tar bison
# Setup variables to reference correct sources
%ifarch %{aarch64}
%global rpmtarball %{SOURCE1}
%endif
%ifarch ppc64le
%global rpmtarball %{SOURCE2}
%endif
%ifarch s390x
%global rpmtarball %{SOURCE3}
%endif
%ifarch x86_64
%global rpmtarball %{SOURCE4}
%endif
%description
OpenJDK Devkit
%prep
# Unpack OpenJDK sources only in build directory
%setup -q -T -c -a 0
# This syntax is deprecated:
# %patchN [...]
# and should be replaced with:
# %patch -PN [...]
# For example:
# %patch1001 -p1
# becomes:
# %patch -P1001 -p1
# The replacement format suggested by recent (circa Fedora 38) RPM
# deprecation messages:
# %patch N [...]
# is not backward-compatible with prior (circa RHEL-8) versions of
# rpmbuild.
pushd jdk-*
%patch -P0 -p1
%patch -P1 -p1
%patch -P2 -p1
%patch -P3 -p1
%patch -P4 -p1
%patch -P5 -p1
%patch -P6 -p1
%patch -P7 -p1
popd
mkdir -p devkit/download
pushd devkit/download
tar -xJf %{rpmtarball}
ln -s %{SOURCE5}
ln -s %{SOURCE6}
ln -s %{SOURCE7}
ln -s %{SOURCE8}
ln -s %{SOURCE9}
ln -s %{SOURCE10}
%build
devkit_dir=$(pwd)/devkit
today=$(date +%Y%m%d)
arch=%{_target_cpu}
result_name=${arch}-linux-gnu-to-${arch}-linux-gnu
result_path=result/${result_name}
pushd jdk-*/make/devkit
# Build devkit first using the native toolchain,
# than again using itself
for variant in bootstrap product ; do
if [ -e ${devkit_dir}-bootstrap/${result_path}/bin/gcc ] ; then
ROOTDIR=${devkit_dir}-bootstrap/${result_path};
BINDIR=${ROOTDIR}/bin;
TOOLS="CC=${BINDIR}/gcc CXX=${BINDIR}/g++ LD=${BINDIR}/ld \
AR=${BINDIR}/ar AS=${BINDIR}/as RANLIB=${BINDIR}/ranlib \
OBJDUMP=${BINDIR}/objdump"
LIBPATH="${ROOTDIR}/lib64:${ROOTDIR}/lib"
else
TOOLS="CC=$(which gcc) CXX=$(which g++) LD=$(which ld) \
AR=$(which ar) AS=$(which as) RANLIB=$(which ranlib) \
OBJDUMP=$(which objdump)"
fi
mkdir -p ${devkit_dir}-${variant}
ln -s ${devkit_dir}/download ${devkit_dir}-${variant}
LD_LIBRARY_PATH="${LIBPATH}" \
make -f Tools.gmk all ${TOOLS} \
HOST=${arch}-linux-gnu \
BUILD=${arch}-linux-gnu \
RESULT=${devkit_dir}-${variant}/result \
OUTPUT_ROOT=${devkit_dir}-${variant} \
TARGET=${arch}-linux-gnu \
PREFIX=${devkit_dir}-${variant}/${result_path} \
BASE_OS=RHEL
done
make -r -f Tars.gmk \
SRC_DIR=${devkit_dir}-product/${result_path} \
TAR_FILE=${devkit_dir}-product/result/sdk-${result_name}-${today}.tar.gz
popd
%install
mkdir -p %{buildroot}%{_datadir}/%{name}
cp -p devkit-product/result/*.tar.gz %{buildroot}%{_datadir}/%{name}/
%files
%{_datadir}/%{name}
%changelog
* Fri Jan 17 2025 Andrew Hughes <gnu.andrew@redhat.com> - 1.0-9
- Update devkit RPMs to latest updates
- Exclude SystemTap RPMs from s390x and ppc64le
- Add a date stamp to the RPM bundles
- Resolves: OPENJDK-3070
= Resolves: OPENJDK-3589
* Wed Nov 27 2024 Andrew Hughes <gnu.andrew@redhat.com> - 1.0-8
- Add --enable-linker-build-id to gcc build
- Resolves: OPENJDK-3068
* Wed Oct 30 2024 Andrew Hughes <gnu.andrew@redhat.com> - 1.0-7
- Improve build logging by also writing to stdout
- Cleanup patches and rebase on jdk-21.0.5-ga
- Drop JDK-8323671 patch which is upstream as of 21.0.3+3
- Resolves: OPENJDK-3071
* Tue Jun 11 2024 Andrew Hughes <gnu.andrew@redhat.com> - 1.0-6
- Fix typo where 'as' binary is accidentally capitalised in AS=<path>/as
* Wed May 01 2024 Andrew Hughes <gnu.andrew@redhat.com> - 1.0-5
- Bootstrap the devkit, building it again with itself
* Mon Apr 08 2024 Andrew Hughes <gnu.andrew@redhat.com> - 1.0-4
- Include Thomas' patches to drop .comment sections and build binutils with deterministic archives
- Use backward-compatible patch syntax
* Tue Feb 06 2024 Andrew Hughes <gnu.andrew@redhat.com> - 1.0-3
- Include JDK-8323671 patch so the binaries don't contain the full source path
* Fri Dec 08 2023 Andrew Hughes <gnu.andrew@redhat.com> - 1.0-2
- Try to turn off multlib on x86_64 as we don't have the dependencies for it
* Tue Dec 05 2023 Andrew Hughes <gnu.andrew@redhat.com> - 1.0-1
- Create RHEL 7 based devkit for building OpenJDK

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save