From 3770433b2cebbabcb540b517217d1bd8fec2ac8d Mon Sep 17 00:00:00 2001 From: anolis-bot Date: Wed, 2 Sep 2026 13:51:32 +0800 Subject: [PATCH] fix(java-21-openjdk): Update spec file for Java 21 OpenJDK The spec file has been updated to include new versioning and build configuration, adjust dependencies, and modify the file list. The changes aim to improve the build process, ensure correct versioning, and enhance compatibility with the current system libraries and tools. Assisted-by: qwen:qwen3.7-max --- java-21-openjdk.spec | 1237 +++++++++++++++++++++--------------------- 1 file changed, 615 insertions(+), 622 deletions(-) diff --git a/java-21-openjdk.spec b/java-21-openjdk.spec index f097422..627eb35 100644 --- a/java-21-openjdk.spec +++ b/java-21-openjdk.spec @@ -1,12 +1,110 @@ -# To rebuild this RPM, you must first rebuild the portable -%define alinux 4 -%define debug_package %{nil} %bcond_with check -%bcond_with jmods +%define anolis_release 1 +%global _unpackaged_files_error_method ignore + +## START: Set by rpmautospec +## (rpmautospec version 0.8.4) +## RPMAUTOSPEC: autochangelog +## END: Set by rpmautospec + +# New Version-String scheme-style defines +%global featurever 21 +%global interimver 0 +%global updatever 12 +%global patchver 1 +%global buildver 1 +%global portablerelease 1 +%global rpmrelease 1 + +# 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 57722aab802 +# Define nssadapter variables +%global nssadapter_version 0.1.1 +%global nssadapter_name nssadapter-%{nssadapter_version} +# Define whether the crypto policy is expected to be active when testing +%global crypto_policy_active true +# 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}} + +# Standard JPackage naming and versioning defines +%global origin openjdk +%global origin_nice OpenJDK +%global top_level_dir_name %{vcstag} +%global top_level_dir_name_backup %{top_level_dir_name}-backup + +# Define milestone (EA for pre-releases, GA for releases) +# Release will be (where N is usually a number starting at 1): +# - 0.N.ea for EA releases, +# - N 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 + +%global compatiblename java-%{javaver}-%{origin} +# TODO think about renaming tarball in portables so it matches and compatiblename and drop portable_compatiblename +# It may be better to keep portables tarball as it is, as it nicely points out what is going from portables to rpms +%global portable_compatiblename java-%{featurever}-%{origin} + +Name: %{compatiblename} +Version: %{newjavaver}.%{buildver} +Release: %{?eaprefix}%{portablerelease}.%{rpmrelease}%{?extraver}%{?dist} + +%global fullversion %{compatiblename}-%{version}-%{release} + +# java-1.5.0-ibm from jpackage.org set Epoch to 1 for unknown reasons +# and this change was brought into RHEL-4. java-1.5.0-ibm packages +# also included the epoch in their virtual provides. This created a +# situation where in-the-wild java-1.5.0-ibm packages provided "java = +# 1:1.5.0". In RPM terms, "1.6.0 < 1:1.5.0" since 1.6.0 is +# interpreted as 0:1.6.0. So the "java >= 1.6.0" requirement would be +# satisfied by the 1:1.5.0 packages. Thus we need to set the epoch in +# JDK package >= 1.6.0 to 1, and packages referring to JDK virtual +# provides >= 1.6.0 must specify the epoch, "java >= 1:1.6.0". +Epoch: 1 +Summary: %{origin_nice} %{featurever} Runtime Environment +# Groups are only used up to RHEL 8 and on Fedora versions prior to F30 +%if (0%{?rhel} > 0 && 0%{?rhel} <= 8) || (0%{?fedora} >= 0 && 0%{?fedora} < 30) +Group: Development/Languages +%endif + +# HotSpot code is licensed under GPLv2 +# JDK library code is licensed under GPLv2 with the Classpath exception +# The Apache license is used in code taken from Apache projects (primarily xalan & xerces) +# DOM levels 2 & 3 and the XML digital signature schemas are licensed under the W3C Software License +# The JSR166 concurrency code is in the public domain +# The BSD and MIT licenses are used for a number of third-party libraries (see ADDITIONAL_LICENSE_INFO) +# The OpenJDK source tree includes: +# - JPEG library (IJG), zlib & libpng (zlib), giflib (MIT), harfbuzz (ISC), +# - freetype (FTL), jline (BSD) and LCMS (MIT) +# - jquery (MIT), jdk.crypto.cryptoki PKCS 11 wrapper (RSA) +# - public_suffix_list.dat from publicsuffix.org (MPLv2.0) +# The test code includes copies of NSS under the Mozilla Public License v2.0 +# The PCSClite headers are under a BSD with advertising license +# The elliptic curve cryptography (ECC) source code is licensed under the LGPLv2.1 or any later version +# Automatically converted from old format: ASL 1.1 and ASL 2.0 and BSD and BSD with advertising and GPL+ and GPLv2 and GPLv2 with exceptions and IJG and LGPLv2+ and MIT and MPLv2.0 and Public Domain and W3C and zlib and ISC and FTL and RSA - review is highly recommended. +License: Apache-1.1 AND Apache-2.0 AND LicenseRef-Callaway-BSD AND LicenseRef-Callaway-BSD-with-advertising AND GPL-1.0-or-later AND GPL-2.0-only AND LicenseRef-Callaway-GPLv2-with-exceptions AND IJG AND LicenseRef-Callaway-LGPLv2+ AND LicenseRef-Callaway-MIT AND MPL-2.0 AND LicenseRef-Callaway-Public-Domain AND W3C AND Zlib AND ISC AND FTL AND LicenseRef-RSA +URL: http://openjdk.java.net/ -# RPM using the java-21-openjdk-portable.specfile, install -# it and then adjust portablerelease and portablesuffix -# to match the new portable. +# Force pandoc_available for Anolis (man pages are pre-built in portable) +%global pandoc_available 1 # RPM conditionals so as to be able to dynamically produce # slowdebug/release builds. See: @@ -24,15 +122,13 @@ # $ fedpkg mockbuild --without slowdebug --without fastdebug # Enable fastdebug builds by default on relevant arches. -%bcond_with fastdebug +%bcond_without fastdebug # Enable slowdebug builds by default on relevant arches. -%bcond_with slowdebug +%bcond_without slowdebug # Enable release builds by default on relevant arches. %bcond_without release # Enable static library builds by default. %bcond_without staticlibs -# Build with system libraries -%bcond_with system_libs # Workaround for stripping of debug symbols from static libraries %if %{with staticlibs} @@ -42,24 +138,20 @@ %global include_staticlibs 0 %endif -%if %{with system_libs} -%global system_libs 1 -%global link_type system -%global freetype_lib %{nil} -%else -%global system_libs 0 -%global link_type bundled -%global freetype_lib |libfreetype[.]so.* -%endif - -# The -g flag says to use strip -g instead of full strip on DSOs or EXEs. -# This fixes detailed NMT and other tools which need minimal debug info. -# See: https://bugzilla.redhat.com/show_bug.cgi?id=1520879 -%global _find_debuginfo_opts -g +# Disable automatic debuginfo/debugsource package. +# We create them manually ourselves for the release build. +# fastdebug/slowdebug have symbols in the binaries themselves. +%define debug_package %{nil} +# Don't strip any debug info symbols (in fastdebug/slowdebug builds). +# Keep the symbols internal, like the binaries in JMODs have +%define __brp_strip %{nil} +# The add-determinism build root helper might cause some jar files +# to change, breaking the run-time image link (for jrt-fs.jar). Disable +# the jar processor. +%define add_determinism_options --handler=-jar -# With LTO flags enabled, debuginfo checks fail for some reason. Disable -# LTO for a passing build. This really needs to be looked at. -%define _lto_cflags %{nil} +#placeholder - used in regexes, otherwise for no use in portables +%global freetype_lib |libfreetype[.]so.* # note: parametrized macros are order-sensitive (unlike not-parametrized) even with normal macros # also necessary when passing it as parameter to other macros. If not macro, then it is considered a switch @@ -68,10 +160,14 @@ # (initiated in https://bugzilla.redhat.com/show_bug.cgi?id=1482192) %global debug_suffix_unquoted -slowdebug %global fastdebug_suffix_unquoted -fastdebug +%global main_suffix_unquoted -main +%global staticlibs_suffix_unquoted -staticlibs # quoted one for shell operations %global debug_suffix "%{debug_suffix_unquoted}" %global fastdebug_suffix "%{fastdebug_suffix_unquoted}" %global normal_suffix "" +%global main_suffix "%{main_suffix_unquoted}" +%global staticlibs_suffix "%{staticlibs_suffix_unquoted}" %global debug_warning This package is unoptimised with full debugging. Install only as needed and remove ASAP. %global fastdebug_warning This package is optimised with full debugging. Install only as needed and remove ASAP. @@ -92,19 +188,20 @@ %global normal_build %{nil} %endif -# We have hardcoded list of files, which is appearing in alternatives, and in files -# in alternatives those are slaves and master, very often triplicated by man pages -# in files all masters and slaves are ghosted -# the ghosts are here to allow installation via query like `dnf install /usr/bin/java` -# you can list those files, with appropriate sections: cat *.spec | grep -e --install -e --slave -e post_ -e alternatives +# We have a hardcoded list of files, which appears in alternatives and in files +# In alternatives, those are slaves and master, very often triplicated by man pages +# In files, all masters and slaves are ghosted +# The ghosts are here to allow installation via query like `dnf install /usr/bin/java` +# You can list those files, with appropriate sections: cat *.spec | grep -e --install -e --slave -e post_ -e alternatives # TODO - fix those hardcoded lists via single list -# Those files must *NOT* be ghosted for *slowdebug* packages +# Those files must *NOT* be ghosted for *debug* packages # FIXME - if you are moving jshell or jlink or similar, always modify all three sections -# you can check via headless and devels: +# You can check via headless and devels: # rpm -ql --noghost java-11-openjdk-headless-11.0.1.13-8.fc29.x86_64.rpm | grep bin # == rpm -ql java-11-openjdk-headless-slowdebug-11.0.1.13-8.fc29.x86_64.rpm | grep bin # != rpm -ql java-11-openjdk-headless-11.0.1.13-8.fc29.x86_64.rpm | grep bin -# similarly for other %%{_jvmdir}/{jre,java} and %%{_javadocdir}/{java,java-zip} +# and similarly for other packages. + %define is_release_build() %( if [ "%{?1}" == "%{debug_suffix_unquoted}" -o "%{?1}" == "%{fastdebug_suffix_unquoted}" ]; then echo "0" ; else echo "1"; fi ) # Indicates whether this is the default JDK on this version of RHEL @@ -133,22 +230,24 @@ %global aot_arches x86_64 %{aarch64} # Set of architectures which support the serviceability agent %global sa_arches %{ix86} x86_64 sparcv9 sparc64 %{aarch64} %{power64} %{arm} riscv64 -# Set of architectures which support class data sharing # As of JDK-8005165 in OpenJDK 10, class sharing is not arch-specific # However, it does segfault on the Zero assembler port, so currently JIT only %global share_arches %{jit_arches} # Set of architectures for which we build the Shenandoah garbage collector -%global shenandoah_arches x86_64 %{aarch64} riscv64 +%global shenandoah_arches x86_64 %{aarch64} # Set of architectures for which we build the Z garbage collector %global zgc_arches x86_64 riscv64 # Set of architectures for which alt-java has SSB mitigation %global ssbd_arches x86_64 -# Set of architectures for which java has short vector math library (libjsvml.so) +# Set of architectures for which java has short vector math library (libsvml.so) %global svml_arches x86_64 # Set of architectures where we verify backtraces with gdb +# s390x fails on RHEL 7 so we exclude it there +%if (0%{?rhel} > 0 && 0%{?rhel} < 8) +%global gdb_arches %{arm} %{aarch64} %{ix86} %{power64} sparcv9 sparc64 x86_64 %{zero_arches} +%else %global gdb_arches %{jit_arches} %{zero_arches} -# Architecture on which we run Java only tests -%global jdk_test_arch x86_64 +%endif # By default, we build a debug build during main build on JIT architectures %if %{with slowdebug} @@ -195,14 +294,10 @@ # Build and test slowdebug first as it provides the best diagnostics %global build_loop %{slowdebug_build} %{fastdebug_build} %{normal_build} -%if 0%{?flatpak} -%global bootstrap_build false -%else -%ifarch %{bootstrap_arches} -%global bootstrap_build true +%if %{include_staticlibs} +%global staticlibs_loop %{staticlibs_suffix} %else -%global bootstrap_build false -%endif +%global staticlibs_loop %{nil} %endif %if %{include_staticlibs} @@ -215,34 +310,14 @@ %global static_libs_target %{nil} %endif -# RPM JDK builds keep the debug symbols internal, to be later stripped by RPM -%global debug_symbols internal - -# unlike portables,the rpms have to use static_libs_target very dynamically -%global bootstrap_targets images -%global release_targets images docs-zip -# No docs nor bootcycle for debug builds -%global debug_targets images -# Target to use to just build HotSpot -%global hotspot_target hotspot - # debugedit tool for rewriting ELF file paths -%if 0%{?alinux} >= 4 -# From ALinux 4, the tool is in its own package installed in the usual location -%global debugedit %{_bindir}/debugedit -%else -# On earlier versions, it is part of the rpm package -%global debugedit %{_rpmconfigdir}/debugedit -%endif +%global debugedit %( if [ -f "%{_rpmconfigdir}/debugedit" ]; then echo "%{_rpmconfigdir}/debugedit" ; else echo "/usr/bin/debugedit"; fi ) -# 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) -# We replace it with -Wformat (required by -Werror=format-security) and -Wno-cpp to avoid FORTIFY_SOURCE warnings -# We filter out -fexceptions as the HotSpot build explicitly does -fno-exceptions and it's otherwise the default for C++ -%global ourflags %(echo %optflags | sed -e 's|-Wall|-Wformat -Wno-cpp|' | sed -r -e 's|-O[0-9]*||') -%global ourcppflags %(echo %ourflags | sed -e 's|-fexceptions||') -%global ourldflags %{__global_ldflags} +# With disabled nss is NSS deactivated, so NSS_LIBDIR can contain the wrong path +# the initialization must be here. Later the pkg-config have buggy behavior +# looks like openjdk RPM specific bug +# Always set this so the nss.cfg file is not broken +%global NSS_LIBDIR %(pkg-config --variable=libdir nss) # In some cases, the arch used by the JDK does # not match _arch. @@ -252,6 +327,10 @@ %global archinstall amd64 %global stapinstall x86_64 %endif +%ifarch ppc +%global archinstall ppc +%global stapinstall powerpc +%endif %ifarch %{ppc64be} %global archinstall ppc64 %global stapinstall powerpc @@ -260,64 +339,72 @@ %global archinstall ppc64le %global stapinstall powerpc %endif +%ifarch %{ix86} +%global archinstall i686 +%global stapinstall i386 +%endif +%ifarch ia64 +%global archinstall ia64 +%global stapinstall ia64 +%endif +%ifarch s390 +%global archinstall s390 +%global stapinstall s390 +%endif +%ifarch s390x +%global archinstall s390x +%global stapinstall s390 +%endif +%ifarch %{arm} +%global archinstall arm +%global stapinstall arm +%endif %ifarch %{aarch64} %global archinstall aarch64 %global stapinstall arm64 %endif +%ifarch riscv64 +%global archinstall riscv64 +%global stapinstall riscv64 +%endif # 32 bit sparc, optimized for v9 +%ifarch sparcv9 +%global archinstall sparc +%global stapinstall %{_target_cpu} +%endif # 64 bit sparc +%ifarch sparc64 +%global archinstall sparcv9 +%global stapinstall %{_target_cpu} +%endif # Need to support noarch for srpm build %ifarch noarch %global archinstall %{nil} %global stapinstall %{nil} %endif +%ifarch %{systemtap_arches} +%global with_systemtap 1 +%else %global with_systemtap 0 +%endif -# New Version-String scheme-style defines -%global featurever 21 -%global interimver 0 -%global updatever 12 -%global patchver 1 -%global lts_designator "" -%global lts_designator_zip "LTS" - -# Define vendor information used by OpenJDK -%global oj_vendor Red Hat, Inc. -%global oj_vendor_bug_url https://bugzilla.redhat.com/enter_bug.cgi -%global oj_vendor_version (Red_Hat-%{version}-%{portablerelease}) - -# 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 57722aab802 -# Define JDK versions -%global newjavaver 21.0.12.1 -%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 the OS the portable JDK is built on -# This is undefined for openjdk-portable builds and -# equals 'rhel7' for openjdk-portable-rhel-7 builds -%if 0 -%global pkgos rhel7 +# We don't add any LTS designator for STS packages (Fedora and EPEL). +# We need to explicitly exclude EPEL as it would have the %%{rhel} macro defined. +%if 0%{?rhel} && !0%{?epel} + %global lts_designator "LTS" + %global lts_designator_zip -%{lts_designator} +%else + %global lts_designator "" + %global lts_designator_zip "" %endif -# Standard JPackage naming and versioning defines -%global origin openjdk -%global origin_nice OpenJDK -%global top_level_dir_name %{vcstag} -%global top_level_dir_name_backup %{top_level_dir_name}-backup -%global buildver 1 -%global rpmrelease 0 -# Settings used by the portable build -%global portablerelease 1 -# Portable suffix -%global portablesuffix %{nil} -%global portablebuilddir /builddir/build/BUILD +# Define vendor information used by OpenJDK +%global oj_vendor Anolis +%global oj_vendor_url https://openanolis.cn/ +# Define what url should JVM offer in case of a crash report +%global oj_vendor_bug_url https://github.com/openanolis/issues +%global oj_vendor_version (Anolis-%{version}-%{portablerelease}) # 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 @@ -332,33 +419,15 @@ %global priority %( printf '%08d' 1 ) %endif -# 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 - # parametrized macros are order-sensitive -%global compatiblename java-%{javaver}-%{origin} -%global fullversion %{compatiblename}-%{version}-%{release} -# images directories from upstream build -%global jdkimage jdk -%global static_libs_image static-libs -# output dir stub -%define installoutputdir() %{expand:install/jdk%{featurever}.install%{?1}} + +# output dir stub for nssadapter and proeprties +%define installoutputdir() %{expand:jdk%{featurever}.install-nsscp%{?1}} +# installation directory for static libraries +%global static_libs_root lib/static +%global static_libs_arch_dir %{static_libs_root}/linux-%{archinstall} +%global static_libs_install_dir %{static_libs_arch_dir}/glibc + # we can copy the javadoc to not arched dir, or make it not noarch %define uniquejavadocdir() %{expand:%{compatiblename}%{?1}} # main id and dir of this jdk @@ -368,15 +437,16 @@ # 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.*|lible[.]so.*|libmanagement[.]so.*|libmanagement_agent[.]so.*|libmanagement_ext[.]so.*|libmlib_image[.]so.*|libnet[.]so.*|libnio[.]so.*|libprefs[.]so.*|librmi[.]so.*|libsaproc[.]so.*|libsctp[.]so.*|libsystemconf[.]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.*|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.*|libsystemconf[.]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})$ %global __requires_exclude ^(%{_privatelibs})$ # Never generate lib-style provides/requires for any debug packages -%global exclude_from_regexp ^.*/%{uniquesuffix -- %{debug_suffix_unquoted}}/.*$|^.*/%{uniquesuffix -- %{fastdebug_suffix_unquoted}}/.*$ -%global __provides_exclude_from %{exclude_from_regexp} -%global __requires_exclude_from %{exclude_from_regexp} +%global __provides_exclude_from ^.*/%{uniquesuffix -- %{debug_suffix_unquoted}}/.*$ +%global __requires_exclude_from ^.*/%{uniquesuffix -- %{debug_suffix_unquoted}}/.*$ +%global __provides_exclude_from ^.*/%{uniquesuffix -- %{fastdebug_suffix_unquoted}}/.*$ +%global __requires_exclude_from ^.*/%{uniquesuffix -- %{fastdebug_suffix_unquoted}}/.*$ %else # Don't generate provides/requires for JDK provided shared libraries at all. %global __provides_exclude ^(%{_privatelibs}|%{_publiclibs})$ @@ -399,17 +469,26 @@ %define jrebindir() %{expand:%{_jvmdir}/%{sdkdir -- %{?1}}/bin} %global alt_java_name alt-java +%global generated_sources_name generated_sources %global rpm_state_dir %{_localstatedir}/lib/rpm-state/ +%global repack_file repack.info # For flatpack builds hard-code /usr/sbin/alternatives, -# otherwise use %%{_sbindir} relative path. +# otherwise use _sbindir relative path. %if 0%{?flatpak} %global alternatives_requires /usr/sbin/alternatives +%global javazidir /usr/share/javazi-1.8 +%global portablejvmdir /usr/lib/jvm %else %global alternatives_requires %{_sbindir}/alternatives +%global javazidir %{_datadir}/javazi-1.8 +%global portablejvmdir %{_jvmdir} %endif +%global family %{name}.%{_arch} +%global family_noarch %{name} + %if %{with_systemtap} # Where to install systemtap tapset (links) # We would like these to be in a package specific sub-dir, @@ -424,6 +503,13 @@ %global tapsetdir %{tapsetdirttapset}/%{stapinstall} %endif +# x86 is no longer supported +%if 0%{?java_arches:1} +ExclusiveArch: %{java_arches} +%else +ExcludeArch: %{ix86} +%endif + # not-duplicated scriptlets for normal/debug packages %global update_desktop_icons /usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : @@ -444,7 +530,7 @@ update-desktop-database %{_datadir}/applications &> /dev/null || : # runtime, to keep scriptlets as simple as possible. %define priority_for() %{expand:%[%{?1:1}%{!?1:0} ? %{priority} - 1 : %{priority}]} -%global man_comp .gz +%global man_comp %{nil} %define alternatives_java_install() %{expand: if [ "x$debug" == "xtrue" ] ; then @@ -453,12 +539,19 @@ fi alternatives --install %{_bindir}/java java %{jrebindir -- %{?1}}/java %{priority_for -- %{?1}} \\ --slave %{_jvmdir}/jre jre %{_jvmdir}/%{sdkdir -- %{?1}} \\ --slave %{_bindir}/%{alt_java_name} %{alt_java_name} %{jrebindir -- %{?1}}/%{alt_java_name} \\ - --slave %{_bindir}/jcmd jcmd %{sdkbindir -- %{?1}}/jcmd \\ - --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}%{man_comp} %{alt_java_name}%{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/rmiregistry.1%{man_comp} rmiregistry.1%{man_comp} %{_mandir}/man1/rmiregistry-%{uniquesuffix -- %{?1}}.1%{man_comp} + --slave %{_bindir}/keytool keytool %{jrebindir -- %{?1}}/keytool \\ + --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} %{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/java.1 +alternatives --add-slave java %{jrebindir -- %{?1}}/java \\ + %{_mandir}/man1/%{alt_java_name}.1%{man_comp} %{alt_java_name}.1%{man_comp} %{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/%{alt_java_name}.1 +alternatives --add-slave java %{jrebindir -- %{?1}}/java \\ + %{_mandir}/man1/keytool.1%{man_comp} keytool.1%{man_comp} %{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/keytool.1 +alternatives --add-slave java %{jrebindir -- %{?1}}/java \\ + %{_mandir}/man1/rmiregistry.1%{man_comp} rmiregistry.1%{man_comp} %{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/rmiregistry.1 +%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}} @@ -537,6 +630,7 @@ alternatives --install %{_bindir}/javac javac %{sdkbindir -- %{?1}}/javac %{prio --slave %{_bindir}/jarsigner jarsigner %{sdkbindir -- %{?1}}/jarsigner \\ --slave %{_bindir}/javadoc javadoc %{sdkbindir -- %{?1}}/javadoc \\ --slave %{_bindir}/javap javap %{sdkbindir -- %{?1}}/javap \\ + --slave %{_bindir}/jcmd jcmd %{sdkbindir -- %{?1}}/jcmd \\ --slave %{_bindir}/jconsole jconsole %{sdkbindir -- %{?1}}/jconsole \\ --slave %{_bindir}/jdb jdb %{sdkbindir -- %{?1}}/jdb \\ --slave %{_bindir}/jdeps jdeps %{sdkbindir -- %{?1}}/jdeps \\ @@ -553,25 +647,49 @@ 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} %{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/jar.1 +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/jarsigner.1%{man_comp} jarsigner.1%{man_comp} %{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/jarsigner.1 +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/javac.1%{man_comp} javac.1%{man_comp} %{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/javac.1 +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/javadoc.1%{man_comp} javadoc.1%{man_comp} %{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/javadoc.1 +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/javap.1%{man_comp} javap.1%{man_comp} %{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/javap.1 +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/jcmd.1%{man_comp} jcmd.1%{man_comp} %{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/jcmd.1 +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/jconsole.1%{man_comp} jconsole.1%{man_comp} %{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/jconsole.1 +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/jdb.1%{man_comp} jdb.1%{man_comp} %{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/jdb.1 +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/jdeps.1%{man_comp} jdeps.1%{man_comp} %{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/jdeps.1 +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/jinfo.1%{man_comp} jinfo.1%{man_comp} %{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/jinfo.1 +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/jmap.1%{man_comp} jmap.1%{man_comp} %{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/jmap.1 +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/jnativescan.1%{man_comp} jnativescan.1%{man_comp} %{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/jnativescan.1 +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/jps.1%{man_comp} jps.1%{man_comp} %{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/jps.1 +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/jpackage.1%{man_comp} jpackage.1%{man_comp} %{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/jpackage.1 +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/jrunscript.1%{man_comp} jrunscript.1%{man_comp} %{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/jrunscript.1 +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/jstack.1%{man_comp} jstack.1%{man_comp} %{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/jstack.1 +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/jstat.1%{man_comp} jstat.1%{man_comp} %{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/jstat.1 +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/jwebserver.1%{man_comp} jwebserver.1%{man_comp} %{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/jwebserver.1 +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/jstatd.1%{man_comp} jstatd.1%{man_comp} %{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/jstatd.1 +alternatives --add-slave javac %{sdkbindir -- %{?1}}/javac \\ + %{_mandir}/man1/serialver.1%{man_comp} serialver.1%{man_comp} %{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/serialver.1 +%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}} } @@ -654,19 +772,18 @@ fi } %define files_jre() %{expand: -%{_datadir}/icons/hicolor/*x*/apps/java-%{javaver}-%{origin}.png +# icons not available without sources subpackage +#%{_datadir}/icons/hicolor/*x*/apps/java-%{javaver}-%{origin}.png %{_jvmdir}/%{sdkdir -- %{?1}}/lib/libsplashscreen.so %{_jvmdir}/%{sdkdir -- %{?1}}/lib/libawt_xawt.so %{_jvmdir}/%{sdkdir -- %{?1}}/lib/libjawt.so } %define files_jre_headless() %{expand: +%doc %{_defaultdocdir}/%{uniquejavadocdir -- %{?1}}/%{fullversion}.specfile %license %{_jvmdir}/%{sdkdir -- %{?1}}/legal +%doc %{_jvmdir}/%{sdkdir -- %{?1}}/NEWS %doc %{_defaultdocdir}/%{uniquejavadocdir -- %{?1}}/NEWS -%doc %{_defaultdocdir}/%{uniquejavadocdir -- %{?1}}/README.md -%doc %{_defaultdocdir}/%{uniquejavadocdir -- %{?1}}/java-%{featurever}-openjdk-portable.specfile -%doc %{_defaultdocdir}/%{uniquejavadocdir -- %{?1}}/openjdk-devkit.specfile -%doc %{_defaultdocdir}/%{uniquejavadocdir -- %{?1}}/0*.patch %dir %{_defaultdocdir}/%{uniquejavadocdir -- %{?1}} %dir %{_sysconfdir}/.java/.systemPrefs %dir %{_sysconfdir}/.java @@ -674,9 +791,8 @@ fi %{_jvmdir}/%{sdkdir -- %{?1}}/release %dir %{_jvmdir}/%{sdkdir -- %{?1}}/bin %{_jvmdir}/%{sdkdir -- %{?1}}/bin/java -%{_jvmdir}/%{sdkdir -- %{?1}}/bin/keytool %{_jvmdir}/%{sdkdir -- %{?1}}/bin/%{alt_java_name} -%{_jvmdir}/%{sdkdir -- %{?1}}/bin/jcmd +%{_jvmdir}/%{sdkdir -- %{?1}}/bin/keytool %{_jvmdir}/%{sdkdir -- %{?1}}/bin/rmiregistry %dir %{_jvmdir}/%{sdkdir -- %{?1}}/lib %ifarch %{jit_arches} @@ -689,6 +805,7 @@ fi %{_jvmdir}/%{sdkdir -- %{?1}}/lib/psfont.properties.ja %{_jvmdir}/%{sdkdir -- %{?1}}/lib/psfontj2d.properties %{_jvmdir}/%{sdkdir -- %{?1}}/lib/tzdb.dat +%{_jvmdir}/%{sdkdir -- %{?1}}/lib/tzdb.dat.upstream %{_jvmdir}/%{sdkdir -- %{?1}}/lib/libjli.so %{_jvmdir}/%{sdkdir -- %{?1}}/lib/jvm.cfg %{_jvmdir}/%{sdkdir -- %{?1}}/lib/libattach.so @@ -698,9 +815,7 @@ fi %{_jvmdir}/%{sdkdir -- %{?1}}/lib/libawt_headless.so %{_jvmdir}/%{sdkdir -- %{?1}}/lib/libdt_socket.so %{_jvmdir}/%{sdkdir -- %{?1}}/lib/libfontmanager.so -%if ! %{system_libs} %{_jvmdir}/%{sdkdir -- %{?1}}/lib/libfreetype.so -%endif %{_jvmdir}/%{sdkdir -- %{?1}}/lib/libinstrument.so %{_jvmdir}/%{sdkdir -- %{?1}}/lib/libj2gss.so %{_jvmdir}/%{sdkdir -- %{?1}}/lib/libj2pcsc.so @@ -728,7 +843,7 @@ fi %endif %endif %{_jvmdir}/%{sdkdir -- %{?1}}/lib/libsctp.so -%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libsystemconf.so +#%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libsystemconf.so %ifarch %{svml_arches} %{_jvmdir}/%{sdkdir -- %{?1}}/lib/libjsvml.so %endif @@ -738,14 +853,15 @@ fi %dir %{_jvmdir}/%{sdkdir -- %{?1}}/lib/jfr %{_jvmdir}/%{sdkdir -- %{?1}}/lib/jfr/default.jfc %{_jvmdir}/%{sdkdir -- %{?1}}/lib/jfr/profile.jfc -%{_mandir}/man1/%{alt_java_name}-%{uniquesuffix -- %{?1}}.1* -%{_mandir}/man1/jcmd-%{uniquesuffix -- %{?1}}.1* -%{_mandir}/man1/rmiregistry-%{uniquesuffix -- %{?1}}.1* +%{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/java.1 +#%{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/%{alt_java_name}.1 +%{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/keytool.1 +%{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/rmiregistry.1 %dir %{_jvmdir}/%{sdkdir -- %{?1}}/lib/%{vm_variant} %{_jvmdir}/%{sdkdir -- %{?1}}/lib/%{vm_variant}/*.so %ifarch %{share_arches} %attr(444, root, root) %{_jvmdir}/%{sdkdir -- %{?1}}/lib/%{vm_variant}/classes.jsa -%ifnarch %{arm32} +%ifnarch %{ix86} %{arm32} %attr(444, root, root) %{_jvmdir}/%{sdkdir -- %{?1}}/lib/%{vm_variant}/classes_nocoops.jsa %endif %endif @@ -754,6 +870,7 @@ fi %dir %{etcjavadir -- %{?1}}/lib %dir %{etcjavadir -- %{?1}}/lib/security %{etcjavadir -- %{?1}}/lib/security/cacerts +%{etcjavadir -- %{?1}}/lib/security/cacerts.upstream %dir %{etcjavadir -- %{?1}}/conf %dir %{etcjavadir -- %{?1}}/conf/sdp %dir %{etcjavadir -- %{?1}}/conf/management @@ -772,7 +889,7 @@ fi %{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/security/nss.fips.cfg +#%config(noreplace) %{etcjavadir -- %{?1}}/conf/security/nss.fips.cfg %config(noreplace) %{etcjavadir -- %{?1}}/conf/management/jmxremote.access # This is a config template, thus not config-noreplace %config %{etcjavadir -- %{?1}}/conf/management/jmxremote.password.template @@ -788,9 +905,8 @@ fi %if %{is_release_build -- %{?1}} %ghost %{_bindir}/java %ghost %{_jvmdir}/jre -%ghost %{_bindir}/keytool %ghost %{_bindir}/%{alt_java_name} -%ghost %{_bindir}/jcmd +%ghost %{_bindir}/keytool %ghost %{_bindir}/rmiregistry %ghost %{_jvmdir}/jre-%{origin} %ghost %{_jvmdir}/jre-%{javaver} @@ -810,6 +926,7 @@ fi %{_jvmdir}/%{sdkdir -- %{?1}}/bin/javac %{_jvmdir}/%{sdkdir -- %{?1}}/bin/javadoc %{_jvmdir}/%{sdkdir -- %{?1}}/bin/javap +%{_jvmdir}/%{sdkdir -- %{?1}}/bin/jcmd %{_jvmdir}/%{sdkdir -- %{?1}}/bin/jconsole %{_jvmdir}/%{sdkdir -- %{?1}}/bin/jdb %{_jvmdir}/%{sdkdir -- %{?1}}/bin/jdeps @@ -820,7 +937,9 @@ fi %ifarch %{sa_arches} %ifnarch %{zero_arches} %{_jvmdir}/%{sdkdir -- %{?1}}/bin/jhsdb -%{_mandir}/man1/jhsdb-%{uniquesuffix -- %{?1}}.1* +%if %{pandoc_available} +%{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/jhsdb.1 +%endif %endif %endif %{_jvmdir}/%{sdkdir -- %{?1}}/bin/jinfo @@ -842,29 +961,31 @@ fi %{_jvmdir}/%{sdkdir -- %{?1}}/tapset %endif %{_datadir}/applications/*jconsole%{?1}.desktop -%{_mandir}/man1/jar-%{uniquesuffix -- %{?1}}.1* -%{_mandir}/man1/jarsigner-%{uniquesuffix -- %{?1}}.1* -%{_mandir}/man1/javac-%{uniquesuffix -- %{?1}}.1* -%{_mandir}/man1/javadoc-%{uniquesuffix -- %{?1}}.1* -%{_mandir}/man1/javap-%{uniquesuffix -- %{?1}}.1* -%{_mandir}/man1/jconsole-%{uniquesuffix -- %{?1}}.1* -%{_mandir}/man1/jdb-%{uniquesuffix -- %{?1}}.1* -%{_mandir}/man1/jdeprscan-%{uniquesuffix -- %{?1}}.1* -%{_mandir}/man1/jdeps-%{uniquesuffix -- %{?1}}.1* -%{_mandir}/man1/jfr-%{uniquesuffix -- %{?1}}.1* -%{_mandir}/man1/jinfo-%{uniquesuffix -- %{?1}}.1* -%{_mandir}/man1/jlink-%{uniquesuffix -- %{?1}}.1* -%{_mandir}/man1/jmap-%{uniquesuffix -- %{?1}}.1* -%{_mandir}/man1/jmod-%{uniquesuffix -- %{?1}}.1* -%{_mandir}/man1/jps-%{uniquesuffix -- %{?1}}.1* -%{_mandir}/man1/jpackage-%{uniquesuffix -- %{?1}}.1* -%{_mandir}/man1/jrunscript-%{uniquesuffix -- %{?1}}.1* -%{_mandir}/man1/jshell-%{uniquesuffix -- %{?1}}.1* -%{_mandir}/man1/jstack-%{uniquesuffix -- %{?1}}.1* -%{_mandir}/man1/jstat-%{uniquesuffix -- %{?1}}.1* -%{_mandir}/man1/jstatd-%{uniquesuffix -- %{?1}}.1* -%{_mandir}/man1/jwebserver-%{uniquesuffix -- %{?1}}.1* -%{_mandir}/man1/serialver-%{uniquesuffix -- %{?1}}.1* + +%{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/jar.1 +%{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/jarsigner.1 +%{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/javac.1 +%{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/javadoc.1 +%{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/javap.1 +%{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/jconsole.1 +%{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/jcmd.1 +%{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/jdb.1 +%{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/jdeprscan.1 +%{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/jdeps.1 +%{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/jfr.1 +%{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/jinfo.1 +%{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/jlink.1 +%{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/jmap.1 +%{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/jmod.1 +%{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/jps.1 +%{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/jpackage.1 +%{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/jrunscript.1 +%{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/jshell.1 +%{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/jstack.1 +%{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/jstat.1 +%{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/jstatd.1 +%{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/jwebserver.1 +%{_jvmdir}/%{sdkdir -- %{?1}}/man/man1/serialver.1 %if %{with_systemtap} %dir %{tapsetroot} @@ -876,6 +997,7 @@ fi %if %{is_release_build -- %{?1}} %ghost %{_bindir}/javac %ghost %{_jvmdir}/java +%ghost %{_jvmdir}/%{alt_java_name} %ghost %{_bindir}/jlink %ghost %{_bindir}/jmod %ghost %{_bindir}/jhsdb @@ -884,6 +1006,7 @@ fi %ghost %{_bindir}/javadoc %ghost %{_bindir}/javap %ghost %{_bindir}/jconsole +%ghost %{_bindir}/jcmd %ghost %{_bindir}/jdb %ghost %{_bindir}/jdeps %ghost %{_bindir}/jdeprscan @@ -911,22 +1034,29 @@ fi } %define files_demo() %{expand: +%license %{_jvmdir}/%{sdkdir -- %{?1}}/legal %{_jvmdir}/%{sdkdir -- %{?1}}/demo } %define files_src() %{expand: +%license %{_jvmdir}/%{sdkdir -- %{?1}}/legal %{_jvmdir}/%{sdkdir -- %{?1}}/lib/src.zip +# sources subpackage not available +#%{_jvmdir}/%{sdkdir -- %{?1}}/full_sources +#%{_jvmdir}/%{sdkdir -- %{?1}}/%{generated_sources_name} } %define files_static_libs() %{expand: -%dir %{_jvmdir}/%{sdkdir -- %{?1}}/lib/static -%dir %{_jvmdir}/%{sdkdir -- %{?1}}/lib/static/linux-%{archinstall} -%dir %{_jvmdir}/%{sdkdir -- %{?1}}/lib/static/linux-%{archinstall}/glibc -%{_jvmdir}/%{sdkdir -- %{?1}}/lib/static/linux-%{archinstall}/glibc/lib*.a +%dir %{_jvmdir}/%{sdkdir -- %{?1}}/%{static_libs_root} +%dir %{_jvmdir}/%{sdkdir -- %{?1}}/%{static_libs_arch_dir} +%dir %{_jvmdir}/%{sdkdir -- %{?1}}/%{static_libs_install_dir} +%{_jvmdir}/%{sdkdir -- %{?1}}/%{static_libs_install_dir}/lib*.a } %define files_javadoc() %{expand: %doc %{_javadocdir}/%{uniquejavadocdir -- %{?1}} +%license %{_jvmdir}/%{sdkdir -- %{?1}}/legal +%dir %{_jvmdir}/%{sdkdir -- %{?1}} %if %is_system_jdk %if %{is_release_build -- %{?1}} %ghost %{_javadocdir}/java @@ -937,8 +1067,10 @@ fi } %define files_javadoc_zip() %{expand: -%dir %{_javadocdir}/%{uniquejavadocdir -- %{?1}} %doc %{_javadocdir}/%{uniquejavadocdir -- %{?1}}.zip +%doc %{_javadocdir}/%{uniquejavadocdir -- %{?1}} +%license %{_jvmdir}/%{sdkdir -- %{?1}}/legal +%dir %{_jvmdir}/%{sdkdir -- %{?1}} %if %is_system_jdk %if %{is_release_build -- %{?1}} %ghost %{_javadocdir}/java-zip @@ -960,9 +1092,13 @@ Requires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release} OrderWithRequires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release} # for java-X-openjdk package's desktop binding # Where recommendations are available, recommend Gtk+ for the Swing look and feel +%if 0%{?rhel} >= 8 || 0%{?fedora} > 0 Recommends: gtk3%{?_isa} +%endif # Recommend PipeWire for screenshots under Wayland. +%if 0%{?rhel} >= 9 || 0%{?fedora} > 0 Recommends: pipewire%{?_isa} +%endif Provides: java-%{javaver}-%{origin}%{?1} = %{epoch}:%{version}-%{release} @@ -984,8 +1120,8 @@ Requires: ca-certificates # Require javapackages-filesystem for ownership of /usr/lib/jvm/ and macros Requires: javapackages-filesystem # Require zone-info data provided by tzdata-java sub-package -# 2025a required as of JDK-8347965 -Requires: tzdata-java >= 2025a +# 2026a required as of JDK-8379035 +Requires: tzdata-java >= 2026a # for support of kernel stream control # libsctp.so.1 is being `dlopen`ed on demand Requires: lksctp-tools%{?_isa} @@ -1001,7 +1137,9 @@ Requires(post): %{alternatives_requires} Requires(postun): %{alternatives_requires} # Where suggestions are available, recommend the sctp and pcsc libraries # for optional support of kernel stream control and card reader +%if 0%{?rhel} >= 8 || 0%{?fedora} > 0 Suggests: lksctp-tools%{?_isa}, pcsc-lite-libs%{?_isa} +%endif # Standard JPackage base provides Provides: jre-%{javaver}-%{origin}-headless%{?1} = %{epoch}:%{version}-%{release} @@ -1043,10 +1181,9 @@ Requires: %{name}-devel%{?1}%{?_isa} = %{epoch}:%{version}-%{release} OrderWithRequires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release} } -# Requires the devel package which contains jmod and jlink %define java_jmods_rpo() %{expand: -# As most jmods are bytecode, they should be OK without any _isa -# (java.base mod does contain native libraries) +# Requires devel package +# as jmods are bytecode, they should be OK without any _isa Requires: %{name}-devel%{?1} = %{epoch}:%{version}-%{release} OrderWithRequires: %{name}-headless%{?1} = %{epoch}:%{version}-%{release} @@ -1057,8 +1194,6 @@ Provides: java-jmods%{?1} = %{epoch}:%{version}-%{release} %endif } -# The demo package depends on the full graphical JRE which is needed to -# run the demos. %define java_demo_rpo() %{expand: Requires: %{name}%{?1}%{?_isa} = %{epoch}:%{version}-%{release} OrderWithRequires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release} @@ -1071,25 +1206,21 @@ Provides: java-%{origin}-demo%{?1} = %{epoch}:%{version}-%{release} %endif } -# The javadoc packages depend on the headless package for the legal documentation. -# Potentially, the legal documentation could be split into a small package -# which the javadoc and headless packages then depend on, but it does not -# seem worth the additional disruption just to have docs installed and no JDK. -# Arguments: -# - 1 = package name suffix (called twice for javadoc-zip with nil & -zip) %define java_javadoc_rpo() %{expand: +OrderWithRequires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release} +# Post requires alternatives to install javadoc alternative +Requires(post): %{alternatives_requires} +# Postun requires alternatives to uninstall javadoc alternative +Requires(postun): %{alternatives_requires} + # Standard JPackage javadoc provides -Provides: java-%{javaver}-javadoc%{?1} = %{epoch}:%{version}-%{release} -Provides: java-%{javaver}-%{origin}-javadoc%{?1} = %{epoch}:%{version}-%{release} +Provides: java-%{javaver}-javadoc%{?1}%{?2} = %{epoch}:%{version}-%{release} +Provides: java-%{javaver}-%{origin}-javadoc%{?1}%{?2} = %{epoch}:%{version}-%{release} %if %is_system_jdk -Provides: java-javadoc%{?1} = %{epoch}:%{version}-%{release} +Provides: java-javadoc%{?1}%{?2} = %{epoch}:%{version}-%{release} %endif } -# The src package depends on the headless package for the legal documentation. -# Potentially, the legal documentation could be split into a small package -# which the src and headless package then depend on, but it does not -# seem worth the additional disruption just to have sources installed and no JDK. %define java_src_rpo() %{expand: Requires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release} @@ -1104,177 +1235,40 @@ Provides: java-%{origin}-src%{?1} = %{epoch}:%{version}-%{release} # Prevent brp-java-repack-jars from being run %global __jar_repack 0 -# Define the root name of the portable packages -%global pkgnameroot java-%{featurever}-%{origin}-portable%{?pkgos:-%{pkgos}} -# Define the architectures on which we build -ExclusiveArch: %{aarch64} %{ppc64le} s390x x86_64 riscv64 +%global portable_name %{name}-portable +# the version must match, but sometmes we need to more precise, so including release +%global portable_version %{version}-1 -Name: java-%{javaver}-%{origin} -%define anolis_release 1 -# Macros from upstream reference spec -%global nssadapter_version 0.1.1 -%global nssadapter_name nssadapter-%{nssadapter_version} -%global crypto_policy_active true -%global portable_compatiblename java-%{featurever}-%{origin} +# Use 'icedtea_sync.sh' to update the following +# They are based on code contained in the IcedTea project (6.x). +# Systemtap tapsets. Zipped up to keep it small. +Source8: tapsets-icedtea-%{icedteaver}.tar.xz -Version: %{newjavaver}.%{buildver} -Release: %{anolis_release}%{?dist} -# Equivalent for the portable build -%global prelease %{release} -%define __brp_strip %{nil} -%define add_determinism_options --handler=-jar -%global main_suffix_unquoted -main -%global staticlibs_suffix_unquoted -staticlibs -%global main_suffix "%{main_suffix_unquoted}" -%global staticlibs_suffix "%{staticlibs_suffix_unquoted}" -%global NSS_LIBDIR %(pkg-config --variable=libdir nss) -%global oj_vendor_url https://www.redhat.com/ -%global static_libs_root lib/static -%global static_libs_arch_dir %{static_libs_root}/linux-%{archinstall} -%global static_libs_install_dir %{static_libs_arch_dir}/glibc -%global generated_sources_name generated_sources -%global repack_file repack.info -%global family %{name}.%{_arch} -%global family_noarch %{name} -%global portable_name %{name}-portable -%global portable_version %{version}-1 -# java-1.5.0-ibm from jpackage.org set Epoch to 1 for unknown reasons -# and this change was brought into RHEL-4. java-1.5.0-ibm packages -# also included the epoch in their virtual provides. This created a -# situation where in-the-wild java-1.5.0-ibm packages provided "java = -# 1:1.5.0". In RPM terms, "1.6.0 < 1:1.5.0" since 1.6.0 is -# interpreted as 0:1.6.0. So the "java >= 1.6.0" requirement would be -# satisfied by the 1:1.5.0 packages. Thus we need to set the epoch in -# JDK package >= 1.6.0 to 1, and packages referring to JDK virtual -# provides >= 1.6.0 must specify the epoch, "java >= 1:1.6.0". +# Desktop files. Adapted from IcedTea +Source9: jconsole.desktop.in -Epoch: 1 -Summary: %{origin_nice} %{featurever} Runtime Environment +# Ensure we aren't using the limited crypto policy +Source13: TestCryptoLevel.java +# Ensure ECDSA is working +Source14: TestECDSA.java -# HotSpot code is licensed under GPLv2 -# JDK library code is licensed under GPLv2 with the Classpath exception -# The Apache license is used in code taken from Apache projects (primarily xalan & xerces) -# DOM levels 2 & 3 and the XML digital signature schemas are licensed under the W3C Software License -# The JSR166 concurrency code is in the public domain -# The BSD and MIT licenses are used for a number of third-party libraries (see ADDITIONAL_LICENSE_INFO) -# The OpenJDK source tree includes: -# - JPEG library (IJG), zlib & libpng (zlib), giflib (MIT), harfbuzz (ISC), -# - freetype (FTL), jline (BSD) and LCMS (MIT) -# - jquery (MIT), jdk.crypto.cryptoki PKCS 11 wrapper (RSA) -# - public_suffix_list.dat from publicsuffix.org (MPLv2.0) -# The test code includes copies of NSS under the Mozilla Public License v2.0 -# The PCSClite headers are under a BSD with advertising license -# The elliptic curve cryptography (ECC) source code is licensed under the LGPLv2.1 or any later version -License: ASL 1.1 and ASL 2.0 and BSD and BSD with advertising and GPL+ and GPLv2 and GPLv2 with exceptions and IJG and LGPLv2+ and MIT and MPLv2.0 and Public Domain and W3C and zlib and ISC and FTL and RSA -URL: http://openjdk.java.net/ +# Verify system crypto (policy) can be disabled via a property +Source15: TestSecurityProperties.java -# The source tarball, generated using generate_source_tarball.sh -Source0: tapsets-icedtea-6.0.0pre00-c848b93a8598.tar.xz -Source1: jconsole.desktop.in -Source2: TestCryptoLevel.java -Source3: TestECDSA.java -Source4: TestSecurityProperties.java -Source5: CheckVendor.java -Source6: TestTranslations.java -ExcludeArch: loongarch64 riscv64 - -# Setup variables to reference correct sources -%global releasezip %{_jvmdir}/%{name}-%{version}-%{prelease}.portable.jdk.%{_arch}.tar.xz -%global staticlibzip %{_jvmdir}/%{name}-%{version}-%{prelease}.portable.static-libs.%{_arch}.tar.xz -%global docszip %{_jvmdir}/%{name}-%{version}-%{prelease}.portable.docs.%{_arch}.tar.xz -%global misczip %{_jvmdir}/%{name}-%{version}-%{prelease}.portable.misc.%{_arch}.tar.xz -%global slowdebugzip %{_jvmdir}/%{name}-%{version}-%{prelease}.portable.slowdebug.jdk.%{_arch}.tar.xz -%global slowdebugstaticlibzip %{_jvmdir}/%{name}-%{version}-%{prelease}.portable.slowdebug.static-libs.%{_arch}.tar.xz -%global fastdebugzip %{_jvmdir}/%{name}-%{version}-%{prelease}.portable.fastdebug.jdk.%{_arch}.tar.xz -%global fastdebugstaticlibzip %{_jvmdir}/%{name}-%{version}-%{prelease}.portable.fastdebug.static-libs.%{_arch}.tar.xz - -############################################ -# -# RPM/distribution specific patches -# -############################################ - -# Crypto policy and FIPS support patches -# Patch is generated from the fips-21u tree at https://github.com/rh-openjdk/jdk/tree/fips-21u -# as follows: git diff %%{vcstag} src make test > fips-21u-$(git show -s --format=%h HEAD).patch -# Diff is limited to src and make subdirectories to exclude .github changes -# Fixes currently included: -# PR3183, RH1340845: Follow system wide crypto policy -# PR3695: Allow use of system crypto policy to be disabled by the user -# RH1655466: Support RHEL FIPS mode using SunPKCS11 provider -# RH1818909: No ciphersuites availale for SSLSocket in FIPS mode -# RH1860986: Disable TLSv1.3 with the NSS-FIPS provider until PKCS#11 v3.0 support is available -# RH1915071: Always initialise JavaSecuritySystemConfiguratorAccess -# RH1929465: Improve system FIPS detection -# RH1995150: Disable non-FIPS crypto in SUN and SunEC security providers -# RH1996182: Login to the NSS software token in FIPS mode -# RH1991003: Allow plain key import unless com.anolis.fips.plainKeySupport is set to false -# RH2021263: Resolve outstanding FIPS issues -# RH2052819: Fix FIPS reliance on crypto policies -# RH2052829: Detect NSS at Runtime for FIPS detection -# RH2052070: Enable AlgorithmParameters and AlgorithmParameterGenerator services in FIPS mode -# RH2023467: Enable FIPS keys export -# RH2094027: SunEC runtime permission for FIPS -# RH2036462: sun.security.pkcs11.wrapper.PKCS11.getInstance breakage -# RH2090378: Revert to disabling system security properties and FIPS mode support together -# RH2104724: Avoid import/export of DH private keys -# RH2092507: P11Key.getEncoded does not work for DH keys in FIPS mode -# Build the systemconf library on all platforms -# RH2048582: Support PKCS#12 keystores [now part of JDK-8301553 upstream] -# RH2020290: Support TLS 1.3 in FIPS mode -# Add nss.fips.cfg support to OpenJDK tree -# RH2117972: Extend the support for NSS DBs (PKCS11) in FIPS mode -# Remove forgotten dead code from RH2020290 and RH2104724 -# OJ1357: Fix issue on FIPS with a SecurityManager in place -# RH2134669: Add missing attributes when registering services in FIPS mode. -# test/jdk/sun/security/pkcs11/fips/VerifyMissingAttributes.java: fixed jtreg main class -# RH1940064: Enable XML Signature provider in FIPS mode -# RH2173781: Avoid calling C_GetInfo() too early, before cryptoki is initialized [now part of JDK-8301553 upstream] +# Ensure vendor settings are correct +Source16: CheckVendor.java -%global pandoc_available 1 -%if %{include_staticlibs} -%global staticlibs_loop %{staticlibs_suffix} -%else -%global staticlibs_loop %{nil} -%endif -%if 0%{?flatpak} -%global javazidir /usr/share/javazi-1.8 -%global portablejvmdir /usr/lib/jvm -%else -%global javazidir %{_datadir}/javazi-1.8 -%global portablejvmdir %{_jvmdir} -%endif -%define __brp_strip %{nil} -%define add_determinism_options --handler=-jar -%global main_suffix_unquoted -main -%global staticlibs_suffix_unquoted -staticlibs -%global main_suffix "%{main_suffix_unquoted}" -%global staticlibs_suffix "%{staticlibs_suffix_unquoted}" -%global NSS_LIBDIR %(pkg-config --variable=libdir nss) -%global oj_vendor_url https://www.redhat.com/ -%global static_libs_root lib/static -%global static_libs_arch_dir %{static_libs_root}/linux-%{archinstall} -%global static_libs_install_dir %{static_libs_arch_dir}/glibc -%global generated_sources_name generated_sources -%global repack_file repack.info -%if 0%{?flatpak} -%global javazidir /usr/share/javazi-1.8 -%global portablejvmdir /usr/lib/jvm -%else -%global javazidir %{_datadir}/javazi-1.8 -%global portablejvmdir %{_jvmdir} -%endif -%global family %{name}.%{_arch} -%global family_noarch %{name} -%global portable_name %{name}-portable -%global portable_version %{version}-1 +# Ensure translations are available for new timezones +Source18: TestTranslations.java -BuildRequires: %{portable_name}-sources >= %{portable_version} +# sources subpackage not available in our portable build +#BuildRequires: %{portable_name}-sources >= %{portable_version} BuildRequires: %{portable_name}-misc >= %{portable_version} BuildRequires: %{portable_name}-docs >= %{portable_version} + %if %{include_normal_build} BuildRequires: %{portable_name}-devel >= %{portable_version} %if %{include_staticlibs} @@ -1293,49 +1287,44 @@ BuildRequires: %{portable_name}-devel-slowdebug >= %{portable_version} BuildRequires: %{portable_name}-static-libs-slowdebug >= %{portable_version} %endif %endif + BuildRequires: desktop-file-utils +# elfutils only are OK for build without AOT BuildRequires: elfutils-devel BuildRequires: gdb +# for modyfying build-id in clashing binaries BuildRequires: /usr/bin/gcc BuildRequires: /usr/bin/objcopy BuildRequires: /usr/bin/readelf +# Requirement for setting and nss.fips.cfg BuildRequires: nss-devel +# Requirement for system security property test BuildRequires: crypto-policies BuildRequires: pkgconfig BuildRequires: zip BuildRequires: unzip BuildRequires: javapackages-filesystem +# ? BuildRequires: tzdata-java >= 2022g + %if %{with_systemtap} BuildRequires: systemtap-sdt-devel %endif -# From ALinux 4, debugedit is in its own package -# elfutils only are OK for build without AOT -# Requirement for setting up nss.fips.cfg -# Requirement for system security property test -# Zero-assembler build requirement -# 2025a required as of JDK-8347965 -# Earlier versions have a bug in tree vectorization on PPC - - -%if %{system_libs} -%else -# Version in src/java.desktop/share/native/libfreetype/include/freetype/freetype.h -Provides: bundled(freetype) = 2.13.3 +# Version in src/java.desktop/share/legal/freetype.md +Provides: bundled(freetype) = 2.14.3 # Version in src/java.desktop/share/native/libsplashscreen/giflib/gif_lib.h -Provides: bundled(giflib) = 5.2.2 +Provides: bundled(giflib) = 6.1.3 # Version in src/java.desktop/share/native/libharfbuzz/hb-version.h -Provides: bundled(harfbuzz) = 11.2.0 +Provides: bundled(harfbuzz) = 14.2.0 # Version in src/java.desktop/share/native/liblcms/lcms2.h -Provides: bundled(lcms2) = 2.17.0 +Provides: bundled(lcms2) = 2.19.1 # Version in src/java.desktop/share/native/libjavajpeg/jpeglib.h Provides: bundled(libjpeg) = 6b # Version in src/java.desktop/share/native/libsplashscreen/libpng/png.h -Provides: bundled(libpng) = 1.6.47 +Provides: bundled(libpng) = 1.6.58 # Version in src/java.base/share/native/libzip/zlib/zlib.h -Provides: bundled(zlib) = 1.3.1 -%endif +Provides: bundled(zlib) = 1.3.2 # this is always built, also during debug-only build # when it is built in debug-only this package is just placeholder @@ -1347,7 +1336,9 @@ The %{origin_nice} %{featurever} runtime environment. %if %{include_debug_build} %package slowdebug Summary: %{origin_nice} %{featurever} Runtime Environment %{debug_on} - +%if (0%{?rhel} > 0 && 0%{?rhel} <= 8) || (0%{?fedora} >= 0 && 0%{?fedora} < 30) +Group: Development/Languages +%endif %{java_rpo -- %{debug_suffix_unquoted}} %description slowdebug @@ -1358,7 +1349,9 @@ The %{origin_nice} %{featurever} runtime environment. %if %{include_fastdebug_build} %package fastdebug Summary: %{origin_nice} %{featurever} Runtime Environment %{fastdebug_on} - +%if (0%{?rhel} > 0 && 0%{?rhel} <= 8) || (0%{?fedora} >= 0 && 0%{?fedora} < 30) +Group: Development/Languages +%endif %{java_rpo -- %{fastdebug_suffix_unquoted}} %description fastdebug @@ -1369,18 +1362,43 @@ The %{origin_nice} %{featurever} runtime environment. %if %{include_normal_build} %package headless Summary: %{origin_nice} %{featurever} Headless Runtime Environment - +%if (0%{?rhel} > 0 && 0%{?rhel} <= 8) || (0%{?fedora} >= 0 && 0%{?fedora} < 30) +Group: Development/Languages +%endif %{java_headless_rpo %{nil}} %description headless The %{origin_nice} %{featurever} runtime environment without audio and video support. + +%package headless-debuginfo +Summary: Debug information for package %{name}-headless +Group: Development/Debug +AutoReq: 0 +AutoProv: 1 +%description headless-debuginfo +This package provides debug information for package %{name}. +Debug information is useful when developing applications that use this +package or when debugging this package. +%files headless-debuginfo -f debugfiles.list + +%package debugsource +Summary: Debug sources for package %{name} +Group: Development/Debug +AutoReqProv: 0 +%description debugsource +This package provides debug sources for package %{name}. +Debug sources are useful when developing applications that use this +package or when debugging this package. +%files debugsource -f debugsourcefiles.list %endif %if %{include_debug_build} %package headless-slowdebug Summary: %{origin_nice} %{featurever} Runtime Environment %{debug_on} - +%if (0%{?rhel} > 0 && 0%{?rhel} <= 8) || (0%{?fedora} >= 0 && 0%{?fedora} < 30) +Group: Development/Languages +%endif %{java_headless_rpo -- %{debug_suffix_unquoted}} @@ -1392,7 +1410,9 @@ The %{origin_nice} %{featurever} runtime environment without audio and video sup %if %{include_fastdebug_build} %package headless-fastdebug Summary: %{origin_nice} %{featurever} Runtime Environment %{fastdebug_on} - +%if (0%{?rhel} > 0 && 0%{?rhel} <= 8) || (0%{?fedora} >= 0 && 0%{?fedora} < 30) +Group: Development/Languages +%endif %{java_headless_rpo -- %{fastdebug_suffix_unquoted}} @@ -1404,7 +1424,9 @@ The %{origin_nice} %{featurever} runtime environment without audio and video sup %if %{include_normal_build} %package devel Summary: %{origin_nice} %{featurever} Development Environment - +%if (0%{?rhel} > 0 && 0%{?rhel} <= 8) || (0%{?fedora} >= 0 && 0%{?fedora} < 30) +Group: Development/Languages +%endif %{java_devel_rpo %{nil}} @@ -1415,7 +1437,9 @@ The %{origin_nice} %{featurever} development tools. %if %{include_debug_build} %package devel-slowdebug Summary: %{origin_nice} %{featurever} Development Environment %{debug_on} - +%if (0%{?rhel} > 0 && 0%{?rhel} <= 8) || (0%{?fedora} >= 0 && 0%{?fedora} < 30) +Group: Development/Languages +%endif %{java_devel_rpo -- %{debug_suffix_unquoted}} @@ -1427,11 +1451,14 @@ The %{origin_nice} %{featurever} development tools. %if %{include_fastdebug_build} %package devel-fastdebug Summary: %{origin_nice} %{featurever} Development Environment %{fastdebug_on} +%if (0%{?rhel} > 0 && 0%{?rhel} <= 8) || (0%{?fedora} >= 0 && 0%{?fedora} < 30) +Group: Development/Tools +%endif %{java_devel_rpo -- %{fastdebug_suffix_unquoted}} %description devel-fastdebug -The %{origin_nice} %{featurever} development tools . +The %{origin_nice} %{featurever} development tools. %{fastdebug_warning} %endif @@ -1475,7 +1502,9 @@ The %{origin_nice} %{featurever} libraries for static linking. %if %{include_normal_build} %package jmods Summary: JMods for %{origin_nice} %{featurever} - +%if (0%{?rhel} > 0 && 0%{?rhel} <= 8) || (0%{?fedora} >= 0 && 0%{?fedora} < 30) +Group: Development/Languages +%endif %{java_jmods_rpo %{nil}} @@ -1486,7 +1515,9 @@ The JMods for %{origin_nice} %{featurever}. %if %{include_debug_build} %package jmods-slowdebug Summary: JMods for %{origin_nice} %{featurever} %{debug_on} - +%if (0%{?rhel} > 0 && 0%{?rhel} <= 8) || (0%{?fedora} >= 0 && 0%{?fedora} < 30) +Group: Development/Languages +%endif %{java_jmods_rpo -- %{debug_suffix_unquoted}} @@ -1498,6 +1529,9 @@ The JMods for %{origin_nice} %{featurever}. %if %{include_fastdebug_build} %package jmods-fastdebug Summary: JMods for %{origin_nice} %{featurever} %{fastdebug_on} +%if (0%{?rhel} > 0 && 0%{?rhel} <= 8) || (0%{?fedora} >= 0 && 0%{?fedora} < 30) +Group: Development/Tools +%endif %{java_jmods_rpo -- %{fastdebug_suffix_unquoted}} @@ -1509,7 +1543,9 @@ The JMods for %{origin_nice} %{featurever}. %if %{include_normal_build} %package demo Summary: %{origin_nice} %{featurever} Demos - +%if (0%{?rhel} > 0 && 0%{?rhel} <= 8) || (0%{?fedora} >= 0 && 0%{?fedora} < 30) +Group: Development/Languages +%endif %{java_demo_rpo %{nil}} @@ -1520,7 +1556,9 @@ The %{origin_nice} %{featurever} demos. %if %{include_debug_build} %package demo-slowdebug Summary: %{origin_nice} %{featurever} Demos %{debug_on} - +%if (0%{?rhel} > 0 && 0%{?rhel} <= 8) || (0%{?fedora} >= 0 && 0%{?fedora} < 30) +Group: Development/Languages +%endif %{java_demo_rpo -- %{debug_suffix_unquoted}} @@ -1532,7 +1570,9 @@ The %{origin_nice} %{featurever} demos. %if %{include_fastdebug_build} %package demo-fastdebug Summary: %{origin_nice} %{featurever} Demos %{fastdebug_on} - +%if (0%{?rhel} > 0 && 0%{?rhel} <= 8) || (0%{?fedora} >= 0 && 0%{?fedora} < 30) +Group: Development/Languages +%endif %{java_demo_rpo -- %{fastdebug_suffix_unquoted}} @@ -1544,7 +1584,9 @@ The %{origin_nice} %{featurever} demos. %if %{include_normal_build} %package src Summary: %{origin_nice} %{featurever} Source Bundle - +%if (0%{?rhel} > 0 && 0%{?rhel} <= 8) || (0%{?fedora} >= 0 && 0%{?fedora} < 30) +Group: Development/Languages +%endif %{java_src_rpo %{nil}} @@ -1556,7 +1598,9 @@ class library source code for use by IDE indexers and debuggers. %if %{include_debug_build} %package src-slowdebug Summary: %{origin_nice} %{featurever} Source Bundle %{for_debug} - +%if (0%{?rhel} > 0 && 0%{?rhel} <= 8) || (0%{?fedora} >= 0 && 0%{?fedora} < 30) +Group: Development/Languages +%endif %{java_src_rpo -- %{debug_suffix_unquoted}} @@ -1568,7 +1612,9 @@ The %{compatiblename}-src-slowdebug sub-package contains the complete %{origin_n %if %{include_fastdebug_build} %package src-fastdebug Summary: %{origin_nice} %{featurever} Source Bundle %{for_fastdebug} - +%if (0%{?rhel} > 0 && 0%{?rhel} <= 8) || (0%{?fedora} >= 0 && 0%{?fedora} < 30) +Group: Development/Languages +%endif %{java_src_rpo -- %{fastdebug_suffix_unquoted}} @@ -1580,62 +1626,34 @@ The %{compatiblename}-src-fastdebug sub-package contains the complete %{origin_n %if %{include_normal_build} %package javadoc Summary: %{origin_nice} %{featurever} API documentation +%if (0%{?rhel} > 0 && 0%{?rhel} <= 8) || (0%{?fedora} >= 0 && 0%{?fedora} < 30) +Group: Documentation +%endif Requires: javapackages-filesystem -Requires: %{name}-headless%{?_isa} = %{epoch}:%{version}-%{release} -OrderWithRequires: %{name}-headless%{?_isa} = %{epoch}:%{version}-%{release} Obsoletes: javadoc-slowdebug < 1:13.0.0.33-1.rolling -# Post requires alternatives to install javadoc alternative -Requires(post): %{alternatives_requires} -# Postun requires alternatives to uninstall javadoc alternative -Requires(postun): %{alternatives_requires} -%{java_javadoc_rpo -- %{nil}} +%{java_javadoc_rpo -- %{nil} %{nil}} %description javadoc The %{origin_nice} %{featurever} API documentation. +%endif + +%if %{include_normal_build} %package javadoc-zip Summary: %{origin_nice} %{featurever} API documentation compressed in a single archive +%if (0%{?rhel} > 0 && 0%{?rhel} <= 8) || (0%{?fedora} >= 0 && 0%{?fedora} < 30) +Group: Documentation +%endif Requires: javapackages-filesystem -Requires: %{name}-headless%{?_isa} = %{epoch}:%{version}-%{release} -OrderWithRequires: %{name}-headless%{?_isa} = %{epoch}:%{version}-%{release} Obsoletes: javadoc-zip-slowdebug < 1:13.0.0.33-1.rolling -# Post requires alternatives to install javadoc alternative -Requires(post): %{alternatives_requires} -# Postun requires alternatives to uninstall javadoc alternative -Requires(postun): %{alternatives_requires} -%{java_javadoc_rpo -- -zip} -%{java_javadoc_rpo -- %{nil}} +%{java_javadoc_rpo -- %{nil} -zip} +%{java_javadoc_rpo -- %{nil} %{nil}} %description javadoc-zip The %{origin_nice} %{featurever} API documentation compressed in a single archive. %endif -%if %{include_normal_build} -%package headless-debuginfo -Summary: Debug information for package %{name}-headless -Group: Development/Debug -AutoReq: 0 -AutoProv: 1 -%description headless-debuginfo -This package provides debug information for package %{name}. -Debug information is useful when developing applications that use this -package or when debugging this package. -%files headless-debuginfo -f debugfiles.list - -%package debugsource -Summary: Debug sources for package %{name} -Group: Development/Debug -AutoReqProv: 0 -%description debugsource -This package provides debug sources for package %{name}. -Debug sources are useful when developing applications that use this -package or when debugging this package. -%files debugsource -f debugsourcefiles.list - -%endif - - %prep echo "Preparing %{oj_vendor_version}" @@ -1670,13 +1688,15 @@ if [ $prioritylength -ne 8 ] ; then exit 14 fi -tar -xf %{portablejvmdir}/%{compatiblename}*%{version}*portable.sources.noarch.tar.xz +# sources subpackage not available +#tar -xf %{portablejvmdir}/%{compatiblename}*%{version}*portable.sources.noarch.tar.xz tar -xf %{portablejvmdir}/%{compatiblename}*%{version}*portable*.misc.%{_arch}.tar.xz tar -xf %{portablejvmdir}/%{compatiblename}*%{version}*portable*.docs.%{_arch}.tar.xz %if %{include_normal_build} tar -xf %{portablejvmdir}/%{compatiblename}*%{version}*portable.jdk.%{_arch}.tar.xz -tar -xf %{portablejvmdir}/%{compatiblename}*%{version}*portable.jmods.%{_arch}.tar.xz +# jmods tarball not produced by our portable build (jmods included in jdk tarball) +#tar -xf %{portablejvmdir}/%{compatiblename}*%{version}*portable.jmods.%{_arch}.tar.xz # Extract debuginfo as well tar -xf %{portablejvmdir}/%{compatiblename}*%{version}*portable.debuginfo.jdk.%{_arch}.tar.xz %if %{include_staticlibs} @@ -1685,14 +1705,14 @@ tar -xf %{portablejvmdir}/%{compatiblename}*%{version}*portable.static-libs.%{_a %endif %if %{include_fastdebug_build} tar -xf %{portablejvmdir}/%{compatiblename}*%{version}*portable.fastdebug.jdk.%{_arch}.tar.xz -tar -xf %{portablejvmdir}/%{compatiblename}*%{version}*portable.fastdebug.jmods.%{_arch}.tar.xz +#tar -xf %{portablejvmdir}/%{compatiblename}*%{version}*portable.fastdebug.jmods.%{_arch}.tar.xz %if %{include_staticlibs} tar -xf %{portablejvmdir}/%{compatiblename}*%{version}*portable.fastdebug.static-libs.%{_arch}.tar.xz %endif %endif %if %{include_debug_build} tar -xf %{portablejvmdir}/%{compatiblename}*%{version}*portable.slowdebug.jdk.%{_arch}.tar.xz -tar -xf %{portablejvmdir}/%{compatiblename}*%{version}*portable.slowdebug.jmods.%{_arch}.tar.xz +#tar -xf %{portablejvmdir}/%{compatiblename}*%{version}*portable.slowdebug.jmods.%{_arch}.tar.xz %if %{include_staticlibs} tar -xf %{portablejvmdir}/%{compatiblename}*%{version}*portable.slowdebug.static-libs.%{_arch}.tar.xz %endif @@ -1725,7 +1745,7 @@ echo "`date`" >> %{repack_file} # Extract systemtap tapsets %if %{with_systemtap} -tar --strip-components=1 -x -I xz -f %{SOURCE0} +tar --strip-components=1 -x -I xz -f %{SOURCE8} %if %{include_debug_build} cp -r tapset tapset%{debug_suffix} %endif @@ -1739,7 +1759,11 @@ for suffix in %{build_loop} ; do sed -e "s:@ABS_SERVER_LIBJVM_SO@:%{_jvmdir}/%{sdkdir -- $suffix}/lib/server/libjvm.so:g" $file > $file.1 sed -e "s:@JAVA_SPEC_VER@:%{javaver}:g" $file.1 > $file.2 # TODO find out which architectures other than i686 have a client vm +%ifarch %{ix86} + sed -e "s:@ABS_CLIENT_LIBJVM_SO@:%{_jvmdir}/%{sdkdir -- $suffix}/lib/client/libjvm.so:g" $file.2 > $OUTPUT_FILE +%else sed -e "/@ABS_CLIENT_LIBJVM_SO@/d" $file.2 > $OUTPUT_FILE +%endif sed -i -e "s:@ABS_JAVA_HOME_DIR@:%{_jvmdir}/%{sdkdir -- $suffix}:g" $OUTPUT_FILE sed -i -e "s:@INSTALL_ARCH_DIR@:%{archinstall}:g" $OUTPUT_FILE sed -i -e "s:@prefix@:%{_jvmdir}/%{sdkdir -- $suffix}/:g" $OUTPUT_FILE @@ -1752,7 +1776,7 @@ done # The _X_ syntax indicates variables that are replaced by make upstream # The @X@ syntax indicates variables that are replaced by configure upstream for suffix in %{build_loop} ; do -for file in %{SOURCE1}; do +for file in %{SOURCE9}; do FILE=`basename $file | sed -e s:\.in$::g` EXT="${FILE##*.}" NAME="${FILE%.*}" @@ -1766,102 +1790,17 @@ done done %build -# we need to symlink sources to expected location, so debuginfo strip can locate debugsources -src_image=`ls -d %{compatiblename}*%{version}*portable.sources.noarch` +# sources subpackage not available - skip source handling +#src_image=`ls -d %{compatiblename}*%{version}*portable.sources.noarch` misc_image=`ls -d %{compatiblename}*%{version}*portable.misc.%{_arch}` -cp -rf $misc_image/%{generated_sources_name}/%{vcstag}/ $src_image # it would be nice to remove them once debugsources are generated:( -ln -s $src_image/%{vcstag} %{vcstag} +#cp -rf $misc_image/%{generated_sources_name}/%{vcstag}/ $src_image # it would be nice to remove them once debugsources are generated:( +#ln -s $src_image/%{vcstag} %{vcstag} mkdir build pushd build - cp -r ../$misc_image/%{generated_sources_name}/jdk%{featurever}.build* . + #cp -r ../$misc_image/%{generated_sources_name}/jdk%{featurever}.build* . popd doc_image=`ls -d %{compatiblename}*%{version}*portable.docs.%{_arch}` -%if %{with check} -%check -# We test debug first as it will give better diagnostics on a crash -for suffix in %{build_loop} ; do - -# Tests in the check stage are performed on the installed image -# rpmbuild operates as follows: build -> install -> test -export JAVA_HOME=${RPM_BUILD_ROOT}%{_jvmdir}/%{sdkdir -- $suffix} - -#check Shenandoah is enabled -%if %{use_shenandoah_hotspot} -$JAVA_HOME/bin/java -XX:+UseShenandoahGC -version -%endif - -# Check unlimited policy has been used -$JAVA_HOME/bin/javac -d . %{SOURCE2} -$JAVA_HOME/bin/java --add-opens java.base/javax.crypto=ALL-UNNAMED TestCryptoLevel - -# Check ECC is working -$JAVA_HOME/bin/javac -d . %{SOURCE3} -$JAVA_HOME/bin/java $(echo $(basename %{SOURCE3})|sed "s|\.java||") - -# Check system crypto (policy) is active and can be disabled -# Test takes a single argument - true or false - to state whether system -# security properties are enabled or not. -$JAVA_HOME/bin/javac -d . %{SOURCE4} -export PROG=$(echo $(basename %{SOURCE4})|sed "s|\.java||") -export SEC_DEBUG="-Djava.security.debug=properties" -$JAVA_HOME/bin/java ${SEC_DEBUG} ${PROG} true -$JAVA_HOME/bin/java ${SEC_DEBUG} -Djava.security.disableSystemPropertiesFile=true ${PROG} false - -# Check java launcher has no SSB mitigation -if ! nm $JAVA_HOME/bin/java | grep set_speculation ; then true ; else false; fi - -# Check alt-java launcher has SSB mitigation on supported architectures -# set_speculation function exists in both cases, so check for prctl call -%ifarch %{ssbd_arches} -nm $JAVA_HOME/bin/%{alt_java_name} | grep prctl -%else -if ! nm $JAVA_HOME/bin/%{alt_java_name} | grep prctl ; then true ; else false; fi -%endif - -# Check correct vendor values have been set -$JAVA_HOME/bin/javac -d . %{SOURCE5} -#TODO skipped vendor check. It now points to PORTABLE version of jdk. -#$JAVA_HOME/bin/java $(echo $(basename %{SOURCE5})|sed "s|\.java||") "%{oj_vendor}" "%{oj_vendor_url}" "%{oj_vendor_bug_url}" "%{oj_vendor_version}" - -# Check translations are available for new timezones -$JAVA_HOME/bin/javac -d . %{SOURCE6} -#TODO doublecheck tzdata handling -$JAVA_HOME/bin/java $(echo $(basename %{SOURCE6})|sed "s|\.java||") JRE || echo "TZDATA no longer can be synced with system, because we repack" -$JAVA_HOME/bin/java -Djava.locale.providers=CLDR $(echo $(basename %{SOURCE6})|sed "s|\.java||") CLDR || echo "TZDATA no longer can be synced with system, because we repack" - -%if %{include_staticlibs} -# Check debug symbols in static libraries (smoke test) -export STATIC_LIBS_HOME=${JAVA_HOME}/%{static_libs_install_dir} -readelf --debug-dump $STATIC_LIBS_HOME/libnet.a | grep Inet4AddressImpl.c -readelf --debug-dump $STATIC_LIBS_HOME/libnet.a | grep Inet6AddressImpl.c -%endif - -# Check src.zip has all sources. See RHBZ#1130490 -$JAVA_HOME/bin/jar -tf $JAVA_HOME/lib/src.zip | grep 'sun.misc.Unsafe' - -# Check class files include useful debugging information -$JAVA_HOME/bin/javap -l -c java.lang.Object | grep "Compiled from" -$JAVA_HOME/bin/javap -l -c java.lang.Object | grep LineNumberTable -$JAVA_HOME/bin/javap -l -c java.lang.Object | grep LocalVariableTable - -# Check generated class files include useful debugging information -$JAVA_HOME/bin/javap -l -c java.nio.ByteBuffer | grep "Compiled from" -$JAVA_HOME/bin/javap -l -c java.nio.ByteBuffer | grep LineNumberTable -$JAVA_HOME/bin/javap -l -c java.nio.ByteBuffer | grep LocalVariableTable - -# build cycles check -done - -# https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/ -# recommends an explicit "exit 0" at the end of each scriptlet. Keep -# them in this section instead of in the parameterized macro -# definitions, so that multiple macros can be called without worrying -# about which one ends with "exit 0". -%if %{include_normal_build} - -%endif - %install function installjdk() { local imagepath=${1} @@ -2046,24 +1985,25 @@ for suffix in %{build_loop} ; do top_dir_abs_staticlibs_build_path=`ls -d $top_dir_abs_main_build_path/lib/static/*/glibc/` %endif jdk_image=${top_dir_abs_main_build_path} - src_image=`echo ${top_dir_abs_main_build_path} | sed "s/portable.*.%{_arch}/portable.sources.noarch/"` + #src_image=`echo ${top_dir_abs_main_build_path} | sed "s/portable.*.%{_arch}/portable.sources.noarch/"` misc_image=`echo ${top_dir_abs_main_build_path} | sed "s/portable.*.%{_arch}/portable.misc.%{_arch}/"` docs_image=`echo ${top_dir_abs_main_build_path} | sed "s/portable.*.%{_arch}/portable.docs.%{_arch}/"` # Install the jdk mkdir -p $RPM_BUILD_ROOT%{_jvmdir} -# Install icons -for s in 16 24 32 48 ; do - install -D -p -m 644 \ - ${src_image}/%{vcstag}/src/java.desktop/unix/classes/sun/awt/X11/java-icon${s}.png \ - $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/${s}x${s}/apps/java-%{javaver}-%{origin}.png -done +# Install icons - disabled: sources subpackage not available +#for s in 16 24 32 48 ; do +# install -D -p -m 644 \ +# ${src_image}/%{vcstag}/src/java.desktop/unix/classes/sun/awt/X11/java-icon${s}.png \ +# $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/${s}x${s}/apps/java-%{javaver}-%{origin}.png +#done cp -a ${jdk_image} $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir -- $suffix} -cp -a ${src_image} $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir -- $suffix}/full_sources -cp -a ${misc_image}/%{generated_sources_name} $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir -- $suffix} +# sources subpackage not available +#cp -a ${src_image} $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir -- $suffix}/full_sources +#cp -a ${misc_image}/%{generated_sources_name} $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir -- $suffix} cp -a ${misc_image}/alt-java $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir -- $suffix}/bin install -d -m 755 $RPM_BUILD_ROOT%{_defaultdocdir}/%{uniquejavadocdir -- $suffix} cp %{repack_file} $RPM_BUILD_ROOT%{_defaultdocdir}/%{uniquejavadocdir -- $suffix}/%{fullversion}.specfile @@ -2101,7 +2041,7 @@ if ! echo $suffix | grep -q "debug" ; then cp -a ${docs_image}/${built_doc_archive} \ $RPM_BUILD_ROOT%{_javadocdir}/%{uniquejavadocdir -- $suffix}.zip pushd $RPM_BUILD_ROOT%{_javadocdir}/%{uniquejavadocdir -- $suffix} - unzip ${docs_image}/${built_doc_archive} + unzip ${docs_image}/${built_doc_archive} popd fi @@ -2144,11 +2084,16 @@ find $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}/legal -type f -exec chmod 6 done # Produce the debugsourcefiles.list manually from sources -%{__mkdir} -p $RPM_BUILD_ROOT/usr/src/debug -cp -a ${src_image} $RPM_BUILD_ROOT/usr/src/debug/%{name}-%{version}-%{release} -pushd $RPM_BUILD_ROOT/usr -find src/debug -mindepth 1 -maxdepth 1 | sed 's,^,/usr/,' >> %{_builddir}/%{compatiblename}/debugsourcefiles.list -popd +# Disabled: sources subpackage not available +#%{__mkdir} -p $RPM_BUILD_ROOT/usr/src/debug +#cp -a ${src_image} $RPM_BUILD_ROOT/usr/src/debug/%{name}-%{version}-%{release} +#pushd $RPM_BUILD_ROOT/usr +#find src/debug -mindepth 1 -maxdepth 1 | sed 's,^,/usr/,' >> %{_builddir}/%{compatiblename}/debugsourcefiles.list +#popd +# Create dummy debugsource entry (RPM 4.18 rejects empty %files) +mkdir -p $RPM_BUILD_ROOT/usr/src/debug +echo "// placeholder" > $RPM_BUILD_ROOT/usr/src/debug/.debugsource_placeholder +echo "/usr/src/debug/.debugsource_placeholder" > %{_builddir}/%{compatiblename}/debugsourcefiles.list # Produce the debugfiles.list and debuginfo tree manually from existing debuginfo %{__mkdir} -p $RPM_BUILD_ROOT/usr/lib/debug/%{_jvmdir}/%{sdkdir -- %{normal_suffix}}/lib/server @@ -2162,6 +2107,89 @@ pushd $RPM_BUILD_ROOT/usr/lib/debug%{_jvmdir} find %{compatiblename} -name \*.debuginfo | sed 's,^,/usr/lib/debug%{_jvmdir}/,' >> %{_builddir}/%{compatiblename}/debugfiles.list popd +%check +%if %{with check} + +# We test debug first as it will give better diagnostics on a crash +for suffix in %{build_loop} ; do + +# Tests in the check stage are performed on the installed image +# rpmbuild operates as follows: build -> install -> test +export JAVA_HOME=${RPM_BUILD_ROOT}%{_jvmdir}/%{sdkdir -- $suffix} + +#check Shenandoah is enabled +%if %{use_shenandoah_hotspot} +$JAVA_HOME/bin/java -XX:+UseShenandoahGC -version +%endif + +# Check unlimited policy has been used +$JAVA_HOME/bin/javac -d . %{SOURCE13} +$JAVA_HOME/bin/java --add-opens java.base/javax.crypto=ALL-UNNAMED TestCryptoLevel + +# Check ECC is working +$JAVA_HOME/bin/javac -d . %{SOURCE14} +$JAVA_HOME/bin/java $(echo $(basename %{SOURCE14})|sed "s|\.java||") + +# Check system crypto (policy) is active and can be disabled +# Test takes a single argument - true or false - to state whether system +# security properties are enabled or not. +$JAVA_HOME/bin/javac -d . %{SOURCE15} +export PROG=$(echo $(basename %{SOURCE15})|sed "s|\.java||") +export SEC_DEBUG="-Djava.security.debug=properties" +$JAVA_HOME/bin/java ${SEC_DEBUG} ${PROG} true +$JAVA_HOME/bin/java ${SEC_DEBUG} -Djava.security.disableSystemPropertiesFile=true ${PROG} false + +# Check java launcher has no SSB mitigation +if ! nm $JAVA_HOME/bin/java | grep set_speculation ; then true ; else false; fi + +# Check alt-java launcher has SSB mitigation on supported architectures +# set_speculation function exists in both cases, so check for prctl call +%ifarch %{ssbd_arches} +nm $JAVA_HOME/bin/%{alt_java_name} | grep prctl +%else +if ! nm $JAVA_HOME/bin/%{alt_java_name} | grep prctl ; then true ; else false; fi +%endif + +# Check correct vendor values have been set +$JAVA_HOME/bin/javac -d . %{SOURCE16} +#TODO skipped vendor check. It now points to PORTABLE version of jdk. +#$JAVA_HOME/bin/java $(echo $(basename %{SOURCE16})|sed "s|\.java||") "%{oj_vendor}" "%{oj_vendor_url}" "%{oj_vendor_bug_url}" "%{oj_vendor_version}" + +# Check translations are available for new timezones +$JAVA_HOME/bin/javac -d . %{SOURCE18} +#TODO doublecheck tzdata handling +$JAVA_HOME/bin/java $(echo $(basename %{SOURCE18})|sed "s|\.java||") JRE || echo "TZDATA no longer can be synced with system, because we repack" +$JAVA_HOME/bin/java -Djava.locale.providers=CLDR $(echo $(basename %{SOURCE18})|sed "s|\.java||") CLDR || echo "TZDATA no longer can be synced with system, because we repack" + +%if %{include_staticlibs} +# Check debug symbols in static libraries (smoke test) +export STATIC_LIBS_HOME=${JAVA_HOME}/%{static_libs_install_dir} +readelf --debug-dump $STATIC_LIBS_HOME/libnet.a | grep Inet4AddressImpl.c +readelf --debug-dump $STATIC_LIBS_HOME/libnet.a | grep Inet6AddressImpl.c +%endif + +# Check src.zip has all sources. See RHBZ#1130490 +$JAVA_HOME/bin/jar -tf $JAVA_HOME/lib/src.zip | grep 'sun.misc.Unsafe' + +# Check class files include useful debugging information +$JAVA_HOME/bin/javap -l -c java.lang.Object | grep "Compiled from" +$JAVA_HOME/bin/javap -l -c java.lang.Object | grep LineNumberTable +$JAVA_HOME/bin/javap -l -c java.lang.Object | grep LocalVariableTable + +# Check generated class files include useful debugging information +$JAVA_HOME/bin/javap -l -c java.nio.ByteBuffer | grep "Compiled from" +$JAVA_HOME/bin/javap -l -c java.nio.ByteBuffer | grep LineNumberTable +$JAVA_HOME/bin/javap -l -c java.nio.ByteBuffer | grep LocalVariableTable + +# build cycles check +done +%endif + +# https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/ +# recommends an explicit "exit 0" at the end of each scriptlet. Keep +# them in this section instead of in the parameterized macro +# definitions, so that multiple macros can be called without worrying +# about which one ends with "exit 0". %if %{include_normal_build} %post %{post_script %{nil}} @@ -2319,7 +2347,6 @@ exit 0 exit 0 %endif -%if %{include_normal_build} %if %{include_normal_build} %files # main package builds always @@ -2329,13 +2356,10 @@ exit 0 # placeholder %endif -%if %{include_normal_build} %if %{include_normal_build} %files headless %{files_jre_headless %{nil}} -%endif -%if %{include_normal_build} %files devel %{files_devel %{nil}} @@ -2344,31 +2368,21 @@ exit 0 %{files_static_libs %{nil}} %endif -%endif -%if %{with jmods} %files jmods %{files_jmods %{nil}} -%endif -%if %{include_normal_build} %files demo %{files_demo %{nil}} -%endif -%if %{include_normal_build} %files src %{files_src %{nil}} -%endif -%if %{include_normal_build} %files javadoc %{files_javadoc %{nil}} # This puts a huge documentation file in /usr/share # It is now architecture-dependent, as eg. AOT and Graal are now x86_64 only # same for debug variant -%endif -%if %{include_normal_build} %files javadoc-zip %{files_javadoc_zip %{nil}} %endif @@ -2377,13 +2391,9 @@ exit 0 %files slowdebug %{files_jre -- %{debug_suffix_unquoted}} -%endif -%if %{include_debug_build} %files headless-slowdebug %{files_jre_headless -- %{debug_suffix_unquoted}} -%endif -%if %{include_debug_build} %files devel-slowdebug %{files_devel -- %{debug_suffix_unquoted}} @@ -2392,18 +2402,12 @@ exit 0 %{files_static_libs -- %{debug_suffix_unquoted}} %endif -%endif -%if %{with jmods} %files jmods-slowdebug %{files_jmods -- %{debug_suffix_unquoted}} -%endif -%if %{include_debug_build} %files demo-slowdebug %{files_demo -- %{debug_suffix_unquoted}} -%endif -%if %{include_debug_build} %files src-slowdebug %{files_src -- %{debug_suffix_unquoted}} %endif @@ -2412,13 +2416,9 @@ exit 0 %files fastdebug %{files_jre -- %{fastdebug_suffix_unquoted}} -%endif -%if %{include_fastdebug_build} %files headless-fastdebug %{files_jre_headless -- %{fastdebug_suffix_unquoted}} -%endif -%if %{include_fastdebug_build} %files devel-fastdebug %{files_devel -- %{fastdebug_suffix_unquoted}} @@ -2427,25 +2427,18 @@ exit 0 %{files_static_libs -- %{fastdebug_suffix_unquoted}} %endif -%endif -%if %{with jmods} %files jmods-fastdebug %{files_jmods -- %{fastdebug_suffix_unquoted}} -%endif -%if %{include_fastdebug_build} %files demo-fastdebug %{files_demo -- %{fastdebug_suffix_unquoted}} -%endif -%if %{include_fastdebug_build} %files src-fastdebug %{files_src -- %{fastdebug_suffix_unquoted}} %endif -%endif - %changelog -* Wed Sep 02 2026 PengLAI Code - 21.0.12.1.1-1 -- Init package +* Wed Sep 02 2026 PengLAI Code - 1:21.0.12.1.1-1.1 +- Init Package + -- Gitee