Update to jdk-21.0.2+13 (GA)
Sync the copy of the portable specfile with the latest update Bump libpng version to 1.6.40 following JDK-8316030 Bump HarfBuzz version to 8.2.2 following JDK-8313643 Drop local JDK-8311630 patch which is now upstream ** This tarball is embargoed until 2024-01-16 @ 1pm PT. ** Resolves: RHEL-45217
This commit is contained in:
		
							parent
							
								
									8a39def426
								
							
						
					
					
						commit
						9b05332409
					
				
							
								
								
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@ -12,3 +12,6 @@
 | 
			
		||||
/openjdk-jdk20u-jdk-20.0.2+9.tar.xz
 | 
			
		||||
/openjdk-jdk21u-jdk-21+35.tar.xz
 | 
			
		||||
/openjdk-21.0.1+12.tar.xz
 | 
			
		||||
/openjdk-21.0.2+11.tar.xz
 | 
			
		||||
/openjdk-21.0.2+12.tar.xz
 | 
			
		||||
/openjdk-21.0.2+13.tar.xz
 | 
			
		||||
 | 
			
		||||
@ -153,6 +153,11 @@
 | 
			
		||||
%else
 | 
			
		||||
%global gdb_arches %{jit_arches} %{zero_arches}
 | 
			
		||||
%endif
 | 
			
		||||
# Set of architectures for which we have a devkit
 | 
			
		||||
# Only used on RHEL
 | 
			
		||||
%if 0%{?centos} == 0
 | 
			
		||||
%global devkit_arches %{aarch64} %{ppc64le} s390x x86_64
 | 
			
		||||
%endif
 | 
			
		||||
 | 
			
		||||
# By default, we build a slowdebug build during main build on JIT architectures
 | 
			
		||||
%if %{with slowdebug}
 | 
			
		||||
@ -310,12 +315,12 @@
 | 
			
		||||
# New Version-String scheme-style defines
 | 
			
		||||
%global featurever 21
 | 
			
		||||
%global interimver 0
 | 
			
		||||
%global updatever 1
 | 
			
		||||
%global updatever 2
 | 
			
		||||
%global patchver 0
 | 
			
		||||
# buildjdkver is usually same as %%{featurever},
 | 
			
		||||
# but in time of bootstrap of next jdk, it is featurever-1,
 | 
			
		||||
# and this it is better to change it here, on single place
 | 
			
		||||
%global buildjdkver %{featurever}
 | 
			
		||||
%global buildjdkver 20
 | 
			
		||||
# 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}
 | 
			
		||||
@ -326,7 +331,7 @@
 | 
			
		||||
  %global lts_designator_zip ""
 | 
			
		||||
%endif
 | 
			
		||||
# JDK to use for bootstrapping
 | 
			
		||||
%global bootjdk /usr/lib/jvm/java-%{buildjdkver}-openjdk
 | 
			
		||||
%global bootjdk /usr/lib/jvm/java-%{featurever}-openjdk
 | 
			
		||||
# Define whether to use the bootstrap JDK directly or with a fresh libjvm.so
 | 
			
		||||
# This will only work where the bootstrap JDK is the same major version
 | 
			
		||||
# as the JDK being built
 | 
			
		||||
@ -374,8 +379,8 @@
 | 
			
		||||
%global origin_nice     OpenJDK
 | 
			
		||||
%global top_level_dir_name   %{vcstag}
 | 
			
		||||
%global top_level_dir_name_backup %{top_level_dir_name}-backup
 | 
			
		||||
%global buildver        12
 | 
			
		||||
%global rpmrelease      2
 | 
			
		||||
%global buildver        13
 | 
			
		||||
%global rpmrelease      1
 | 
			
		||||
#%%global tagsuffix     %%{nil}
 | 
			
		||||
# Priority must be 8 digits in total; up to openjdk 1.8, we were using 18..... so when we moved to 11, we had to add another digit
 | 
			
		||||
%if %is_system_jdk
 | 
			
		||||
@ -479,6 +484,7 @@
 | 
			
		||||
%define jrebindir()     %{expand:%{_jvmdir}/%{sdkdir -- %{?1}}/bin}
 | 
			
		||||
 | 
			
		||||
%global alt_java_name     alt-java
 | 
			
		||||
%global devkit_name %{origin}-devkit
 | 
			
		||||
 | 
			
		||||
%global rpm_state_dir %{_localstatedir}/lib/rpm-state/
 | 
			
		||||
 | 
			
		||||
@ -599,7 +605,6 @@ Source18: TestTranslations.java
 | 
			
		||||
# 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
 | 
			
		||||
@ -656,8 +661,7 @@ Patch6: jdk8009550-rh910107-fail_to_load_pcsc_library.patch
 | 
			
		||||
#
 | 
			
		||||
#############################################
 | 
			
		||||
 | 
			
		||||
# JDK-8311630: [s390] Implementation of Foreign Function & Memory API (Preview)
 | 
			
		||||
Patch100: jdk8311630-s390_ffmapi.patch
 | 
			
		||||
# Currently empty
 | 
			
		||||
 | 
			
		||||
#############################################
 | 
			
		||||
#
 | 
			
		||||
@ -677,7 +681,13 @@ BuildRequires: desktop-file-utils
 | 
			
		||||
BuildRequires: elfutils-devel
 | 
			
		||||
BuildRequires: file
 | 
			
		||||
BuildRequires: fontconfig-devel
 | 
			
		||||
%ifarch %{devkit_arches}
 | 
			
		||||
BuildRequires: openjdk-devkit >= 1.0-2
 | 
			
		||||
%else
 | 
			
		||||
# Earlier versions have a bug in tree vectorization on PPC
 | 
			
		||||
BuildRequires: gcc >= 4.8.3-8
 | 
			
		||||
