diff --git a/java-21-openjdk.spec b/java-21-openjdk.spec index f0974224b6c1953b909166136efa64b3430f4a84..627eb35c1bf95eced57f33a62c60174495741fb4 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 +