From c40cb590e91d1416c02d8b918b34d0e97363b03e Mon Sep 17 00:00:00 2001 From: Andrew Hughes Date: Fri, 7 Nov 2025 00:43:27 +0000 Subject: [PATCH 01/12] Update to jdk-24.0.2+12 (GA) - Update release notes with features of JDK 24 Related: RHEL-120553 --- .gitignore | 1 + NEWS | 270 ++++++++++++++++++++++++++++++++++++++----- java-25-openjdk.spec | 9 +- sources | 2 +- 4 files changed, 251 insertions(+), 31 deletions(-) diff --git a/.gitignore b/.gitignore index 552f25c..8769ea7 100644 --- a/.gitignore +++ b/.gitignore @@ -40,3 +40,4 @@ /openjdk-21.0.8+9.tar.xz /openjdk-22.0.2+9.tar.xz /openjdk-23.0.2+7.tar.xz +/openjdk-24.0.2+12.tar.xz diff --git a/NEWS b/NEWS index 3913688..892de7e 100644 --- a/NEWS +++ b/NEWS @@ -3,7 +3,7 @@ Key: JDK-X - https://bugs.openjdk.java.net/browse/JDK-X CVE-XXXX-YYYY: https://cve.mitre.org/cgi-bin/cvename.cgi?name=XXXX-YYYY -New in release OpenJDK 23.0.0 (2024-09-17): +New in release OpenJDK 24.0.0 (2025-03-18): =========================================== Major changes are listed below. Some changes may have been backported to earlier releases following their first appearance in OpenJDK 22 @@ -19,6 +19,7 @@ Flexible Constructor Bodies ============================ https://openjdk.org/jeps/447 https://openjdk.org/jeps/482 +https://openjdk.org/jeps/492 In constructors in the Java programming language, allow statements to appear before an explicit constructor invocation, i.e., super(..) or @@ -29,9 +30,10 @@ methods are overridden. This was introduced as a preview language feature (http://openjdk.java.net/jeps/12) in OpenJDK 22 (JEP 447) under the -name "Statements before super(...)". It reaches a second preview in +name "Statements before super(...)". It reached a second preview in OpenJDK 23 (JEP 482) with the addition of allowing fields to be -initialized before invoking another constructor. +initialized before invoking another constructor. It reaches a third +preview in OpenJDK 24 (JEP 492). Unnamed Patterns and Variables ============================== @@ -49,17 +51,20 @@ This feature is now final. It was a preview feature Primitive Types in Patterns, instanceof, and switch =================================================== https://openjdk.org/jeps/455 +https://openjdk.org/jeps/488 Enhance pattern matching by allowing primitive type patterns in all pattern contexts, and extend instanceof and switch to work with all primitive types. This is a preview language feature (http://openjdk.java.net/jeps/12) -introduced in OpenJDK 23 (JEP 455). +introduced in OpenJDK 23 (JEP 455) and having its second preview in +OpenJDK 24 (JEP 488). Module Import Declarations ========================== https://openjdk.org/jeps/476 +https://openjdk.org/jeps/494 Enhance the Java programming language with the ability to succinctly import all of the packages exported by a module. This simplifies the @@ -67,7 +72,8 @@ reuse of modular libraries, but does not require the importing code to be in a module itself. This is a preview language feature (http://openjdk.java.net/jeps/12) -introduced in OpenJDK 23 (JEP 476). +introduced in OpenJDK 23 (JEP 476) and reaching a second preview in +OpenJDK 24 (JEP 494). Library Features ================ @@ -98,17 +104,31 @@ java-17-openjdk). OpenJDK 18 saw a second round of incubation (JEP preview took place in OpenJDK 20 (JEP 434) and a third and final preview in OpenJDK 21 (JEP 442). +Prepare to Restrict the Use of JNI +================================== +https://openjdk.org/jeps/472 + +Issue warnings about uses of the Java Native Interface (JNI) and +adjust the Foreign Function & Memory (FFM) API to issue warnings in a +consistent manner. All such warnings aim to prepare developers for a +future release that ensures integrity by default by uniformly +restricting JNI and the FFM API. Application developers can avoid both +current warnings and future restrictions by selectively enabling these +interfaces where essential using the --enable-native-access +command-line option. + Class-File API ============== https://openjdk.org/jeps/457 https://openjdk.org/jeps/466 +https://openjdk.org/jeps/484 Provide a standard API for parsing, generating, and transforming Java class files. -This is a preview library feature (http://openjdk.java.net/jeps/12) -introduced in OpenJDK 22 (JEP 457) with a second preview in OpenJDK 23 -(JEP 466). +This API is now finalised. It was introduced as a preview library +feature (http://openjdk.java.net/jeps/12) in OpenJDK 22 (JEP 457) with +a second preview in OpenJDK 23 (JEP 466). Vector API ========== @@ -120,6 +140,7 @@ https://openjdk.org/jeps/438 https://openjdk.org/jeps/448 https://openjdk.org/jeps/460 https://openjdk.org/jeps/469 +https://openjdk.org/jeps/489 Introduce an API to express vector computations that reliably compile at runtime to optimal vector hardware instructions on supported CPU @@ -130,21 +151,22 @@ This is an incubation feature (https://openjdk.java.net/jeps/11) introduced in OpenJDK 16 (JEP 338). A second round of incubation took place in OpenJDK 17 (JEP 414), OpenJDK 18 (JEP 417) saw a third, OpenJDK 19 a fourth (JEP 426), OpenJDK 20 (JEP 438) a fifth, OpenJDK -21 a sixth (JEP 448), OpenJDK 22 a seventh (JEP 460) and it reaches -its eighth in OpenJDK 23 (JEP 469). +21 a sixth (JEP 448), OpenJDK 22 a seventh (JEP 460), OpenJDK 23 an +eighth (JEP 469) and it reaches its ninth in OpenJDK 24 (JEP 489). Stream Gatherers ================ https://openjdk.org/jeps/461 https://openjdk.org/jeps/473 +https://openjdk.org/jeps/485 Enhance the Stream API to support custom intermediate operations. This will allow stream pipelines to transform data in ways that are not easily achievable with the existing built-in intermediate operations. -This is a preview library feature (http://openjdk.java.net/jeps/12) -introduced in OpenJDK 22 (JEP 461) with a second preview in OpenJDK 23 -(JEP 473). +This API is now finalised. It was introduced as a preview library +feature (http://openjdk.java.net/jeps/12) in OpenJDK 22 (JEP 461) with +a second preview in OpenJDK 23 (JEP 473). Structured Concurrency ====================== @@ -153,6 +175,7 @@ https://openjdk.org/jeps/437 https://openjdk.org/jeps/453 https://openjdk.org/jeps/462 https://openjdk.org/jeps/480 +https://openjdk.org/jeps/499 Simplify multithreaded programming by introducing an API for structured concurrency. Structured concurrency treats multiple tasks @@ -164,28 +187,35 @@ This API was first introduced in incubation (https://openjdk.java.net/jeps/11) in OpenJDK 19 (JEP 428) and had a second round of incubation in OpenJDK 20 (JEP 437). It became a preview feature (http://openjdk.java.net/jeps/12) in OpenJDK 21 (JEP -453), reached its second preview in OpenJDK 22 (JEP 462) and has -a third preview in OpenJDK 23 (JEP 480). +453), reached its second preview in OpenJDK 22 (JEP 462), had a third +preview in OpenJDK 23 (JEP 480) and reaches its fourth in OpenJDK 24 +(JEP 499). -Implicitly Declared Classes and Instance Main Methods -===================================================== +Simple Source Files and Instance Main Methods +============================================= https://openjdk.org/jeps/445 https://openjdk.org/jeps/463 https://openjdk.org/jeps/477 +https://openjdk.org/jeps/495 -Evolve the Java language so that students can write their first -programs without needing to understand language features designed for -large programs. Far from using a separate dialect of Java, students -can write streamlined declarations for single-class programs and then -seamlessly expand their programs to use more advanced features as -their skills grow. +Evolve the Java programming language so that beginners can write their +first programs without needing to understand language features +designed for large programs. Far from using a separate dialect of the +language, beginners can write streamlined declarations for +single-class programs and then seamlessly expand their programs to use +more advanced features as their skills grow. Experienced developers +can likewise enjoy writing small programs succinctly, without the need +for constructs intended for programming in the large. This library feature was introduced as a preview (http://openjdk.java.net/jeps/12) in OpenJDK 21 (JEP 445) under the -name "Unnamed Classes and Instance Main Methods". It reaches a second +name "Unnamed Classes and Instance Main Methods". It reached a second preview in OpenJDK 22 (JEP 463) and a third in OpenJDK 23 (JEP 477) -under a new name, due to the move away from unnamed classes to an -implicitly declared name chosen by the host system. +under the new name, "Implicitly Declared Classes and Instance Main +Methods", due to the move away from unnamed classes to an implicitly +declared name chosen by the host system. It has a fourth preview in +OpenJDK 24 (JEP 495) with new terminology and a revised title, but +otherwise unchanged. Scoped Values ============= @@ -193,6 +223,7 @@ https://openjdk.org/jeps/429 https://openjdk.org/jeps/446 https://openjdk.org/jeps/464 https://openjdk.org/jeps/481 +https://openjdk.org/jeps/487 Introduce scoped values, which enable the sharing of immutable data within and across threads. They are preferred to thread-local @@ -201,8 +232,48 @@ variables, especially when using large numbers of virtual threads. This API was first introduced in incubation (https://openjdk.java.net/jeps/11) in OpenJDK 20 (JEP 429). It became a preview feature (http://openjdk.java.net/jeps/12) in OpenJDK 21 (JEP -446), reached its second preview in OpenJDK 22 (JEP 464) and a third -in OpenJDK 23 (JEP 481). +446), had a second preview in OpenJDK 22 (JEP 464), a third in OpenJDK +23 (JEP 481) and reaches its fourth in OpenJDK 24 (JEP 487). + +Key Derivation Function API +=========================== +https://openjdk.org/jeps/478 + +Introduce an API for Key Derivation Functions (KDFs), which are +cryptographic algorithms for deriving additional keys from a secret +key and other data. + +This is a preview library feature (http://openjdk.java.net/jeps/12) +introduced in OpenJDK 24 (JEP 478). + +Quantum-Resistant Module-Lattice-Based Key Encapsulation Mechanism +================================================================== +https://openjdk.org/jeps/496 + +Enhance the security of Java applications by providing an +implementation of the quantum-resistant Module-Lattice-Based +Key-Encapsulation Mechanism (ML-KEM). Key encapsulation mechanisms +(KEMs) are used to secure symmetric keys over insecure communication +channels using public key cryptography. ML-KEM is designed to be +secure against future quantum computing attacks. It has been +standardized by the United States National Institute of Standards and +Technology (NIST) in FIPS 203 [0]. + +[0] https://csrc.nist.gov/pubs/fips/203/final + +Quantum-Resistant Module-Lattice-Based Digital Signature Algorithm +================================================================== +https://openjdk.org/jeps/497 + +Enhance the security of Java applications by providing an +implementation of the quantum-resistant Module-Lattice-Based Digital +Signature Algorithm (ML-DSA). Digital signatures are used to detect +unauthorized modifications to data and to authenticate the identity of +signatories. ML-DSA is designed to be secure against future quantum +computing attacks. It has been standardized by the United States +National Institute of Standards and Technology (NIST) in FIPS 204 [0]. + +[0] https://csrc.nist.gov/pubs/fips/204/final Virtual Machine Enhancements ============================ @@ -217,12 +288,85 @@ critical regions. ZGC: Generational Mode by Default ================================= +https://openjdk.org/jeps/439 https://openjdk.org/jeps/474 Switch the default mode of the Z Garbage Collector (ZGC) to the generational mode. Deprecate the non-generational mode, with the intent to remove it in a future release. +Late Barrier Expansion for G1 +============================= +https://openjdk.org/jeps/475 + +Simplify the implementation of the G1 garbage collector's barriers, +which record information about application memory accesses, by +shifting their expansion from early in the C2 JIT's compilation +pipeline to later. + +Ahead-of-Time Class Loading & Linking +===================================== +https://openjdk.org/jeps/483 + +Improve startup time by making the classes of an application instantly +available, in a loaded and linked state, when the HotSpot Java Virtual +Machine starts. Achieve this by monitoring the application during one +run and storing the loaded and linked forms of all classes in a cache +for use in subsequent runs. Lay a foundation for future improvements +to both startup and warmup time. + +Using this feature requires a three stage process: + +1. Populate the Ahead-of-Time configuration data with a training run +of the application using the options `-XX:AOTMode=record +-XX:AOTConfiguration=` where `` is the +configuration reference to use in #2. + +2. Create the Ahead-of-Time cache using the options +`-XX:AOTMode=create -XX:AOTConfiguration= +-XX:AOTCache=` where `` is the configuration +reference from #1 and `` is the cache reference to use in +later runs. + +3. When running the application in testing or production, use the +option `-XX:AOTCache=` to run the application with the +cache generated in #2. + +Synchronize Virtual Threads without Pinning +=========================================== +https://openjdk.org/jeps/491 + +Improve the scalability of Java code that uses synchronized methods +and statements by arranging for virtual threads that block in such +constructs to release their underlying platform threads for use by +other virtual threads. This will eliminate nearly all cases of virtual +threads being pinned to platform threads, which severely restricts the +number of virtual threads available to handle an application's +workload. + +Generational Shenandoah +======================= +https://openjdk.org/jeps/404 + +Enhance the Shenandoah garbage collector with experimental +generational collection capabilities to improve sustainable +throughput, load-spike resilience, and memory utilization. + +This is an experimental feature that needs to be explicitly enabled +with -XX:+UnlockExperimentalVMOptions +-XX:ShenandoahGCMode=generational + +Compact Object Headers +====================== +https://openjdk.org/jeps/450 + +Reduce the size of object headers in the HotSpot JVM from between 96 +and 128 bits down to 64 bits on 64-bit architectures. This will reduce +heap size, improve deployment density, and increase data locality. + +This is an experimental feature that needs to be explicitly enabled +with -XX:+UnlockExperimentalVMOptions -XX:+UseCompactObjectHeaders + Tools ===== @@ -243,6 +387,18 @@ https://openjdk.org/jeps/467 Enable JavaDoc documentation comments to be written in Markdown rather than solely in a mixture of HTML and JavaDoc @-tags. +Linking Run-Time Images without JMODs +===================================== +https://openjdk.org/jeps/493 + +Reduce the size of the JDK by approximately 25% by enabling the jlink +tool to create custom run-time images without using the JDK's JMOD +files. + +This feature must be enabled when the JDK is built using the +--enable-linkable-runtime option. It will not be enabled by default, +and some JDK vendors may choose not to enable it. + DEPRECATIONS ============ @@ -258,6 +414,45 @@ encourage library developers to migrate from sun.misc.Unsafe to supported replacements, so that applications can migrate smoothly to modern JDK releases. +Warn upon Use of Memory-Access Methods in sun.misc.Unsafe +========================================================= +https://openjdk.org/jeps/498 + +Issue a warning at run time on the first occasion that any +memory-access method in sun.misc.Unsafe is invoked. All of these +unsupported methods were terminally deprecated in JDK 23 (see JEP 471 +above). They have been superseded by standard APIs, namely the +VarHandle API (JEP 193, OpenJDK 9) and the Foreign Function & Memory +API (JEP 454, OpenJDK 22). We strongly encourage library developers to +migrate from sun.misc.Unsafe to supported replacements, so that +applications can migrate smoothly to modern JDK releases. + +Permanently Disable the Security Manager +======================================== +https://openjdk.org/jeps/486 + +The Security Manager has not been the primary means of securing +client-side Java code for many years, it has rarely been used to +secure server-side code, and it is costly to maintain. We therefore +deprecated it for removal in OpenJDK 17 via JEP 411 (2021). As the +next step toward removing the Security Manager, we will revise the +Java Platform specification so that developers cannot enable it and +other Platform classes do not refer to it. This change will have no +impact on the vast majority of applications, libraries, and tools. We +will remove the Security Manager API in a future release. + +Deprecate the 32-bit x86 Port for Removal +========================================= +https://openjdk.org/jeps/501 + +Deprecate the 32-bit x86 port, with the intent to remove it in a +future release. This will thereby deprecate the Linux 32-bit x86 port, +which is the only 32-bit x86 port remaining in the JDK. It will also, +effectively, deprecate any remaining downstream 32-bit x86 +ports. After the 32-bit x86 port is removed, the architecture-agnostic +Zero port will be the only way to run Java programs on 32-bit x86 +processors. + REMOVALS ======== @@ -274,3 +469,22 @@ OpenJDK 23 (JEP 465) and the feature is no longer present. See [0] for further explanation. [0] https://mail.openjdk.org/pipermail/amber-spec-experts/2024-April/004106.html + +Remove the Windows 32-bit x86 Port +================================== +https://openjdk.org/jeps/449 +https://openjdk.org/jeps/479 + +Remove the source code and build support for the Windows 32-bit x86 +port. This port was deprecated for removal in JDK 21 by JEP 449 with +the express intent to remove it in a future release. + +ZGC: Remove the Non-Generational Mode +===================================== +https://openjdk.org/jeps/439 +https://openjdk.org/jeps/474 +https://openjdk.org/jeps/490 + +Remove the non-generational mode of the Z Garbage Collector (ZGC), +keeping the generational mode as the default for ZGC (see JEP 439 & +474). diff --git a/java-25-openjdk.spec b/java-25-openjdk.spec index 204f953..2769676 100644 --- a/java-25-openjdk.spec +++ b/java-25-openjdk.spec @@ -312,7 +312,7 @@ %endif # New Version-String scheme-style defines -%global featurever 23 +%global featurever 24 %global fakefeaturever 25 %global interimver 0 %global updatever 2 @@ -375,7 +375,7 @@ %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 buildver 12 %global rpmrelease 1 # Settings used by the portable build %global portablerelease 1 @@ -2478,6 +2478,11 @@ exit 0 %endif %changelog +* Wed Nov 05 2025 Andrew Hughes - 1:24.0.2.0.12-1 +- Update to jdk-24.0.2+12 (GA) +- Update release notes with features of JDK 24 +- Related: RHEL-120553 + * Sat Oct 25 2025 Andrew Hughes - 1:23.0.2.0.7-1 - Update to jdk-23.0.2+7 (GA) - Update release notes with features of JDK 23 diff --git a/sources b/sources index 281d27e..afe2177 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ SHA512 (tapsets-icedtea-6.0.0pre00-c848b93a8598.tar.xz) = 97d026212363b3c83f6a04100ad7f6fdde833d16579717f8756e2b8c2eb70e144a41a330cb9ccde9c3badd37a2d54fdf4650a950ec21d8b686d545ecb2a64d30 -SHA512 (openjdk-23.0.2+7.tar.xz) = 6cab15914f7c61acd905347b7d6e4fe682401248294afcd972b2b576c69ae0d06b2a335089a57329e78962b83fabbc08d3463994bfdcd28dec5a1c3c5167d660 +SHA512 (openjdk-24.0.2+12.tar.xz) = 92dc174ad4fedb1138bc183a390a85a76fcc3aa1508d4d00f49012b28a8e3a5a1739b349f0fb03dedc6f7977eafa472c5f7608c61ae656c0ecf795b9e96a95ae From e8bdda3a9ea596fe58cef862582c14c0ef2025a2 Mon Sep 17 00:00:00 2001 From: Andrew Hughes Date: Sat, 8 Nov 2025 22:10:30 +0000 Subject: [PATCH 02/12] alt-java man page installation is now handled by the OpenJDK build Related: RHEL-120553 --- java-25-openjdk.spec | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/java-25-openjdk.spec b/java-25-openjdk.spec index 2769676..f85e7b2 100644 --- a/java-25-openjdk.spec +++ b/java-25-openjdk.spec @@ -2157,8 +2157,6 @@ install -D -p -m 755 ${miscdir}/%{alt_java_name} $RPM_BUILD_ROOT%{jrebindir -- $ ln -sf /etc/pki/java/cacerts . popd - # Copy alt-java man page into image so it gets installed with the others - cp -a ${miscdir}/%{alt_java_name}.1 ${jdk_image}/man/man1 # Install man pages install -d -m 755 $RPM_BUILD_ROOT%{_mandir}/man1 pushd ${jdk_image} @@ -2481,6 +2479,7 @@ exit 0 * Wed Nov 05 2025 Andrew Hughes - 1:24.0.2.0.12-1 - Update to jdk-24.0.2+12 (GA) - Update release notes with features of JDK 24 +- alt-java man page installation is now handled by the OpenJDK build - Related: RHEL-120553 * Sat Oct 25 2025 Andrew Hughes - 1:23.0.2.0.7-1 From 8d24c254b9cd98e11a8c88c546992a01bdf00d90 Mon Sep 17 00:00:00 2001 From: Andrew Hughes Date: Sat, 8 Nov 2025 22:10:58 +0000 Subject: [PATCH 03/12] Adjust TestTranslations.java with updated German translations from CLDR 46 (JDK-8333582) (Mountain->Mountains) Related: RHEL-120553 --- TestTranslations.java | 6 +++--- java-25-openjdk.spec | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/TestTranslations.java b/TestTranslations.java index 0b3f74b..1b02c06 100644 --- a/TestTranslations.java +++ b/TestTranslations.java @@ -52,9 +52,9 @@ public class TestTranslations { map.put(Locale.FRANCE, new String[] { "heure normale des Rocheuses", "UTC\u221207:00", "MST", "heure d\u2019\u00e9t\u00e9 des Rocheuses", "UTC\u221206:00", "MST", "heure des Rocheuses", "UTC\u221207:00", "MST"}); - map.put(Locale.GERMANY, new String[] { "Rocky-Mountain-Normalzeit", "GMT-07:00", "MST", - "Rocky-Mountain-Sommerzeit", "GMT-06:00", "MST", - "Rocky-Mountain-Zeit", "GMT-07:00", "MST"}); + map.put(Locale.GERMANY, new String[] { "Rocky-Mountains-Normalzeit", "GMT-07:00", "MST", + "Rocky-Mountains-Sommerzeit", "GMT-06:00", "MST", + "Rocky-Mountains-Zeit", "GMT-07:00", "MST"}); CIUDAD_JUAREZ = Collections.unmodifiableMap(map); } diff --git a/java-25-openjdk.spec b/java-25-openjdk.spec index f85e7b2..c501e68 100644 --- a/java-25-openjdk.spec +++ b/java-25-openjdk.spec @@ -2480,6 +2480,7 @@ exit 0 - Update to jdk-24.0.2+12 (GA) - Update release notes with features of JDK 24 - alt-java man page installation is now handled by the OpenJDK build +- Adjust TestTranslations.java with updated German translations from CLDR 46 (JDK-8333582) (Mountain->Mountains) - Related: RHEL-120553 * Sat Oct 25 2025 Andrew Hughes - 1:23.0.2.0.7-1 From d4379dbf2e28d8705e9dbcf9a473130e77be00fb Mon Sep 17 00:00:00 2001 From: Andrew Hughes Date: Sat, 8 Nov 2025 02:53:42 +0000 Subject: [PATCH 04/12] Run javap with the disassembled code (-c) option now required for -l by JDK-8345145 Related: RHEL-120553 --- java-25-openjdk.spec | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/java-25-openjdk.spec b/java-25-openjdk.spec index c501e68..10cf2fc 100644 --- a/java-25-openjdk.spec +++ b/java-25-openjdk.spec @@ -2002,14 +2002,14 @@ $JAVA_HOME/bin/java -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -versi unzip -l $JAVA_HOME/lib/src.zip | grep 'sun.misc.Unsafe' # Check class files include useful debugging information - $JAVA_HOME/bin/javap -l java.lang.Object | grep "Compiled from" - $JAVA_HOME/bin/javap -l java.lang.Object | grep LineNumberTable - $JAVA_HOME/bin/javap -l java.lang.Object | grep LocalVariableTable + $JAVA_HOME/bin/javap -c -l java.lang.Object | grep "Compiled from" + $JAVA_HOME/bin/javap -c -l java.lang.Object | grep LineNumberTable + $JAVA_HOME/bin/javap -c -l java.lang.Object | grep LocalVariableTable # Check generated class files include useful debugging information - $JAVA_HOME/bin/javap -l java.nio.ByteBuffer | grep "Compiled from" - $JAVA_HOME/bin/javap -l java.nio.ByteBuffer | grep LineNumberTable - $JAVA_HOME/bin/javap -l java.nio.ByteBuffer | grep LocalVariableTable + $JAVA_HOME/bin/javap -c -l java.nio.ByteBuffer | grep "Compiled from" + $JAVA_HOME/bin/javap -c -l java.nio.ByteBuffer | grep LineNumberTable + $JAVA_HOME/bin/javap -c -l java.nio.ByteBuffer | grep LocalVariableTable %else @@ -2481,6 +2481,7 @@ exit 0 - Update release notes with features of JDK 24 - alt-java man page installation is now handled by the OpenJDK build - Adjust TestTranslations.java with updated German translations from CLDR 46 (JDK-8333582) (Mountain->Mountains) +- Run javap with the disassembled code (-c) option now required for -l by JDK-8345145 - Related: RHEL-120553 * Sat Oct 25 2025 Andrew Hughes - 1:23.0.2.0.7-1 From 2e8c01e6e7ae663709ed8c959d44cd9c93bf87b2 Mon Sep 17 00:00:00 2001 From: Andrew Hughes Date: Sat, 8 Nov 2025 22:18:44 +0000 Subject: [PATCH 05/12] Sync the copy of the portable specfile with the latest update Related: RHEL-120553 --- java-25-openjdk-portable.specfile | 48 ++++++++++++++++++++++--------- java-25-openjdk.spec | 1 + 2 files changed, 35 insertions(+), 14 deletions(-) diff --git a/java-25-openjdk-portable.specfile b/java-25-openjdk-portable.specfile index 01d9ff8..3a562c3 100644 --- a/java-25-openjdk-portable.specfile +++ b/java-25-openjdk-portable.specfile @@ -247,6 +247,13 @@ %global dtsversion 10 %endif +# Check if pandoc is available to generate docs (including man pages) +%if 0%{?rhel} == 8 +%global pandoc_available 1 +%else +%global pandoc_available 0 +%endif + # Filter out flags from the optflags macro that cause problems with the OpenJDK build # We filter out -O flags so that the optimization of HotSpot is not lowered from O3 to O2 # We filter out -Wall which will otherwise cause HotSpot to produce hundreds of thousands of warnings (100+mb logs) @@ -327,7 +334,7 @@ %endif # New Version-String scheme-style defines -%global featurever 23 +%global featurever 24 %global fakefeaturever 25 %global interimver 0 %global updatever 2 @@ -385,7 +392,7 @@ %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 buildver 12 %global rpmrelease 1 #%%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 @@ -746,7 +753,7 @@ BuildRequires: libffi-devel %endif # Full documentation build requirements # pandoc is only available on RHEL/CentOS 8 -%if 0%{?rhel} == 8 +%if %{pandoc_available} BuildRequires: graphviz BuildRequires: pandoc %endif @@ -1002,6 +1009,12 @@ pushd %{top_level_dir_name} #%patch -P1001 -p1 popd # openjdk +echo "Generating %{alt_java_name} man page" +altjavamanpage=%{top_level_dir_name}/src/java.base/share/man/%{alt_java_name}.md +altjavatext="Hardened java binary recommended for launching untrusted code from the Web e.g. javaws" +sed -r -e 's|([^/.])java([^./])|\1alt-java\2|g' %{top_level_dir_name}/src/java.base/share/man/java.md | \ + sed -e 's|JAVA(|ALT-JAVA(|' | \ + sed -e "s|java - launch a Java application|alt-java - ${altjavatext}|" >> ${altjavamanpage} # The OpenJDK version file includes the current # upstream version information. For some reason, @@ -1362,6 +1375,7 @@ function installjdk() { # legacy-jre-image target does not install any man pages for the JRE # We copy the jdk man directory and then remove pages for binaries that # don't exist in the JRE +%if %{pandoc_available} cp -a ${jdkimagepath}/man ${jreimagepath} for manpage in $(find ${jreimagepath}/man -name '*.1'); do filename=$(basename ${manpage}); @@ -1371,6 +1385,7 @@ function installjdk() { rm -f ${manpage}; fi; done +%endif for imagepath in ${jdkimagepath} ${jreimagepath} ${unstripped}; do @@ -1521,7 +1536,7 @@ function packagejdk() { %if %{with_systemtap} cp -a ${tapsetdir}* ${miscname} %endif - cp -av ${altjavadir}/%{alt_java_name}{,.1} ${miscname} + cp -av ${altjavadir}/%{alt_java_name} ${miscname} createtar ${miscname} ${miscarchive} genchecksum ${miscarchive} fi @@ -1562,10 +1577,6 @@ function packagejdk() { echo "Building %{SOURCE11}" mkdir -p %{altjavaoutputdir} LD_LIBRARY_PATH="${LIBPATH}" ${GCC} ${EXTRA_CFLAGS} -o %{altjavaoutputdir}/%{alt_java_name} %{SOURCE11} -echo "Generating %{alt_java_name} man page" -altjavamanpage=%{altjavaoutputdir}/%{alt_java_name}.1 -echo "Hardened java binary recommended for launching untrusted code from the Web e.g. javaws" > ${altjavamanpage} -cat %{top_level_dir_name}/src/java.base/share/man/java.1 >> ${altjavamanpage} echo "Building %{newjavaver}-%{buildver}, pre=%{ea_designator}, opt=%{lts_designator}" @@ -1719,14 +1730,14 @@ $JAVA_HOME/bin/java -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -versi unzip -l $JAVA_HOME/lib/src.zip | grep 'sun.misc.Unsafe' # Check class files include useful debugging information - $JAVA_HOME/bin/javap -l java.lang.Object | grep "Compiled from" - $JAVA_HOME/bin/javap -l java.lang.Object | grep LineNumberTable - $JAVA_HOME/bin/javap -l java.lang.Object | grep LocalVariableTable + $JAVA_HOME/bin/javap -c -l java.lang.Object | grep "Compiled from" + $JAVA_HOME/bin/javap -c -l java.lang.Object | grep LineNumberTable + $JAVA_HOME/bin/javap -c -l java.lang.Object | grep LocalVariableTable # Check generated class files include useful debugging information - $JAVA_HOME/bin/javap -l java.nio.ByteBuffer | grep "Compiled from" - $JAVA_HOME/bin/javap -l java.nio.ByteBuffer | grep LineNumberTable - $JAVA_HOME/bin/javap -l java.nio.ByteBuffer | grep LocalVariableTable + $JAVA_HOME/bin/javap -c -l java.nio.ByteBuffer | grep "Compiled from" + $JAVA_HOME/bin/javap -c -l java.nio.ByteBuffer | grep LineNumberTable + $JAVA_HOME/bin/javap -c -l java.nio.ByteBuffer | grep LocalVariableTable %else @@ -1958,6 +1969,15 @@ done %endif %changelog +* Wed Nov 05 2025 Andrew Hughes - 1:24.0.2.0.12-1 +- Update to jdk-24.0.2+12 (GA) +- Update release notes with features of JDK 24 +- Generate alt-java.md during prep following removal of pre-generated man pages in JDK-8344056 +- Introduce pandoc_available global for conditional handling of both pandoc dependency and manpages +- Adjust TestTranslations.java with updated German translations from CLDR 46 (JDK-8333582) (Mountain->Mountains) +- Run javap with the disassembled code (-c) option now required for -l by JDK-8345145 +- Related: RHELBU-3203 + * Sat Oct 25 2025 Andrew Hughes - 1:23.0.2.0.7-1 - Update to jdk-23.0.2+7 (GA) - Update release notes with features of JDK 23 diff --git a/java-25-openjdk.spec b/java-25-openjdk.spec index 10cf2fc..fe486b4 100644 --- a/java-25-openjdk.spec +++ b/java-25-openjdk.spec @@ -2482,6 +2482,7 @@ exit 0 - alt-java man page installation is now handled by the OpenJDK build - Adjust TestTranslations.java with updated German translations from CLDR 46 (JDK-8333582) (Mountain->Mountains) - Run javap with the disassembled code (-c) option now required for -l by JDK-8345145 +- Sync the copy of the portable specfile with the latest update - Related: RHEL-120553 * Sat Oct 25 2025 Andrew Hughes - 1:23.0.2.0.7-1 From 85c438123f5d4098daff8aac446a911b598a168b Mon Sep 17 00:00:00 2001 From: Andrew Hughes Date: Sat, 8 Nov 2025 22:56:54 +0000 Subject: [PATCH 06/12] Remove default.policy and java.policy following JDK-8338411: "Permanently Disable the Security Manager" Related: RHEL-120553 --- java-25-openjdk.spec | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/java-25-openjdk.spec b/java-25-openjdk.spec index fe486b4..bbfab93 100644 --- a/java-25-openjdk.spec +++ b/java-25-openjdk.spec @@ -834,7 +834,6 @@ fi %dir %{etcjavadir -- %{?1}}/conf/security/policy %dir %{etcjavadir -- %{?1}}/conf/security/policy/limited %dir %{etcjavadir -- %{?1}}/conf/security/policy/unlimited -%config(noreplace) %{etcjavadir -- %{?1}}/lib/security/default.policy %config(noreplace) %{etcjavadir -- %{?1}}/lib/security/blocked.certs %config(noreplace) %{etcjavadir -- %{?1}}/lib/security/public_suffix_list.dat %config(noreplace) %{etcjavadir -- %{?1}}/conf/security/policy/limited/exempt_local.policy @@ -843,7 +842,6 @@ fi %config(noreplace) %{etcjavadir -- %{?1}}/conf/security/policy/unlimited/default_local.policy %config(noreplace) %{etcjavadir -- %{?1}}/conf/security/policy/unlimited/default_US_export.policy %{etcjavadir -- %{?1}}/conf/security/policy/README.txt -%config(noreplace) %{etcjavadir -- %{?1}}/conf/security/java.policy %config(noreplace) %{etcjavadir -- %{?1}}/conf/security/java.security %config(noreplace) %{etcjavadir -- %{?1}}/conf/management/jmxremote.access # This is a config template, thus not config-noreplace @@ -2483,6 +2481,7 @@ exit 0 - Adjust TestTranslations.java with updated German translations from CLDR 46 (JDK-8333582) (Mountain->Mountains) - Run javap with the disassembled code (-c) option now required for -l by JDK-8345145 - Sync the copy of the portable specfile with the latest update +- Remove default.policy and java.policy following JDK-8338411: "Permanently Disable the Security Manager" - Related: RHEL-120553 * Sat Oct 25 2025 Andrew Hughes - 1:23.0.2.0.7-1 From e446d04709ba97379e34997129f23462d9ce47d3 Mon Sep 17 00:00:00 2001 From: Andrew Hughes Date: Sun, 9 Nov 2025 01:26:36 +0000 Subject: [PATCH 07/12] Make man page handling dependent on pandoc being available during the portable build Related: RHEL-120553 --- java-25-openjdk.spec | 102 +++++++++++++++++++++++++++++++------------ 1 file changed, 75 insertions(+), 27 deletions(-) diff --git a/java-25-openjdk.spec b/java-25-openjdk.spec index bbfab93..eceeb60 100644 --- a/java-25-openjdk.spec +++ b/java-25-openjdk.spec @@ -381,11 +381,18 @@ %global portablerelease 1 # Portable suffix differs between RHEL and CentOS %if 0%{?centos} == 0 -%global portablesuffix %{?pkgos:el7_9}%{!?pkgos:el8} +%global portablerhel %{?pkgos:7_9}%{!?pkgos:8} %else -%global portablesuffix el9 +%global portablerhel 9 %endif %global portablebuilddir /builddir/build/BUILD +%global portablesuffix el%{portablerhel} +# Check if pandoc was available to generate docs (including man pages) +%if 0%{?portablerhel} == 8 +%global pandoc_available 1 +%else +%global pandoc_available 0 +%endif # 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 @@ -523,12 +530,20 @@ alternatives --install %{_bindir}/java java %{jrebindir -- %{?1}}/java %{priorit --slave %{_bindir}/%{alt_java_name} %{alt_java_name} %{jrebindir -- %{?1}}/%{alt_java_name} \\ --slave %{_bindir}/jcmd jcmd %{sdkbindir -- %{?1}}/jcmd \\ --slave %{_bindir}/keytool keytool %{jrebindir -- %{?1}}/keytool \\ - --slave %{_bindir}/rmiregistry rmiregistry %{jrebindir -- %{?1}}/rmiregistry \\ - --slave %{_mandir}/man1/java.1%{man_comp} java.1%{man_comp} %{_mandir}/man1/java-%{uniquesuffix -- %{?1}}.1%{man_comp} \\ - --slave %{_mandir}/man1/%{alt_java_name}.1%{man_comp} %{alt_java_name}.1%{man_comp} %{_mandir}/man1/%{alt_java_name}-%{uniquesuffix -- %{?1}}.1%{man_comp} \\ - --slave %{_mandir}/man1/jcmd.1%{man_comp} jcmd.1%{man_comp} %{_mandir}/man1/jcmd-%{uniquesuffix -- %{?1}}.1%{man_comp} \\ - --slave %{_mandir}/man1/keytool.1%{man_comp} keytool.1%{man_comp} %{_mandir}/man1/keytool-%{uniquesuffix -- %{?1}}.1%{man_comp} \\ - --slave %{_mandir}/man1/rmiregistry.1%{man_comp} rmiregistry.1%{man_comp} %{_mandir}/man1/rmiregistry-%{uniquesuffix -- %{?1}}.1%{man_comp} + --slave %{_bindir}/rmiregistry rmiregistry %{jrebindir -- %{?1}}/rmiregistry +%if %{pandoc_available} +alternatives --add-slave java %{jrebindir -- %{?1}}/java \\ + %{_mandir}/man1/java.1%{man_comp} java.1%{man_comp} %{_mandir}/man1/java-%{uniquesuffix -- %{?1}}.1%{man_comp} +alternatives --add-slave java %{jrebindir -- %{?1}}/java \\ + %{_mandir}/man1/%{alt_java_name}.1%{man_comp} %{alt_java_name}.1%{man_comp} %{_mandir}/man1/%{alt_java_name}-%{uniquesuffix -- %{?1}}.1%{man_comp} \\ +alternatives --add-slave java %{jrebindir -- %{?1}}/java \\ + %{_mandir}/man1/jcmd.1%{man_comp} jcmd.1%{man_comp} %{_mandir}/man1/jcmd-%{uniquesuffix -- %{?1}}.1%{man_comp} +alternatives --add-slave java %{jrebindir -- %{?1}}/java \\ + %{_mandir}/man1/keytool.1%{man_comp} keytool.1%{man_comp} %{_mandir}/man1/keytool-%{uniquesuffix -- %{?1}}.1%{man_comp} +alternatives --add-slave java %{jrebindir -- %{?1}}/java \\ + %{_mandir}/man1/rmiregistry.1%{man_comp} rmiregistry.1%{man_comp} %{_mandir}/man1/rmiregistry-%{uniquesuffix -- %{?1}}.1%{man_comp} +%endif + alternatives --install %{_jvmdir}/jre-%{origin} jre_%{origin} %{_jvmdir}/%{sdkdir -- %{?1}} %{priority_for -- %{?1}} alternatives --install %{_jvmdir}/jre-%{javaver} jre_%{javaver} %{_jvmdir}/%{sdkdir -- %{?1}} %{priority_for -- %{?1}} alternatives --install %{_jvmdir}/jre-%{javaver}-%{origin} jre_%{javaver}_%{origin} %{_jvmdir}/%{sdkdir -- %{?1}} %{priority_for -- %{?1}} @@ -623,25 +638,45 @@ alternatives --install %{_bindir}/javac javac %{sdkbindir -- %{?1}}/javac %{prio --slave %{_bindir}/jstat jstat %{sdkbindir -- %{?1}}/jstat \\ --slave %{_bindir}/jstatd jstatd %{sdkbindir -- %{?1}}/jstatd \\ --slave %{_bindir}/jwebserver jwebserver %{sdkbindir -- %{?1}}/jwebserver \\ - --slave %{_bindir}/serialver serialver %{sdkbindir -- %{?1}}/serialver \\ - --slave %{_mandir}/man1/jar.1%{man_comp} jar.1%{man_comp} %{_mandir}/man1/jar-%{uniquesuffix -- %{?1}}.1%{man_comp} \\ - --slave %{_mandir}/man1/jarsigner.1%{man_comp} jarsigner.1%{man_comp} %{_mandir}/man1/jarsigner-%{uniquesuffix -- %{?1}}.1%{man_comp} \\ - --slave %{_mandir}/man1/javac.1%{man_comp} javac.1%{man_comp} %{_mandir}/man1/javac-%{uniquesuffix -- %{?1}}.1%{man_comp} \\ - --slave %{_mandir}/man1/javadoc.1%{man_comp} javadoc.1%{man_comp} %{_mandir}/man1/javadoc-%{uniquesuffix -- %{?1}}.1%{man_comp} \\ - --slave %{_mandir}/man1/javap.1%{man_comp} javap.1%{man_comp} %{_mandir}/man1/javap-%{uniquesuffix -- %{?1}}.1%{man_comp} \\ - --slave %{_mandir}/man1/jconsole.1%{man_comp} jconsole.1%{man_comp} %{_mandir}/man1/jconsole-%{uniquesuffix -- %{?1}}.1%{man_comp} \\ - --slave %{_mandir}/man1/jdb.1%{man_comp} jdb.1%{man_comp} %{_mandir}/man1/jdb-%{uniquesuffix -- %{?1}}.1%{man_comp} \\ - --slave %{_mandir}/man1/jdeps.1%{man_comp} jdeps.1%{man_comp} %{_mandir}/man1/jdeps-%{uniquesuffix -- %{?1}}.1%{man_comp} \\ - --slave %{_mandir}/man1/jinfo.1%{man_comp} jinfo.1%{man_comp} %{_mandir}/man1/jinfo-%{uniquesuffix -- %{?1}}.1%{man_comp} \\ - --slave %{_mandir}/man1/jmap.1%{man_comp} jmap.1%{man_comp} %{_mandir}/man1/jmap-%{uniquesuffix -- %{?1}}.1%{man_comp} \\ - --slave %{_mandir}/man1/jps.1%{man_comp} jps.1%{man_comp} %{_mandir}/man1/jps-%{uniquesuffix -- %{?1}}.1%{man_comp} \\ - --slave %{_mandir}/man1/jpackage.1%{man_comp} jpackage.1%{man_comp} %{_mandir}/man1/jpackage-%{uniquesuffix -- %{?1}}.1%{man_comp} \\ - --slave %{_mandir}/man1/jrunscript.1%{man_comp} jrunscript.1%{man_comp} %{_mandir}/man1/jrunscript-%{uniquesuffix -- %{?1}}.1%{man_comp} \\ - --slave %{_mandir}/man1/jstack.1%{man_comp} jstack.1%{man_comp} %{_mandir}/man1/jstack-%{uniquesuffix -- %{?1}}.1%{man_comp} \\ - --slave %{_mandir}/man1/jstat.1%{man_comp} jstat.1%{man_comp} %{_mandir}/man1/jstat-%{uniquesuffix -- %{?1}}.1%{man_comp} \\ - --slave %{_mandir}/man1/jwebserver.1%{man_comp} jwebserver.1%{man_comp} %{_mandir}/man1/jwebserver-%{uniquesuffix -- %{?1}}.1%{man_comp} \\ - --slave %{_mandir}/man1/jstatd.1%{man_comp} jstatd.1%{man_comp} %{_mandir}/man1/jstatd-%{uniquesuffix -- %{?1}}.1%{man_comp} \\ - --slave %{_mandir}/man1/serialver.1%{man_comp} serialver.1%{man_comp} %{_mandir}/man1/serialver-%{uniquesuffix -- %{?1}}.1%{man_comp} + --slave %{_bindir}/serialver serialver %{sdkbindir -- %{?1}}/serialver +%if %{pandoc_available} +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/jar.1%{man_comp} jar.1%{man_comp} %{_mandir}/man1/jar-%{uniquesuffix -- %{?1}}.1%{man_comp} +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/jarsigner.1%{man_comp} jarsigner.1%{man_comp} %{_mandir}/man1/jarsigner-%{uniquesuffix -- %{?1}}.1%{man_comp} +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/javac.1%{man_comp} javac.1%{man_comp} %{_mandir}/man1/javac-%{uniquesuffix -- %{?1}}.1%{man_comp} +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/javadoc.1%{man_comp} javadoc.1%{man_comp} %{_mandir}/man1/javadoc-%{uniquesuffix -- %{?1}}.1%{man_comp} +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/javap.1%{man_comp} javap.1%{man_comp} %{_mandir}/man1/javap-%{uniquesuffix -- %{?1}}.1%{man_comp} +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/jconsole.1%{man_comp} jconsole.1%{man_comp} %{_mandir}/man1/jconsole-%{uniquesuffix -- %{?1}}.1%{man_comp} +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/jdb.1%{man_comp} jdb.1%{man_comp} %{_mandir}/man1/jdb-%{uniquesuffix -- %{?1}}.1%{man_comp} +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/jdeps.1%{man_comp} jdeps.1%{man_comp} %{_mandir}/man1/jdeps-%{uniquesuffix -- %{?1}}.1%{man_comp} +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/jinfo.1%{man_comp} jinfo.1%{man_comp} %{_mandir}/man1/jinfo-%{uniquesuffix -- %{?1}}.1%{man_comp} +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/jmap.1%{man_comp} jmap.1%{man_comp} %{_mandir}/man1/jmap-%{uniquesuffix -- %{?1}}.1%{man_comp} +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/jps.1%{man_comp} jps.1%{man_comp} %{_mandir}/man1/jps-%{uniquesuffix -- %{?1}}.1%{man_comp} +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/jpackage.1%{man_comp} jpackage.1%{man_comp} %{_mandir}/man1/jpackage-%{uniquesuffix -- %{?1}}.1%{man_comp} +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/jrunscript.1%{man_comp} jrunscript.1%{man_comp} %{_mandir}/man1/jrunscript-%{uniquesuffix -- %{?1}}.1%{man_comp} +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/jstack.1%{man_comp} jstack.1%{man_comp} %{_mandir}/man1/jstack-%{uniquesuffix -- %{?1}}.1%{man_comp} +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/jstat.1%{man_comp} jstat.1%{man_comp} %{_mandir}/man1/jstat-%{uniquesuffix -- %{?1}}.1%{man_comp} +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/jwebserver.1%{man_comp} jwebserver.1%{man_comp} %{_mandir}/man1/jwebserver-%{uniquesuffix -- %{?1}}.1%{man_comp} +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/jstatd.1%{man_comp} jstatd.1%{man_comp} %{_mandir}/man1/jstatd-%{uniquesuffix -- %{?1}}.1%{man_comp} +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/serialver.1%{man_comp} serialver.1%{man_comp} %{_mandir}/man1/serialver-%{uniquesuffix -- %{?1}}.1%{man_comp} +%endif alternatives --install %{_jvmdir}/java-%{origin} java_sdk_%{origin} %{_jvmdir}/%{sdkdir -- %{?1}} %{priority_for -- %{?1}} alternatives --install %{_jvmdir}/java-%{javaver} java_sdk_%{javaver} %{_jvmdir}/%{sdkdir -- %{?1}} %{priority_for -- %{?1}} } @@ -809,11 +844,13 @@ fi %dir %{_jvmdir}/%{sdkdir -- %{?1}}/lib/jfr %{_jvmdir}/%{sdkdir -- %{?1}}/lib/jfr/default.jfc %{_jvmdir}/%{sdkdir -- %{?1}}/lib/jfr/profile.jfc +%if %{pandoc_available} %{_mandir}/man1/java-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/%{alt_java_name}-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/jcmd-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/keytool-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/rmiregistry-%{uniquesuffix -- %{?1}}.1* +%endif %dir %{_jvmdir}/%{sdkdir -- %{?1}}/lib/%{vm_variant} %{_jvmdir}/%{sdkdir -- %{?1}}/lib/%{vm_variant}/*.so %ifarch %{share_arches} @@ -891,9 +928,11 @@ fi %ifarch %{sa_arches} %ifnarch %{zero_arches} %{_jvmdir}/%{sdkdir -- %{?1}}/bin/jhsdb +%if %{pandoc_available} %{_mandir}/man1/jhsdb-%{uniquesuffix -- %{?1}}.1* %endif %endif +%endif %{_jvmdir}/%{sdkdir -- %{?1}}/bin/jinfo %{_jvmdir}/%{sdkdir -- %{?1}}/bin/jlink %{_jvmdir}/%{sdkdir -- %{?1}}/bin/jmap @@ -909,10 +948,14 @@ fi %{_jvmdir}/%{sdkdir -- %{?1}}/bin/serialver %{_jvmdir}/%{sdkdir -- %{?1}}/include %{_jvmdir}/%{sdkdir -- %{?1}}/lib/ct.sym + %if %{with_systemtap} %{_jvmdir}/%{sdkdir -- %{?1}}/tapset %endif + %{_datadir}/applications/*jconsole%{?1}.desktop + +%if %{pandoc_available} %{_mandir}/man1/jar-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/jarsigner-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/javac-%{uniquesuffix -- %{?1}}.1* @@ -936,6 +979,7 @@ fi %{_mandir}/man1/jstatd-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/jwebserver-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/serialver-%{uniquesuffix -- %{?1}}.1* +%endif %if %{with_systemtap} %dir %{tapsetroot} @@ -943,6 +987,7 @@ fi %dir %{tapsetdir} %{tapsetdir}/*%{_arch}%{?1}.stp %endif + %if %is_system_jdk %if %{is_release_build -- %{?1}} %ghost %{_bindir}/javac @@ -2155,6 +2200,7 @@ install -D -p -m 755 ${miscdir}/%{alt_java_name} $RPM_BUILD_ROOT%{jrebindir -- $ ln -sf /etc/pki/java/cacerts . popd +%if %{pandoc_available} # Install man pages install -d -m 755 $RPM_BUILD_ROOT%{_mandir}/man1 pushd ${jdk_image} @@ -2169,6 +2215,7 @@ install -D -p -m 755 ${miscdir}/%{alt_java_name} $RPM_BUILD_ROOT%{jrebindir -- $ # Remove man pages from jdk image rm -rf $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir -- $suffix}/man popd +%endif if ! echo $suffix | grep -q "debug" ; then # Install Javadoc documentation @@ -2482,6 +2529,7 @@ exit 0 - Run javap with the disassembled code (-c) option now required for -l by JDK-8345145 - Sync the copy of the portable specfile with the latest update - Remove default.policy and java.policy following JDK-8338411: "Permanently Disable the Security Manager" +- Make man page handling dependent on pandoc being available during the portable build - Related: RHEL-120553 * Sat Oct 25 2025 Andrew Hughes - 1:23.0.2.0.7-1 From 335fe3d7e6e73b72fa3dc42bbb0033cc3beb5e27 Mon Sep 17 00:00:00 2001 From: Andrew Hughes Date: Sun, 9 Nov 2025 01:33:29 +0000 Subject: [PATCH 08/12] Handle new CDS archive variants (*_coh*) added by Compact Object Headers (JDK-8305895) Related: RHEL-120553 --- java-25-openjdk.spec | 3 +++ 1 file changed, 3 insertions(+) diff --git a/java-25-openjdk.spec b/java-25-openjdk.spec index eceeb60..420e48e 100644 --- a/java-25-openjdk.spec +++ b/java-25-openjdk.spec @@ -855,8 +855,10 @@ fi %{_jvmdir}/%{sdkdir -- %{?1}}/lib/%{vm_variant}/*.so %ifarch %{share_arches} %attr(444, root, root) %{_jvmdir}/%{sdkdir -- %{?1}}/lib/%{vm_variant}/classes.jsa +%attr(444, root, root) %{_jvmdir}/%{sdkdir -- %{?1}}/lib/%{vm_variant}/classes_coh.jsa %ifnarch %{ix86} %{arm32} %attr(444, root, root) %{_jvmdir}/%{sdkdir -- %{?1}}/lib/%{vm_variant}/classes_nocoops.jsa +%attr(444, root, root) %{_jvmdir}/%{sdkdir -- %{?1}}/lib/%{vm_variant}/classes_nocoops_coh.jsa %endif %endif %dir %{etcjavasubdir} @@ -2530,6 +2532,7 @@ exit 0 - Sync the copy of the portable specfile with the latest update - Remove default.policy and java.policy following JDK-8338411: "Permanently Disable the Security Manager" - Make man page handling dependent on pandoc being available during the portable build +- Handle new CDS archive variants (*_coh*) added by Compact Object Headers (JDK-8305895) - Related: RHEL-120553 * Sat Oct 25 2025 Andrew Hughes - 1:23.0.2.0.7-1 From d620f3b109059d2e4fb952777e2de824da7d8be5 Mon Sep 17 00:00:00 2001 From: Andrew Hughes Date: Sun, 9 Nov 2025 01:49:33 +0000 Subject: [PATCH 09/12] Add missing man page alternatives for jdeprscan, jfr, jhsdb, jimage, jlink & jmod and fix alphabetical ordering Related: RHEL-120553 --- java-25-openjdk.spec | 39 ++++++++++++++++++++++++++++----------- 1 file changed, 28 insertions(+), 11 deletions(-) diff --git a/java-25-openjdk.spec b/java-25-openjdk.spec index 420e48e..4aa2287 100644 --- a/java-25-openjdk.spec +++ b/java-25-openjdk.spec @@ -611,13 +611,6 @@ if [ "x$debug" == "xtrue" ] ; then fi alternatives --install %{_bindir}/javac javac %{sdkbindir -- %{?1}}/javac %{priority_for -- %{?1}} \\ --slave %{_jvmdir}/java java_sdk %{_jvmdir}/%{sdkdir -- %{?1}} \\ - --slave %{_bindir}/jlink jlink %{sdkbindir -- %{?1}}/jlink \\ - --slave %{_bindir}/jmod jmod %{sdkbindir -- %{?1}}/jmod \\ -%ifarch %{sa_arches} -%ifnarch %{zero_arches} - --slave %{_bindir}/jhsdb jhsdb %{sdkbindir -- %{?1}}/jhsdb \\ -%endif -%endif --slave %{_bindir}/jar jar %{sdkbindir -- %{?1}}/jar \\ --slave %{_bindir}/jarsigner jarsigner %{sdkbindir -- %{?1}}/jarsigner \\ --slave %{_bindir}/javadoc javadoc %{sdkbindir -- %{?1}}/javadoc \\ @@ -627,9 +620,16 @@ alternatives --install %{_bindir}/javac javac %{sdkbindir -- %{?1}}/javac %{prio --slave %{_bindir}/jdeps jdeps %{sdkbindir -- %{?1}}/jdeps \\ --slave %{_bindir}/jdeprscan jdeprscan %{sdkbindir -- %{?1}}/jdeprscan \\ --slave %{_bindir}/jfr jfr %{sdkbindir -- %{?1}}/jfr \\ +%ifarch %{sa_arches} +%ifnarch %{zero_arches} + --slave %{_bindir}/jhsdb jhsdb %{sdkbindir -- %{?1}}/jhsdb \\ +%endif +%endif --slave %{_bindir}/jimage jimage %{sdkbindir -- %{?1}}/jimage \\ --slave %{_bindir}/jinfo jinfo %{sdkbindir -- %{?1}}/jinfo \\ + --slave %{_bindir}/jlink jlink %{sdkbindir -- %{?1}}/jlink \\ --slave %{_bindir}/jmap jmap %{sdkbindir -- %{?1}}/jmap \\ + --slave %{_bindir}/jmod jmod %{sdkbindir -- %{?1}}/jmod \\ --slave %{_bindir}/jps jps %{sdkbindir -- %{?1}}/jps \\ --slave %{_bindir}/jpackage jpackage %{sdkbindir -- %{?1}}/jpackage \\ --slave %{_bindir}/jrunscript jrunscript %{sdkbindir -- %{?1}}/jrunscript \\ @@ -656,10 +656,26 @@ alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ %{_mandir}/man1/jdb.1%{man_comp} jdb.1%{man_comp} %{_mandir}/man1/jdb-%{uniquesuffix -- %{?1}}.1%{man_comp} alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ %{_mandir}/man1/jdeps.1%{man_comp} jdeps.1%{man_comp} %{_mandir}/man1/jdeps-%{uniquesuffix -- %{?1}}.1%{man_comp} +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/jdeprscan.1%{man_comp} jdeprscan.1%{man_comp} %{_mandir}/man1/jdeprscan-%{uniquesuffix -- %{?1}}.1%{man_comp} +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/jfr.1%{man_comp} jfr.1%{man_comp} %{_mandir}/man1/jfr-%{uniquesuffix -- %{?1}}.1%{man_comp} +%ifarch %{sa_arches} +%ifnarch %{zero_arches} +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/jhsdb.1%{man_comp} jhsdb.1%{man_comp} %{_mandir}/man1/jhsdb-%{uniquesuffix -- %{?1}}.1%{man_comp} +%endif +%endif +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/jimage.1%{man_comp} jimage.1%{man_comp} %{_mandir}/man1/jimage-%{uniquesuffix -- %{?1}}.1%{man_comp} alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ %{_mandir}/man1/jinfo.1%{man_comp} jinfo.1%{man_comp} %{_mandir}/man1/jinfo-%{uniquesuffix -- %{?1}}.1%{man_comp} +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/jlink.1%{man_comp} jlink.1%{man_comp} %{_mandir}/man1/jlink-%{uniquesuffix -- %{?1}}.1%{man_comp} alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ %{_mandir}/man1/jmap.1%{man_comp} jmap.1%{man_comp} %{_mandir}/man1/jmap-%{uniquesuffix -- %{?1}}.1%{man_comp} +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/jmod.1%{man_comp} jmod.1%{man_comp} %{_mandir}/man1/jmod-%{uniquesuffix -- %{?1}}.1%{man_comp} alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ %{_mandir}/man1/jps.1%{man_comp} jps.1%{man_comp} %{_mandir}/man1/jps-%{uniquesuffix -- %{?1}}.1%{man_comp} alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ @@ -670,10 +686,10 @@ alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ %{_mandir}/man1/jstack.1%{man_comp} jstack.1%{man_comp} %{_mandir}/man1/jstack-%{uniquesuffix -- %{?1}}.1%{man_comp} alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ %{_mandir}/man1/jstat.1%{man_comp} jstat.1%{man_comp} %{_mandir}/man1/jstat-%{uniquesuffix -- %{?1}}.1%{man_comp} -alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ - %{_mandir}/man1/jwebserver.1%{man_comp} jwebserver.1%{man_comp} %{_mandir}/man1/jwebserver-%{uniquesuffix -- %{?1}}.1%{man_comp} alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ %{_mandir}/man1/jstatd.1%{man_comp} jstatd.1%{man_comp} %{_mandir}/man1/jstatd-%{uniquesuffix -- %{?1}}.1%{man_comp} +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/jwebserver.1%{man_comp} jwebserver.1%{man_comp} %{_mandir}/man1/jwebserver-%{uniquesuffix -- %{?1}}.1%{man_comp} alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ %{_mandir}/man1/serialver.1%{man_comp} serialver.1%{man_comp} %{_mandir}/man1/serialver-%{uniquesuffix -- %{?1}}.1%{man_comp} %endif @@ -994,8 +1010,6 @@ fi %if %{is_release_build -- %{?1}} %ghost %{_bindir}/javac %ghost %{_jvmdir}/java -%ghost %{_bindir}/jlink -%ghost %{_bindir}/jmod %ghost %{_bindir}/jhsdb %ghost %{_bindir}/jar %ghost %{_bindir}/jarsigner @@ -1008,7 +1022,9 @@ fi %ghost %{_bindir}/jfr %ghost %{_bindir}/jimage %ghost %{_bindir}/jinfo +%ghost %{_bindir}/jlink %ghost %{_bindir}/jmap +%ghost %{_bindir}/jmod %ghost %{_bindir}/jps %ghost %{_bindir}/jpackage %ghost %{_bindir}/jrunscript @@ -2533,6 +2549,7 @@ exit 0 - Remove default.policy and java.policy following JDK-8338411: "Permanently Disable the Security Manager" - Make man page handling dependent on pandoc being available during the portable build - Handle new CDS archive variants (*_coh*) added by Compact Object Headers (JDK-8305895) +- Add missing man page alternatives for jdeprscan, jfr, jhsdb, jimage, jlink & jmod and fix alphabetical ordering - Related: RHEL-120553 * Sat Oct 25 2025 Andrew Hughes - 1:23.0.2.0.7-1 From 96ab8016919c571f3c312337790548910cbd49e7 Mon Sep 17 00:00:00 2001 From: Andrew Hughes Date: Sun, 9 Nov 2025 01:53:06 +0000 Subject: [PATCH 10/12] Support jnativescan added by JDK-8317611: "Add a tool like jdeprscan to find usage of restricted methods" Related: RHEL-120553 --- java-25-openjdk.spec | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/java-25-openjdk.spec b/java-25-openjdk.spec index 4aa2287..d7b67c5 100644 --- a/java-25-openjdk.spec +++ b/java-25-openjdk.spec @@ -630,6 +630,7 @@ alternatives --install %{_bindir}/javac javac %{sdkbindir -- %{?1}}/javac %{prio --slave %{_bindir}/jlink jlink %{sdkbindir -- %{?1}}/jlink \\ --slave %{_bindir}/jmap jmap %{sdkbindir -- %{?1}}/jmap \\ --slave %{_bindir}/jmod jmod %{sdkbindir -- %{?1}}/jmod \\ + --slave %{_bindir}/jnativescan jnativescan %{sdkbindir -- %{?1}}/jnativescan \\ --slave %{_bindir}/jps jps %{sdkbindir -- %{?1}}/jps \\ --slave %{_bindir}/jpackage jpackage %{sdkbindir -- %{?1}}/jpackage \\ --slave %{_bindir}/jrunscript jrunscript %{sdkbindir -- %{?1}}/jrunscript \\ @@ -676,6 +677,8 @@ alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ %{_mandir}/man1/jmap.1%{man_comp} jmap.1%{man_comp} %{_mandir}/man1/jmap-%{uniquesuffix -- %{?1}}.1%{man_comp} alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ %{_mandir}/man1/jmod.1%{man_comp} jmod.1%{man_comp} %{_mandir}/man1/jmod-%{uniquesuffix -- %{?1}}.1%{man_comp} +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/jnativescan.1%{man_comp} jnativescan.1%{man_comp} %{_mandir}/man1/jnativescan-%{uniquesuffix -- %{?1}}.1%{man_comp} alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ %{_mandir}/man1/jps.1%{man_comp} jps.1%{man_comp} %{_mandir}/man1/jps-%{uniquesuffix -- %{?1}}.1%{man_comp} alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ @@ -955,6 +958,7 @@ fi %{_jvmdir}/%{sdkdir -- %{?1}}/bin/jlink %{_jvmdir}/%{sdkdir -- %{?1}}/bin/jmap %{_jvmdir}/%{sdkdir -- %{?1}}/bin/jmod +%{_jvmdir}/%{sdkdir -- %{?1}}/bin/jnativescan %{_jvmdir}/%{sdkdir -- %{?1}}/bin/jps %{_jvmdir}/%{sdkdir -- %{?1}}/bin/jpackage %{_jvmdir}/%{sdkdir -- %{?1}}/bin/jrunscript @@ -988,6 +992,7 @@ fi %{_mandir}/man1/jlink-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/jmap-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/jmod-%{uniquesuffix -- %{?1}}.1* +%{_mandir}/man1/jnativescan-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/jps-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/jpackage-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/jrunscript-%{uniquesuffix -- %{?1}}.1* @@ -1025,6 +1030,7 @@ fi %ghost %{_bindir}/jlink %ghost %{_bindir}/jmap %ghost %{_bindir}/jmod +%ghost %{_bindir}/jnativescan %ghost %{_bindir}/jps %ghost %{_bindir}/jpackage %ghost %{_bindir}/jrunscript @@ -2550,6 +2556,7 @@ exit 0 - Make man page handling dependent on pandoc being available during the portable build - Handle new CDS archive variants (*_coh*) added by Compact Object Headers (JDK-8305895) - Add missing man page alternatives for jdeprscan, jfr, jhsdb, jimage, jlink & jmod and fix alphabetical ordering +- Support jnativescan added by JDK-8317611: "Add a tool like jdeprscan to find usage of restricted methods" - Related: RHEL-120553 * Sat Oct 25 2025 Andrew Hughes - 1:23.0.2.0.7-1 From 1e53c2a5c73a474bde1fb963714013628ae12f51 Mon Sep 17 00:00:00 2001 From: Andrew Hughes Date: Sun, 9 Nov 2025 03:17:17 +0000 Subject: [PATCH 11/12] Add recent native libraries to _privatelibs (libjsvml.so, libsimdsort.so, libsyslookup.so) Related: RHEL-120553 --- java-25-openjdk.spec | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/java-25-openjdk.spec b/java-25-openjdk.spec index d7b67c5..bf6858f 100644 --- a/java-25-openjdk.spec +++ b/java-25-openjdk.spec @@ -443,7 +443,7 @@ # fix for https://bugzilla.redhat.com/show_bug.cgi?id=1111349 # https://bugzilla.redhat.com/show_bug.cgi?id=1590796#c14 # https://bugzilla.redhat.com/show_bug.cgi?id=1655938 -%global _privatelibs libsplashscreen[.]so.*|libawt_xawt[.]so.*|libjli[.]so.*|libattach[.]so.*|libawt[.]so.*|libextnet[.]so.*|libawt_headless[.]so.*|libdt_socket[.]so.*|libfontmanager[.]so.*|libinstrument[.]so.*|libj2gss[.]so.*|libj2pcsc[.]so.*|libj2pkcs11[.]so.*|libjaas[.]so.*|libjavajpeg[.]so.*|libjdwp[.]so.*|libjimage[.]so.*|libjsound[.]so.*|liblcms[.]so.*|libmanagement[.]so.*|libmanagement_agent[.]so.*|libmanagement_ext[.]so.*|libmlib_image[.]so.*|libnet[.]so.*|libnio[.]so.*|libprefs[.]so.*|librmi[.]so.*|libsaproc[.]so.*|libsctp[.]so.*|libzip[.]so.*%{freetype_lib} +%global _privatelibs libsplashscreen[.]so.*|libawt_xawt[.]so.*|libjli[.]so.*|libattach[.]so.*|libawt[.]so.*|libextnet[.]so.*|libawt_headless[.]so.*|libdt_socket[.]so.*|libfontmanager[.]so.*|libinstrument[.]so.*|libj2gss[.]so.*|libj2pcsc[.]so.*|libj2pkcs11[.]so.*|libjaas[.]so.*|libjavajpeg[.]so.*|libjdwp[.]so.*|libjimage[.]so.*|libjsound[.]so.*|libjsvml[.]so.*|liblcms[.]so.*|libmanagement[.]so.*|libmanagement_agent[.]so.*|libmanagement_ext[.]so.*|libmlib_image[.]so.*|libnet[.]so.*|libnio[.]so.*|libprefs[.]so.*|librmi[.]so.*|libsaproc[.]so.*|libsctp[.]so.*|libsimdsort[.]so.*|libsyslookup[.]so.*|libzip[.]so.*%{freetype_lib} %global _publiclibs libjawt[.]so.*|libjava[.]so.*|libjvm[.]so.*|libverify[.]so.*|libjsig[.]so.* %if %is_system_jdk %global __provides_exclude ^(%{_privatelibs})$ @@ -2557,6 +2557,7 @@ exit 0 - Handle new CDS archive variants (*_coh*) added by Compact Object Headers (JDK-8305895) - Add missing man page alternatives for jdeprscan, jfr, jhsdb, jimage, jlink & jmod and fix alphabetical ordering - Support jnativescan added by JDK-8317611: "Add a tool like jdeprscan to find usage of restricted methods" +- Add recent native libraries to _privatelibs (libjsvml.so, libsimdsort.so, libsyslookup.so) - Related: RHEL-120553 * Sat Oct 25 2025 Andrew Hughes - 1:23.0.2.0.7-1 From 8068bbc02a29f453bb7f5501fbaf113652cac821 Mon Sep 17 00:00:00 2001 From: Andrew Hughes Date: Sun, 9 Nov 2025 03:25:03 +0000 Subject: [PATCH 12/12] Support libsleef on AArch64 & RISC-V added by JDK-8329816, JDK-8320500 (RISC-V) & JDK-8312425 (AArch64) Related: RHEL-120553 --- java-25-openjdk.spec | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/java-25-openjdk.spec b/java-25-openjdk.spec index bf6858f..b3be6f7 100644 --- a/java-25-openjdk.spec +++ b/java-25-openjdk.spec @@ -142,6 +142,8 @@ %global svml_arches x86_64 # Set of architectures for which java has intrinsics for Arrays.sort (libsimdsort.so) %global simdsort_arches x86_64 +# Set of architectures for which SLEEF is used for vector math operations +%global sleef_arches %{aarch64} riscv64 # Set of architectures where we verify backtraces with gdb %global gdb_arches %{jit_arches} %{zero_arches} # Architecture on which we run Java only tests @@ -443,7 +445,7 @@ # fix for https://bugzilla.redhat.com/show_bug.cgi?id=1111349 # https://bugzilla.redhat.com/show_bug.cgi?id=1590796#c14 # https://bugzilla.redhat.com/show_bug.cgi?id=1655938 -%global _privatelibs libsplashscreen[.]so.*|libawt_xawt[.]so.*|libjli[.]so.*|libattach[.]so.*|libawt[.]so.*|libextnet[.]so.*|libawt_headless[.]so.*|libdt_socket[.]so.*|libfontmanager[.]so.*|libinstrument[.]so.*|libj2gss[.]so.*|libj2pcsc[.]so.*|libj2pkcs11[.]so.*|libjaas[.]so.*|libjavajpeg[.]so.*|libjdwp[.]so.*|libjimage[.]so.*|libjsound[.]so.*|libjsvml[.]so.*|liblcms[.]so.*|libmanagement[.]so.*|libmanagement_agent[.]so.*|libmanagement_ext[.]so.*|libmlib_image[.]so.*|libnet[.]so.*|libnio[.]so.*|libprefs[.]so.*|librmi[.]so.*|libsaproc[.]so.*|libsctp[.]so.*|libsimdsort[.]so.*|libsyslookup[.]so.*|libzip[.]so.*%{freetype_lib} +%global _privatelibs libsplashscreen[.]so.*|libawt_xawt[.]so.*|libjli[.]so.*|libattach[.]so.*|libawt[.]so.*|libextnet[.]so.*|libawt_headless[.]so.*|libdt_socket[.]so.*|libfontmanager[.]so.*|libinstrument[.]so.*|libj2gss[.]so.*|libj2pcsc[.]so.*|libj2pkcs11[.]so.*|libjaas[.]so.*|libjavajpeg[.]so.*|libjdwp[.]so.*|libjimage[.]so.*|libjsound[.]so.*|libjsvml[.]so.*|liblcms[.]so.*|libmanagement[.]so.*|libmanagement_agent[.]so.*|libmanagement_ext[.]so.*|libmlib_image[.]so.*|libnet[.]so.*|libnio[.]so.*|libprefs[.]so.*|librmi[.]so.*|libsaproc[.]so.*|libsctp[.]so.*|libsimdsort[.]so.*|libsleef[.]so.*|libsyslookup[.]so.*|libzip[.]so.*%{freetype_lib} %global _publiclibs libjawt[.]so.*|libjava[.]so.*|libjvm[.]so.*|libverify[.]so.*|libjsig[.]so.* %if %is_system_jdk %global __provides_exclude ^(%{_privatelibs})$ @@ -857,6 +859,9 @@ fi %ifarch %{simdsort_arches} %{_jvmdir}/%{sdkdir -- %{?1}}/lib/libsimdsort.so %endif +%ifarch %{sleef_arches} +%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libsleef.so +%endif %{_jvmdir}/%{sdkdir -- %{?1}}/lib/libsyslookup.so %{_jvmdir}/%{sdkdir -- %{?1}}/lib/libverify.so %{_jvmdir}/%{sdkdir -- %{?1}}/lib/libzip.so @@ -1511,6 +1516,11 @@ Provides: bundled(libpng) = 1.6.47 # Version in src/java.base/share/native/libzip/zlib/zlib.h Provides: bundled(zlib) = 1.3.1 %endif +%ifarch %{sleef_arches} +# SLEEF is always bundled +# Version in src/jdk.incubator.vector/linux/native/libsleef/generated/sleefinline_advsimd.h +Provides: bundled(sleef) = 3.6.1 +%endif # this is always built, also during debug-only build # when it is built in debug-only this package is just placeholder @@ -2558,6 +2568,7 @@ exit 0 - Add missing man page alternatives for jdeprscan, jfr, jhsdb, jimage, jlink & jmod and fix alphabetical ordering - Support jnativescan added by JDK-8317611: "Add a tool like jdeprscan to find usage of restricted methods" - Add recent native libraries to _privatelibs (libjsvml.so, libsimdsort.so, libsyslookup.so) +- Support libsleef on AArch64 & RISC-V added by JDK-8329816, JDK-8320500 (RISC-V) & JDK-8312425 (AArch64) - Related: RHEL-120553 * Sat Oct 25 2025 Andrew Hughes - 1:23.0.2.0.7-1