BuildRequires: gcc-c++
 | 
			
		||||
%endif
 | 
			
		||||
BuildRequires: gdb
 | 
			
		||||
BuildRequires: libxslt
 | 
			
		||||
BuildRequires: libX11-devel
 | 
			
		||||
@ -700,20 +710,21 @@ BuildRequires: tar
 | 
			
		||||
BuildRequires: unzip
 | 
			
		||||
# Not needed for portables
 | 
			
		||||
# BuildRequires: javapackages-filesystem
 | 
			
		||||
BuildRequires: java-%{buildjdkver}-openjdk-devel
 | 
			
		||||
BuildRequires: java-%{featurever}-openjdk-devel
 | 
			
		||||
# Zero-assembler build requirement
 | 
			
		||||
%ifarch %{zero_arches}
 | 
			
		||||
BuildRequires: libffi-devel
 | 
			
		||||
%endif
 | 
			
		||||
# Full documentation build requirements
 | 
			
		||||
# pandoc is only available on RHEL/CentOS 8
 | 
			
		||||
%if 0%{?rhel} == 8
 | 
			
		||||
BuildRequires: graphviz
 | 
			
		||||
BuildRequires: pandoc
 | 
			
		||||
%endif
 | 
			
		||||
# 2023c required as of JDK-8305113
 | 
			
		||||
BuildRequires: tzdata-java >= 2023c
 | 
			
		||||
# cacerts build requirement in portable mode
 | 
			
		||||
BuildRequires: ca-certificates
 | 
			
		||||
# Earlier versions have a bug in tree vectorization on PPC
 | 
			
		||||
BuildRequires: gcc >= 4.8.3-8
 | 
			
		||||
 | 
			
		||||
%if %{with_systemtap}
 | 
			
		||||
BuildRequires: systemtap-sdt-devel
 | 
			
		||||
@ -733,16 +744,18 @@ Provides: bundled(freetype) = 2.13.0
 | 
			
		||||
# Version in src/java.desktop/share/native/libsplashscreen/giflib/gif_lib.h
 | 
			
		||||
Provides: bundled(giflib) = 5.2.1
 | 
			
		||||
# Version in src/java.desktop/share/native/libharfbuzz/hb-version.h
 | 
			
		||||
Provides: bundled(harfbuzz) = 7.2.0
 | 
			
		||||
Provides: bundled(harfbuzz) = 8.2.2
 | 
			
		||||
# Version in src/java.desktop/share/native/liblcms/lcms2.h
 | 
			
		||||
Provides: bundled(lcms2) = 2.15.0
 | 
			
		||||
# 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.39
 | 
			
		||||
Provides: bundled(libpng) = 1.6.40
 | 
			
		||||
# We link statically against libstdc++ to increase portability
 | 
			
		||||
%ifnarch %{devkit_arches}
 | 
			
		||||
BuildRequires: libstdc++-static
 | 
			
		||||
%endif
 | 
			
		||||
%endif
 | 
			
		||||
 | 
			
		||||
# this is always built, also during debug-only build
 | 
			
		||||
# when it is built in debug-only this package is just placeholder
 | 
			
		||||
@ -885,6 +898,7 @@ The %{origin_nice} %{featurever} miscellany.
 | 
			
		||||
%prep
 | 
			
		||||
 | 
			
		||||
echo "Preparing %{oj_vendor_version}"
 | 
			
		||||
echo "System is RHEL=%{?rhel}%{!?rhel:0}, CentOS=%{?centos}%{!?centos:0}, EPEL=%{?epel}%{!?epel:0}, Fedora=%{?fedora}%{!?fedora:0}"
 | 
			
		||||
 | 
			
		||||
# Using the echo macro breaks rpmdev-bumpspec, as it parses the first line of stdout :-(
 | 
			
		||||
%if 0%{?stapinstall:1}
 | 
			
		||||
@ -921,6 +935,7 @@ echo "WARNING: The build of a fresh libjvm has been disabled due to a JDK versio
 | 
			
		||||
echo "Build JDK version is %{buildjdkver}, feature JDK version is %{featurever}"
 | 
			
		||||
%endif
 | 
			
		||||
 | 
			
		||||
export XZ_OPT="-T0"
 | 
			
		||||
%setup -q -c -n %{uniquesuffix ""} -T -a 0
 | 
			
		||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1189084
 | 
			
		||||
prioritylength=`expr length %{priority}`
 | 
			
		||||
@ -942,8 +957,6 @@ pushd %{top_level_dir_name}
 | 
			
		||||
%patch1001 -p1
 | 
			
		||||
# Patches in need of upstreaming
 | 
			
		||||
%patch6 -p1
 | 
			
		||||
# Patches in next release
 | 
			
		||||
%patch100 -p1
 | 
			
		||||
popd # openjdk
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -969,7 +982,7 @@ fi
 | 
			
		||||
 | 
			
		||||
# Extract systemtap tapsets
 | 
			
		||||
%if %{with_systemtap}
 | 
			
		||||
tar --strip-components=1 -x -I xz -f %{SOURCE8}
 | 
			
		||||
tar --strip-components=1 -x -I 'xz -T0' -f %{SOURCE8}
 | 
			
		||||
%if %{include_debug_build}
 | 
			
		||||
cp -r tapset tapset%{debug_suffix}
 | 
			
		||||
%endif
 | 
			
		||||
@ -989,6 +1002,23 @@ done
 | 
			
		||||
# Prepare desktop files
 | 
			
		||||
# Portables do not have desktop integration
 | 
			
		||||
 | 
			
		||||
# Extract devkit
 | 
			
		||||
