From c5efa6bf325647c5f5011e31462fb72a3d42e797 Mon Sep 17 00:00:00 2001 From: Andrew John Hughes Date: Fri, 12 Feb 2021 08:48:58 +0000 Subject: [PATCH] Update to jdk-16.0.0.0+36 Update tarball generation script to use git following OpenJDK's move to github Update tarball generation script to use PR3823 which handles JDK-8235710 changes Use upstream default for version-pre rather than setting it to "ea" or "" Drop libsunec.so which is no longer generated, thanks to JDK-8235710 Drop unnecessary compiler flags, dating back to work on GCC 6 & 10 Adapt RH1750419 alt-java patch to still apply after some variable re-naming in the makefiles Update filever to remove any trailing zeros, as in the OpenJDK build, and use for source filename Use system harfbuzz now this is supported. Pass SOURCE_DATE_EPOCH to build for reproducible builds --- .gitignore | 1 + generate_source_tarball.sh | 40 ++++++++-------- java-latest-openjdk.spec | 82 ++++++++++++++++++++++----------- rh1750419-redhat_alt_java.patch | 41 +++++++++-------- sources | 2 +- 5 files changed, 100 insertions(+), 66 deletions(-) diff --git a/.gitignore b/.gitignore index 9203ad8..dc0dce0 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ /jdk-updates-jdk15u-jdk-15.0.1+9.tar.xz /tapsets-icedtea-3.15.0.tar.xz /jdk-updates-jdk15u-jdk-15.0.2+7.tar.xz +/openjdk-jdk16-jdk-16+36.tar.xz diff --git a/generate_source_tarball.sh b/generate_source_tarball.sh index 6f9564c..1a019ff 100755 --- a/generate_source_tarball.sh +++ b/generate_source_tarball.sh @@ -7,9 +7,9 @@ # If you want to use a local copy of patch PR3788, set the path to it in the PR3788 variable # # In any case you have to set PROJECT_NAME REPO_NAME and VERSION. eg: -# PROJECT_NAME=jdk -# REPO_NAME=jdk -# VERSION=tip +# PROJECT_NAME=openjdk +# REPO_NAME=jdk16 +# VERSION=HEAD # or to eg prepare systemtap: # icedtea7's jstack and other tapsets # VERSION=6327cf1cea9e @@ -26,16 +26,16 @@ # level folder, name is created, based on parameter # -if [ ! "x$PR3803" = "x" ] ; then - if [ ! -f "$PR3803" ] ; then - echo "You have specified PR3803 as $PR3803 but it does not exist. Exiting" +if [ ! "x$PR3823" = "x" ] ; then + if [ ! -f "$PR3823" ] ; then + echo "You have specified PR3823 as $PR3823 but it does not exist. Exiting" exit 1 fi fi set -e -OPENJDK_URL_DEFAULT=http://hg.openjdk.java.net +OPENJDK_URL_DEFAULT=https://github.com COMPRESSION_DEFAULT=xz if [ "x$1" = "xhelp" ] ; then @@ -47,7 +47,7 @@ if [ "x$1" = "xhelp" ] ; then echo "COMPRESSION - the compression type to use (optional; defaults to ${COMPRESSION_DEFAULT})" echo "FILE_NAME_ROOT - name of the archive, minus extensions (optional; defaults to PROJECT_NAME-REPO_NAME-VERSION)" echo "TO_COMPRESS - what part of clone to pack (default is openjdk)" - echo "PR3788 - the path to the PR3788 patch to apply (optional; downloaded if unavailable)" + echo "PR3823 - the path to the PR3823 patch to apply (optional; downloaded if unavailable)" exit 1; fi @@ -90,7 +90,7 @@ if [ "x$FILE_NAME_ROOT" = "x" ] ; then echo "No file name root specified; default to ${FILE_NAME_ROOT}" fi if [ "x$REPO_ROOT" = "x" ] ; then - REPO_ROOT="${OPENJDK_URL}/${PROJECT_NAME}/${REPO_NAME}" + REPO_ROOT="${OPENJDK_URL}/${PROJECT_NAME}/${REPO_NAME}.git" echo "No repository root specified; default to ${REPO_ROOT}" fi; @@ -107,7 +107,7 @@ else mkdir "${FILE_NAME_ROOT}" pushd "${FILE_NAME_ROOT}" echo "Cloning ${VERSION} root repository from ${REPO_ROOT}" - hg clone ${REPO_ROOT} openjdk -r ${VERSION} + git clone -b ${VERSION} ${REPO_ROOT} openjdk popd fi pushd "${FILE_NAME_ROOT}" @@ -125,18 +125,18 @@ pushd "${FILE_NAME_ROOT}" rm -vf ${CRYPTO_PATH}/ecp_224.c echo "Syncing EC list with NSS" - if [ "x$PR3803" = "x" ] ; then + if [ "x$PR3823" = "x" ] ; then # originally for 8: - # get PR3803.patch (from http://icedtea.classpath.org/hg/icedtea15) from most correct tag - # Do not push it or publish it (see https://icedtea.classpath.org/bugzilla/show_bug.cgi?id=3803) - echo "PR3803 not found. Downloading..." - wget https://icedtea.classpath.org/hg/icedtea15/raw-file/d68ffcc9a497/patches/pr3803.patch - echo "Applying ${PWD}/pr3803.patch" - patch -Np1 < pr3803.patch - rm pr3803.patch + # get PR3823.patch (from http://icedtea.classpath.org/hg/icedtea16) from most correct tag + # Do not push it or publish it (see https://icedtea.classpath.org/bugzilla/show_bug.cgi?id=3823) + echo "PR3823 not found. Downloading..." + wget https://icedtea.classpath.org/hg/icedtea16/raw-file/tip/patches/pr3823.patch + echo "Applying ${PWD}/pr3823.patch" + patch -Np1 < pr3823.patch + rm pr3823.patch else - echo "Applying ${PR3803}" - patch -Np1 < $PR3803 + echo "Applying ${PR3823}" + patch -Np1 < $PR3823 fi; find . -name '*.orig' -exec rm -vf '{}' ';' popd diff --git a/java-latest-openjdk.spec b/java-latest-openjdk.spec index 406f9ed..36f858e 100644 --- a/java-latest-openjdk.spec +++ b/java-latest-openjdk.spec @@ -247,18 +247,18 @@ %endif # New Version-String scheme-style defines -%global featurever 15 +%global featurever 16 %global interimver 0 -%global updatever 2 +%global updatever 0 %global patchver 0 # If you bump featurever, you must bump also vendor_version_string -# Used via new version scheme. JDK 15 was -# GA'ed in September 2020 => 20.9 -%global vendor_version_string 20.9 +# Used via new version scheme. JDK 16 was +# GA'ed in March 2020 => 21.3 +%global vendor_version_string 21.3 # buildjdkver is usually same as %%{featurever}, # but in time of bootstrap of next jdk, it is featurever-1, # and this it is better to change it here, on single place -%global buildjdkver %{featurever} +%global buildjdkver 15 # We don't add any LTS designator for STS packages (this package). # Neither for Fedora nor EPEL which would have %%{rhel} macro defined. %global lts_designator "" @@ -271,8 +271,8 @@ %global origin openjdk %global origin_nice OpenJDK %global top_level_dir_name %{origin} -%global buildver 7 -%global rpmrelease 1 +%global buildver 36 +%global rpmrelease 0 # 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 # Using 10 digits may overflow the int used for priority, so we combine the patch and build versions @@ -286,30 +286,27 @@ %global priority %( printf '%08d' 1 ) %endif %global newjavaver %{featurever}.%{interimver}.%{updatever}.%{patchver} - -# Omit trailing 0 in filenames when the patch version is 0 -%if 0%{?patchver} > 0 -%global filever %{newjavaver} -%else -%global filever %{featurever}.%{interimver}.%{updatever} -%endif - %global javaver %{featurever} +# Strip up to 6 trailing zeros in newjavaver, as the JDK does, to get the correct version used in filenames +%global filever %(svn=%{newjavaver}; for i in 1 2 3 4 5 6 ; do svn=${svn%%.0} ; done; echo ${svn}) + # Define milestone (EA for pre-releases, GA for releases) # Release will be (where N is usually a number starting at 1): # - 0.N%%{?extraver}%%{?dist} for EA releases, # - N%%{?extraver}{?dist} for GA releases %global is_ga 1 %if %{is_ga} -%global ea_designator "" +%global build_type GA +%global expected_ea_designator "" %global ea_designator_zip "" %global extraver %{nil} %global eaprefix %{nil} %else -%global ea_designator ea -%global ea_designator_zip -%{ea_designator} -%global extraver .%{ea_designator} +%global build_type EA +%global expected_ea_designator ea +%global ea_designator_zip -%{expected_ea_designator} +%global extraver .%{expected_ea_designator} %global eaprefix 0. %endif @@ -347,7 +344,7 @@ # fix for https://bugzilla.redhat.com/show_bug.cgi?id=1111349 # https://bugzilla.redhat.com/show_bug.cgi?id=1590796#c14 # https://bugzilla.redhat.com/show_bug.cgi?id=1655938 -%global _privatelibs libsplashscreen[.]so.*|libawt_xawt[.]so.*|libjli[.]so.*|libattach[.]so.*|libawt[.]so.*|libextnet[.]so.*|libawt_headless[.]so.*|libdt_socket[.]so.*|libfontmanager[.]so.*|libinstrument[.]so.*|libj2gss[.]so.*|libj2pcsc[.]so.*|libj2pkcs11[.]so.*|libjaas[.]so.*|libjavajpeg[.]so.*|libjdwp[.]so.*|libjimage[.]so.*|libjsound[.]so.*|liblcms[.]so.*|libmanagement[.]so.*|libmanagement_agent[.]so.*|libmanagement_ext[.]so.*|libmlib_image[.]so.*|libnet[.]so.*|libnio[.]so.*|libprefs[.]so.*|librmi[.]so.*|libsaproc[.]so.*|libsctp[.]so.*|libsunec[.]so.*|libzip[.]so.* +%global _privatelibs libsplashscreen[.]so.*|libawt_xawt[.]so.*|libjli[.]so.*|libattach[.]so.*|libawt[.]so.*|libextnet[.]so.*|libawt_headless[.]so.*|libdt_socket[.]so.*|libfontmanager[.]so.*|libinstrument[.]so.*|libj2gss[.]so.*|libj2pcsc[.]so.*|libj2pkcs11[.]so.*|libjaas[.]so.*|libjavajpeg[.]so.*|libjdwp[.]so.*|libjimage[.]so.*|libjsound[.]so.*|liblcms[.]so.*|libmanagement[.]so.*|libmanagement_agent[.]so.*|libmanagement_ext[.]so.*|libmlib_image[.]so.*|libnet[.]so.*|libnio[.]so.*|libprefs[.]so.*|librmi[.]so.*|libsaproc[.]so.*|libsctp[.]so.*|libzip[.]so.* %global _publiclibs libjawt[.]so.*|libjava[.]so.*|libjvm[.]so.*|libverify[.]so.*|libjsig[.]so.* %if %is_system_jdk %global __provides_exclude ^(%{_privatelibs})$ @@ -692,7 +689,6 @@ exit 0 %{_jvmdir}/%{sdkdir -- %{?1}}/lib/libsaproc.so %endif %{_jvmdir}/%{sdkdir -- %{?1}}/lib/libsctp.so -%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libsunec.so %{_jvmdir}/%{sdkdir -- %{?1}}/lib/libverify.so %{_jvmdir}/%{sdkdir -- %{?1}}/lib/libzip.so %dir %{_jvmdir}/%{sdkdir -- %{?1}}/lib/jfr @@ -1093,7 +1089,8 @@ URL: http://openjdk.java.net/ # to regenerate source0 (jdk) run update_package.sh # update_package.sh contains hard-coded repos, revisions, tags, and projects to regenerate the source archives -Source0: jdk-updates-jdk%{featurever}u-jdk-%{filever}+%{buildver}%{?tagsuffix:-%{tagsuffix}}.tar.xz +#Source0: openjdk-jdk%{featurever}u-jdk-%{filever}+%{buildver}%{?tagsuffix:-%{tagsuffix}}.tar.xz +Source0: openjdk-jdk%{featurever}-jdk-%{filever}+%{buildver}.tar.xz # Use 'icedtea_sync.sh' to update the following # They are based on code contained in the IcedTea project (3.x). @@ -1165,6 +1162,7 @@ BuildRequires: freetype-devel BuildRequires: giflib-devel BuildRequires: gcc-c++ BuildRequires: gdb +BuildRequires: harfbuzz-devel BuildRequires: lcms2-devel BuildRequires: libjpeg-devel BuildRequires: libpng-devel @@ -1566,8 +1564,8 @@ export CFLAGS="$CFLAGS -mieee" # We use ourcppflags because the OpenJDK build seems to # pass EXTRA_CFLAGS to the HotSpot C++ compiler... # Explicitly set the C++ standard as the default has changed on GCC >= 6 -EXTRA_CFLAGS="%ourcppflags -std=gnu++98 -Wno-error -fno-delete-null-pointer-checks -fno-lifetime-dse -fcommon" -EXTRA_CPP_FLAGS="%ourcppflags -std=gnu++98 -fno-delete-null-pointer-checks -fno-lifetime-dse -fcommon" +EXTRA_CFLAGS="%ourcppflags" +EXTRA_CPP_FLAGS="%ourcppflags" %ifarch %{power64} ppc # fix rpmlint warnings @@ -1586,6 +1584,24 @@ fi # Variable used in hs_err hook on build failures top_dir_abs_path=$(pwd)/%{top_level_dir_name} +# The OpenJDK version file includes the current +# upstream version information. For some reason, +# configure does not automatically use the +# default pre-version supplied there (despite +# what the file claims), so we pass it manually +# to configure +VERSION_FILE=${top_dir_abs_path}/make/autoconf/version-numbers +if [ -f ${VERSION_FILE} ] ; then + EA_DESIGNATOR=$(grep '^DEFAULT_PROMOTED_VERSION_PRE' ${VERSION_FILE} | cut -d '=' -f 2) +else + echo "Could not find OpenJDK version file."; + exit 16 +fi +if [ "x${EA_DESIGNATOR}" != "x%{expected_ea_designator}" ] ; then + echo "Spec file is configured for a %{build_type} build, but upstream version-pre setting is ${EA_DESIGNATOR}"; + exit 17 +fi + mkdir -p %{buildoutputdir -- $suffix} pushd %{buildoutputdir -- $suffix} @@ -1597,7 +1613,7 @@ bash ../configure \ --with-jobs=1 \ %endif --with-version-build=%{buildver} \ - --with-version-pre="%{ea_designator}" \ + --with-version-pre="${EA_DESIGNATOR}" \ --with-version-opt=%{lts_designator} \ --with-vendor-version-string="%{vendor_version_string}" \ --with-vendor-name="Red Hat, Inc." \ @@ -1613,11 +1629,13 @@ bash ../configure \ --with-giflib=system \ --with-libpng=system \ --with-lcms=system \ + --with-harfbuzz=system \ --with-stdc++lib=dynamic \ --with-extra-cxxflags="$EXTRA_CPP_FLAGS" \ --with-extra-cflags="$EXTRA_CFLAGS" \ --with-extra-ldflags="%{ourldflags}" \ --with-num-cores="$NUM_PROC" \ + --with-source-date="${SOURCE_DATE_EPOCH}" \ --disable-javac-server \ %ifarch %{zgc_arches} --with-jvm-features=zgc \ @@ -2129,6 +2147,18 @@ require "copy_jdk_configs.lua" %endif %changelog +* Fri Feb 19 2021 Andrew Hughes - 1:16.0.0.0.36-0.0.ea.rolling +- Update to jdk-16.0.0.0+36 +- Update tarball generation script to use git following OpenJDK's move to github +- Update tarball generation script to use PR3823 which handles JDK-8235710 changes +- Use upstream default for version-pre rather than setting it to "ea" or "" +- Drop libsunec.so which is no longer generated, thanks to JDK-8235710 +- Drop unnecessary compiler flags, dating back to work on GCC 6 & 10 +- Adapt RH1750419 alt-java patch to still apply after some variable re-naming in the makefiles +- Update filever to remove any trailing zeros, as in the OpenJDK build, and use for source filename +- Use system harfbuzz now this is supported. +- Pass SOURCE_DATE_EPOCH to build for reproducible builds + * Fri Feb 19 2021 Stephan Bergmann - 1:15.0.2.0.7-1.rolling - Hardcode /usr/sbin/alternatives for Flatpak builds diff --git a/rh1750419-redhat_alt_java.patch b/rh1750419-redhat_alt_java.patch index 70f45d4..88f5e5a 100644 --- a/rh1750419-redhat_alt_java.patch +++ b/rh1750419-redhat_alt_java.patch @@ -1,25 +1,27 @@ -diff -r 1356affa5e44 make/modules/java.base/Launcher.gmk ---- openjdk/make/modules/java.base/Launcher.gmk +diff --git openjdk.orig/make/modules/java.base/Launcher.gmk openjdk/make/modules/java.base/Launcher.gmk +index 700ddefda49..2882de68eb2 100644 +--- openjdk.orig/make/modules/java.base/Launcher.gmk +++ openjdk/make/modules/java.base/Launcher.gmk -@@ -37,6 +37,14 @@ +@@ -41,6 +41,14 @@ $(eval $(call SetupBuildLauncher, java, \ + OPTIMIZATION := HIGH, \ + )) - $(eval $(call SetupBuildLauncher, java, \ - CFLAGS := -DEXPAND_CLASSPATH_WILDCARDS -DENABLE_ARG_FILES, \ -+ EXTRA_RC_FLAGS := $(JAVA_RC_FLAGS), \ ++#Wno-error=cpp is present to allow commented warning in ifdef part of main.c ++$(eval $(call SetupBuildLauncher, alt-java, \ ++ CFLAGS := -DEXPAND_CLASSPATH_WILDCARDS -DENABLE_ARG_FILES -DREDHAT_ALT_JAVA -Wno-error=cpp, \ ++ EXTRA_RCFLAGS := $(JAVA_RCFLAGS), \ + VERSION_INFO_RESOURCE := $(JAVA_VERSION_INFO_RESOURCE), \ + OPTIMIZATION := HIGH, \ +)) + -+#Wno-error=cpp is present to allow commented warning in ifdef part of main.c -+$(eval $(call SetupBuildLauncher, alt-java, \ -+ CFLAGS := -DEXPAND_CLASSPATH_WILDCARDS -DENABLE_ARG_FILES -DREDHAT_ALT_JAVA -Wno-error=cpp, \ - EXTRA_RC_FLAGS := $(JAVA_RC_FLAGS), \ - VERSION_INFO_RESOURCE := $(JAVA_VERSION_INFO_RESOURCE), \ - OPTIMIZATION := HIGH, \ - -diff -r 25e94aa812b2 src/share/bin/alt_main.h ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ openjdk/src/java.base/share/native/launcher/alt_main.h Tue Jun 02 17:15:28 2020 +0100 + ifeq ($(call isTargetOs, windows), true) + $(eval $(call SetupBuildLauncher, javaw, \ + CFLAGS := -DJAVAW -DEXPAND_CLASSPATH_WILDCARDS -DENABLE_ARG_FILES, \ +diff --git openjdk.orig/src/java.base/share/native/launcher/alt_main.h openjdk/src/java.base/share/native/launcher/alt_main.h +new file mode 100644 +index 00000000000..697df2898ac +--- /dev/null ++++ openjdk/src/java.base/share/native/launcher/alt_main.h @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2019, Red Hat, Inc. All rights reserved. @@ -94,9 +96,10 @@ diff -r 25e94aa812b2 src/share/bin/alt_main.h +} + +#endif // REDHAT_ALT_JAVA -diff -r 25e94aa812b2 src/share/bin/main.c ---- openjdk/src/java.base/share/native/launcher/main.c Wed Feb 05 12:20:36 2020 -0300 -+++ openjdk/src/java.base/share/native/launcher/main.c Tue Jun 02 17:15:28 2020 +0100 +diff --git openjdk.orig/src/java.base/share/native/launcher/main.c openjdk/src/java.base/share/native/launcher/main.c +index b734fe2ba78..79dc8307650 100644 +--- openjdk.orig/src/java.base/share/native/launcher/main.c ++++ openjdk/src/java.base/share/native/launcher/main.c @@ -34,6 +34,14 @@ #include "jli_util.h" #include "jni.h" diff --git a/sources b/sources index f34e8af..c91ba79 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ SHA512 (tapsets-icedtea-3.15.0.tar.xz) = c752a197cb3d812d50c35e11e4722772be40096c81d2a57933e0d9b8a3c708b9c157b8108a4e33a06ca7bb81648170994408c75d6f69d5ff12785d0c31009671 -SHA512 (jdk-updates-jdk15u-jdk-15.0.2+7.tar.xz) = d82e932671464d5c3643bda95c66bccb8cff7f22fdfb242e8b17f41b8b07cdf843ce5e85388edff8ab81ccad09f17575451440039adada2cd49d479ea600bf18 +SHA512 (openjdk-jdk16-jdk-16+36.tar.xz) = 8fc618b960eb6d982d408dd5607dea61f230895b2e2b233793308048ae004868595f501e56a1ab79c3d6aa5b638e06f58383c34d0a09fb321f48678a3a89f5f4