From 9ea2d49a85dac480dd85d851228743df971144cc Mon Sep 17 00:00:00 2001 From: Andrew Hughes Date: Thu, 8 May 2025 19:07:47 +0100 Subject: [PATCH 1/2] Add local version of JDK-8351500 for early interim release before 21.0.8 - Resolves: RHEL-90310 --- java-21-openjdk.spec | 14 +- jdk8351500-numa_migration_crashes.patch | 274 ++++++++++++++++++++++++ 2 files changed, 286 insertions(+), 2 deletions(-) create mode 100644 jdk8351500-numa_migration_crashes.patch diff --git a/java-21-openjdk.spec b/java-21-openjdk.spec index 1506789..a293456 100644 --- a/java-21-openjdk.spec +++ b/java-21-openjdk.spec @@ -366,9 +366,9 @@ %global top_level_dir_name %{vcstag} %global top_level_dir_name_backup %{top_level_dir_name}-backup %global buildver 6 -%global rpmrelease 1 +%global rpmrelease 2 # Settings used by the portable build -%global portablerelease 1 +%global portablerelease 2 # Portable suffix differs between RHEL and CentOS %if 0%{?centos} == 0 %global portablesuffix %{?pkgos:el7_9}%{!?pkgos:el8} @@ -1337,6 +1337,10 @@ Patch1001: fips-%{featurever}u-%{fipsver}.patch # ############################################# +# JDK-8351500: G1: NUMA migrations cause crashes in region allocation +# Upstream in 21.0.8+1 +Patch2001: jdk8351500-numa_migration_crashes.patch + ############################################# # # Portable build specific patches @@ -1813,6 +1817,8 @@ sh %{SOURCE12} %{top_level_dir_name} pushd %{top_level_dir_name} # Add crypto policy and FIPS support %patch -P1001 -p1 +# Add early JDK-8351500 +%patch -P2001 -p1 popd # openjdk # The OpenJDK version file includes the current @@ -2461,6 +2467,10 @@ exit 0 %endif %changelog +* Thu May 08 2025 Andrew Hughes - 1:21.0.7.0.6-2 +- Add local version of JDK-8351500 for early interim release before 21.0.8 +- Resolves: RHEL-90310 + * Fri Apr 11 2025 Andrew Hughes - 1:21.0.7.0.6-1 - Update to jdk-21.0.7+6 (GA) - Update release notes to 21.0.7+6 diff --git a/jdk8351500-numa_migration_crashes.patch b/jdk8351500-numa_migration_crashes.patch new file mode 100644 index 0000000..34af731 --- /dev/null +++ b/jdk8351500-numa_migration_crashes.patch @@ -0,0 +1,274 @@ +commit c5c0ac6140ec5241d949bc66f54469bfa516c60c +Author: Thomas Stuefe +Date: Thu Mar 27 17:37:44 2025 +0000 + + 8351500: G1: NUMA migrations cause crashes in region allocation + + Reviewed-by: sjohanss + Backport-of: 37ec796255ae857588a5c7e0d572407dd81cbec9 + +diff --git a/src/hotspot/share/gc/g1/g1Allocator.cpp b/src/hotspot/share/gc/g1/g1Allocator.cpp +index 5b33e24de75..23c7ee839d8 100644 +--- a/src/hotspot/share/gc/g1/g1Allocator.cpp ++++ b/src/hotspot/share/gc/g1/g1Allocator.cpp +@@ -212,10 +212,10 @@ size_t G1Allocator::used_in_alloc_regions() { + + + HeapWord* G1Allocator::par_allocate_during_gc(G1HeapRegionAttr dest, +- size_t word_size, +- uint node_index) { ++ uint node_index, ++ size_t word_size) { + size_t temp = 0; +- HeapWord* result = par_allocate_during_gc(dest, word_size, word_size, &temp, node_index); ++ HeapWord* result = par_allocate_during_gc(dest, node_index, word_size, word_size, &temp); + assert(result == nullptr || temp == word_size, + "Requested " SIZE_FORMAT " words, but got " SIZE_FORMAT " at " PTR_FORMAT, + word_size, temp, p2i(result)); +@@ -223,13 +223,13 @@ HeapWord* G1Allocator::par_allocate_during_gc(G1HeapRegionAttr dest, + } + + HeapWord* G1Allocator::par_allocate_during_gc(G1HeapRegionAttr dest, ++ uint node_index, + size_t min_word_size, + size_t desired_word_size, +- size_t* actual_word_size, +- uint node_index) { ++ size_t* actual_word_size) { + switch (dest.type()) { + case G1HeapRegionAttr::Young: +- return survivor_attempt_allocation(min_word_size, desired_word_size, actual_word_size, node_index); ++ return survivor_attempt_allocation(node_index, min_word_size, desired_word_size, actual_word_size); + case G1HeapRegionAttr::Old: + return old_attempt_allocation(min_word_size, desired_word_size, actual_word_size); + default: +@@ -238,10 +238,10 @@ HeapWord* G1Allocator::par_allocate_during_gc(G1HeapRegionAttr dest, + } + } + +-HeapWord* G1Allocator::survivor_attempt_allocation(size_t min_word_size, ++HeapWord* G1Allocator::survivor_attempt_allocation(uint node_index, ++ size_t min_word_size, + size_t desired_word_size, +- size_t* actual_word_size, +- uint node_index) { ++ size_t* actual_word_size) { + assert(!_g1h->is_humongous(desired_word_size), + "we should not be seeing humongous-size allocations in this path"); + +@@ -396,10 +396,10 @@ HeapWord* G1PLABAllocator::allocate_direct_or_new_plab(G1HeapRegionAttr dest, + + size_t actual_plab_size = 0; + HeapWord* buf = _allocator->par_allocate_during_gc(dest, ++ node_index, + required_in_plab, + plab_word_size, +- &actual_plab_size, +- node_index); ++ &actual_plab_size); + + assert(buf == nullptr || ((actual_plab_size >= required_in_plab) && (actual_plab_size <= plab_word_size)), + "Requested at minimum %zu, desired %zu words, but got %zu at " PTR_FORMAT, +@@ -418,7 +418,7 @@ HeapWord* G1PLABAllocator::allocate_direct_or_new_plab(G1HeapRegionAttr dest, + *plab_refill_failed = true; + } + // Try direct allocation. +- HeapWord* result = _allocator->par_allocate_during_gc(dest, word_sz, node_index); ++ HeapWord* result = _allocator->par_allocate_during_gc(dest, node_index, word_sz); + if (result != nullptr) { + plab_data->_direct_allocated += word_sz; + plab_data->_num_direct_allocations++; +diff --git a/src/hotspot/share/gc/g1/g1Allocator.hpp b/src/hotspot/share/gc/g1/g1Allocator.hpp +index 32f37778a18..b2828d64d87 100644 +--- a/src/hotspot/share/gc/g1/g1Allocator.hpp ++++ b/src/hotspot/share/gc/g1/g1Allocator.hpp +@@ -78,19 +78,16 @@ class G1Allocator : public CHeapObj { + inline OldGCAllocRegion* old_gc_alloc_region(); + + // Allocation attempt during GC for a survivor object / PLAB. +- HeapWord* survivor_attempt_allocation(size_t min_word_size, ++ HeapWord* survivor_attempt_allocation(uint node_index, ++ size_t min_word_size, + size_t desired_word_size, +- size_t* actual_word_size, +- uint node_index); ++ size_t* actual_word_size); + + // Allocation attempt during GC for an old object / PLAB. + HeapWord* old_attempt_allocation(size_t min_word_size, + size_t desired_word_size, + size_t* actual_word_size); + +- // Node index of current thread. +- inline uint current_node_index() const; +- + public: + G1Allocator(G1CollectedHeap* heap); + ~G1Allocator(); +@@ -110,18 +107,22 @@ class G1Allocator : public CHeapObj { + void abandon_gc_alloc_regions(); + bool is_retained_old_region(HeapRegion* hr); + ++ // Node index of current thread. ++ inline uint current_node_index() const; ++ + // Allocate blocks of memory during mutator time. + + // Attempt allocation in the current alloc region. +- inline HeapWord* attempt_allocation(size_t min_word_size, ++ inline HeapWord* attempt_allocation(uint node_index, ++ size_t min_word_size, + size_t desired_word_size, + size_t* actual_word_size); + + // This is to be called when holding an appropriate lock. It first tries in the + // current allocation region, and then attempts an allocation using a new region. +- inline HeapWord* attempt_allocation_locked(size_t word_size); ++ inline HeapWord* attempt_allocation_locked(uint node_index, size_t word_size); + +- inline HeapWord* attempt_allocation_force(size_t word_size); ++ inline HeapWord* attempt_allocation_force(uint node_index, size_t word_size); + + size_t unsafe_max_tlab_alloc(); + size_t used_in_alloc_regions(); +@@ -131,14 +132,15 @@ class G1Allocator : public CHeapObj { + // heap, and then allocate a block of the given size. The block + // may not be a humongous - it must fit into a single heap region. + HeapWord* par_allocate_during_gc(G1HeapRegionAttr dest, +- size_t word_size, +- uint node_index); ++ uint node_index, ++ size_t word_size ++ ); + + HeapWord* par_allocate_during_gc(G1HeapRegionAttr dest, ++ uint node_index, + size_t min_word_size, + size_t desired_word_size, +- size_t* actual_word_size, +- uint node_index); ++ size_t* actual_word_size); + }; + + // Manages the PLABs used during garbage collection. Interface for allocation from PLABs. +diff --git a/src/hotspot/share/gc/g1/g1Allocator.inline.hpp b/src/hotspot/share/gc/g1/g1Allocator.inline.hpp +index 13ae9b9bbbd..7e516b48faa 100644 +--- a/src/hotspot/share/gc/g1/g1Allocator.inline.hpp ++++ b/src/hotspot/share/gc/g1/g1Allocator.inline.hpp +@@ -49,11 +49,10 @@ inline OldGCAllocRegion* G1Allocator::old_gc_alloc_region() { + return &_old_gc_alloc_region; + } + +-inline HeapWord* G1Allocator::attempt_allocation(size_t min_word_size, ++inline HeapWord* G1Allocator::attempt_allocation(uint node_index, ++ size_t min_word_size, + size_t desired_word_size, + size_t* actual_word_size) { +- uint node_index = current_node_index(); +- + HeapWord* result = mutator_alloc_region(node_index)->attempt_retained_allocation(min_word_size, desired_word_size, actual_word_size); + if (result != nullptr) { + return result; +@@ -62,8 +61,7 @@ inline HeapWord* G1Allocator::attempt_allocation(size_t min_word_size, + return mutator_alloc_region(node_index)->attempt_allocation(min_word_size, desired_word_size, actual_word_size); + } + +-inline HeapWord* G1Allocator::attempt_allocation_locked(size_t word_size) { +- uint node_index = current_node_index(); ++inline HeapWord* G1Allocator::attempt_allocation_locked(uint node_index, size_t word_size) { + HeapWord* result = mutator_alloc_region(node_index)->attempt_allocation_locked(word_size); + + assert(result != nullptr || mutator_alloc_region(node_index)->get() == nullptr, +@@ -71,8 +69,7 @@ inline HeapWord* G1Allocator::attempt_allocation_locked(size_t word_size) { + return result; + } + +-inline HeapWord* G1Allocator::attempt_allocation_force(size_t word_size) { +- uint node_index = current_node_index(); ++inline HeapWord* G1Allocator::attempt_allocation_force(uint node_index, size_t word_size) { + return mutator_alloc_region(node_index)->attempt_allocation_force(word_size); + } + +diff --git a/src/hotspot/share/gc/g1/g1CollectedHeap.cpp b/src/hotspot/share/gc/g1/g1CollectedHeap.cpp +index 9b6b22a29e7..a43e45c4afa 100644 +--- a/src/hotspot/share/gc/g1/g1CollectedHeap.cpp ++++ b/src/hotspot/share/gc/g1/g1CollectedHeap.cpp +@@ -401,7 +401,7 @@ G1CollectedHeap::mem_allocate(size_t word_size, + return attempt_allocation(word_size, word_size, &dummy); + } + +-HeapWord* G1CollectedHeap::attempt_allocation_slow(size_t word_size) { ++HeapWord* G1CollectedHeap::attempt_allocation_slow(uint node_index, size_t word_size) { + ResourceMark rm; // For retrieving the thread names in log messages. + + // Make sure you read the note in attempt_allocation_humongous(). +@@ -427,7 +427,7 @@ HeapWord* G1CollectedHeap::attempt_allocation_slow(size_t word_size) { + + // Now that we have the lock, we first retry the allocation in case another + // thread changed the region while we were waiting to acquire the lock. +- result = _allocator->attempt_allocation_locked(word_size); ++ result = _allocator->attempt_allocation_locked(node_index, word_size); + if (result != nullptr) { + return result; + } +@@ -438,7 +438,7 @@ HeapWord* G1CollectedHeap::attempt_allocation_slow(size_t word_size) { + if (GCLocker::is_active_and_needs_gc() && policy()->can_expand_young_list()) { + // No need for an ergo message here, can_expand_young_list() does this when + // it returns true. +- result = _allocator->attempt_allocation_force(word_size); ++ result = _allocator->attempt_allocation_force(node_index, word_size); + if (result != nullptr) { + return result; + } +@@ -495,7 +495,7 @@ HeapWord* G1CollectedHeap::attempt_allocation_slow(size_t word_size) { + // follow-on attempt will be at the start of the next loop + // iteration (after taking the Heap_lock). + size_t dummy = 0; +- result = _allocator->attempt_allocation(word_size, word_size, &dummy); ++ result = _allocator->attempt_allocation(node_index, word_size, word_size, &dummy); + if (result != nullptr) { + return result; + } +@@ -636,11 +636,14 @@ inline HeapWord* G1CollectedHeap::attempt_allocation(size_t min_word_size, + assert(!is_humongous(desired_word_size), "attempt_allocation() should not " + "be called for humongous allocation requests"); + +- HeapWord* result = _allocator->attempt_allocation(min_word_size, desired_word_size, actual_word_size); ++ // Fix NUMA node association for the duration of this allocation ++ const uint node_index = _allocator->current_node_index(); ++ ++ HeapWord* result = _allocator->attempt_allocation(node_index, min_word_size, desired_word_size, actual_word_size); + + if (result == nullptr) { + *actual_word_size = desired_word_size; +- result = attempt_allocation_slow(desired_word_size); ++ result = attempt_allocation_slow(node_index, desired_word_size); + } + + assert_heap_not_locked(); +@@ -778,8 +781,11 @@ HeapWord* G1CollectedHeap::attempt_allocation_at_safepoint(size_t word_size, + assert(!_allocator->has_mutator_alloc_region() || !expect_null_mutator_alloc_region, + "the current alloc region was unexpectedly found to be non-null"); + ++ // Fix NUMA node association for the duration of this allocation ++ const uint node_index = _allocator->current_node_index(); ++ + if (!is_humongous(word_size)) { +- return _allocator->attempt_allocation_locked(word_size); ++ return _allocator->attempt_allocation_locked(node_index, word_size); + } else { + HeapWord* result = humongous_obj_allocate(word_size); + if (result != nullptr && policy()->need_to_start_conc_mark("STW humongous allocation")) { +diff --git a/src/hotspot/share/gc/g1/g1CollectedHeap.hpp b/src/hotspot/share/gc/g1/g1CollectedHeap.hpp +index 88f4f680800..6afaeb6e6d4 100644 +--- a/src/hotspot/share/gc/g1/g1CollectedHeap.hpp ++++ b/src/hotspot/share/gc/g1/g1CollectedHeap.hpp +@@ -453,7 +453,7 @@ class G1CollectedHeap : public CollectedHeap { + // Second-level mutator allocation attempt: take the Heap_lock and + // retry the allocation attempt, potentially scheduling a GC + // pause. This should only be used for non-humongous allocations. +- HeapWord* attempt_allocation_slow(size_t word_size); ++ HeapWord* attempt_allocation_slow(uint node_index, size_t word_size); + + // Takes the Heap_lock and attempts a humongous allocation. It can + // potentially schedule a GC pause. From a8d000dc5177d3ad32f6554cc5523b21a1ec63e3 Mon Sep 17 00:00:00 2001 From: Andrew Hughes Date: Thu, 8 May 2025 23:59:47 +0100 Subject: [PATCH 2/2] Sync the copy of the portable specfile with the latest update - Related: RHEL-90310 --- java-21-openjdk-portable.specfile | 62 ++++++++++++++++++++++--------- java-21-openjdk.spec | 1 + 2 files changed, 45 insertions(+), 18 deletions(-) diff --git a/java-21-openjdk-portable.specfile b/java-21-openjdk-portable.specfile index 1d56ee3..da503f7 100644 --- a/java-21-openjdk-portable.specfile +++ b/java-21-openjdk-portable.specfile @@ -325,7 +325,7 @@ # New Version-String scheme-style defines %global featurever 21 %global interimver 0 -%global updatever 6 +%global updatever 7 %global patchver 0 # buildjdkver is usually same as %%{featurever}, # but in time of bootstrap of next jdk, it is featurever-1, @@ -341,7 +341,7 @@ %global lts_designator_zip "" %endif # JDK to use for bootstrapping -%global bootjdk /usr/lib/jvm/java-%{buildjdkver}-openjdk +%global bootjdk /usr/lib/jvm/java-%{featurever}-openjdk # Define whether to use the bootstrap JDK directly or with a fresh libjvm.so # This will only work where the bootstrap JDK is the same major version # as the JDK being built @@ -375,7 +375,7 @@ # Define IcedTea version used for SystemTap tapsets and desktop file %global icedteaver 6.0.0pre00-c848b93a8598 # Define current Git revision for the FIPS support patches -%global fipsver 0a42e29b391 +%global fipsver 9203d50836c # Define JDK versions %global newjavaver %{featurever}.%{interimver}.%{updatever}.%{patchver} %global javaver %{featurever} @@ -389,8 +389,8 @@ %global origin_nice OpenJDK %global top_level_dir_name %{vcstag} %global top_level_dir_name_backup %{top_level_dir_name}-backup -%global buildver 7 -%global rpmrelease 1 +%global buildver 6 +%global rpmrelease 2 #%%global tagsuffix %%{nil} # Priority must be 8 digits in total; up to openjdk 1.8, we were using 18..... so when we moved to 11, we had to add another digit %if %is_system_jdk @@ -673,7 +673,9 @@ Patch1001: fips-%{featurever}u-%{fipsver}.patch # ############################################# -# Currently empty +# JDK-8351500: G1: NUMA migrations cause crashes in region allocation +# Upstream in 21.0.8+1 +Patch2001: jdk8351500-numa_migration_crashes.patch ############################################# # @@ -727,7 +729,7 @@ BuildRequires: zip BuildRequires: tar BuildRequires: unzip BuildRequires: javapackages-filesystem -BuildRequires: java-%{buildjdkver}-%{origin}%{?pkgos:-%{pkgos}}-devel +BuildRequires: java-%{featurever}-%{origin}%{?pkgos:-%{pkgos}}-devel # Zero-assembler build requirement %ifarch %{zero_arches} BuildRequires: libffi-devel @@ -986,6 +988,8 @@ sh %{SOURCE12} %{top_level_dir_name} pushd %{top_level_dir_name} # Add crypto policy and FIPS support %patch -P1001 -p1 +# Add early JDK-8351500 +%patch -P2001 -p1 popd # openjdk @@ -1935,6 +1939,17 @@ done %endif %changelog +* Thu May 08 2025 Andrew Hughes - 1:21.0.7.0.6-2 +- Add local version of JDK-8351500 for early interim release before 21.0.8 +- Resolves: OPENJDK-3679 + +* Fri Apr 11 2025 Andrew Hughes - 1:21.0.7.0.6-1 +- Update to jdk-21.0.7+6 (GA) +- Update release notes to 21.0.7+6 +- Rebase FIPS support against 21.0.7+5 +- ** This tarball is embargoed until 2025-04-15 @ 1pm PT. ** +- Resolves: OPENJDK-3789 + * Sat Jan 11 2025 Andrew Hughes - 1:21.0.6.0.7-1 - Update to jdk-21.0.6+7 (GA) - Update release notes to 21.0.6+7 @@ -2005,7 +2020,7 @@ done - Update release notes to 21.0.4+5 - Move unstripped, misc and doc tarball handling into normal build / no suffix blocks - Limit Java only tests to one architecture using jdk_test_arch -- Drop unneeded tzdata-java build dependency following 3e3cf8fa2df7bac2f6a60a0ddd596ec39228a3e1 +- Drop unneeded tzdata-java build dependency following f854bb3955fb57bba4e83d09813e9cfd0e81079e - Resolves: OPENJDK-3133 - Resolves: OPENJDK-3237 - Resolves: OPENJDK-3182 @@ -2024,6 +2039,7 @@ done - Update to jdk-21.0.3+9 (GA) - Update release notes to 21.0.3+9 - Switch to GA mode. +- Update buildjdkver to match the featurever - ** This tarball is embargoed until 2024-04-16 @ 1pm PT. ** * Thu Apr 04 2024 Andrew Hughes - 1:21.0.3.0.7-0.1.ea @@ -2118,6 +2134,10 @@ done - Update release notes to 21.0.2+13 - Bump libpng version to 1.6.40 following JDK-8316030 - Bump HarfBuzz version to 8.2.2 following JDK-8313643 +- pandoc is only available on RHEL/CentOS 8 +- Check for CentOS being defined to determine use of devkit +- Set buildjdkver to 20 until OpenJDK 21 is available in the buildroot +- Use featurever for JDK build dependencies * Mon Mar 11 2024 Andrew Hughes - 1:21.0.1.0.12-2 - Use a devkit to build on architectures where we have one (s390x, aarch64, ppc64le, x86_64) @@ -2127,6 +2147,7 @@ done - Use system gdb for both builds as devkit version fails (needs devkit libraries, then JDK segfaults with them) - Filter out annobin plugin when using the devkit - Drop static libstdc++ build dependency on devkit builds as it should come from the devkit +- Disable devkit build on CentOS where it is unavailable - Introduce tar_opts to avoid repetition of lengthy tar creation options * Thu Feb 08 2024 Thomas Fitzsimmons - 1:21.0.1.0.12-2 @@ -2148,7 +2169,7 @@ done * Fri Oct 27 2023 Andrew Hughes - 1:21.0.0.0.35-4 - Rebuild jmods using the stripped binaries in release builds - Make sure the unstripped JDK is customised by the installjdk function -- Resolves: OPENJDK-1974 +- Resolves: OPENJDK-3224 * Thu Oct 26 2023 Andrew Hughes - 1:21.0.0.0.35-3 - Re-enable SystemTap support and perform only substitutions possible without final NVR available @@ -2160,6 +2181,7 @@ done * Thu Aug 24 2023 Andrew Hughes - 1:21.0.0.0.35-2 - Update documentation (README.md, add missing JEP to release notes) - Replace alt-java patch with a binary separate from the JDK +- Adapt alt-java test to new binary where there is always a set_speculation function - Drop stale patches that are of little use any more: - * nss.cfg has been disabled since early PKCS11 work and long superseded by FIPS work - * No accessibility subpackage to warrant RH1648242 patch any more @@ -2183,27 +2205,31 @@ done - Replace smoke test files used in the staticlibs test, as fdlibm was removed by JDK-8303798 - Related: rhbz#2192749 -* Wed Aug 16 2023 Andrew Hughes - 1:20.0.0.0.36-1 +* Wed Aug 16 2023 Andrew Hughes - 1:20.0.2.0.9-1 - Update to jdk-20.0.2+9 - Update release notes to 20.0.2+9 - Update system crypto policy & FIPS patch from new fips-20u tree - Update generate_tarball.sh ICEDTEA_VERSION - Update CLDR reference data following update to 42 (Rocky Mountain-Normalzeit => Rocky-Mountain-Normalzeit) -- Related: rhbz#2192749 -* Wed Aug 16 2023 Jiri Vanek - 1:20.0.0.0.36-1 +* Wed Aug 16 2023 Jiri Vanek - 1:20.0.2.0.9-1 - Dropped JDK-8295447, JDK-8296239 & JDK-8299439 patches now upstream - Adapted rh1750419-redhat_alt_java.patch -- Related: rhbz#2192749 -* Tue Aug 15 2023 Andrew Hughes - 1:19.0.1.0.10-1 +* Tue Aug 15 2023 Andrew Hughes - 1:19.0.2.0.7-2 +- Bump rpmrelease to rebuild for CentOS 9 + +* Tue Aug 15 2023 Andrew Hughes - 1:19.0.2.0.7-1 - Update to jdk-19.0.2 release - Update release notes to 19.0.2 - Rebase FIPS patches from fips-19u branch - Remove references to sample directory removed by JDK-8284999 - Add local patch JDK-8295447 (javac NPE) which was accepted into 19u upstream but not in the GA tag - Add local patches for JDK-8296239 & JDK-8299439 (Croatia Euro update) which are present in 8u, 11u & 17u releases -- Related: rhbz#2192749 +- Switch buildjdkver to java-21-openjdk + +* Thu Aug 10 2023 Andrew Hughes - 1:18.0.2.0.9-2 +- Bump rpmrelease to rebuild for CentOS 9 * Thu Aug 10 2023 Andrew Hughes - 1:18.0.2.0.9-1 - Update to jdk-18.0.2 release @@ -2213,14 +2239,14 @@ done - Rebase RH1648249 nss.cfg patch so it applies after the FIPS patch - Automatically turn off building a fresh HotSpot first, if the bootstrap JDK is not the same major version as that being built - Drop tzdata patches added for 17.0.7 which will eventually appear in the upstream tarball when we reach OpenJDK 21 -- Switch bootjdkver to java-21-openjdk - Disable tzdata tests until we are on the latest JDK and things are back in sync -- Related: rhbz#2192749 * Thu Aug 10 2023 Petra Alice Mikova - 1:18.0.0.0.37-1 - Update to ea version of jdk18 - Adjust rh1684077-openjdk_should_depend_on_pcsc-lite-libs_instead_of_pcsc-lite-devel.patch -- Related: rhbz#2192749 + +* Mon May 15 2023 Andrew Hughes - 1:17.0.7.0.7-3 +- Bump rpmrelease to rebuild for CentOS 9 * Mon May 15 2023 Andrew Hughes - 1:17.0.7.0.7-2 - Create java-21-openjdk-portable package based on java-17-openjdk-portable diff --git a/java-21-openjdk.spec b/java-21-openjdk.spec index a293456..79f0a0c 100644 --- a/java-21-openjdk.spec +++ b/java-21-openjdk.spec @@ -2469,6 +2469,7 @@ exit 0 %changelog * Thu May 08 2025 Andrew Hughes - 1:21.0.7.0.6-2 - Add local version of JDK-8351500 for early interim release before 21.0.8 +- Sync the copy of the portable specfile with the latest update - Resolves: RHEL-90310 * Fri Apr 11 2025 Andrew Hughes - 1:21.0.7.0.6-1