%ifarch %{devkit_arches}
 | 
			
		||||
  devkittarball=%{_datadir}/%{devkit_name}/sdk-%{_target_cpu}-%{_target_os}-gnu*.tar.gz
 | 
			
		||||
  echo "Extracting devkit ${devkittarball}";
 | 
			
		||||
  mkdir devkit;
 | 
			
		||||
  tar -C devkit --strip-components=1 -xzf ${devkittarball}
 | 
			
		||||
  DEVKIT_ROOT=$(pwd)/devkit
 | 
			
		||||
  source ${DEVKIT_ROOT}/devkit.info
 | 
			
		||||
  echo "Installed ${DEVKIT_NAME} devkit"
 | 
			
		||||
%else
 | 
			
		||||
%if 0%{?centos} > 0
 | 
			
		||||
  echo "No devkit for CentOS %{?centos}"
 | 
			
		||||
%else
 | 
			
		||||
  echo "No devkit for %{_target_cpu} on RHEL %{?rhel}";
 | 
			
		||||
%endif
 | 
			
		||||
%endif
 | 
			
		||||
 | 
			
		||||
%build
 | 
			
		||||
# How many CPU's do we have?
 | 
			
		||||
export NUM_PROC=%(/usr/bin/getconf _NPROCESSORS_ONLN 2> /dev/null || :)
 | 
			
		||||
@ -997,6 +1027,7 @@ export NUM_PROC=${NUM_PROC:-1}
 | 
			
		||||
# Honor %%_smp_ncpus_max
 | 
			
		||||
[ ${NUM_PROC} -gt %{?_smp_ncpus_max} ] && export NUM_PROC=%{?_smp_ncpus_max}
 | 
			
		||||
%endif
 | 
			
		||||
export XZ_OPT="-T0"
 | 
			
		||||
 | 
			
		||||
%ifarch s390x sparc64 alpha %{power64} %{aarch64}
 | 
			
		||||
export ARCH_DATA_MODEL=64
 | 
			
		||||
@ -1020,14 +1051,14 @@ EXTRA_CFLAGS="$EXTRA_CFLAGS -fno-strict-aliasing"
 | 
			
		||||
EXTRA_CFLAGS="$(echo ${EXTRA_CFLAGS} | sed -e 's|-mstackrealign|-mincoming-stack-boundary=2 -mpreferred-stack-boundary=4|')"
 | 
			
		||||
EXTRA_CPP_FLAGS="$(echo ${EXTRA_CPP_FLAGS} | sed -e 's|-mstackrealign|-mincoming-stack-boundary=2 -mpreferred-stack-boundary=4|')"
 | 
			
		||||
%endif
 | 
			
		||||
%ifarch %{devkit_arches}
 | 
			
		||||
# Remove annobin plugin reference which isn't available in the devkit
 | 
			
		||||
EXTRA_CFLAGS="$(echo ${EXTRA_CFLAGS} | sed -e 's|-specs=/usr/lib/rpm/redhat/redhat-annobin-cc1||')"
 | 
			
		||||
EXTRA_CPP_FLAGS="$(echo ${EXTRA_CFLAGS} | sed -e 's|-specs=/usr/lib/rpm/redhat/redhat-annobin-cc1||')"
 | 
			
		||||
%endif
 | 
			
		||||
 | 
			
		||||
export EXTRA_CFLAGS EXTRA_CPP_FLAGS
 | 
			
		||||
 | 
			
		||||
echo "Building %{SOURCE11}"
 | 
			
		||||
mkdir -p %{altjavaoutputdir}
 | 
			
		||||
gcc ${EXTRA_CFLAGS} -o %{altjavaoutputdir}/%{alt_java_name} %{SOURCE11}
 | 
			
		||||
 | 
			
		||||
echo "Building %{newjavaver}-%{buildver}, pre=%{ea_designator}, opt=%{lts_designator}"
 | 
			
		||||
 | 
			
		||||
