From df7a97a8c9e3142f58a8f7653f8dd09c1e86187d Mon Sep 17 00:00:00 2001 From: eabdullin Date: Wed, 14 May 2025 18:11:06 +0000 Subject: [PATCH] import UBI java-21-openjdk-21.0.7.0.6-1.el10 --- .gitignore | 38 +- gating.yaml | 7 - java-21-openjdk-portable.specfile | 62 +- java-21-openjdk.spec | 812 ++++++++---------- jdk8351500-numa_migration_crashes.patch | 274 ------ rpminspect.yaml | 3 - scripts/builds/build_centos.sh | 29 - scripts/builds/build_centos_portable_build.sh | 29 - scripts/builds/build_rhel_10.sh | 43 - scripts/builds/build_rhel_7_portable_build.sh | 29 - scripts/builds/build_rhel_8.sh | 43 - scripts/builds/build_rhel_9.sh | 43 - scripts/builds/build_rhel_portable_build.sh | 29 - scripts/builds/build_vanilla.sh | 43 - scripts/discover_trees.sh | 61 -- scripts/generate_source_tarball.sh | 294 ------- scripts/icedtea_sync.sh | 198 ----- scripts/openjdk_news.sh | 83 -- sources | 2 +- tests/tests.yml | 21 - 20 files changed, 397 insertions(+), 1746 deletions(-) delete mode 100644 gating.yaml delete mode 100644 jdk8351500-numa_migration_crashes.patch delete mode 100644 rpminspect.yaml delete mode 100755 scripts/builds/build_centos.sh delete mode 100755 scripts/builds/build_centos_portable_build.sh delete mode 100755 scripts/builds/build_rhel_10.sh delete mode 100755 scripts/builds/build_rhel_7_portable_build.sh delete mode 100755 scripts/builds/build_rhel_8.sh delete mode 100755 scripts/builds/build_rhel_9.sh delete mode 100755 scripts/builds/build_rhel_portable_build.sh delete mode 100755 scripts/builds/build_vanilla.sh delete mode 100755 scripts/discover_trees.sh delete mode 100755 scripts/generate_source_tarball.sh delete mode 100755 scripts/icedtea_sync.sh delete mode 100755 scripts/openjdk_news.sh delete mode 100644 tests/tests.yml diff --git a/.gitignore b/.gitignore index dda72f3..3e85305 100644 --- a/.gitignore +++ b/.gitignore @@ -1,36 +1,2 @@ -/openjdk-jdk17u-jdk-17.0.7+7.tar.xz -/tapsets-icedtea-6.0.0pre00-c848b93a8598.tar.xz -/openjdk-jdk18u-jdk-18.0.1+0.tar.xz -/openjdk-jdk18u-jdk-18.0.1+10.tar.xz -/openjdk-jdk18u-jdk-18.0.1.1+2.tar.xz -/openjdk-jdk18u-jdk-18.0.2+9.tar.xz -/openjdk-jdk19u-jdk-19+36.tar.xz -/openjdk-jdk19u-jdk-19.0.1+10.tar.xz -/openjdk-jdk19u-jdk-19.0.2+7.tar.xz -/openjdk-jdk20u-jdk-20+36.tar.xz -/openjdk-jdk20u-jdk-20.0.1+9.tar.xz -/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 -/openjdk-21.0.3+1-ea.tar.xz -/openjdk-21.0.3+7-ea.tar.xz -/openjdk-21.0.3+9.tar.xz -/openjdk-21.0.4+1-ea.tar.xz -/openjdk-21.0.4+5-ea.tar.xz -/openjdk-21.0.4+7.tar.xz -/openjdk-21.0.5+1-ea.tar.xz -/openjdk-21.0.5+5-ea.tar.xz -/openjdk-21.0.5+9-ea.tar.xz -/openjdk-21.0.5+10.tar.xz -/openjdk-21.0.5+11.tar.xz -/openjdk-21.0.6+6-ea.tar.xz -/openjdk-21.0.6+7.tar.xz -/openjdk-21.0.7+1-ea.tar.xz -/openjdk-21.0.7+2-ea.tar.xz -/openjdk-21.0.7+3-ea.tar.xz -/openjdk-21.0.7+4-ea.tar.xz -/openjdk-21.0.7+5-ea.tar.xz -/openjdk-21.0.7+6.tar.xz +openjdk-21.0.7+6.tar.xz +tapsets-icedtea-6.0.0pre00-c848b93a8598.tar.xz diff --git a/gating.yaml b/gating.yaml deleted file mode 100644 index c7412f1..0000000 --- a/gating.yaml +++ /dev/null @@ -1,7 +0,0 @@ -# recipients: java-qa ---- !Policy -product_versions: - - rhel-9 -decision_context: osci_compose_gate -rules: - - !PassingTestCaseRule {test_case_name: osci.brew-build.tier0.functional} diff --git a/java-21-openjdk-portable.specfile b/java-21-openjdk-portable.specfile index da503f7..1d56ee3 100644 --- a/java-21-openjdk-portable.specfile +++ b/java-21-openjdk-portable.specfile @@ -325,7 +325,7 @@ # New Version-String scheme-style defines %global featurever 21 %global interimver 0 -%global updatever 7 +%global updatever 6 %global patchver 0 # buildjdkver is usually same as %%{featurever}, # but in time of bootstrap of next jdk, it is featurever-1, @@ -341,7 +341,7 @@ %global lts_designator_zip "" %endif # JDK to use for bootstrapping -%global bootjdk /usr/lib/jvm/java-%{featurever}-openjdk +%global bootjdk /usr/lib/jvm/java-%{buildjdkver}-openjdk # Define whether to use the bootstrap JDK directly or with a fresh libjvm.so # This will only work where the bootstrap JDK is the same major version # as the JDK being built @@ -375,7 +375,7 @@ # Define IcedTea version used for SystemTap tapsets and desktop file %global icedteaver 6.0.0pre00-c848b93a8598 # Define current Git revision for the FIPS support patches -%global fipsver 9203d50836c +%global fipsver 0a42e29b391 # Define JDK versions %global newjavaver %{featurever}.%{interimver}.%{updatever}.%{patchver} %global javaver %{featurever} @@ -389,8 +389,8 @@ %global origin_nice OpenJDK %global top_level_dir_name %{vcstag} %global top_level_dir_name_backup %{top_level_dir_name}-backup -%global buildver 6 -%global rpmrelease 2 +%global buildver 7 +%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 @@ -673,9 +673,7 @@ Patch1001: fips-%{featurever}u-%{fipsver}.patch # ############################################# -# JDK-8351500: G1: NUMA migrations cause crashes in region allocation -# Upstream in 21.0.8+1 -Patch2001: jdk8351500-numa_migration_crashes.patch +# Currently empty ############################################# # @@ -729,7 +727,7 @@ BuildRequires: zip BuildRequires: tar BuildRequires: unzip BuildRequires: javapackages-filesystem -BuildRequires: java-%{featurever}-%{origin}%{?pkgos:-%{pkgos}}-devel +BuildRequires: java-%{buildjdkver}-%{origin}%{?pkgos:-%{pkgos}}-devel # Zero-assembler build requirement %ifarch %{zero_arches} BuildRequires: libffi-devel @@ -988,8 +986,6 @@ sh %{SOURCE12} %{top_level_dir_name} pushd %{top_level_dir_name} # Add crypto policy and FIPS support %patch -P1001 -p1 -# Add early JDK-8351500 -%patch -P2001 -p1 popd # openjdk @@ -1939,17 +1935,6 @@ done %endif %changelog -* Thu May 08 2025 Andrew Hughes - 1:21.0.7.0.6-2 -- Add local version of JDK-8351500 for early interim release before 21.0.8 -- Resolves: OPENJDK-3679 - -* Fri Apr 11 2025 Andrew Hughes - 1:21.0.7.0.6-1 -- Update to jdk-21.0.7+6 (GA) -- Update release notes to 21.0.7+6 -- Rebase FIPS support against 21.0.7+5 -- ** This tarball is embargoed until 2025-04-15 @ 1pm PT. ** -- Resolves: OPENJDK-3789 - * Sat Jan 11 2025 Andrew Hughes - 1:21.0.6.0.7-1 - Update to jdk-21.0.6+7 (GA) - Update release notes to 21.0.6+7 @@ -2020,7 +2005,7 @@ done - Update release notes to 21.0.4+5 - Move unstripped, misc and doc tarball handling into normal build / no suffix blocks - Limit Java only tests to one architecture using jdk_test_arch -- Drop unneeded tzdata-java build dependency following f854bb3955fb57bba4e83d09813e9cfd0e81079e +- Drop unneeded tzdata-java build dependency following 3e3cf8fa2df7bac2f6a60a0ddd596ec39228a3e1 - Resolves: OPENJDK-3133 - Resolves: OPENJDK-3237 - Resolves: OPENJDK-3182 @@ -2039,7 +2024,6 @@ done - Update to jdk-21.0.3+9 (GA) - Update release notes to 21.0.3+9 - Switch to GA mode. -- Update buildjdkver to match the featurever - ** This tarball is embargoed until 2024-04-16 @ 1pm PT. ** * Thu Apr 04 2024 Andrew Hughes - 1:21.0.3.0.7-0.1.ea @@ -2134,10 +2118,6 @@ done - Update release notes to 21.0.2+13 - Bump libpng version to 1.6.40 following JDK-8316030 - Bump HarfBuzz version to 8.2.2 following JDK-8313643 -- pandoc is only available on RHEL/CentOS 8 -- Check for CentOS being defined to determine use of devkit -- Set buildjdkver to 20 until OpenJDK 21 is available in the buildroot -- Use featurever for JDK build dependencies * Mon Mar 11 2024 Andrew Hughes - 1:21.0.1.0.12-2 - Use a devkit to build on architectures where we have one (s390x, aarch64, ppc64le, x86_64) @@ -2147,7 +2127,6 @@ done - Use system gdb for both builds as devkit version fails (needs devkit libraries, then JDK segfaults with them) - Filter out annobin plugin when using the devkit - Drop static libstdc++ build dependency on devkit builds as it should come from the devkit -- Disable devkit build on CentOS where it is unavailable - Introduce tar_opts to avoid repetition of lengthy tar creation options * Thu Feb 08 2024 Thomas Fitzsimmons - 1:21.0.1.0.12-2 @@ -2169,7 +2148,7 @@ done * Fri Oct 27 2023 Andrew Hughes - 1:21.0.0.0.35-4 - Rebuild jmods using the stripped binaries in release builds - Make sure the unstripped JDK is customised by the installjdk function -- Resolves: OPENJDK-3224 +- Resolves: OPENJDK-1974 * Thu Oct 26 2023 Andrew Hughes - 1:21.0.0.0.35-3 - Re-enable SystemTap support and perform only substitutions possible without final NVR available @@ -2181,7 +2160,6 @@ done * Thu Aug 24 2023 Andrew Hughes - 1:21.0.0.0.35-2 - Update documentation (README.md, add missing JEP to release notes) - Replace alt-java patch with a binary separate from the JDK -- Adapt alt-java test to new binary where there is always a set_speculation function - Drop stale patches that are of little use any more: - * nss.cfg has been disabled since early PKCS11 work and long superseded by FIPS work - * No accessibility subpackage to warrant RH1648242 patch any more @@ -2205,31 +2183,27 @@ done - Replace smoke test files used in the staticlibs test, as fdlibm was removed by JDK-8303798 - Related: rhbz#2192749 -* Wed Aug 16 2023 Andrew Hughes - 1:20.0.2.0.9-1 +* Wed Aug 16 2023 Andrew Hughes - 1:20.0.0.0.36-1 - Update to jdk-20.0.2+9 - Update release notes to 20.0.2+9 - Update system crypto policy & FIPS patch from new fips-20u tree - Update generate_tarball.sh ICEDTEA_VERSION - Update CLDR reference data following update to 42 (Rocky Mountain-Normalzeit => Rocky-Mountain-Normalzeit) +- Related: rhbz#2192749 -* Wed Aug 16 2023 Jiri Vanek - 1:20.0.2.0.9-1 +* Wed Aug 16 2023 Jiri Vanek - 1:20.0.0.0.36-1 - Dropped JDK-8295447, JDK-8296239 & JDK-8299439 patches now upstream - Adapted rh1750419-redhat_alt_java.patch +- Related: rhbz#2192749 -* Tue Aug 15 2023 Andrew Hughes - 1:19.0.2.0.7-2 -- Bump rpmrelease to rebuild for CentOS 9 - -* Tue Aug 15 2023 Andrew Hughes - 1:19.0.2.0.7-1 +* Tue Aug 15 2023 Andrew Hughes - 1:19.0.1.0.10-1 - Update to jdk-19.0.2 release - Update release notes to 19.0.2 - Rebase FIPS patches from fips-19u branch - Remove references to sample directory removed by JDK-8284999 - Add local patch JDK-8295447 (javac NPE) which was accepted into 19u upstream but not in the GA tag - Add local patches for JDK-8296239 & JDK-8299439 (Croatia Euro update) which are present in 8u, 11u & 17u releases -- Switch buildjdkver to java-21-openjdk - -* Thu Aug 10 2023 Andrew Hughes - 1:18.0.2.0.9-2 -- Bump rpmrelease to rebuild for CentOS 9 +- Related: rhbz#2192749 * Thu Aug 10 2023 Andrew Hughes - 1:18.0.2.0.9-1 - Update to jdk-18.0.2 release @@ -2239,14 +2213,14 @@ done - Rebase RH1648249 nss.cfg patch so it applies after the FIPS patch - Automatically turn off building a fresh HotSpot first, if the bootstrap JDK is not the same major version as that being built - Drop tzdata patches added for 17.0.7 which will eventually appear in the upstream tarball when we reach OpenJDK 21 +- Switch bootjdkver to java-21-openjdk - Disable tzdata tests until we are on the latest JDK and things are back in sync +- Related: rhbz#2192749 * Thu Aug 10 2023 Petra Alice Mikova - 1:18.0.0.0.37-1 - Update to ea version of jdk18 - Adjust rh1684077-openjdk_should_depend_on_pcsc-lite-libs_instead_of_pcsc-lite-devel.patch - -* Mon May 15 2023 Andrew Hughes - 1:17.0.7.0.7-3 -- Bump rpmrelease to rebuild for CentOS 9 +- Related: rhbz#2192749 * Mon May 15 2023 Andrew Hughes - 1:17.0.7.0.7-2 - Create java-21-openjdk-portable package based on java-17-openjdk-portable diff --git a/java-21-openjdk.spec b/java-21-openjdk.spec index 8717c86..1506789 100644 --- a/java-21-openjdk.spec +++ b/java-21-openjdk.spec @@ -102,9 +102,9 @@ # similarly for other %%{_jvmdir}/{jre,java} and %%{_javadocdir}/{java,java-zip} %define is_release_build() %( if [ "%{?1}" == "%{debug_suffix_unquoted}" -o "%{?1}" == "%{fastdebug_suffix_unquoted}" ]; then echo "0" ; else echo "1"; fi ) -# while JDK is a techpreview(is_system_jdk=0), some provides are turned off. Once jdk stops to be an techpreview, move it to 1 -# as sytem JDK, we mean any JDK which can run whole system java stack without issues (like bytecode issues, module issues, dependencies...) -%global is_system_jdk 0 +# Indicates whether this is the default JDK on this version of RHEL +# Only the default/system JDK provides unversioned Provides like 'java', 'jre' and 'java-devel' +%global is_system_jdk 1 %global aarch64 aarch64 arm64 armv8 # we need to distinguish between big and little endian PPC64 @@ -366,9 +366,9 @@ %global top_level_dir_name %{vcstag} %global top_level_dir_name_backup %{top_level_dir_name}-backup %global buildver 6 -%global rpmrelease 2 +%global rpmrelease 1 # Settings used by the portable build -%global portablerelease 2 +%global portablerelease 1 # Portable suffix differs between RHEL and CentOS %if 0%{?centos} == 0 %global portablesuffix %{?pkgos:el7_9}%{!?pkgos:el8} @@ -418,9 +418,9 @@ # output dir stub %define installoutputdir() %{expand:install/jdk%{featurever}.install%{?1}} # we can copy the javadoc to not arched dir, or make it not noarch -%define uniquejavadocdir() %{expand:%{fullversion}.%{_arch}%{?1}} +%define uniquejavadocdir() %{expand:%{compatiblename}%{?1}} # main id and dir of this jdk -%define uniquesuffix() %{expand:%{fullversion}.%{_arch}%{?1}} +%define uniquesuffix() %{expand:%{compatiblename}%{?1}} ################################################################# # fix for https://bugzilla.redhat.com/show_bug.cgi?id=1111349 @@ -432,10 +432,9 @@ %global __provides_exclude ^(%{_privatelibs})$ %global __requires_exclude ^(%{_privatelibs})$ # Never generate lib-style provides/requires for any debug packages -%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}}/.*$ +%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} %else # Don't generate provides/requires for JDK provided shared libraries at all. %global __provides_exclude ^(%{_privatelibs}|%{_publiclibs})$ @@ -453,7 +452,6 @@ %define etcjavadir() %{expand:%{etcjavasubdir}/%{uniquesuffix -- %{?1}}} # Standard JPackage directories and symbolic links. %define sdkdir() %{expand:%{uniquesuffix -- %{?1}}} -%define jrelnk() %{expand:jre-%{javaver}-%{origin}-%{version}-%{release}.%{_arch}%{?1}} %define sdkbindir() %{expand:%{_jvmdir}/%{sdkdir -- %{?1}}/bin} %define jrebindir() %{expand:%{_jvmdir}/%{sdkdir -- %{?1}}/bin} @@ -470,9 +468,6 @@ %global alternatives_requires %{_sbindir}/alternatives %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, @@ -490,112 +485,49 @@ # not-duplicated scriptlets for normal/debug packages %global update_desktop_icons /usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : -%define save_alternatives() %{expand: - # warning! alternatives are localised! - # LANG=cs_CZ.UTF-8 alternatives --display java | head - # LANG=en_US.UTF-8 alternatives --display java | head - function nonLocalisedAlternativesDisplayOfMaster() { - LANG=en_US.UTF-8 alternatives --display "$MASTER" - } - function headOfAbove() { - nonLocalisedAlternativesDisplayOfMaster | head -n $1 - } - MASTER="%{?1}" - LOCAL_LINK="%{?2}" - FAMILY="%{?3}" - rm -f %{_localstatedir}/lib/rpm-state/"$MASTER"_$FAMILY > /dev/null - if nonLocalisedAlternativesDisplayOfMaster > /dev/null ; then - if headOfAbove 1 | grep -q manual ; then - if headOfAbove 2 | tail -n 1 | grep -q %{compatiblename} ; then - headOfAbove 2 > %{_localstatedir}/lib/rpm-state/"$MASTER"_"$FAMILY" - fi - fi - fi -} - -%define save_and_remove_alternatives() %{expand: - if [ "x$debug" == "xtrue" ] ; then - set -x - fi - upgrade1_uninstal0=%{?3} - if [ "0$upgrade1_uninstal0" -gt 0 ] ; then # removal of this condition will cause persistence between uninstall - %{save_alternatives %{?1} %{?2} %{?4}} - fi - alternatives --remove "%{?1}" "%{?2}" -} - -%define set_if_needed_alternatives() %{expand: - MASTER="%{?1}" - FAMILY="%{?2}" - ALTERNATIVES_FILE="%{_localstatedir}/lib/rpm-state/$MASTER"_"$FAMILY" - if [ -e "$ALTERNATIVES_FILE" ] ; then - rm "$ALTERNATIVES_FILE" - alternatives --set $MASTER $FAMILY - fi -} - - %define post_script() %{expand: update-desktop-database %{_datadir}/applications &> /dev/null || : /bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || : -exit 0 } +# We want fastdebug and slowdebug alternatives to have a lower +# priority than the normal alternatives, so the normal alternatives +# are the default. +# If the argument to this macro is non-nil, that is either -fastdebug +# or -slowdebug, then priority_for will expand to a value one less +# than the priority global. If the argument to this macro is nil, +# that is represents the non-debug or normal package, then the result +# is the normal priority macro value. +# This computation is done at RPM macro expansion time, rather than at +# runtime, to keep scriptlets as simple as possible. +%define priority_for() %{expand:%[%{?1:1}%{!?1:0} ? %{priority} - 1 : %{priority}]} + +%global man_comp .gz + %define alternatives_java_install() %{expand: if [ "x$debug" == "xtrue" ] ; then set -x fi -PRIORITY=%{priority} -if [ "%{?1}" == %{debug_suffix} ]; then - let PRIORITY=PRIORITY-1 -fi - -ext=.gz -key=java -alternatives \\ - --install %{_bindir}/java $key %{jrebindir -- %{?1}}/java $PRIORITY --family %{family} \\ +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}/keytool keytool %{jrebindir -- %{?1}}/keytool \\ --slave %{_bindir}/rmiregistry rmiregistry %{jrebindir -- %{?1}}/rmiregistry \\ - --slave %{_mandir}/man1/java.1$ext java.1$ext \\ - %{_mandir}/man1/java-%{uniquesuffix -- %{?1}}.1$ext \\ - --slave %{_mandir}/man1/%{alt_java_name}.1$ext %{alt_java_name}.1$ext \\ - %{_mandir}/man1/%{alt_java_name}-%{uniquesuffix -- %{?1}}.1$ext \\ - --slave %{_mandir}/man1/jcmd.1$ext jcmd.1$ext \\ - %{_mandir}/man1/jcmd-%{uniquesuffix -- %{?1}}.1$ext \\ - --slave %{_mandir}/man1/keytool.1$ext keytool.1$ext \\ - %{_mandir}/man1/keytool-%{uniquesuffix -- %{?1}}.1$ext \\ - --slave %{_mandir}/man1/rmiregistry.1$ext rmiregistry.1$ext \\ - %{_mandir}/man1/rmiregistry-%{uniquesuffix -- %{?1}}.1$ext - -%{set_if_needed_alternatives $key %{family}} - -for X in %{origin} %{javaver} ; do - key=jre_"$X" - alternatives --install %{_jvmdir}/jre-"$X" $key %{_jvmdir}/%{sdkdir -- %{?1}} $PRIORITY --family %{family} - %{set_if_needed_alternatives $key %{family}} -done - -key=jre_%{javaver}_%{origin} -alternatives --install %{_jvmdir}/jre-%{javaver}-%{origin} $key %{_jvmdir}/%{jrelnk -- %{?1}} $PRIORITY --family %{family} -%{set_if_needed_alternatives $key %{family}} + --slave %{_mandir}/man1/java.1%{man_comp} java.1%{man_comp} %{_mandir}/man1/java-%{uniquesuffix -- %{?1}}.1%{man_comp} \\ + --slave %{_mandir}/man1/%{alt_java_name}.1%{man_comp} %{alt_java_name}.1%{man_comp} %{_mandir}/man1/%{alt_java_name}-%{uniquesuffix -- %{?1}}.1%{man_comp} \\ + --slave %{_mandir}/man1/jcmd.1%{man_comp} jcmd.1%{man_comp} %{_mandir}/man1/jcmd-%{uniquesuffix -- %{?1}}.1%{man_comp} \\ + --slave %{_mandir}/man1/keytool.1%{man_comp} keytool.1%{man_comp} %{_mandir}/man1/keytool-%{uniquesuffix -- %{?1}}.1%{man_comp} \\ + --slave %{_mandir}/man1/rmiregistry.1%{man_comp} rmiregistry.1%{man_comp} %{_mandir}/man1/rmiregistry-%{uniquesuffix -- %{?1}}.1%{man_comp} +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}} } %define post_headless() %{expand: +%{alternatives_java_install -- %{?1}} update-desktop-database %{_datadir}/applications &> /dev/null || : /bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || : - -# see pretrans where this file is declared -# also see that pretrans is only for non-debug -if [ ! "%{?1}" == %{debug_suffix} ]; then - if [ -f %{_libexecdir}/copy_jdk_configs_fixFiles.sh ] ; then - sh %{_libexecdir}/copy_jdk_configs_fixFiles.sh %{rpm_state_dir}/%{name}.%{_arch} %{_jvmdir}/%{sdkdir -- %{?1}} - fi -fi - -exit 0 } %define postun_script() %{expand: @@ -604,39 +536,55 @@ if [ $1 -eq 0 ] ; then /bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null %{update_desktop_icons} fi -exit 0 } - -%define postun_headless() %{expand: - if [ "x$debug" == "xtrue" ] ; then - set -x - fi - post_state=$1 # from postun, https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#_syntax - %{save_and_remove_alternatives java %{jrebindir -- %{?1}}/java $post_state %{family}} - %{save_and_remove_alternatives jre_%{origin} %{_jvmdir}/%{sdkdir -- %{?1}} $post_state %{family}} - %{save_and_remove_alternatives jre_%{javaver} %{_jvmdir}/%{sdkdir -- %{?1}} $post_state %{family}} - %{save_and_remove_alternatives jre_%{javaver}_%{origin} %{_jvmdir}/%{jrelnk -- %{?1}} $post_state %{family}} +# Perform alternatives removals in preun instead of postun so that we +# are removing live symbolic links instead of dangling symbolic links, +# even though the alternatives command does not seem to care. The +# documentation uses preun or postun without providing a rationale for +# using one over the other: +# https://docs.fedoraproject.org/en-US/packaging-guidelines/Alternatives/ +# +# The [ $1 -eq 0 ] is an RPM scriptlet idiom meaning "only do the +# following if this scriptlet is being run during a straight package +# removal; in other words, do NOT do the following if this scriptlet +# is being run as part of an upgrade transaction". +# https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#_syntax +%define preun_headless() %{expand: +if [ "x$debug" == "xtrue" ] ; then + set -x +fi +if [ $1 -eq 0 ] +then + alternatives --remove java %{jrebindir -- %{?1}}/java + alternatives --remove jre_%{origin} %{_jvmdir}/%{sdkdir -- %{?1}} + alternatives --remove jre_%{javaver} %{_jvmdir}/%{sdkdir -- %{?1}} + alternatives --remove jre_%{javaver}_%{origin} %{_jvmdir}/%{sdkdir -- %{?1}} +fi } +# Invoke gtk-update-icon-cache in posttrans instead of post as an +# optimization. If other packages in the transaction install icons +# and use this optimization, then invocations of gtk-update-icon-cache +# will all happen in succession, and invocations after the first one +# will notice that the cache is fresh and immediately succeed. If +# this were instead done in each package's post, then the icon cache +# would be regenerated every time, rendering the whole transaction +# slower. +# See: +# https://lists.fedoraproject.org/archives/list/packaging\ +# @lists.fedoraproject.org/thread/HXIIKIHBMT3HELPKWH2BAXRNIF7BPPJD/ +# and: +# https://fedoraproject.org/wiki/Archive:PackagingDrafts/Icon_Cache %define posttrans_script() %{expand: %{update_desktop_icons} } - %define alternatives_javac_install() %{expand: if [ "x$debug" == "xtrue" ] ; then set -x fi -PRIORITY=%{priority} -if [ "%{?1}" == %{debug_suffix} ]; then - let PRIORITY=PRIORITY-1 -fi - -ext=.gz -key=javac -alternatives \\ - --install %{_bindir}/javac $key %{sdkbindir -- %{?1}}/javac $PRIORITY --family %{family} \\ +alternatives --install %{_bindir}/javac javac %{sdkbindir -- %{?1}}/javac %{priority_for -- %{?1}} \\ --slave %{_jvmdir}/java java_sdk %{_jvmdir}/%{sdkdir -- %{?1}} \\ --slave %{_bindir}/jlink jlink %{sdkbindir -- %{?1}}/jlink \\ --slave %{_bindir}/jmod jmod %{sdkbindir -- %{?1}}/jmod \\ @@ -666,84 +614,59 @@ alternatives \\ --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$ext jar.1$ext \\ - %{_mandir}/man1/jar-%{uniquesuffix -- %{?1}}.1$ext \\ - --slave %{_mandir}/man1/jarsigner.1$ext jarsigner.1$ext \\ - %{_mandir}/man1/jarsigner-%{uniquesuffix -- %{?1}}.1$ext \\ - --slave %{_mandir}/man1/javac.1$ext javac.1$ext \\ - %{_mandir}/man1/javac-%{uniquesuffix -- %{?1}}.1$ext \\ - --slave %{_mandir}/man1/javadoc.1$ext javadoc.1$ext \\ - %{_mandir}/man1/javadoc-%{uniquesuffix -- %{?1}}.1$ext \\ - --slave %{_mandir}/man1/javap.1$ext javap.1$ext \\ - %{_mandir}/man1/javap-%{uniquesuffix -- %{?1}}.1$ext \\ - --slave %{_mandir}/man1/jconsole.1$ext jconsole.1$ext \\ - %{_mandir}/man1/jconsole-%{uniquesuffix -- %{?1}}.1$ext \\ - --slave %{_mandir}/man1/jdb.1$ext jdb.1$ext \\ - %{_mandir}/man1/jdb-%{uniquesuffix -- %{?1}}.1$ext \\ - --slave %{_mandir}/man1/jdeps.1$ext jdeps.1$ext \\ - %{_mandir}/man1/jdeps-%{uniquesuffix -- %{?1}}.1$ext \\ - --slave %{_mandir}/man1/jinfo.1$ext jinfo.1$ext \\ - %{_mandir}/man1/jinfo-%{uniquesuffix -- %{?1}}.1$ext \\ - --slave %{_mandir}/man1/jmap.1$ext jmap.1$ext \\ - %{_mandir}/man1/jmap-%{uniquesuffix -- %{?1}}.1$ext \\ - --slave %{_mandir}/man1/jps.1$ext jps.1$ext \\ - %{_mandir}/man1/jps-%{uniquesuffix -- %{?1}}.1$ext \\ - --slave %{_mandir}/man1/jpackage.1$ext jpackage.1$ext \\ - %{_mandir}/man1/jpackage-%{uniquesuffix -- %{?1}}.1$ext \\ - --slave %{_mandir}/man1/jrunscript.1$ext jrunscript.1$ext \\ - %{_mandir}/man1/jrunscript-%{uniquesuffix -- %{?1}}.1$ext \\ - --slave %{_mandir}/man1/jstack.1$ext jstack.1$ext \\ - %{_mandir}/man1/jstack-%{uniquesuffix -- %{?1}}.1$ext \\ - --slave %{_mandir}/man1/jstat.1$ext jstat.1$ext \\ - %{_mandir}/man1/jstat-%{uniquesuffix -- %{?1}}.1$ext \\ - --slave %{_mandir}/man1/jwebserver.1$ext jwebserver.1$ext \\ - %{_mandir}/man1/jwebserver-%{uniquesuffix -- %{?1}}.1$ext \\ - --slave %{_mandir}/man1/jstatd.1$ext jstatd.1$ext \\ - %{_mandir}/man1/jstatd-%{uniquesuffix -- %{?1}}.1$ext \\ - --slave %{_mandir}/man1/serialver.1$ext serialver.1$ext \\ - %{_mandir}/man1/serialver-%{uniquesuffix -- %{?1}}.1$ext - -%{set_if_needed_alternatives $key %{family}} - -for X in %{origin} %{javaver} ; do - key=java_sdk_"$X" - alternatives --install %{_jvmdir}/java-"$X" $key %{_jvmdir}/%{sdkdir -- %{?1}} $PRIORITY --family %{family} - %{set_if_needed_alternatives $key %{family}} -done - -key=java_sdk_%{javaver}_%{origin} -alternatives --install %{_jvmdir}/java-%{javaver}-%{origin} $key %{_jvmdir}/%{sdkdir -- %{?1}} $PRIORITY --family %{family} -%{set_if_needed_alternatives $key %{family}} + --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} +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}} } %define post_devel() %{expand: +%{alternatives_javac_install -- %{?1}} update-desktop-database %{_datadir}/applications &> /dev/null || : /bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || : +} -exit 0 +%define preun_devel() %{expand: +if [ "x$debug" == "xtrue" ] ; then + set -x +fi +if [ $1 -eq 0 ] +then + alternatives --remove javac %{sdkbindir -- %{?1}}/javac + alternatives --remove java_sdk_%{origin} %{_jvmdir}/%{sdkdir -- %{?1}} + alternatives --remove java_sdk_%{javaver} %{_jvmdir}/%{sdkdir -- %{?1}} +fi } %define postun_devel() %{expand: - if [ "x$debug" == "xtrue" ] ; then - set -x - fi - post_state=$1 # from postun, https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#_syntax - %{save_and_remove_alternatives javac %{sdkbindir -- %{?1}}/javac $post_state %{family}} - %{save_and_remove_alternatives java_sdk_%{origin} %{_jvmdir}/%{sdkdir -- %{?1}} $post_state %{family}} - %{save_and_remove_alternatives java_sdk_%{javaver} %{_jvmdir}/%{sdkdir -- %{?1}} $post_state %{family}} - %{save_and_remove_alternatives java_sdk_%{javaver}_%{origin} %{_jvmdir}/%{sdkdir -- %{?1}} $post_state %{family}} - +if [ "x$debug" == "xtrue" ] ; then + set -x +fi update-desktop-database %{_datadir}/applications &> /dev/null || : if [ $1 -eq 0 ] ; then /bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null %{update_desktop_icons} fi -exit 0 } %define posttrans_devel() %{expand: -%{alternatives_javac_install -- %{?1}} %{update_desktop_icons} } @@ -751,73 +674,43 @@ exit 0 if [ "x$debug" == "xtrue" ] ; then set -x fi -PRIORITY=%{priority} -if [ "%{?1}" == %{debug_suffix} ]; then - let PRIORITY=PRIORITY-1 -fi - for X in %{origin} %{javaver} ; do - key=javadocdir_"$X" - alternatives --install %{_javadocdir}/java-"$X" $key %{_javadocdir}/%{uniquejavadocdir -- %{?1}}/api $PRIORITY --family %{family_noarch} - %{set_if_needed_alternatives $key %{family_noarch}} - done - - key=javadocdir_%{javaver}_%{origin} - alternatives --install %{_javadocdir}/java-%{javaver}-%{origin} $key %{_javadocdir}/%{uniquejavadocdir -- %{?1}}/api $PRIORITY --family %{family_noarch} - %{set_if_needed_alternatives $key %{family_noarch}} - - key=javadocdir - alternatives --install %{_javadocdir}/java $key %{_javadocdir}/%{uniquejavadocdir -- %{?1}}/api $PRIORITY --family %{family_noarch} - %{set_if_needed_alternatives $key %{family_noarch}} -exit 0 +alternatives --install %{_javadocdir}/java-%{origin} javadocdir_%{origin} %{_javadocdir}/%{uniquejavadocdir -- %{?1}}/api %{priority_for -- %{?1}} +alternatives --install %{_javadocdir}/java-%{javaver} javadocdir_%{javaver} %{_javadocdir}/%{uniquejavadocdir -- %{?1}}/api %{priority_for -- %{?1}} +alternatives --install %{_javadocdir}/java javadocdir %{_javadocdir}/%{uniquejavadocdir -- %{?1}}/api %{priority_for -- %{?1}} } -%define postun_javadoc() %{expand: +%define preun_javadoc() %{expand: if [ "x$debug" == "xtrue" ] ; then set -x fi - post_state=$1 # from postun, https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#_syntax - %{save_and_remove_alternatives javadocdir %{_javadocdir}/%{uniquejavadocdir -- %{?1}}/api $post_state %{family_noarch}} - %{save_and_remove_alternatives javadocdir_%{origin} %{_javadocdir}/%{uniquejavadocdir -- %{?1}}/api $post_state %{family_noarch}} - %{save_and_remove_alternatives javadocdir_%{javaver} %{_javadocdir}/%{uniquejavadocdir -- %{?1}}/api $post_state %{family_noarch}} - %{save_and_remove_alternatives javadocdir_%{javaver}_%{origin} %{_javadocdir}/%{uniquejavadocdir -- %{?1}}/api $post_state %{family_noarch}} -exit 0 +if [ $1 -eq 0 ] +then + alternatives --remove javadocdir %{_javadocdir}/%{uniquejavadocdir -- %{?1}}/api + alternatives --remove javadocdir_%{origin} %{_javadocdir}/%{uniquejavadocdir -- %{?1}}/api + alternatives --remove javadocdir_%{javaver} %{_javadocdir}/%{uniquejavadocdir -- %{?1}}/api +fi } %define alternatives_javadoczip_install() %{expand: if [ "x$debug" == "xtrue" ] ; then set -x fi -PRIORITY=%{priority} -if [ "%{?1}" == %{debug_suffix} ]; then - let PRIORITY=PRIORITY-1 -fi - for X in %{origin} %{javaver} ; do - key=javadoczip_"$X" - alternatives --install %{_javadocdir}/java-"$X".zip $key %{_javadocdir}/%{uniquejavadocdir -- %{?1}}.zip $PRIORITY --family %{family_noarch} - %{set_if_needed_alternatives $key %{family_noarch}} - done - - key=javadoczip_%{javaver}_%{origin} - alternatives --install %{_javadocdir}/java-%{javaver}-%{origin}.zip $key %{_javadocdir}/%{uniquejavadocdir -- %{?1}}.zip $PRIORITY --family %{family_noarch} - %{set_if_needed_alternatives $key %{family_noarch}} - - # Weird legacy filename for backwards-compatibility - key=javadoczip - alternatives --install %{_javadocdir}/java-zip $key %{_javadocdir}/%{uniquejavadocdir -- %{?1}}.zip $PRIORITY --family %{family_noarch} - %{set_if_needed_alternatives $key %{family_noarch}} -exit 0 +alternatives --install %{_javadocdir}/java-%{origin}.zip javadoczip_%{origin} %{_javadocdir}/%{uniquejavadocdir -- %{?1}}.zip %{priority_for -- %{?1}} +alternatives --install %{_javadocdir}/java-%{javaver}.zip javadoczip_%{javaver} %{_javadocdir}/%{uniquejavadocdir -- %{?1}}.zip %{priority_for -- %{?1}} +# Weird legacy filename for backwards-compatibility +alternatives --install %{_javadocdir}/java-zip javadoczip %{_javadocdir}/%{uniquejavadocdir -- %{?1}}.zip %{priority_for -- %{?1}} } -%define postun_javadoc_zip() %{expand: - if [ "x$debug" == "xtrue" ] ; then - set -x - fi - post_state=$1 # from postun, https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#_syntax - %{save_and_remove_alternatives javadoczip %{_javadocdir}/%{uniquejavadocdir -- %{?1}}.zip $post_state %{family_noarch}} - %{save_and_remove_alternatives javadoczip_%{origin} %{_javadocdir}/%{uniquejavadocdir -- %{?1}}.zip $post_state %{family_noarch}} - %{save_and_remove_alternatives javadoczip_%{javaver} %{_javadocdir}/%{uniquejavadocdir -- %{?1}}.zip $post_state %{family_noarch}} - %{save_and_remove_alternatives javadoczip_%{javaver}_%{origin} %{_javadocdir}/%{uniquejavadocdir -- %{?1}}.zip $post_state %{family_noarch}} -exit 0 +%define preun_javadoc_zip() %{expand: +if [ "x$debug" == "xtrue" ] ; then + set -x +fi +if [ $1 -eq 0 ] +then + alternatives --remove javadoczip %{_javadocdir}/%{uniquejavadocdir -- %{?1}}.zip + alternatives --remove javadoczip_%{origin} %{_javadocdir}/%{uniquejavadocdir -- %{?1}}.zip + alternatives --remove javadoczip_%{javaver} %{_javadocdir}/%{uniquejavadocdir -- %{?1}}.zip +fi } %define files_jre() %{expand: @@ -827,7 +720,6 @@ exit 0 %{_jvmdir}/%{sdkdir -- %{?1}}/lib/libjawt.so } - %define files_jre_headless() %{expand: %license %{_jvmdir}/%{sdkdir -- %{?1}}/legal %doc %{_defaultdocdir}/%{uniquejavadocdir -- %{?1}}/NEWS @@ -835,11 +727,11 @@ exit 0 %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 %dir %{_jvmdir}/%{sdkdir -- %{?1}} %{_jvmdir}/%{sdkdir -- %{?1}}/release -%{_jvmdir}/%{jrelnk -- %{?1}} %dir %{_jvmdir}/%{sdkdir -- %{?1}}/bin %{_jvmdir}/%{sdkdir -- %{?1}}/bin/java %{_jvmdir}/%{sdkdir -- %{?1}}/bin/%{alt_java_name} @@ -911,7 +803,8 @@ exit 0 %{_mandir}/man1/jcmd-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/keytool-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/rmiregistry-%{uniquesuffix -- %{?1}}.1* -%{_jvmdir}/%{sdkdir -- %{?1}}/lib/%{vm_variant}/ +%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 %{ix86} %{arm32} @@ -1071,7 +964,6 @@ exit 0 %ghost %{_bindir}/serialver %ghost %{_jvmdir}/java-%{origin} %ghost %{_jvmdir}/java-%{javaver} -%ghost %{_jvmdir}/java-%{javaver}-%{origin} %endif %endif } @@ -1081,12 +973,10 @@ exit 0 } %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 } @@ -1099,26 +989,23 @@ exit 0 %define files_javadoc() %{expand: %doc %{_javadocdir}/%{uniquejavadocdir -- %{?1}} -%license %{_jvmdir}/%{sdkdir -- %{?1}}/legal %if %is_system_jdk %if %{is_release_build -- %{?1}} %ghost %{_javadocdir}/java %ghost %{_javadocdir}/java-%{origin} %ghost %{_javadocdir}/java-%{javaver} -%ghost %{_javadocdir}/java-%{javaver}-%{origin} %endif %endif } %define files_javadoc_zip() %{expand: +%dir %{_javadocdir}/%{uniquejavadocdir -- %{?1}} %doc %{_javadocdir}/%{uniquejavadocdir -- %{?1}}.zip -%license %{_jvmdir}/%{sdkdir -- %{?1}}/legal %if %is_system_jdk %if %{is_release_build -- %{?1}} %ghost %{_javadocdir}/java-zip %ghost %{_javadocdir}/java-%{origin}.zip %ghost %{_javadocdir}/java-%{javaver}.zip -%ghost %{_javadocdir}/java-%{javaver}-%{origin}.zip %endif %endif } @@ -1164,13 +1051,6 @@ Requires: tzdata-java >= 2025a # for support of kernel stream control # libsctp.so.1 is being `dlopen`ed on demand Requires: lksctp-tools%{?_isa} -%if ! 0%{?flatpak} -# tool to copy jdk's configs - should be Recommends only, but then only dnf/yum enforce it, -# not rpm transaction and so no configs are persisted when pure rpm -u is run. It may be -# considered as regression -Requires: copy-jdk-configs >= 4.0 -OrderWithRequires: copy-jdk-configs -%endif # for printing support Requires: cups-libs # for system security properties @@ -1227,9 +1107,10 @@ 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: -# Requires devel package -# as jmods are bytecode, they should be OK without any _isa +# As most jmods are bytecode, they should be OK without any _isa +# (java.base mod does contain native libraries) Requires: %{name}-devel%{?1} = %{epoch}:%{version}-%{release} OrderWithRequires: %{name}-headless%{?1} = %{epoch}:%{version}-%{release} @@ -1240,6 +1121,8 @@ 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} @@ -1252,21 +1135,25 @@ 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}%{?2} = %{epoch}:%{version}-%{release} -Provides: java-%{javaver}-%{origin}-javadoc%{?1}%{?2} = %{epoch}:%{version}-%{release} +Provides: java-%{javaver}-javadoc%{?1} = %{epoch}:%{version}-%{release} +Provides: java-%{javaver}-%{origin}-javadoc%{?1} = %{epoch}:%{version}-%{release} %if %is_system_jdk -Provides: java-javadoc%{?1}%{?2} = %{epoch}:%{version}-%{release} +Provides: java-javadoc%{?1} = %{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} @@ -1450,10 +1337,6 @@ Patch1001: fips-%{featurever}u-%{fipsver}.patch # ############################################# -# JDK-8351500: G1: NUMA migrations cause crashes in region allocation -# Upstream in 21.0.8+1 -Patch2001: jdk8351500-numa_migration_crashes.patch - ############################################# # # Portable build specific patches @@ -1829,25 +1712,34 @@ Summary: %{origin_nice} %{featurever} API documentation 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} %{nil}} +%{java_javadoc_rpo -- %{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 -- %{nil} -zip} -%{java_javadoc_rpo -- %{nil} %{nil}} +%{java_javadoc_rpo -- -zip} +%{java_javadoc_rpo -- %{nil}} %description javadoc-zip The %{origin_nice} %{featurever} API documentation compressed in a single archive. @@ -1921,11 +1813,8 @@ sh %{SOURCE12} %{top_level_dir_name} pushd %{top_level_dir_name} # Add crypto policy and FIPS support %patch -P1001 -p1 -# Add early JDK-8351500 -%patch -P2001 -p1 popd # openjdk - # The OpenJDK version file includes the current # upstream version information. For some reason, # configure does not automatically use the @@ -2251,11 +2140,6 @@ install -D -p -m 755 ${miscdir}/%{alt_java_name} $RPM_BUILD_ROOT%{jrebindir -- $ ln -sf /etc/pki/java/cacerts . popd - # Install version-ed symlinks - pushd $RPM_BUILD_ROOT%{_jvmdir} - ln -sf %{sdkdir -- $suffix} %{jrelnk -- $suffix} - popd - # Copy alt-java man page into image so it gets installed with the others cp -a ${miscdir}/%{alt_java_name}.1 ${jdk_image}/man/man1 # Install man pages @@ -2323,153 +2207,166 @@ find $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}/legal -type f -exec chmod 6 # end, dual install 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} -# intentionally only for non-debug -%pretrans headless -p --- see https://bugzilla.redhat.com/show_bug.cgi?id=1038092 for whole issue --- see https://bugzilla.redhat.com/show_bug.cgi?id=1290388 for pretrans over pre --- if copy-jdk-configs is in transaction, it installs in pretrans to temp --- if copy_jdk_configs is in temp, then it means that copy-jdk-configs is in transaction and so is --- preferred over one in %%{_libexecdir}. If it is not in transaction, then depends --- whether copy-jdk-configs is installed or not. If so, then configs are copied --- (copy_jdk_configs from %%{_libexecdir} used) or not copied at all -local posix = require "posix" - -if (os.getenv("debug") == "true") then - debug = true; - print("cjc: in spec debug is on") -else - debug = false; -end - -SOURCE1 = "%{rpm_state_dir}/copy_jdk_configs.lua" -SOURCE2 = "%{_libexecdir}/copy_jdk_configs.lua" - -local stat1 = posix.stat(SOURCE1, "type"); -local stat2 = posix.stat(SOURCE2, "type"); - - if (stat1 ~= nil) then - if (debug) then - print(SOURCE1 .." exists - copy-jdk-configs in transaction, using this one.") - end; - package.path = package.path .. ";" .. SOURCE1 -else - if (stat2 ~= nil) then - if (debug) then - print(SOURCE2 .." exists - copy-jdk-configs already installed and NOT in transaction. Using.") - end; - package.path = package.path .. ";" .. SOURCE2 - else - if (debug) then - print(SOURCE1 .." does NOT exists") - print(SOURCE2 .." does NOT exists") - print("No config files will be copied") - end - return - end -end -arg = nil ; -- it is better to null the arg up, no meter if they exists or not, and use cjc as module in unified way, instead of relaying on "main" method during require "copy_jdk_configs.lua" -cjc = require "copy_jdk_configs.lua" -args = {"--currentjvm", "%{uniquesuffix %{nil}}", "--jvmdir", "%{_jvmdir %{nil}}", "--origname", "%{name}", "--origjavaver", "%{javaver}", "--arch", "%{_arch}", "--temp", "%{rpm_state_dir}/%{name}.%{_arch}"} -cjc.mainProgram(args) - %post %{post_script %{nil}} +exit 0 + +# Allow upgrades from packages that have /usr/lib/jvm/java-21-openjdk +# as an alternatives symlink, without running into the known RPM +# limitation when changing to a directory a symlink to a directory. +# See also javadoc and javadoc-zip subpackages for +# /usr/share/javadoc/java-21-openjdk, which was a symlink before. +# /etc/java/java-21-openjdk is OK because it was always a directory. +# Reference: +# https://docs.fedoraproject.org/en-US/packaging-guidelines/Directory_Replacement/ +%define lua_delete_old_link() %{expand: +path = "%{1}" +st = posix.stat(path) +if st and st.type == "link" then + os.remove(path) +end +} + +%pretrans headless -p +%{lua_delete_old_link -- %{_jvmdir}/%{sdkdir -- %{?1}}} %post headless %{post_headless %{nil}} +exit 0 %postun %{postun_script %{nil}} +exit 0 -%postun headless -%{postun_headless %{nil}} +%preun headless +%{preun_headless %{nil}} +exit 0 %posttrans %{posttrans_script %{nil}} - -%posttrans headless -%{alternatives_java_install %{nil}} +exit 0 %post devel %{post_devel %{nil}} +exit 0 + +%preun devel +%{preun_devel %{nil}} +exit 0 %postun devel %{postun_devel %{nil}} +exit 0 -%posttrans devel +%posttrans devel %{posttrans_devel %{nil}} +exit 0 -%posttrans javadoc +%pretrans javadoc -p +%{lua_delete_old_link -- %{_jvmdir}/%{sdkdir -- %{?1}}} +%{lua_delete_old_link -- %{_javadocdir}/%{uniquejavadocdir -- %{?1}}} + +%post javadoc %{alternatives_javadoc_install %{nil}} +exit 0 -%postun javadoc -%{postun_javadoc %{nil}} +%preun javadoc +%{preun_javadoc %{nil}} +exit 0 -%posttrans javadoc-zip +%pretrans javadoc-zip -p +%{lua_delete_old_link -- %{_jvmdir}/%{sdkdir -- %{?1}}} +%{lua_delete_old_link -- %{_javadocdir}/%{uniquejavadocdir -- %{?1}}} + +%post javadoc-zip %{alternatives_javadoczip_install %{nil}} +exit 0 -%postun javadoc-zip -%{postun_javadoc_zip %{nil}} +%preun javadoc-zip +%{preun_javadoc_zip %{nil}} +exit 0 %endif %if %{include_debug_build} %post slowdebug %{post_script -- %{debug_suffix_unquoted}} +exit 0 %post headless-slowdebug %{post_headless -- %{debug_suffix_unquoted}} - -%posttrans headless-slowdebug -%{alternatives_java_install -- %{debug_suffix_unquoted}} +exit 0 %postun slowdebug %{postun_script -- %{debug_suffix_unquoted}} +exit 0 -%postun headless-slowdebug -%{postun_headless -- %{debug_suffix_unquoted}} +%preun headless-slowdebug +%{preun_headless -- %{debug_suffix_unquoted}} +exit 0 %posttrans slowdebug %{posttrans_script -- %{debug_suffix_unquoted}} +exit 0 %post devel-slowdebug %{post_devel -- %{debug_suffix_unquoted}} +exit 0 + +%preun devel-slowdebug +%{preun_devel -- %{debug_suffix_unquoted}} +exit 0 %postun devel-slowdebug %{postun_devel -- %{debug_suffix_unquoted}} +exit 0 -%posttrans devel-slowdebug +%posttrans devel-slowdebug %{posttrans_devel -- %{debug_suffix_unquoted}} +exit 0 %endif %if %{include_fastdebug_build} %post fastdebug %{post_script -- %{fastdebug_suffix_unquoted}} +exit 0 %post headless-fastdebug %{post_headless -- %{fastdebug_suffix_unquoted}} +exit 0 %postun fastdebug %{postun_script -- %{fastdebug_suffix_unquoted}} +exit 0 -%postun headless-fastdebug -%{postun_headless -- %{fastdebug_suffix_unquoted}} +%preun headless-fastdebug +%{preun_headless -- %{fastdebug_suffix_unquoted}} +exit 0 %posttrans fastdebug %{posttrans_script -- %{fastdebug_suffix_unquoted}} - -%posttrans headless-fastdebug -%{alternatives_java_install -- %{fastdebug_suffix_unquoted}} +exit 0 %post devel-fastdebug %{post_devel -- %{fastdebug_suffix_unquoted}} +exit 0 + +%preun devel-fastdebug +%{preun_devel -- %{fastdebug_suffix_unquoted}} +exit 0 %postun devel-fastdebug %{postun_devel -- %{fastdebug_suffix_unquoted}} +exit 0 -%posttrans devel-fastdebug +%posttrans devel-fastdebug %{posttrans_devel -- %{fastdebug_suffix_unquoted}} - +exit 0 %endif %if %{include_normal_build} @@ -2481,11 +2378,8 @@ cjc.mainProgram(args) # placeholder %endif - %if %{include_normal_build} %files headless -# important note, see https://bugzilla.redhat.com/show_bug.cgi?id=1038092 for whole issue -# all config/noreplace files (and more) have to be declared in pretrans. See pretrans %{files_jre_headless %{nil}} %files devel @@ -2567,53 +2461,105 @@ cjc.mainProgram(args) %endif %changelog -* Thu May 08 2025 Andrew Hughes - 1:21.0.7.0.6-2 -- Add local version of JDK-8351500 for early interim release before 21.0.8 -- Sync the copy of the portable specfile with the latest update -- Resolves: RHEL-90309 - * Fri Apr 11 2025 Andrew Hughes - 1:21.0.7.0.6-1 - Update to jdk-21.0.7+6 (GA) - Update release notes to 21.0.7+6 - Rebase FIPS support against 21.0.7+5 - Require tzdata 2025a due to upstream inclusion of JDK-8347965 -- Sync the copy of the portable specfile with the latest update - ** This tarball is embargoed until 2025-04-15 @ 1pm PT. ** -- Resolves: RHEL-86984 -- Resolves: RHEL-86635 +- Resolves: RHEL-86986 +- Resolves: RHEL-86636 -* Thu Feb 06 2025 Andrew Hughes - 1:21.0.6.0.7-2 -- Bump tzdata requirement to 2024b for JDK-8339637 -- Resolves: RHEL-74001 +* Tue Feb 18 2025 Andrew Hughes - 1:21.0.6.0.7-3 +- Cleanup java_javadoc_rpo macro, removing unused argument and duplicated Requires +- Related: RHEL-78710 -* Sat Jan 18 2025 Andrew Hughes - 1:21.0.6.0.7-1 +* Tue Feb 11 2025 Andrew Hughes - 1:21.0.6.0.7-2 +- Attempt to avoid conflicts between subpackages + - Make javadoc packages depend on headless package for legal documentation + - Only include legal subdirectory in headless package, not demo, src & javadoc{,-zip} + - Change javadoc-zip to just own the top-level directory, not include the entire subtree +- Resolves: RHEL-78710 + +* Thu Feb 06 2025 Andrew Hughes - 1:21.0.6.0.7-1 - Update to jdk-21.0.6+7 (GA) - Update release notes to 21.0.6+7 - Sync the copy of the portable & devkit specfiles with the latest update - Include the latest devkit patches - Update README.md to list an easier way of disabling the devkit +- Bump tzdata requirement to 2024b for JDK-8339637 - ** This tarball is embargoed until 2025-01-21 @ 1pm PT. ** -- Resolves: RHEL-73562 +- Resolves: RHEL-73565 +- Resolves: RHEL-74005 -* Fri Jan 17 2025 Andrew Hughes - 1:21.0.5.0.11-3 +* Thu Feb 06 2025 Andrew Hughes - 1:21.0.5.0.11-6 - Transition to the devkit build by not defining pkgos - Exempt x86_64 from the static libs debuginfo test until portable uses an older DWARF version - Sync the copy of the portable specfile with the devkit version - Include the devkit specfile and patches - Document the devkit in README.md -- Resolves: RHEL-74403 +- Resolves: RHEL-74407 + +* Thu Jan 23 2025 Thomas Fitzsimmons - 1:21.0.5.0.11-5 +- Document rationale for gtk-update-icon-cache being in posttrans +- Remove extra spaces in posttrans files section headers +- Resolves: RHEL-71488 + +* Tue Dec 17 2024 Thomas Fitzsimmons - 1:21.0.5.0.11-4 +- Revert incorrect automated Release change from 1:21.0.5.0.11-2.1 +- Set rpmrelease to 4 +- Remove copy-jdk-configs logic +- Remove alternatives removal special handling +- Move postun alternatives logic to preun +- Remove --family arguments to alternatives --install +- Precompute alternative priorities at build time +- Remove extra newlines +- Inline .gz for alternatives slave man pages +- Unwrap alternatives --install lines +- Remove set_if_needed_alternatives +- Unroll alternatives --install loops +- Remove exit 0 from alternatives scriptlets +- Move alternatives installation from posttrans to post +- Replace jrelnk alternative with sdkdir +- Remove full version from uniquejavadocdir +- Remove full version from uniquesuffix +- Fix classes.jsa and classes_nocoops.jsa file-listed-twice warnings +- Eliminate devel "failed to link [/usr/lib/jvm/java-21-openjdk] exists and it is not a symlink" warning +- Eliminate javadoc-zip "failed to link [/usr/share/javadoc/java-21-openjdk.zip] exists and it is not a symlink" warning +- Eliminate javadoc "failed to link [/usr/share/javadoc/java-21-openjdk] exists and it is not a symlink" warning +- Take ownership of versioned jvmdir in javadoc, javadoc-zip subpackages +- Make headless own /usr/share/doc/java-21-openjdk +- Make javadoc-zip own /usr/share/javadoc/java-21-openjdk +- Delete old conflicting links in pretrans for headless, javadoc and javadoc-zip +- Use compatiblename not name in uniquejavadocdir and uniquesuffix +- Do not overwrite slowdebug __provides_exclude_from and __requires_exclude_from regexps +- Use RPM global macro for man page file extension and unwrap --slave lines +- Comment on alternatives removal in preun and RPM scriptlet idiom +- Remove unused family macros +- Document priority_for +- Consistently end scriptlets with exit 0 +- Resolves: RHEL-71920 +- Resolves: RHEL-71954 +- Resolves: RHEL-69321 +- Resolves: RHEL-69995 +- Resolves: RHEL-71924 +- Resolves: RHEL-68848 + +* Tue Oct 29 2024 Troy Dawson - 1:21.0.5.0.11-2.1 +- Bump release for October 2024 mass rebuild: + Resolves: RHEL-64018 * Wed Oct 16 2024 Andrew Hughes - 1:21.0.5.0.11-2 - Update to jdk-21.0.5+11 (GA) - Update release notes to 21.0.5+11 - Remove local JDK-8327501 & JDK-8328366 backport as this is now upstream. - Sync the copy of the portable specfile with the latest update -- Related: RHEL-61344 +- Related: RHEL-61276 * Sun Oct 13 2024 Andrew Hughes - 1:21.0.5.0.10-3 - Sync the copy of the portable specfile with the latest update - ** This tarball is embargoed until 2024-10-15 @ 1pm PT. ** -- Related: RHEL-61344 +- Related: RHEL-61276 * Sat Oct 12 2024 Andrew Hughes - 1:21.0.5.0.10-2 - Update to jdk-21.0.5+10 (GA) @@ -2621,9 +2567,9 @@ cjc.mainProgram(args) - Switch to GA mode. - Revert JDK-8327501 & JDK-8328366 backport until more mature. - ** This tarball is embargoed until 2024-10-15 @ 1pm PT. ** -- Resolves: RHEL-61344 +- Resolves: RHEL-61276 -* Fri Oct 11 2024 Andrew Hughes - 1:21.0.5.0.9-0.2.ea +* Fri Oct 11 2024 Andrew Hughes - 1:21.0.5.0.9-0.1.ea - Update to jdk-21.0.5+9 (EA) - Update release notes to 21.0.5+9 - Switch to EA mode @@ -2632,35 +2578,32 @@ cjc.mainProgram(args) - Sync with RHEL 7 portable build: - Use ExclusiveArch over ExcludeArch - pkgos definition needs to be early enough to be used in portablesuffix +- Add build scripts to repository to ease remembering all CentOS & RHEL targets and options - Make build scripts executable - Sync the copy of the portable specfile with the latest update -- Resolves: RHEL-58797 -- Resolves: RHEL-17191 +- Resolves: RHEL-62239 +- Resolves: RHEL-62241 -* Mon Oct 07 2024 Andrew Hughes - 1:21.0.4.0.7-2 -- Vary portablesuffix depending on whether we are on RHEL ('el8') or CentOS ('el9') -- Handle debugedit being a separate package installed in /usr on RHEL/CentOS 10 -- Add build scripts to repository to ease remembering all CentOS & RHEL targets and options -- Related: RHEL-58797 - -* Fri Jul 12 2024 Andrew Hughes - 1:21.0.4.0.7-1 +* Sun Aug 04 2024 Andrew Hughes - 1:21.0.4.0.7-1 - Update to jdk-21.0.4+7 (GA) - Update release notes to 21.0.4+7 - Switch to GA mode. - Sync the copy of the portable specfile with the latest update - Add missing section headers in NEWS +- Vary portablesuffix depending on whether we are on RHEL ('el8') or CentOS ('el9') - ** This tarball is embargoed until 2024-07-16 @ 1pm PT. ** -- Resolves: RHEL-47023 +- Resolves: RHEL-47024 -* Wed Jun 26 2024 Andrew Hughes - 1:21.0.4.0.5-0.1.ea +* Sun Aug 04 2024 Andrew Hughes - 1:21.0.4.0.5-0.1.ea - Update to jdk-21.0.4+5 (EA) - Update release notes to 21.0.4+5 - Limit Java only tests to one architecture using jdk_test_arch - Actually require tzdata 2024a now it is available in the buildroot -- Resolves: RHEL-45355 -- Resolves: RHEL-47395 +- Resolves: RHEL-45357 +- Resolves: RHEL-52735 +- Related: RHEL-52723 -* Sat Jun 22 2024 Andrew Hughes - 1:21.0.4.0.1-0.1.ea +* Sun Aug 04 2024 Andrew Hughes - 1:21.0.4.0.1-0.1.ea - Update to jdk-21.0.4+1 (EA) - Update release notes to 21.0.4+1 - Switch to EA mode @@ -2668,27 +2611,27 @@ cjc.mainProgram(args) - Add zlib build requirement or bundled version (1.3.1), depending on system_libs setting - Restore NEWS file so portable can be rebuilt - Sync the copy of the portable specfile with the latest update -- Related: RHEL-45355 -- Resolves: RHEL-46029 +- Related: RHEL-45357 +- Resolves: RHEL-46026 -* Sun Apr 14 2024 Andrew Hughes - 1:21.0.3.0.9-1 +* Sun Aug 04 2024 Andrew Hughes - 1:21.0.3.0.9-1 - Update to jdk-21.0.3+9 (GA) - Update release notes to 21.0.3+9 - Switch to GA mode. - Sync the copy of the portable specfile with the latest update - ** This tarball is embargoed until 2024-04-16 @ 1pm PT. ** -- Resolves: RHEL-32424 +- Resolves: RHEL-32427 -* Sun Apr 14 2024 Andrew Hughes - 1:21.0.3.0.7-0.1.ea +* Sun Aug 04 2024 Andrew Hughes - 1:21.0.3.0.7-0.1.ea - Update to jdk-21.0.3+7 (EA) - Update release notes to 21.0.3+7 - Require tzdata 2024a due to upstream inclusion of JDK-8322725 - Only require tzdata 2023d for now as 2024a is unavailable in buildroot - Drop JDK-8009550 which is now available upstream - Re-generate FIPS patch against 21.0.3+7 following backport of JDK-8325254 -- Resolves: RHEL-30946 +- Resolves: RHEL-52723 -* Sun Apr 14 2024 Thomas Fitzsimmons - 1:21.0.3.0.1-0.2.ea +* Sat Aug 03 2024 Thomas Fitzsimmons - 1:21.0.3.0.1-0.1.ea - Invoke xz in multi-threaded mode - generate_source_tarball.sh: Add WITH_TEMP environment variable - generate_source_tarball.sh: Multithread xz on all available cores @@ -2717,9 +2660,14 @@ cjc.mainProgram(args) - generate_source_tarball.sh: Use long-style argument to grep - generate_source_tarball.sh: Add license - generate_source_tarball.sh: Add indentation instructions for Emacs -- Related: RHEL-30946 +- Related: RHEL-52723 -* Sun Apr 14 2024 Andrew Hughes - 1:21.0.3.0.1-0.2.ea +* Sat Aug 03 2024 Andrew Hughes - 1:21.0.3.0.1-0.1.ea +- Update to jdk-21.0.3+1 (EA) +- Update release notes to 21.0.3+1 +- Switch to EA mode +- Require tzdata 2023d due to local inclusion of JDK-8322725 +- Bump FreeType version to 2.13.2 following JDK-8316028 - Install alt-java man page from the misc tarball as it is no longer in the JDK image - generate_source_tarball.sh: Update examples in header for clarity - generate_source_tarball.sh: Cleanup message issued when checkout already exists @@ -2741,19 +2689,18 @@ cjc.mainProgram(args) - generate_source_tarball.sh: Output values of new options WITH_TEMP and OPENJDK_LATEST - generate_source_tarball.sh: Double-quote DEPTH reference (SC2086) - generate_source_tarball.sh: Avoid empty DEPTH reference while still appeasing shellcheck -- Related: RHEL-30946 +- Related: RHEL-52723 -* Sun Apr 14 2024 Andrew Hughes - 1:21.0.3.0.1-0.1.ea -- Update to jdk-21.0.3+1 (EA) -- Update release notes to 21.0.3+1 -- Switch to EA mode -- Require tzdata 2023d due to upstream inclusion of JDK-8322725 -- Bump FreeType version to 2.13.2 following JDK-8316028 -- Related: RHEL-30946 +* Tue Jul 30 2024 Andrew Hughes - 1:21.0.2.0.13-3 +- Fix gating.yaml to reference RHEL 10 +- Set this to be the default/system JDK providing 'java', 'jre', 'java-devel' ,etc. +- Resolves: RHEL-34597 +- Resolves: RHEL-51617 * Fri Apr 12 2024 Andrew Hughes - 1:21.0.2.0.13-2 - Define portablesuffix according to whether pkgos is defined or not -- Related: RHEL-30946 +- Handle debugedit being a separate package installed in /usr on RHEL/CentOS 10 +- Related: RHEL-45217 * Tue Jan 09 2024 Andrew Hughes - 1:21.0.2.0.13-1 - Update to jdk-21.0.2+13 (GA) @@ -2762,16 +2709,16 @@ cjc.mainProgram(args) - 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-20999 +- Resolves: RHEL-45217 * Mon Nov 06 2023 Andrew Hughes - 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 -- Resolves: RHEL-16290 +- Related: RHEL-45217 * Mon Oct 30 2023 Andrew Hughes - 1:21.0.1.0.12-2 - Define pkgnameroot to simplify build requirements and allow '-rhel7' suffix on RHEL -- Related: RHEL-12998 +- Related: RHEL-45217 * Fri Oct 27 2023 Andrew Hughes - 1:21.0.1.0.12-1 - Update to jdk-21.0.1.0+12 (GA) @@ -2793,21 +2740,15 @@ cjc.mainProgram(args) - Add missing jfr, jpackage and jwebserver alternative ghosts - Move jcmd to the headless package - Revert alt-java binary location to being within the JDK tree -- Resolves: RHEL-12998 -- Resolves: RHEL-14953 -- Resolves: RHEL-13925 -- Resolves: RHEL-14957 -- Related: RHEL-14945 -- Resolves: RHEL-11321 -- Resolves: RHEL-14947 +- Related: RHEL-45217 * Fri Oct 27 2023 Jiri Vanek - 1:21.0.1.0.12-1 - Exclude classes_nocoops.jsa on i686 and arm32 -- Related: RHEL-14945 +- Related: RHEL-45217 * Fri Oct 27 2023 Severin Gehwolf - 1:21.0.1.0.12-1 - Fix packaging of CDS archives -- Resolves: RHEL-14945 +- Resolves: RHEL-45217 * Thu Aug 24 2023 Andrew Hughes - 1:21.0.0.0.35-2 - Update documentation (README.md) @@ -2818,7 +2759,7 @@ cjc.mainProgram(args) - * No use of system libjpeg turbo to warrant RH649512 patch any more - Replace RH1684077 pcsc-lite-libs patch with better JDK-8009550 fix being upstreamed - Adapt alt-java test to new binary where there is always a set_speculation function -- Related: RHEL-12998 +- Related: RHEL-45217 * Mon Aug 21 2023 Andrew Hughes - 1:21.0.0.0.35-1 - Update to jdk-21.0.0+35 @@ -2830,12 +2771,11 @@ cjc.mainProgram(args) - Re-enable tzdata tests now we are on the latest JDK and things are back in sync - Install jaxp.properties introduced by JDK-8303530 - Install lible.so introduced by JDK-8306983 -- Related: RHEL-12998 -- Resolves: RHEL-41087 +- Related: RHEL-45217 * Mon Aug 21 2023 Petra Alice Mikova - 1:21.0.0.0.35-1 - Replace smoke test files used in the staticlibs test, as fdlibm was removed by JDK-8303798 -- Related: RHEL-12998 +- Related: RHEL-45217 * Wed Aug 16 2023 Andrew Hughes - 1:20.0.0.0.36-1 - Update to jdk-20.0.2+9 @@ -2843,12 +2783,12 @@ cjc.mainProgram(args) - Update system crypto policy & FIPS patch from new fips-20u tree - Update generate_tarball.sh ICEDTEA_VERSION - Update CLDR reference data following update to 42 (Rocky Mountain-Normalzeit => Rocky-Mountain-Normalzeit) -- Related: RHEL-12998 +- Related: RHEL-45217 * Wed Aug 16 2023 Jiri Vanek - 1:20.0.0.0.36-1 - Dropped JDK-8295447, JDK-8296239 & JDK-8299439 patches now upstream - Adapted rh1750419-redhat_alt_java.patch -- Related: RHEL-12998 +- Related: RHEL-45217 * Tue Aug 15 2023 Andrew Hughes - 1:19.0.1.0.10-1 - Update to jdk-19.0.2 release @@ -2857,7 +2797,7 @@ cjc.mainProgram(args) - Remove references to sample directory removed by JDK-8284999 - Add local patch JDK-8295447 (javac NPE) which was accepted into 19u upstream but not in the GA tag - Add local patches for JDK-8296239 & JDK-8299439 (Croatia Euro update) which are present in 8u, 11u & 17u releases -- Related: RHEL-12998 +- Related: RHEL-45217 * Thu Aug 10 2023 Andrew Hughes - 1:18.0.2.0.9-1 - Update to jdk-18.0.2 release @@ -2868,26 +2808,26 @@ cjc.mainProgram(args) - Drop tzdata patches added for 17.0.7 which will eventually appear in the upstream tarball when we reach OpenJDK 21 - Disable tzdata tests until we are on the latest JDK and things are back in sync - Use empty nss.fips.cfg until it is again available via the FIPS patch -- Related: RHEL-12998 +- Related: RHEL-45217 * Thu Aug 10 2023 Petra Alice Mikova - 1:18.0.2.0.9-1 - Update to ea version of jdk18 - Add new slave jwebserver and corresponding manpage - Adjust rh1684077-openjdk_should_depend_on_pcsc-lite-libs_instead_of_pcsc-lite-devel.patch -- Related: RHEL-12998 +- Related: RHEL-45217 * Thu Aug 10 2023 FeRD (Frank Dana) - 1:18.0.2.0.9-1 - Add javaver- and origin-specific javadoc and javadoczip alternatives. -- Related: RHEL-12998 +- Related: RHEL-45217 * Tue Aug 08 2023 Andrew Hughes - 1:17.0.7.0.7-4 - Set portablerelease and portablerhel to use the CentOS 9 build -- Related: RHEL-12998 +- Related: RHEL-45217 * Tue Aug 08 2023 Andrew Hughes - 1:17.0.7.0.7-4 - Add files missed by centpkg import. -- Related: rhbz#2192748 +- Related: RHEL-45217 * Fri Aug 04 2023 Andrew Hughes - 1:17.0.7.0.7-3 - Create java-21-openjdk package based on java-17-openjdk -- Related: rhbz#2192748 +- Related: RHEL-45217 diff --git a/jdk8351500-numa_migration_crashes.patch b/jdk8351500-numa_migration_crashes.patch deleted file mode 100644 index 34af731..0000000 --- a/jdk8351500-numa_migration_crashes.patch +++ /dev/null @@ -1,274 +0,0 @@ -commit c5c0ac6140ec5241d949bc66f54469bfa516c60c -Author: Thomas Stuefe -Date: Thu Mar 27 17:37:44 2025 +0000 - - 8351500: G1: NUMA migrations cause crashes in region allocation - - Reviewed-by: sjohanss - Backport-of: 37ec796255ae857588a5c7e0d572407dd81cbec9 - -diff --git a/src/hotspot/share/gc/g1/g1Allocator.cpp b/src/hotspot/share/gc/g1/g1Allocator.cpp -index 5b33e24de75..23c7ee839d8 100644 ---- a/src/hotspot/share/gc/g1/g1Allocator.cpp -+++ b/src/hotspot/share/gc/g1/g1Allocator.cpp -@@ -212,10 +212,10 @@ size_t G1Allocator::used_in_alloc_regions() { - - - HeapWord* G1Allocator::par_allocate_during_gc(G1HeapRegionAttr dest, -- size_t word_size, -- uint node_index) { -+ uint node_index, -+ size_t word_size) { - size_t temp = 0; -- HeapWord* result = par_allocate_during_gc(dest, word_size, word_size, &temp, node_index); -+ HeapWord* result = par_allocate_during_gc(dest, node_index, word_size, word_size, &temp); - assert(result == nullptr || temp == word_size, - "Requested " SIZE_FORMAT " words, but got " SIZE_FORMAT " at " PTR_FORMAT, - word_size, temp, p2i(result)); -@@ -223,13 +223,13 @@ HeapWord* G1Allocator::par_allocate_during_gc(G1HeapRegionAttr dest, - } - - HeapWord* G1Allocator::par_allocate_during_gc(G1HeapRegionAttr dest, -+ uint node_index, - size_t min_word_size, - size_t desired_word_size, -- size_t* actual_word_size, -- uint node_index) { -+ size_t* actual_word_size) { - switch (dest.type()) { - case G1HeapRegionAttr::Young: -- return survivor_attempt_allocation(min_word_size, desired_word_size, actual_word_size, node_index); -+ return survivor_attempt_allocation(node_index, min_word_size, desired_word_size, actual_word_size); - case G1HeapRegionAttr::Old: - return old_attempt_allocation(min_word_size, desired_word_size, actual_word_size); - default: -@@ -238,10 +238,10 @@ HeapWord* G1Allocator::par_allocate_during_gc(G1HeapRegionAttr dest, - } - } - --HeapWord* G1Allocator::survivor_attempt_allocation(size_t min_word_size, -+HeapWord* G1Allocator::survivor_attempt_allocation(uint node_index, -+ size_t min_word_size, - size_t desired_word_size, -- size_t* actual_word_size, -- uint node_index) { -+ size_t* actual_word_size) { - assert(!_g1h->is_humongous(desired_word_size), - "we should not be seeing humongous-size allocations in this path"); - -@@ -396,10 +396,10 @@ HeapWord* G1PLABAllocator::allocate_direct_or_new_plab(G1HeapRegionAttr dest, - - size_t actual_plab_size = 0; - HeapWord* buf = _allocator->par_allocate_during_gc(dest, -+ node_index, - required_in_plab, - plab_word_size, -- &actual_plab_size, -- node_index); -+ &actual_plab_size); - - assert(buf == nullptr || ((actual_plab_size >= required_in_plab) && (actual_plab_size <= plab_word_size)), - "Requested at minimum %zu, desired %zu words, but got %zu at " PTR_FORMAT, -@@ -418,7 +418,7 @@ HeapWord* G1PLABAllocator::allocate_direct_or_new_plab(G1HeapRegionAttr dest, - *plab_refill_failed = true; - } - // Try direct allocation. -- HeapWord* result = _allocator->par_allocate_during_gc(dest, word_sz, node_index); -+ HeapWord* result = _allocator->par_allocate_during_gc(dest, node_index, word_sz); - if (result != nullptr) { - plab_data->_direct_allocated += word_sz; - plab_data->_num_direct_allocations++; -diff --git a/src/hotspot/share/gc/g1/g1Allocator.hpp b/src/hotspot/share/gc/g1/g1Allocator.hpp -index 32f37778a18..b2828d64d87 100644 ---- a/src/hotspot/share/gc/g1/g1Allocator.hpp -+++ b/src/hotspot/share/gc/g1/g1Allocator.hpp -@@ -78,19 +78,16 @@ class G1Allocator : public CHeapObj { - inline OldGCAllocRegion* old_gc_alloc_region(); - - // Allocation attempt during GC for a survivor object / PLAB. -- HeapWord* survivor_attempt_allocation(size_t min_word_size, -+ HeapWord* survivor_attempt_allocation(uint node_index, -+ size_t min_word_size, - size_t desired_word_size, -- size_t* actual_word_size, -- uint node_index); -+ size_t* actual_word_size); - - // Allocation attempt during GC for an old object / PLAB. - HeapWord* old_attempt_allocation(size_t min_word_size, - size_t desired_word_size, - size_t* actual_word_size); - -- // Node index of current thread. -- inline uint current_node_index() const; -- - public: - G1Allocator(G1CollectedHeap* heap); - ~G1Allocator(); -@@ -110,18 +107,22 @@ class G1Allocator : public CHeapObj { - void abandon_gc_alloc_regions(); - bool is_retained_old_region(HeapRegion* hr); - -+ // Node index of current thread. -+ inline uint current_node_index() const; -+ - // Allocate blocks of memory during mutator time. - - // Attempt allocation in the current alloc region. -- inline HeapWord* attempt_allocation(size_t min_word_size, -+ inline HeapWord* attempt_allocation(uint node_index, -+ size_t min_word_size, - size_t desired_word_size, - size_t* actual_word_size); - - // This is to be called when holding an appropriate lock. It first tries in the - // current allocation region, and then attempts an allocation using a new region. -- inline HeapWord* attempt_allocation_locked(size_t word_size); -+ inline HeapWord* attempt_allocation_locked(uint node_index, size_t word_size); - -- inline HeapWord* attempt_allocation_force(size_t word_size); -+ inline HeapWord* attempt_allocation_force(uint node_index, size_t word_size); - - size_t unsafe_max_tlab_alloc(); - size_t used_in_alloc_regions(); -@@ -131,14 +132,15 @@ class G1Allocator : public CHeapObj { - // heap, and then allocate a block of the given size. The block - // may not be a humongous - it must fit into a single heap region. - HeapWord* par_allocate_during_gc(G1HeapRegionAttr dest, -- size_t word_size, -- uint node_index); -+ uint node_index, -+ size_t word_size -+ ); - - HeapWord* par_allocate_during_gc(G1HeapRegionAttr dest, -+ uint node_index, - size_t min_word_size, - size_t desired_word_size, -- size_t* actual_word_size, -- uint node_index); -+ size_t* actual_word_size); - }; - - // Manages the PLABs used during garbage collection. Interface for allocation from PLABs. -diff --git a/src/hotspot/share/gc/g1/g1Allocator.inline.hpp b/src/hotspot/share/gc/g1/g1Allocator.inline.hpp -index 13ae9b9bbbd..7e516b48faa 100644 ---- a/src/hotspot/share/gc/g1/g1Allocator.inline.hpp -+++ b/src/hotspot/share/gc/g1/g1Allocator.inline.hpp -@@ -49,11 +49,10 @@ inline OldGCAllocRegion* G1Allocator::old_gc_alloc_region() { - return &_old_gc_alloc_region; - } - --inline HeapWord* G1Allocator::attempt_allocation(size_t min_word_size, -+inline HeapWord* G1Allocator::attempt_allocation(uint node_index, -+ size_t min_word_size, - size_t desired_word_size, - size_t* actual_word_size) { -- uint node_index = current_node_index(); -- - HeapWord* result = mutator_alloc_region(node_index)->attempt_retained_allocation(min_word_size, desired_word_size, actual_word_size); - if (result != nullptr) { - return result; -@@ -62,8 +61,7 @@ inline HeapWord* G1Allocator::attempt_allocation(size_t min_word_size, - return mutator_alloc_region(node_index)->attempt_allocation(min_word_size, desired_word_size, actual_word_size); - } - --inline HeapWord* G1Allocator::attempt_allocation_locked(size_t word_size) { -- uint node_index = current_node_index(); -+inline HeapWord* G1Allocator::attempt_allocation_locked(uint node_index, size_t word_size) { - HeapWord* result = mutator_alloc_region(node_index)->attempt_allocation_locked(word_size); - - assert(result != nullptr || mutator_alloc_region(node_index)->get() == nullptr, -@@ -71,8 +69,7 @@ inline HeapWord* G1Allocator::attempt_allocation_locked(size_t word_size) { - return result; - } - --inline HeapWord* G1Allocator::attempt_allocation_force(size_t word_size) { -- uint node_index = current_node_index(); -+inline HeapWord* G1Allocator::attempt_allocation_force(uint node_index, size_t word_size) { - return mutator_alloc_region(node_index)->attempt_allocation_force(word_size); - } - -diff --git a/src/hotspot/share/gc/g1/g1CollectedHeap.cpp b/src/hotspot/share/gc/g1/g1CollectedHeap.cpp -index 9b6b22a29e7..a43e45c4afa 100644 ---- a/src/hotspot/share/gc/g1/g1CollectedHeap.cpp -+++ b/src/hotspot/share/gc/g1/g1CollectedHeap.cpp -@@ -401,7 +401,7 @@ G1CollectedHeap::mem_allocate(size_t word_size, - return attempt_allocation(word_size, word_size, &dummy); - } - --HeapWord* G1CollectedHeap::attempt_allocation_slow(size_t word_size) { -+HeapWord* G1CollectedHeap::attempt_allocation_slow(uint node_index, size_t word_size) { - ResourceMark rm; // For retrieving the thread names in log messages. - - // Make sure you read the note in attempt_allocation_humongous(). -@@ -427,7 +427,7 @@ HeapWord* G1CollectedHeap::attempt_allocation_slow(size_t word_size) { - - // Now that we have the lock, we first retry the allocation in case another - // thread changed the region while we were waiting to acquire the lock. -- result = _allocator->attempt_allocation_locked(word_size); -+ result = _allocator->attempt_allocation_locked(node_index, word_size); - if (result != nullptr) { - return result; - } -@@ -438,7 +438,7 @@ HeapWord* G1CollectedHeap::attempt_allocation_slow(size_t word_size) { - if (GCLocker::is_active_and_needs_gc() && policy()->can_expand_young_list()) { - // No need for an ergo message here, can_expand_young_list() does this when - // it returns true. -- result = _allocator->attempt_allocation_force(word_size); -+ result = _allocator->attempt_allocation_force(node_index, word_size); - if (result != nullptr) { - return result; - } -@@ -495,7 +495,7 @@ HeapWord* G1CollectedHeap::attempt_allocation_slow(size_t word_size) { - // follow-on attempt will be at the start of the next loop - // iteration (after taking the Heap_lock). - size_t dummy = 0; -- result = _allocator->attempt_allocation(word_size, word_size, &dummy); -+ result = _allocator->attempt_allocation(node_index, word_size, word_size, &dummy); - if (result != nullptr) { - return result; - } -@@ -636,11 +636,14 @@ inline HeapWord* G1CollectedHeap::attempt_allocation(size_t min_word_size, - assert(!is_humongous(desired_word_size), "attempt_allocation() should not " - "be called for humongous allocation requests"); - -- HeapWord* result = _allocator->attempt_allocation(min_word_size, desired_word_size, actual_word_size); -+ // Fix NUMA node association for the duration of this allocation -+ const uint node_index = _allocator->current_node_index(); -+ -+ HeapWord* result = _allocator->attempt_allocation(node_index, min_word_size, desired_word_size, actual_word_size); - - if (result == nullptr) { - *actual_word_size = desired_word_size; -- result = attempt_allocation_slow(desired_word_size); -+ result = attempt_allocation_slow(node_index, desired_word_size); - } - - assert_heap_not_locked(); -@@ -778,8 +781,11 @@ HeapWord* G1CollectedHeap::attempt_allocation_at_safepoint(size_t word_size, - assert(!_allocator->has_mutator_alloc_region() || !expect_null_mutator_alloc_region, - "the current alloc region was unexpectedly found to be non-null"); - -+ // Fix NUMA node association for the duration of this allocation -+ const uint node_index = _allocator->current_node_index(); -+ - if (!is_humongous(word_size)) { -- return _allocator->attempt_allocation_locked(word_size); -+ return _allocator->attempt_allocation_locked(node_index, word_size); - } else { - HeapWord* result = humongous_obj_allocate(word_size); - if (result != nullptr && policy()->need_to_start_conc_mark("STW humongous allocation")) { -diff --git a/src/hotspot/share/gc/g1/g1CollectedHeap.hpp b/src/hotspot/share/gc/g1/g1CollectedHeap.hpp -index 88f4f680800..6afaeb6e6d4 100644 ---- a/src/hotspot/share/gc/g1/g1CollectedHeap.hpp -+++ b/src/hotspot/share/gc/g1/g1CollectedHeap.hpp -@@ -453,7 +453,7 @@ class G1CollectedHeap : public CollectedHeap { - // Second-level mutator allocation attempt: take the Heap_lock and - // retry the allocation attempt, potentially scheduling a GC - // pause. This should only be used for non-humongous allocations. -- HeapWord* attempt_allocation_slow(size_t word_size); -+ HeapWord* attempt_allocation_slow(uint node_index, size_t word_size); - - // Takes the Heap_lock and attempts a humongous allocation. It can - // potentially schedule a GC pause. diff --git a/rpminspect.yaml b/rpminspect.yaml deleted file mode 100644 index 8b4fa58..0000000 --- a/rpminspect.yaml +++ /dev/null @@ -1,3 +0,0 @@ ---- -inspections: - javabytecode: off diff --git a/scripts/builds/build_centos.sh b/scripts/builds/build_centos.sh deleted file mode 100755 index 5625b93..0000000 --- a/scripts/builds/build_centos.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh - -# Copyright (C) 2024 Red Hat, Inc. -# Written by: -# Andrew John Hughes -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -# Builds the RPM on CentOS 9 or 10 - -centpkg -v build - -# Local Variables: -# compile-command: "shellcheck build_centos.sh" -# fill-column: 80 -# indent-tabs-mode: nil -# sh-basic-offset: 4 -# End: diff --git a/scripts/builds/build_centos_portable_build.sh b/scripts/builds/build_centos_portable_build.sh deleted file mode 100755 index 41eb62f..0000000 --- a/scripts/builds/build_centos_portable_build.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh - -# Copyright (C) 2024 Red Hat, Inc. -# Written by: -# Andrew John Hughes -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -# Builds the portable on CentOS - -centpkg -v build --target java-openjdk-portable-build --rhel-target none - -# Local Variables: -# compile-command: "shellcheck build_centos_portable_build.sh" -# fill-column: 80 -# indent-tabs-mode: nil -# sh-basic-offset: 4 -# End: diff --git a/scripts/builds/build_rhel_10.sh b/scripts/builds/build_rhel_10.sh deleted file mode 100755 index 2e52c28..0000000 --- a/scripts/builds/build_rhel_10.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/sh - -# Copyright (C) 2024 Red Hat, Inc. -# Written by: -# Andrew John Hughes -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -# Builds the RPM on RHEL 10 - -NVR=${1} -USER=${2} - -if test "${NVR}" = ""; then - echo "${0} "; - exit 1; -fi - -if test "${USER}" = ""; then - echo "${0} "; - exit 2; -fi - -METADATA="{\"osci\": {\"upstream_nvr\": \"${NVR}\", \"upstream_owner_name\": \"${USER}\"}, \"rhel-target\": \"latest\"}" -rhpkg -v build --target=java-openjdk-rhel-10-build --custom-user-metadata "${METADATA}" - -# Local Variables: -# compile-command: "shellcheck build_rhel_10.sh" -# fill-column: 80 -# indent-tabs-mode: nil -# sh-basic-offset: 4 -# End: diff --git a/scripts/builds/build_rhel_7_portable_build.sh b/scripts/builds/build_rhel_7_portable_build.sh deleted file mode 100755 index 0cf02d0..0000000 --- a/scripts/builds/build_rhel_7_portable_build.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh - -# Copyright (C) 2024 Red Hat, Inc. -# Written by: -# Andrew John Hughes -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -# Builds the portable on RHEL 7 - -rhpkg -v build --target=java-openjdk-rhel-7-build --skip-nvr-check - -# Local Variables: -# compile-command: "shellcheck build_rhel_7_portable_build.sh" -# fill-column: 80 -# indent-tabs-mode: nil -# sh-basic-offset: 4 -# End: diff --git a/scripts/builds/build_rhel_8.sh b/scripts/builds/build_rhel_8.sh deleted file mode 100755 index c1ea948..0000000 --- a/scripts/builds/build_rhel_8.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/sh - -# Copyright (C) 2024 Red Hat, Inc. -# Written by: -# Andrew John Hughes -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -# Builds the RPM on RHEL 8 - -NVR=${1} -USER=${2} - -if test "${NVR}" = ""; then - echo "${0} "; - exit 1; -fi - -if test "${USER}" = ""; then - echo "${0} "; - exit 2; -fi - -METADATA="{\"osci\": {\"upstream_nvr\": \"${NVR}\", \"upstream_owner_name\": \"${USER}\"}, \"rhel-target\": \"latest\"}" -rhpkg -v build --target=java-openjdk-rhel-8-build --custom-user-metadata "${METADATA}" - -# Local Variables: -# compile-command: "shellcheck build_rhel_8.sh" -# fill-column: 80 -# indent-tabs-mode: nil -# sh-basic-offset: 4 -# End: diff --git a/scripts/builds/build_rhel_9.sh b/scripts/builds/build_rhel_9.sh deleted file mode 100755 index a39e35f..0000000 --- a/scripts/builds/build_rhel_9.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/sh - -# Copyright (C) 2024 Red Hat, Inc. -# Written by: -# Andrew John Hughes -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -# Builds the RPM on RHEL 9 - -NVR=${1} -USER=${2} - -if test "${NVR}" = ""; then - echo "${0} "; - exit 1; -fi - -if test "${USER}" = ""; then - echo "${0} "; - exit 2; -fi - -METADATA="{\"osci\": {\"upstream_nvr\": \"${NVR}\", \"upstream_owner_name\": \"${USER}\"}, \"rhel-target\": \"latest\"}" -rhpkg -v build --target=java-openjdk-rhel-9-build --custom-user-metadata "${METADATA}" - -# Local Variables: -# compile-command: "shellcheck build_rhel_9.sh" -# fill-column: 80 -# indent-tabs-mode: nil -# sh-basic-offset: 4 -# End: diff --git a/scripts/builds/build_rhel_portable_build.sh b/scripts/builds/build_rhel_portable_build.sh deleted file mode 100755 index 3fd6a22..0000000 --- a/scripts/builds/build_rhel_portable_build.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh - -# Copyright (C) 2024 Red Hat, Inc. -# Written by: -# Andrew John Hughes -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -# Builds the portable on RHEL 8 - -rhpkg -v build --target=java-openjdk-rhel-8-build --skip-nvr-check - -# Local Variables: -# compile-command: "shellcheck build_rhel_portable_build.sh" -# fill-column: 80 -# indent-tabs-mode: nil -# sh-basic-offset: 4 -# End: diff --git a/scripts/builds/build_vanilla.sh b/scripts/builds/build_vanilla.sh deleted file mode 100755 index c4f67f7..0000000 --- a/scripts/builds/build_vanilla.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/sh - -# Copyright (C) 2024 Red Hat, Inc. -# Written by: -# Andrew John Hughes -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -# Builds a scratch build of vanilla OpenJDK with no local patches - -SEPARATE_ARCHES=${1} -CMD="--target java-openjdk-rhel-8-build --skip-nvr-check --nowait"; -SUPPORTED_ARCHES="aarch64 ppc64le s390x x86_64"; - -if [ "x${SEPARATE_ARCHES}" = "x" ] ; then - SEPARATE_ARCHES=0; -fi - -if [ ${SEPARATE_ARCHES} -eq 1 ] ; then - for arch in ${SUPPORTED_ARCHES}; do \ - rhpkg -v build --arches ${arch} --scratch ${CMD} ; \ - done && brew watch-task --mine -else - rhpkg -v build ${CMD} && brew watch-task --mine -fi - -# Local Variables: -# compile-command: "shellcheck build_vanilla.sh" -# fill-column: 80 -# indent-tabs-mode: nil -# sh-basic-offset: 4 -# End: diff --git a/scripts/discover_trees.sh b/scripts/discover_trees.sh deleted file mode 100755 index 7a0b800..0000000 --- a/scripts/discover_trees.sh +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/sh - -# Copyright (C) 2024 Red Hat, Inc. -# Written by Andrew John Hughes . -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -TREE=${1} - -if test "${TREE}" = ""; then - TREE=${PWD} -fi - -if [ -e "${TREE}"/nashorn/.hg ] || [ -e "${TREE}"/nashorn/merge.changeset ] ; then - NASHORN="nashorn" ; -fi - -if [ -e "${TREE}"/corba/.hg ] || [ -e "${TREE}"/corba/merge.changeset ] ; then - CORBA="corba"; -fi - -if [ -e "${TREE}"/jaxp/.hg ] || [ -e "${TREE}"/jaxp/merge.changeset ] ; then - JAXP="jaxp"; -fi - -if [ -e "${TREE}"/jaxws/.hg ] || [ -e "${TREE}"/jaxws/merge.changeset ] ; then - JAXWS="jaxws"; -fi - -if [ -e "${TREE}"/langtools/.hg ] || [ -e "${TREE}"/langtools/merge.changeset ] ; then - LANGTOOLS="langtools"; -fi - -if [ -e "${TREE}"/jdk/.hg ] || [ -e "${TREE}"/jdk/merge.changeset ] ; then - JDK="jdk"; -fi - -if [ -e "${TREE}"/hotspot/.hg ] || [ -e "${TREE}"/hotspot/merge.changeset ] ; then - HOTSPOT="hotspot"; -fi - -SUBTREES="${CORBA} ${JAXP} ${JAXWS} ${LANGTOOLS} ${NASHORN} ${JDK} ${HOTSPOT}"; -echo "${SUBTREES}" - -# Local Variables: -# compile-command: "shellcheck discover_trees.sh" -# fill-column: 80 -# indent-tabs-mode: nil -# sh-basic-offset: 4 -# End: diff --git a/scripts/generate_source_tarball.sh b/scripts/generate_source_tarball.sh deleted file mode 100755 index ad163f3..0000000 --- a/scripts/generate_source_tarball.sh +++ /dev/null @@ -1,294 +0,0 @@ -#!/bin/bash - -# Copyright (C) 2024 Red Hat, Inc. -# Written by: -# Andrew John Hughes -# Thomas Fitzsimmons -# Jiri Vanek -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -# Generates the source tarball for OpenJDK projects. -# -# There are multiple ways to specify the source code location and version: -# -# 1. Specify the version (VERSION), the location of the Git repository -# (REPO_ROOT) and the root of the output tarball name (FILE_NAME_ROOT) -# 2. Specify the version (VERSION) along with an upstream project name -# (PROJECT_NAME) and repository name (REPO_NAME) that can be used -# to construct the URL of the upstream OpenJDK repository. -# 3. Specify OPENJDK_LATEST=1 and allow the script to obtain the JDK -# feature version from the spec file, which is then used to -# obtain the latest build promotion from the upstream repository. -# -# An appropriate bootstrap JDK is also required for when ./configure -# is run within the checked out repository to generate the .src-rev. -# file. This can be specified by setting BOOT_JDK. -# -# Example 1: -# This will check out the specified version from the specified -# repository and construct a tarball called openjdk-17.0.3+5.tar.xz: -# -# $ VERSION=jdk-17.0.3+5 FILE_NAME_ROOT=open${VERSION} \ -# REPO_ROOT=$HOME/projects/openjdk/upstream/17u \ -# BOOT_JDK=/usr/lib/jvm/java-17-openjdk ./generate_source_tarball.sh -# -# Example 2: -# This will check out the same version as example 1, but from the -# upstream repository: -# -# $ VERSION=jdk-17.0.3+5 PROJECT_NAME=openjdk REPO_NAME=jdk17u \ -# BOOT_JDK=/usr/lib/jvm/java-17-openjdk ./generate_source_tarball.sh -# -# Example 3: -# This will read the OpenJDK feature version from the spec file, then create a -# tarball from the most recent tag for that version in the upstream Git -# repository. -# -# $ OPENJDK_LATEST=1 \ -# BOOT_JDK=/usr/lib/jvm/java-17-openjdk ./generate_source_tarball.sh -# - -set -e - -OPENJDK_URL_DEFAULT=https://github.com -COMPRESSION_DEFAULT=xz - -if [ "$1" = "help" ] ; then - echo "Behaviour may be specified by setting the following variables:" - echo - echo "VERSION - the version of the specified OpenJDK project" - echo " (required unless OPENJDK_LATEST is set)" - echo "PROJECT_NAME - the name of the OpenJDK project being archived" - echo " (needed to compute REPO_ROOT and/or" - echo " FILE_NAME_ROOT automatically;" - echo " optional if they are set explicitly)" - echo "REPO_NAME - the name of the OpenJDK repository" - echo " (needed to compute REPO_ROOT automatically;" - echo " optional if REPO_ROOT is set explicitly)" - echo "OPENJDK_URL - the URL to retrieve code from" - echo " (defaults to ${OPENJDK_URL_DEFAULT})" - echo "COMPRESSION - the compression type to use" - echo " (defaults to ${COMPRESSION_DEFAULT})" - echo "FILE_NAME_ROOT - name of the archive, minus extensions" - echo " (defaults to PROJECT_NAME-VERSION)" - echo "REPO_ROOT - the location of the Git repository to archive" - echo " (defaults to OPENJDK_URL/PROJECT_NAME/REPO_NAME.git)" - echo "TO_COMPRESS - what part of clone to pack" - echo " (defaults to ${VERSION})" - echo "BOOT_JDK - the bootstrap JDK to satisfy the configure run" - echo " (defaults to packaged JDK version)" - echo "WITH_TEMP - run in a temporary directory" - echo " (defaults to disabled)" - echo "OPENJDK_LATEST - deduce VERSION from most recent upstream tag" - echo " (implies WITH_TEMP, computes everything else" - echo " automatically; Note: accesses network to read" - echo " tag list from remote Git repository)" - exit 1; -fi - -if [ "$OPENJDK_LATEST" != "" ] ; then - FEATURE_VERSION=$(echo '%featurever' \ - | rpmspec --shell ./*.spec 2>/dev/null \ - | grep --after-context 1 featurever \ - | tail --lines 1) - PROJECT_NAME=openjdk - REPO_NAME=jdk"${FEATURE_VERSION}"u - # Skip -ga tags since those are the same as the most recent non-ga tag, and - # the non-ga tag is the one that is used to generated the official source - # tarball. For example: - # ca760c86642aa2e0d9b571aaabac054c0239fbdc refs/tags/jdk-17.0.10-ga^{} - # 25a2e6c20c9a96853714284cabc6b456eb095070 refs/tags/jdk-17.0.10-ga - # ca760c86642aa2e0d9b571aaabac054c0239fbdc refs/tags/jdk-17.0.10+7^{} - # e49c5749b10f3e90274b72e9279f794fdd191d27 refs/tags/jdk-17.0.10+7 - VERSION=$(git ls-remote --tags --refs --sort=-version:refname \ - "${OPENJDK_URL_DEFAULT}/${PROJECT_NAME}/${REPO_NAME}.git" \ - "jdk-${FEATURE_VERSION}*" \ - | grep --invert-match '\-ga$' \ - | head --lines 1 | cut --characters 52-) - FILE_NAME_ROOT=open${VERSION} - WITH_TEMP=1 -fi - -if [ "$WITH_TEMP" != "" ] ; then - pushd "$(mktemp --directory --tmpdir temp-generated-source-tarball-XXX)" -fi - -if [ "$VERSION" = "" ] ; then - echo "No VERSION specified" - exit 2 -fi -echo "Version: ${VERSION}" - -NUM_VER=${VERSION##jdk-} -RELEASE_VER=${NUM_VER%%+*} -BUILD_VER=${NUM_VER##*+} -MAJOR_VER=${RELEASE_VER%%.*} -echo "Major version is ${MAJOR_VER}, release ${RELEASE_VER}, build ${BUILD_VER}" - -if [ "$BOOT_JDK" = "" ] ; then - echo "No boot JDK specified". - BOOT_JDK=/usr/lib/jvm/java-${MAJOR_VER}-openjdk; - echo -n "Checking for ${BOOT_JDK}..."; - if [ -d "${BOOT_JDK}" ] && [ -x "${BOOT_JDK}"/bin/java ] ; then - echo "Boot JDK found at ${BOOT_JDK}"; - else - echo "Not found"; - PREV_VER=$((MAJOR_VER - 1)); - BOOT_JDK=/usr/lib/jvm/java-${PREV_VER}-openjdk; - echo -n "Checking for ${BOOT_JDK}..."; - if [ -d ${BOOT_JDK} ] && [ -x ${BOOT_JDK}/bin/java ] ; then - echo "Boot JDK found at ${BOOT_JDK}"; - else - echo "Not found"; - exit 4; - fi - fi -else - echo "Boot JDK: ${BOOT_JDK}"; -fi - -if [ "$OPENJDK_URL" = "" ] ; then - OPENJDK_URL=${OPENJDK_URL_DEFAULT} - echo "No OpenJDK URL specified; defaulting to ${OPENJDK_URL}" -else - echo "OpenJDK URL: ${OPENJDK_URL}" -fi - -if [ "$COMPRESSION" = "" ] ; then - # rhel 5 needs tar.gz - COMPRESSION=${COMPRESSION_DEFAULT} -fi -echo "Creating a tar.${COMPRESSION} archive" - -if [ "$FILE_NAME_ROOT" = "" ] ; then - if [ "$PROJECT_NAME" = "" ] ; then - echo "No PROJECT_NAME specified, needed by FILE_NAME_ROOT" - exit 1 - fi - FILE_NAME_ROOT=${PROJECT_NAME}-${VERSION} - echo "No file name root specified; default to ${FILE_NAME_ROOT}" -fi -if [ "$REPO_ROOT" = "" ] ; then - if [ "$PROJECT_NAME" = "" ] ; then - echo "No PROJECT_NAME specified, needed by REPO_ROOT" - exit 1 - fi - if [ "$REPO_NAME" = "" ] ; then - echo "No REPO_NAME specified, needed by REPO_ROOT" - exit 3 - fi - REPO_ROOT="${OPENJDK_URL}/${PROJECT_NAME}/${REPO_NAME}.git" - echo "No repository root specified; default to ${REPO_ROOT}" -fi; - -if [ "$TO_COMPRESS" = "" ] ; then - TO_COMPRESS="${VERSION}" - echo "No targets to be compressed specified ; default to ${TO_COMPRESS}" -fi; - -echo -e "Settings:" -echo -e "\tVERSION: ${VERSION}" -echo -e "\tPROJECT_NAME: ${PROJECT_NAME}" -echo -e "\tREPO_NAME: ${REPO_NAME}" -echo -e "\tOPENJDK_URL: ${OPENJDK_URL}" -echo -e "\tCOMPRESSION: ${COMPRESSION}" -echo -e "\tFILE_NAME_ROOT: ${FILE_NAME_ROOT}" -echo -e "\tREPO_ROOT: ${REPO_ROOT}" -echo -e "\tTO_COMPRESS: ${TO_COMPRESS}" -echo -e "\tBOOT_JDK: ${BOOT_JDK}" -echo -e "\tWITH_TEMP: ${WITH_TEMP}" -echo -e "\tOPENJDK_LATEST: ${OPENJDK_LATEST}" - -if [ -d "${FILE_NAME_ROOT}" ] ; then - echo "Reusing existing ${FILE_NAME_ROOT}" - STAT_TIME="$(stat --format=%Y "${FILE_NAME_ROOT}")" - TAR_TIME="$(date --date=@"${STAT_TIME}" --iso-8601=seconds)" -else - mkdir "${FILE_NAME_ROOT}" - pushd "${FILE_NAME_ROOT}" - echo "Cloning ${VERSION} root repository from ${REPO_ROOT}" - if realpath -q "${REPO_ROOT}"; then - echo "Local path detected; not adding depth argument"; - DEPTH="--"; - else - DEPTH="--depth=1"; - echo "Remote repository detected; adding ${DEPTH}"; - fi - git clone -b "${VERSION}" "${DEPTH}" "${REPO_ROOT}" "${VERSION}" - pushd "${VERSION}" - TAR_TIME="$(git log --max-count 1 --format=%cI)" - popd - popd -fi -pushd "${FILE_NAME_ROOT}" - # Generate .src-rev so build has knowledge of the revision the tarball was - # created from - mkdir build - pushd build - sh "${PWD}"/../"${VERSION}"/configure --with-boot-jdk="${BOOT_JDK}" - make store-source-revision - popd - rm -rf build - - # Remove commit checks - echo "Removing $(find "${VERSION}" -name '.jcheck' -print)" - find "${VERSION}" -name '.jcheck' -print0 | xargs -0 rm -r - - # Remove history and GHA - echo "find ${VERSION} -name '.hgtags'" - find "${VERSION}" -name '.hgtags' -exec rm -v '{}' '+' - echo "find ${VERSION} -name '.hgignore'" - find "${VERSION}" -name '.hgignore' -exec rm -v '{}' '+' - echo "find ${VERSION} -name '.gitattributes'" - find "${VERSION}" -name '.gitattributes' -exec rm -v '{}' '+' - echo "find ${VERSION} -name '.gitignore'" - find "${VERSION}" -name '.gitignore' -exec rm -v '{}' '+' - # Work around some Git objects not having write permissions. - echo "chmod --recursive u+w ${VERSION}/.git" - chmod --recursive u+w "${VERSION}"/.git - echo "find ${VERSION} -name '.git'" - find "${VERSION}" -name '.git' -exec rm -rv '{}' '+' - echo "find ${VERSION} -name '.github'" - find "${VERSION}" -name '.github' -exec rm -rv '{}' '+' - - echo "Compressing remaining forest" - if [ "$COMPRESSION" = "xz" ] ; then - SWITCH=cJf - else - SWITCH=czf - fi - EA_PART="$(awk -F= \ - '/^DEFAULT_PROMOTED_VERSION_PRE/ { if ($2) print "-"$2 }' \ - "${VERSION}"/make/conf/version-numbers.conf)" - TARBALL_NAME=${FILE_NAME_ROOT}${EA_PART}.tar.${COMPRESSION} - XZ_OPT=${XZ_OPT-"-T0"} \ - tar --mtime="${TAR_TIME}" --owner=root --group=root --sort=name \ - --exclude-vcs -$SWITCH "${TARBALL_NAME}" "${TO_COMPRESS}" - mv "${TARBALL_NAME}" .. -popd -if [ "$WITH_TEMP" != "" ] ; then - echo "Tarball is: $(realpath .)/${TARBALL_NAME}" - popd -else - echo -n "Done. You may want to remove the uncompressed version" - echo " - $FILE_NAME_ROOT" -fi - -# Local Variables: -# compile-command: "shellcheck generate_source_tarball.sh" -# fill-column: 80 -# indent-tabs-mode: nil -# sh-basic-offset: 4 -# End: diff --git a/scripts/icedtea_sync.sh b/scripts/icedtea_sync.sh deleted file mode 100755 index 3f5cb82..0000000 --- a/scripts/icedtea_sync.sh +++ /dev/null @@ -1,198 +0,0 @@ -#!/bin/bash - -# Copyright (C) 2024 Red Hat, Inc. -# Written by Andrew John Hughes . -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -ICEDTEA_USE_VCS=true - -ICEDTEA_VERSION=3.15.0 -ICEDTEA_URL=https://icedtea.classpath.org/download/source -ICEDTEA_SIGNING_KEY=CFDA0F9B35964222 - -ICEDTEA_HG_URL=https://icedtea.classpath.org/hg/icedtea11 -set -e - -RPM_DIR=${PWD} -if [ ! -f "${RPM_DIR}/jconsole.desktop.in" ] ; then - echo "Not in RPM source tree."; - exit 1; -fi - -if test "${TMPDIR}" = ""; then - TMPDIR=/tmp; -fi -WORKDIR=${TMPDIR}/it.sync - -echo "Using working directory ${WORKDIR}" -mkdir "${WORKDIR}" -pushd "${WORKDIR}" - -if test "${WGET}" = ""; then - WGET=$(which wget); - if test "${WGET}" = ""; then - echo "wget not found"; - exit 1; - fi -fi - -if test "${TAR}" = ""; then - TAR=$(which tar) - if test "${TAR}" = ""; then - echo "tar not found"; - exit 2; - fi -fi - -echo "Dependencies:"; -echo -e "\tWGET: ${WGET}"; -echo -e "\tTAR: ${TAR}\n"; - -if test "${ICEDTEA_USE_VCS}" = "true"; then - echo "Mode: Using VCS"; - - if test "${GREP}" = ""; then - GREP=$(which grep); - if test "${GREP}" = ""; then - echo "grep not found"; - exit 3; - fi - fi - - if test "${CUT}" = ""; then - CUT=$(which cut); - if test "${CUT}" = ""; then - echo "cut not found"; - exit 4; - fi - fi - - if test "${TR}" = ""; then - TR=$(which tr); - if test "${TR}" = ""; then - echo "tr not found"; - exit 5; - fi - fi - - if test "${HG}" = ""; then - HG=$(which hg); - if test "${HG}" = ""; then - echo "hg not found"; - exit 6; - fi - fi - - echo "Dependencies:"; - echo -e "\tGREP: ${GREP}"; - echo -e "\tCUT: ${CUT}"; - echo -e "\tTR: ${TR}"; - echo -e "\tHG: ${HG}"; - - echo "Checking out repository from VCS..."; - ${HG} clone ${ICEDTEA_HG_URL} icedtea - - echo "Obtaining version from configure.ac..."; - ROOT_VER=$(${GREP} '^AC_INIT' icedtea/configure.ac|${CUT} -d ',' -f 2|${TR} -d '[][:space:]') - echo "Root version from configure: ${ROOT_VER}"; - - VCS_REV=$(${HG} log -R icedtea --template '{node|short}' -r tip) - echo "VCS revision: ${VCS_REV}"; - - ICEDTEA_VERSION="${ROOT_VER}-${VCS_REV}" - echo "Creating icedtea-${ICEDTEA_VERSION}"; - mkdir "icedtea-${ICEDTEA_VERSION}" - echo "Copying required files from checkout to icedtea-${ICEDTEA_VERSION}"; - # Commented out for now as IcedTea 6's jconsole.desktop.in is outdated - #cp -a icedtea/jconsole.desktop.in ../icedtea-${ICEDTEA_VERSION} - cp -a "${RPM_DIR}/jconsole.desktop.in" "icedtea-${ICEDTEA_VERSION}" - cp -a icedtea/tapset "icedtea-${ICEDTEA_VERSION}" - - rm -rf icedtea -else - echo "Mode: Using tarball"; - - if test "${ICEDTEA_VERSION}" = ""; then - echo "No IcedTea version specified for tarball download."; - exit 3; - fi - - if test "${CHECKSUM}" = ""; then - CHECKSUM=$(which sha256sum) - if test "${CHECKSUM}" = ""; then - echo "sha256sum not found"; - exit 4; - fi - fi - - if test "${PGP}" = ""; then - PGP=$(which gpg) - if test "${PGP}" = ""; then - echo "gpg not found"; - exit 5; - fi - fi - - echo "Dependencies:"; - echo -e "\tCHECKSUM: ${CHECKSUM}"; - echo -e "\tPGP: ${PGP}\n"; - - echo "Checking for IcedTea signing key ${ICEDTEA_SIGNING_KEY}..."; - if ! gpg --list-keys ${ICEDTEA_SIGNING_KEY}; then - echo "IcedTea signing key ${ICEDTEA_SIGNING_KEY} not installed."; - exit 6; - fi - - echo "Downloading IcedTea release tarball..."; - ${WGET} -v ${ICEDTEA_URL}/icedtea-${ICEDTEA_VERSION}.tar.xz - echo "Downloading IcedTea tarball signature..."; - ${WGET} -v ${ICEDTEA_URL}/icedtea-${ICEDTEA_VERSION}.tar.xz.sig - echo "Downloading IcedTea tarball checksums..."; - ${WGET} -v ${ICEDTEA_URL}/icedtea-${ICEDTEA_VERSION}.sha256 - - echo "Verifying checksums..."; - ${CHECKSUM} --check --ignore-missing icedtea-${ICEDTEA_VERSION}.sha256 - - echo "Checking signature..."; - ${PGP} --verify icedtea-${ICEDTEA_VERSION}.tar.xz.sig - - echo "Extracting files..."; - ${TAR} xJf icedtea-${ICEDTEA_VERSION}.tar.xz \ - icedtea-${ICEDTEA_VERSION}/tapset \ - icedtea-${ICEDTEA_VERSION}/jconsole.desktop.in - - rm -vf icedtea-${ICEDTEA_VERSION}.tar.xz - rm -vf icedtea-${ICEDTEA_VERSION}.tar.xz.sig - rm -vf icedtea-${ICEDTEA_VERSION}.sha256 -fi - -echo "Replacing desktop files..."; -mv -v "icedtea-${ICEDTEA_VERSION}/jconsole.desktop.in" "${RPM_DIR}" - -echo "Creating new tapset tarball..."; -mv -v "icedtea-${ICEDTEA_VERSION}" openjdk -${TAR} cJf "${RPM_DIR}/tapsets-icedtea-${ICEDTEA_VERSION}.tar.xz" openjdk - -rm -rvf openjdk - -popd -rm -rf "${WORKDIR}" - -# Local Variables: -# compile-command: "shellcheck icedtea_sync.sh" -# fill-column: 80 -# indent-tabs-mode: nil -# sh-basic-offset: 4 -# End: diff --git a/scripts/openjdk_news.sh b/scripts/openjdk_news.sh deleted file mode 100755 index 64b1434..0000000 --- a/scripts/openjdk_news.sh +++ /dev/null @@ -1,83 +0,0 @@ -#!/bin/bash - -# Copyright (C) 2024 Red Hat, Inc. -# Written by Andrew John Hughes , 2012-2022 -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -OLD_RELEASE=$1 -NEW_RELEASE=$2 -REPO=$3 -SUBDIR=$4 -SCRIPT_DIR=$(dirname "${0}") - -if test "${SUBDIR}" = ""; then - echo "No subdirectory specified; using ."; - SUBDIR="."; -fi - -if test "$REPO" = ""; then - echo "No repository specified; using ${PWD}" - REPO=${PWD} -fi - -if test "${TMPDIR}" = ""; then - TMPDIR=/tmp; -fi - -echo "Repository: ${REPO}" - -if [ -e "${REPO}/.git" ] ; then - TYPE=git; -elif [ -e "${REPO}/.hg" ] ; then - TYPE=hg; -else - echo "No Mercurial or Git repository detected."; - exit 1; -fi - -if test "$OLD_RELEASE" = "" || test "$NEW_RELEASE" = ""; then - echo "ERROR: Need to specify old and new release"; - exit 2; -fi - -echo "Listing fixes between $OLD_RELEASE and $NEW_RELEASE in $REPO" -rm -f "${TMPDIR}/fixes2" "${TMPDIR}/fixes3" "${TMPDIR}/fixes" -for repos in . $("${SCRIPT_DIR}/discover_trees.sh" "${REPO}"); -do - if test "$TYPE" = "hg"; then - hg log -r "tag('$NEW_RELEASE'):tag('$OLD_RELEASE') - tag('$OLD_RELEASE')" -R "$REPO/$repos" -G -M "${REPO}/${SUBDIR}" | \ - grep -E '^[o:| ]*summary'|grep -v 'Added tag'|sed -r 's#^[o:| ]*summary:\W*([0-9])# - JDK-\1#'| \ - sed 's#^[o:| ]*summary:\W*# - #' >> "${TMPDIR}/fixes2"; - hg log -v -r "tag('$NEW_RELEASE'):tag('$OLD_RELEASE') - tag('$OLD_RELEASE')" -R "$REPO/$repos" -G -M "${REPO}/${SUBDIR}" | \ - grep -E '^[o:| ]*[0-9]{7}'|sed -r 's#^[o:| ]*([0-9]{7})# - JDK-\1#' >> "${TMPDIR}/fixes3"; - else - git -C "${REPO}" log --no-merges --pretty=format:%B "${NEW_RELEASE}...${OLD_RELEASE}" -- "${SUBDIR}" |grep -E '^[0-9]{7}' | \ - sed -r 's#^([0-9])# - JDK-\1#' >> "${TMPDIR}/fixes2"; - touch "${TMPDIR}/fixes3" ; # unused - fi -done - -sort "${TMPDIR}/fixes2" "${TMPDIR}/fixes3" | uniq > "${TMPDIR}/fixes" -rm -f "${TMPDIR}/fixes2" "${TMPDIR}/fixes3" - -echo "In ${TMPDIR}/fixes:" -cat "${TMPDIR}/fixes" - -# Local Variables: -# compile-command: "shellcheck openjdk_news.sh" -# fill-column: 80 -# indent-tabs-mode: nil -# sh-basic-offset: 4 -# End: diff --git a/sources b/sources index 13c494a..cd201f9 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (tapsets-icedtea-6.0.0pre00-c848b93a8598.tar.xz) = 97d026212363b3c83f6a04100ad7f6fdde833d16579717f8756e2b8c2eb70e144a41a330cb9ccde9c3badd37a2d54fdf4650a950ec21d8b686d545ecb2a64d30 SHA512 (openjdk-21.0.7+6.tar.xz) = 4ccbad22a7284fc8a38f78585dbc9e2b632c634f0a496d0f41bc5a0ec35ef1f2ca75b2aad135c299e9ebb04c8bd73b905f6c57ae041bd39d4474ecbda3656c97 +SHA512 (tapsets-icedtea-6.0.0pre00-c848b93a8598.tar.xz) = 97d026212363b3c83f6a04100ad7f6fdde833d16579717f8756e2b8c2eb70e144a41a330cb9ccde9c3badd37a2d54fdf4650a950ec21d8b686d545ecb2a64d30 diff --git a/tests/tests.yml b/tests/tests.yml deleted file mode 100644 index c912769..0000000 --- a/tests/tests.yml +++ /dev/null @@ -1,21 +0,0 @@ ---- -- hosts: localhost - roles: - - role: standard-test-source - tags: - - always - - role: standard-test-basic - tags: - - classic - - atomic - required_packages: - - java-21-openjdk-devel - tests: - - javaVersion1: - dir: ~ - run: set -ex; useradd franta1; su franta1 -c 'java -version'; - run: set -ex; useradd franta4; su franta4 -c 'javac -version'; - run: ls -l /usr/lib/jvm; - - javaVersion2: - dir: ~ - run: set -ex; useradd franta2; su franta2 -c 'java --version'