function buildjdk() {
 | 
			
		||||
    local outputdir=${1}
 | 
			
		||||
    local buildjdk=${2}
 | 
			
		||||
@ -1035,10 +1066,16 @@ function buildjdk() {
 | 
			
		||||
    local debuglevel=${4}
 | 
			
		||||
    local link_opt=${5}
 | 
			
		||||
    local debug_symbols=${6}
 | 
			
		||||
    local devkit=${7}
 | 
			
		||||
 | 
			
		||||
    local top_dir_abs_src_path=$(pwd)/%{top_level_dir_name}
 | 
			
		||||
    local top_dir_abs_build_path=$(pwd)/${outputdir}
 | 
			
		||||
 | 
			
		||||
%ifarch s390x
 | 
			
		||||
    # devkit libstdc++.a fails with "error: relocation refers
 | 
			
		||||
    # to local symbol "" [9], which is defined in a discarded section
 | 
			
		||||
    libc_link_opt="dynamic";
 | 
			
		||||
%else
 | 
			
		||||
    # This must be set using the global, so that the
 | 
			
		||||
    # static libraries still use a dynamic stdc++lib
 | 
			
		||||
    if [ "x%{link_type}" = "xbundled" ] ; then
 | 
			
		||||
@ -1046,6 +1083,7 @@ function buildjdk() {
 | 
			
		||||
    else
 | 
			
		||||
        libc_link_opt="dynamic";
 | 
			
		||||
    fi
 | 
			
		||||
%endif
 | 
			
		||||
 | 
			
		||||
    echo "Using output directory: ${outputdir}";
 | 
			
		||||
    echo "Checking build JDK ${buildjdk} is operational..."
 | 
			
		||||
@ -1067,8 +1105,8 @@ function buildjdk() {
 | 
			
		||||
%ifarch %{zero_arches}
 | 
			
		||||
    --with-jvm-variants=zero \
 | 
			
		||||
%endif
 | 
			
		||||
%ifarch %{ppc64le}
 | 
			
		||||
    --with-jobs=1 \
 | 
			
		||||
%ifarch %{devkit_arches}
 | 
			
		||||
    --with-devkit=${devkit} \
 | 
			
		||||
%endif
 | 
			
		||||
    --with-cacerts-file=$(readlink -f %{_sysconfdir}/pki/java/cacerts)  \
 | 
			
		||||
    --with-version-build=%{buildver} \
 | 
			
		||||
@ -1112,11 +1150,20 @@ function buildjdk() {
 | 
			
		||||
 | 
			
		||||
function stripjdk() {
 | 
			
		||||
    local outputdir=${1}
 | 
			
		||||
    local toolpath=${2}
 | 
			
		||||
    local jdkimagepath=${outputdir}/images/%{jdkimage}
 | 
			
		||||
    local jreimagepath=${outputdir}/images/%{jreimage}
 | 
			
		||||
    local jmodimagepath=${outputdir}/images/jmods
 | 
			
		||||
    local supportdir=${outputdir}/support
 | 
			
		||||
 | 
			
		||||
%ifarch %{devkit_arches}
 | 
			
		||||
    OBJCOPY=${toolpath}/objcopy
 | 
			
		||||
    STRIP=${toolpath}/strip
 | 
			
		||||
%else
 | 
			
		||||
    OBJCOPY=$(which objcopy)
 | 
			
		||||
    STRIP=$(which strip)
 | 
			
		||||
%endif
 | 
			
		||||
 | 
			
		||||
    if [ "x$suffix" = "x" ] ; then
 | 
			
		||||
        # Keep the unstripped version for consumption by RHEL RPMs
 | 
			
		||||
        cp -a ${jdkimagepath}{,.unstripped}
 | 
			
		||||
@ -1125,9 +1172,9 @@ function stripjdk() {
 | 
			
		||||
        for file in $(find ${jdkimagepath} ${jreimagepath} ${supportdir} -type f) ; do
 | 
			
		||||
            if file ${file} | grep -q 'ELF'; then
 | 
			
		||||
                noextfile=${file/.so/};
 | 
			
		||||
                objcopy --only-keep-debug ${file} ${noextfile}.debuginfo;
 | 
			
		||||
                objcopy --add-gnu-debuglink=${noextfile}.debuginfo ${file};
 | 
			
		||||
                strip -g ${file};
 | 
			
		||||
                ${OBJCOPY} --only-keep-debug ${file} ${noextfile}.debuginfo;
 | 
			
		||||
                ${OBJCOPY} --add-gnu-debuglink=${noextfile}.debuginfo ${file};
 | 
			
		||||
                ${STRIP} -g ${file};
 | 
			
		||||
            fi
 | 
			
		||||
        done
 | 
			
		||||
 | 
			
		||||
@ -1234,6 +1281,12 @@ function genchecksum() {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function packagejdk() {
 | 
			
		||||
    # Reusing OPENJDK_UPSTREAM_TAG_EPOCH for the modification times of all
 | 
			
		||||
    # files in the portable tarballs eliminates one source of variability
 | 
			
		||||
    # across RPM rebuilds.
 | 
			
		||||
    VERSION_FILE="$(pwd)"/"%{top_level_dir_name}"/make/conf/version-numbers.conf
 | 
			
		||||
    OPENJDK_UPSTREAM_TAG_EPOCH="$(stat --format=%Y "${VERSION_FILE}")"
 | 
			
		||||
 | 
			
		||||
    local imagesdir=$(pwd)/${1}/images
 | 
			
		||||
    local docdir=$(pwd)/${1}/images/docs
 | 
			
		||||
    local bundledir=$(pwd)/${1}/bundles
 | 
			
		||||
@ -1241,6 +1294,8 @@ function packagejdk() {
 | 
			
		||||
    local srcdir=$(pwd)/%{top_level_dir_name}
 | 
			
		||||
    local tapsetdir=$(pwd)/tapset
 | 
			
		||||
    local altjavadir=$(pwd)/${3}
 | 
			
		||||
    local tar_time="$(date --utc --iso-8601=seconds --date=@"${OPENJDK_UPSTREAM_TAG_EPOCH}")"
 | 
			
		||||
    local tar_opts="--mtime=${tar_time} --sort=name -cJf"
 | 
			
		||||
 | 
			
		||||
    echo "Packaging build from ${imagesdir} to ${packagesdir}..."
 | 
			
		||||
    mkdir -p ${packagesdir}
 | 
			
		||||
@ -1271,7 +1326,7 @@ function packagejdk() {
 | 
			
		||||
    if [ "x$suffix" = "x" ] ; then
 | 
			
		||||
        # Keep the unstripped version for consumption by RHEL RPMs
 | 
			
		||||
        mv %{jdkimage}.unstripped ${jdkname}
 | 
			
		||||
        tar -cJf ${unstrippedarchive} ${jdkname}
 | 
			
		||||
        tar ${tar_opts} ${unstrippedarchive} ${jdkname}
 | 
			
		||||
        genchecksum ${unstrippedarchive}
 | 
			
		||||
        mv ${jdkname} %{jdkimage}.unstripped
 | 
			
		||||
    fi
 | 
			
		||||
@ -1282,13 +1337,13 @@ function packagejdk() {
 | 
			
		||||
 | 
			
		||||
    # Release images have external debug symbols
 | 
			
		||||
    if [ "x$suffix" = "x" ] ; then
 | 
			
		||||
        tar -cJf ${debugarchive} $(find ${jdkname} -name \*.debuginfo)
 | 
			
		||||
        tar ${tar_opts} ${debugarchive} $(find ${jdkname} -name \*.debuginfo)
 | 
			
		||||
        genchecksum ${debugarchive}
 | 
			
		||||
 | 
			
		||||
        mkdir ${docname}
 | 
			
		||||
        mv ${docdir} ${docname}
 | 
			
		||||
        mv ${bundledir}/${built_doc_archive} ${docname}
 | 
			
		||||
        tar -cJf ${docarchive} ${docname}
 | 
			
		||||
        tar ${tar_opts} ${docarchive} ${docname}
 | 
			
		||||
        genchecksum ${docarchive}
 | 
			
		||||
 | 
			
		||||
        mkdir ${miscname}
 | 
			
		||||
@ -1299,21 +1354,21 @@ function packagejdk() {
 | 
			
		||||
        cp -a ${tapsetdir}* ${miscname}
 | 
			
		||||
%endif
 | 
			
		||||
        cp -av ${altjavadir}/%{alt_java_name} ${miscname}
 | 
			
		||||
        tar -cJf ${miscarchive} ${miscname}
 | 
			
		||||
        tar ${tar_opts} ${miscarchive} ${miscname}
 | 
			
		||||
        genchecksum ${miscarchive}
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    tar -cJf ${jdkarchive} --exclude='**.debuginfo' ${jdkname}
 | 
			
		||||
    tar ${tar_opts} ${jdkarchive} --exclude='**.debuginfo' ${jdkname}
 | 
			
		||||
    genchecksum ${jdkarchive}
 | 
			
		||||
 | 
			
		||||
    tar -cJf ${jrearchive}  --exclude='**.debuginfo' ${jrename}
 | 
			
		||||
    tar ${tar_opts} ${jrearchive}  --exclude='**.debuginfo' ${jrename}
 | 
			
		||||
    genchecksum ${jrearchive}
 | 
			
		||||
 | 
			
		||||
%if %{include_staticlibs}
 | 
			
		||||
    # Static libraries (needed for building graal vm with native image)
 | 
			
		||||
    # Tar as overlay. Transform to the JDK name, since we just want to "add"
 | 
			
		||||
    # static libraries to that folder
 | 
			
		||||
    tar -cJf ${staticarchive} \
 | 
			
		||||
    tar ${tar_opts} ${staticarchive} \
 | 
			
		||||
        --transform "s|^%{static_libs_image}/lib/*|${staticname}/lib/static/linux-%{archinstall}/glibc/|" "%{static_libs_image}/lib"
 | 
			
		||||
    genchecksum ${staticarchive}
 | 
			
		||||
%endif
 | 
			
		||||
@ -1327,11 +1382,26 @@ function packagejdk() {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
%ifarch %{devkit_arches}
 | 
			
		||||
  DEVKIT_ROOT=$(pwd)/devkit
 | 
			
		||||
  source ${DEVKIT_ROOT}/devkit.info
 | 
			
		||||
  GCC="${DEVKIT_TOOLCHAIN_PATH}/gcc --sysroot=${DEVKIT_SYSROOT}"
 | 
			
		||||
%else
 | 
			
		||||
  GCC=$(which gcc)
 | 
			
		||||
%endif
 | 
			
		||||
 | 
			
		||||
echo "Building %{SOURCE11}"
 | 
			
		||||
mkdir -p %{altjavaoutputdir}
 | 
			
		||||
${GCC} ${EXTRA_CFLAGS} -o %{altjavaoutputdir}/%{alt_java_name} %{SOURCE11}
 | 
			
		||||
 | 
			
		||||
echo "Building %{newjavaver}-%{buildver}, pre=%{ea_designator}, opt=%{lts_designator}"
 | 
			
		||||
 | 
			
		||||
%if %{build_hotspot_first}
 | 
			
		||||
  # Build a fresh libjvm.so first and use it to bootstrap
 | 
			
		||||
  echo "Building HotSpot only for the latest libjvm.so"
 | 
			
		||||
  cp -LR --preserve=mode,timestamps %{bootjdk} newboot
 | 
			
		||||
  systemjdk=$(pwd)/newboot
 | 
			
		||||
  buildjdk build/newboot ${systemjdk} %{hotspot_target} "release" "bundled" "internal"
 | 
			
		||||
  buildjdk build/newboot ${systemjdk} %{hotspot_target} "release" "bundled" "internal" ${DEVKIT_ROOT}
 | 
			
		||||
  mv build/newboot/jdk/lib/%{vm_variant}/libjvm.so newboot/lib/%{vm_variant}
 | 
			
		||||
%else
 | 
			
		||||
  systemjdk=%{bootjdk}
 | 
			
		||||
@ -1374,15 +1444,15 @@ for suffix in %{build_loop} ; do
 | 
			
		||||
      run_bootstrap=%{bootstrap_build}
 | 
			
		||||
  fi
 | 
			
		||||
  if ${run_bootstrap} ; then
 | 
			
		||||
      buildjdk ${bootbuilddir} ${systemjdk} "%{bootstrap_targets}" ${debugbuild} ${link_opt} ${debug_symbols}
 | 
			
		||||
      buildjdk ${bootbuilddir} ${systemjdk} "%{bootstrap_targets}" ${debugbuild} ${link_opt} ${debug_symbols} ${DEVKIT_ROOT}
 | 
			
		||||
      installjdk ${bootbuilddir} ${bootinstalldir}
 | 
			
		||||
      buildjdk ${builddir} $(pwd)/${bootinstalldir}/images/%{jdkimage} "${maketargets}" ${debugbuild} ${link_opt} ${debug_symbols}
 | 
			
		||||
      stripjdk ${builddir}
 | 
			
		||||
      buildjdk ${builddir} $(pwd)/${bootinstalldir}/images/%{jdkimage} "${maketargets}" ${debugbuild} ${link_opt} ${debug_symbols} ${DEVKIT_ROOT}
 | 
			
		||||
      stripjdk ${builddir} ${DEVKIT_TOOLCHAIN_PATH}
 | 
			
		||||
      installjdk ${builddir} ${installdir}
 | 
			
		||||
      %{!?with_artifacts:rm -rf ${bootinstalldir}}
 | 
			
		||||
  else
 | 
			
		||||
      buildjdk ${builddir} ${systemjdk} "${maketargets}" ${debugbuild} ${link_opt} ${debug_symbols}
 | 
			
		||||
      stripjdk ${builddir}
 | 
			
		||||
      buildjdk ${builddir} ${systemjdk} "${maketargets}" ${debugbuild} ${link_opt} ${debug_symbols} ${DEVKIT_ROOT}
 | 
			
		||||
      stripjdk ${builddir} ${DEVKIT_TOOLCHAIN_PATH}
 | 
			
		||||
      installjdk ${builddir} ${installdir}
 | 
			
		||||
  fi
 | 
			
		||||
  packagejdk ${installdir} ${packagesdir} %{altjavaoutputdir}
 | 
			
		||||
@ -1416,6 +1486,22 @@ export JAVA_HOME=${top_dir_abs_main_build_path}/images/%{jdkimage}
 | 
			
		||||
#sed -i -e "s:^security.useSystemPropertiesFile=.*:security.useSystemPropertiesFile=true:" \
 | 
			
		||||
#${JAVA_HOME}/conf/security/java.security
 | 
			
		||||
 | 
			
		||||
# Set up tools
 | 
			
		||||
%ifarch %{devkit_arches}
 | 
			
		||||
  DEVKIT_ROOT=$(pwd)/devkit
 | 
			
		||||
  source ${DEVKIT_ROOT}/devkit.info
 | 
			
		||||
  NM="${DEVKIT_TOOLCHAIN_PATH}/nm"
 | 
			
		||||
%else
 | 
			
		||||
  NM=$(which nm)
 | 
			
		||||
%endif
 | 
			
		||||
# elfutils readelf supports more binaries than binutils version on RHEL 8
 | 
			
		||||
# and debug symbols tests below were designed around this version
 | 
			
		||||
READELF=$(which eu-readelf)
 | 
			
		||||
# Only native gdb seems to work
 | 
			
		||||
# The devkit gdb needs the devkit stdc++ library but then the JVM
 | 
			
		||||
# segfaults when this is on the LD_LIBRARY_PATH
 | 
			
		||||
GDB=$(which gdb)
 | 
			
		||||
 | 
			
		||||
# Check Shenandoah is enabled
 | 
			
		||||
%if %{use_shenandoah_hotspot}
 | 
			
		||||
$JAVA_HOME//bin/java -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -version
 | 
			
		||||
@ -1444,14 +1530,14 @@ $JAVA_HOME/bin/javac -d . %{SOURCE16}
 | 
			
		||||
$JAVA_HOME/bin/java $(echo $(basename %{SOURCE16})|sed "s|\.java||") "%{oj_vendor}" "%{oj_vendor_url}" "%{oj_vendor_bug_url}" "%{oj_vendor_version}"
 | 
			
		||||
 | 
			
		||||
# Check java launcher has no SSB mitigation
 | 
			
		||||
if ! nm $JAVA_HOME/bin/java | grep set_speculation ; then true ; else false; fi
 | 
			
		||||
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 %{altjavaoutputdir}/%{alt_java_name} | grep prctl
 | 
			
		||||
${NM} %{altjavaoutputdir}/%{alt_java_name} | grep prctl
 | 
			
		||||
%else
 | 
			
		||||
if ! nm %{altjavaoutputdir}/%{alt_java_name} | grep prctl ; then true ; else false; fi
 | 
			
		||||
if ! ${NM} %{altjavaoutputdir}/%{alt_java_name} | grep prctl ; then true ; else false; fi
 | 
			
		||||
%endif
 | 
			
		||||
 | 
			
		||||
%if ! 0%{?flatpak}
 | 
			
		||||
@ -1469,8 +1555,8 @@ $JAVA_HOME/bin/java -Djava.locale.providers=CLDR $(echo $(basename %{SOURCE18})|
 | 
			
		||||
export STATIC_LIBS_HOME=${top_dir_abs_staticlibs_build_path}/images/%{static_libs_image}
 | 
			
		||||
ls -l $STATIC_LIBS_HOME
 | 
			
		||||
ls -l $STATIC_LIBS_HOME/lib
 | 
			
		||||
readelf --debug-dump $STATIC_LIBS_HOME/lib/libnet.a | grep Inet4AddressImpl.c
 | 
			
		||||
readelf --debug-dump $STATIC_LIBS_HOME/lib/libnet.a | grep Inet6AddressImpl.c
 | 
			
		||||
${READELF} --debug-dump $STATIC_LIBS_HOME/lib/libnet.a | grep Inet4AddressImpl.c
 | 
			
		||||
${READELF} --debug-dump $STATIC_LIBS_HOME/lib/libnet.a | grep Inet6AddressImpl.c
 | 
			
		||||
%endif
 | 
			
		||||
 | 
			
		||||
# Release builds strip the debug symbols into external .debuginfo files
 | 
			
		||||
@ -1489,15 +1575,15 @@ do
 | 
			
		||||
 | 
			
		||||
    # Test for .debug_* sections in the shared object. This is the main test
 | 
			
		||||
    # Stripped objects will not contain these
 | 
			
		||||
    eu-readelf -S "$lib" | grep "] .debug_"
 | 
			
		||||
    test $(eu-readelf -S "$lib" | grep -E "\]\ .debug_(info|abbrev)" | wc --lines) == 2
 | 
			
		||||
    ${READELF} -S "$lib" | grep "] .debug_"
 | 
			
		||||
    test $(${READELF} -S "$lib" | grep -E "\]\ .debug_(info|abbrev)" | wc --lines) == 2
 | 
			
		||||
 | 
			
		||||
    # Test FILE symbols. These will most likely be removed by anything that
 | 
			
		||||
    # manipulates symbol tables because it's generally useless. So a nice test
 | 
			
		||||
    # that nothing has messed with symbols
 | 
			
		||||
    old_IFS="$IFS"
 | 
			
		||||
    IFS=$'\n'
 | 
			
		||||
    for line in $(eu-readelf -s "$lib" | grep "00000000      0 FILE    LOCAL  DEFAULT")
 | 
			
		||||
    for line in $(${READELF} -s "$lib" | grep "00000000      0 FILE    LOCAL  DEFAULT")
 | 
			
		||||
    do
 | 
			
		||||
     # We expect to see .cpp and .S files, except for architectures like aarch64 and
 | 
			
		||||
     # s390 where we expect .o and .oS files
 | 
			
		||||
@ -1507,17 +1593,17 @@ do
 | 
			
		||||
 | 
			
		||||
    # If this is the JVM, look for javaCalls.(cpp|o) in FILEs, for extra sanity checking
 | 
			
		||||
    if [ "`basename $lib`" = "libjvm.so" ]; then
 | 
			
		||||
      eu-readelf -s "$lib" | \
 | 
			
		||||
      ${READELF} -s "$lib" | \
 | 
			
		||||
        grep -E "00000000      0 FILE    LOCAL  DEFAULT      ABS javaCalls.(cpp|o)$"
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    # Test that there are no .gnu_debuglink sections pointing to another
 | 
			
		||||
    # debuginfo file. There shouldn't be any debuginfo files, so the link makes
 | 
			
		||||
    # no sense either
 | 
			
		||||
    eu-readelf -S "$lib" | grep 'gnu'
 | 
			
		||||
    if eu-readelf -S "$lib" | grep '] .gnu_debuglink' | grep PROGBITS; then
 | 
			
		||||
    ${READELF} -S "$lib" | grep 'gnu'
 | 
			
		||||
    if ${READELF} -S "$lib" | grep '] .gnu_debuglink' | grep PROGBITS; then
 | 
			
		||||
      echo "bad .gnu_debuglink section."
 | 
			
		||||
      eu-readelf -x .gnu_debuglink "$lib"
 | 
			
		||||
      ${READELF} -x .gnu_debuglink "$lib"
 | 
			
		||||
      false
 | 
			
		||||
    fi
 | 
			
		||||
  fi
 | 
			
		||||
@ -1529,7 +1615,7 @@ done
 | 
			
		||||
# Using line number 1 might cause build problems. See:
 | 
			
		||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1539664
 | 
			
		||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1538767
 | 
			
		||||
gdb -q "$JAVA_HOME/bin/java" <<EOF | tee gdb.out
 | 
			
		||||
${GDB} -q "$JAVA_HOME/bin/java" <<EOF | tee gdb.out
 | 
			
		||||
handle SIGSEGV pass nostop noprint
 | 
			
		||||
handle SIGILL pass nostop noprint
 | 
			
		||||
set breakpoint pending on
 | 
			
		||||
@ -1687,8 +1773,31 @@ done
 | 
			
		||||
%{_jvmdir}/%{miscportablearchive}.sha256sum
 | 
			
		||||
 | 
			
		||||
%changelog
 | 
			
		||||
* Mon Nov 06 2023 Andrew Hughes <gnu.andrew@redhat.com> - 1:21.0.1.0.12-2
 | 
			
		||||
- Include JDK-8311630 patch to implement Foreign Function & Memory preview API on s390x
 | 
			
		||||
* Fri Mar 15 2024 Andrew Hughes <gnu.andrew@redhat.com> - 1:21.0.2.0.13-1
 | 
			
		||||
- Update to jdk-21.0.2+13 (GA)
 | 
			
		||||
- Update release notes to 21.0.2+13
 | 
			
		||||
- Bump libpng version to 1.6.40 following JDK-8316030
 | 
			
		||||
- Bump HarfBuzz version to 8.2.2 following JDK-8313643
 | 
			
		||||
- pandoc is only available on RHEL/CentOS 8
 | 
			
		||||
- Check for CentOS being defined to determine use of devkit
 | 
			
		||||
- Set buildjdkver to 20 until OpenJDK 21 is available in the buildroot
 | 
			
		||||
- Use featurever for JDK build dependencies
 | 
			
		||||
 | 
			
		||||
* Mon Mar 11 2024 Andrew Hughes <gnu.andrew@redhat.com> - 1:21.0.1.0.12-2
 | 
			
		||||
- Use a devkit to build on architectures where we have one (s390x, aarch64, ppc64le, x86_64)
 | 
			
		||||
- Use a dynamic libstdc++ on s390x to workaround failure with static libstdc++
 | 
			
		||||
- Use the devkit tools during the check stage so they can understand the generated binaries
 | 
			
		||||
- Use eu-readelf on devkit and non-devkit builds as debug symbol tests rely on its behaviour
 | 
			
		||||
- Use system gdb for both builds as devkit version fails (needs devkit libraries, then JDK segfaults with them)
 | 
			
		||||
- Filter out annobin plugin when using the devkit
 | 
			
		||||
- Drop static libstdc++ build dependency on devkit builds as it should come from the devkit
 | 
			
		||||
- Disable devkit build on CentOS where it is unavailable
 | 
			
		||||
- Introduce tar_opts to avoid repetition of lengthy tar creation options
 | 
			
		||||
 | 
			
		||||
* Thu Feb 08 2024 Thomas Fitzsimmons <fitzsim@redhat.com> - 1:21.0.1.0.12-2
 | 
			
		||||
- Invoke xz in multi-threaded mode
 | 
			
		||||
- Remove ppc64le with-jobs=1 workaround
 | 
			
		||||
- Make portable tarball modification times reproducible
 | 
			
		||||
 | 
			
		||||
* Fri Oct 27 2023 Andrew Hughes <gnu.andrew@redhat.com> - 1:21.0.1.0.12-1
 | 
			
		||||
- Update to jdk-21.0.1.0+12 (GA)
 | 
			
		||||
 | 
			
		||||
@ -300,7 +300,7 @@
 | 
			
		||||
# New Version-String scheme-style defines
 | 
			
		||||
%global featurever 21
 | 
			
		||||
%global interimver 0
 | 
			
		||||
%global updatever 1
 | 
			
		||||
%global updatever 2
 | 
			
		||||
%global patchver 0
 | 
			
		||||
# 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.
 | 
			
		||||
@ -350,10 +350,10 @@
 | 
			
		||||
%global origin_nice     OpenJDK
 | 
			
		||||
%global top_level_dir_name   %{vcstag}
 | 
			
		||||
%global top_level_dir_name_backup %{top_level_dir_name}-backup
 | 
			
		||||
%global buildver        12
 | 
			
		||||
%global rpmrelease      3
 | 
			
		||||
%global buildver        13
 | 
			
		||||
%global rpmrelease      1
 | 
			
		||||
# Settings used by the portable build
 | 
			
		||||
%global portablerelease 2
 | 
			
		||||
%global portablerelease 1
 | 
			
		||||
%global portablesuffix el9
 | 
			
		||||
%global portablebuilddir /builddir/build/BUILD
 | 
			
		||||
 | 
			
		||||
@ -1417,9 +1417,6 @@ Patch6: jdk8009550-rh910107-fail_to_load_pcsc_library.patch
 | 
			
		||||
#
 | 
			
		||||
#############################################
 | 
			
		||||
 | 
			
		||||
# JDK-8311630: [s390] Implementation of Foreign Function & Memory API (Preview)
 | 
			
		||||
Patch100: jdk8311630-s390_ffmapi.patch
 | 
			
		||||
 | 
			
		||||
#############################################
 | 
			
		||||
#
 | 
			
		||||
# Portable build specific patches
 | 
			
		||||
@ -1496,13 +1493,13 @@ Provides: bundled(freetype) = 2.13.0
 | 
			
		||||
# Version in src/java.desktop/share/native/libsplashscreen/giflib/gif_lib.h
 | 
			
		||||
Provides: bundled(giflib) = 5.2.1
 | 
			
		||||
# Version in src/java.desktop/share/native/libharfbuzz/hb-version.h
 | 
			
		||||
Provides: bundled(harfbuzz) = 7.2.0
 | 
			
		||||
Provides: bundled(harfbuzz) = 8.2.2
 | 
			
		||||
# Version in src/java.desktop/share/native/liblcms/lcms2.h
 | 
			
		||||
Provides: bundled(lcms2) = 2.15.0
 | 
			
		||||
# 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.39
 | 
			
		||||
Provides: bundled(libpng) = 1.6.40
 | 
			
		||||
%endif
 | 
			
		||||
 | 
			
		||||
# this is always built, also during debug-only build
 | 
			
		||||
@ -1867,8 +1864,6 @@ pushd %{top_level_dir_name}
 | 
			
		||||
%patch1001 -p1
 | 
			
		||||
# Patches in need of upstreaming
 | 
			
		||||
%patch6 -p1
 | 
			
		||||
# Patches in next release
 | 
			
		||||
%patch100 -p1
 | 
			
		||||
popd # openjdk
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -2488,6 +2483,15 @@ cjc.mainProgram(args)
 | 
			
		||||
%endif
 | 
			
		||||
 | 
			
		||||
%changelog
 | 
			
		||||
* Tue Jan 09 2024 Andrew Hughes <gnu.andrew@redhat.com> - 1:21.0.2.0.13-1
 | 
			
		||||
- Update to jdk-21.0.2+13 (GA)
 | 
			
		||||
- Sync the copy of the portable specfile with the latest update
 | 
			
		||||
- Bump libpng version to 1.6.40 following JDK-8316030
 | 
			
		||||
- Bump HarfBuzz version to 8.2.2 following JDK-8313643
 | 
			
		||||
- Drop local JDK-8311630 patch which is now upstream
 | 
			
		||||
- ** This tarball is embargoed until 2024-01-16 @ 1pm PT. **
 | 
			
		||||
- Resolves: RHEL-45217
 | 
			
		||||
 | 
			
		||||
* Mon Nov 06 2023 Andrew Hughes <gnu.andrew@redhat.com> - 1:21.0.1.0.12-3
 | 
			
		||||
- Include JDK-8311630 patch to implement Foreign Function & Memory preview API on s390x
 | 
			
		||||
- Sync the copy of the portable specfile with the latest update
 | 
			
		||||
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										2
									
								
								sources
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								sources
									
									
									
									
									
								
							@ -1,2 +1,2 @@
 | 
			
		||||
SHA512 (tapsets-icedtea-6.0.0pre00-c848b93a8598.tar.xz) = 97d026212363b3c83f6a04100ad7f6fdde833d16579717f8756e2b8c2eb70e144a41a330cb9ccde9c3badd37a2d54fdf4650a950ec21d8b686d545ecb2a64d30
 | 
			
		||||
SHA512 (openjdk-21.0.1+12.tar.xz) = fe722867334c1aed1f4cd9825fe6dc747b33e0e41c9986cacba46b1ee6d3f059bac87c62e299ea5ef5ef64b3c404c43a572b487bb66f024c6cc997176ee0a910
 | 
			
		||||
SHA512 (openjdk-21.0.2+13.tar.xz) = 3b190b8290760ce760297618a62f0628e245c20393e70c915f9747de2d0d8a25e9e9d9f2cee696b274dffa44cc47e93a3f915d15c252306352617470c6d9e662
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user