From 18a7b4461186d528bff92fdae94c5b5e8b259fe3 Mon Sep 17 00:00:00 2001 From: Jiri Vanek Date: Fri, 22 Jun 2018 17:24:43 +0200 Subject: [PATCH] Added shenandoah hotspot --- .gitignore | 1 + README.md | 9 +++- java-openjdk.spec => java-11-openjdk.spec | 65 ++++++++++++++++++++--- sources | 1 + update_package.sh | 32 +++++++---- 5 files changed, 89 insertions(+), 19 deletions(-) rename java-openjdk.spec => java-11-openjdk.spec (96%) diff --git a/.gitignore b/.gitignore index e559b1f..0cd5f78 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ /jdk-updates-jdk10u-jdk-10.0.1+10.tar.xz /jdk-jdk-jdk-11+16.tar.xz /jdk-jdk-jdk-11+19.tar.xz +/jdk-shenandoah-jdk-ac148db384ee.tar.xz diff --git a/README.md b/README.md index 300ad8f..46f788b 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,8 @@ -# JDK 11 branch of java-openjdk +Package of LTS OpenJDK 11 +OpenJDK have release cadence of 6 months. but 3/4 of them are Short Term Supported for 6 months only. This package is designed to harbore them. Currently it is build on openJDK 11. LTSs (next is 15) will go as separate packages. + +JDK11 is last LTS release of Java platform. It is bringing many cool improvements - http://openjdk.java.net/projects/jdk/11/ and is landing to your Fedora. Where it will be maintained for several years. You will always be allowed to install Used LTSs in build root, and alongside via alternatives. + +See announcement: http://mail.openjdk.java.net/pipermail/discuss/2017-September/004281.html +See java SIG plans: https://jvanek.fedorapeople.org/devconf/2018/changesInjavaReleaseProcess.pdf -This is used by the jdk-11 module. diff --git a/java-openjdk.spec b/java-11-openjdk.spec similarity index 96% rename from java-openjdk.spec rename to java-11-openjdk.spec index df070fc..4fb37da 100644 --- a/java-openjdk.spec +++ b/java-11-openjdk.spec @@ -1,3 +1,26 @@ +# RPM conditionals so as to be able to dynamically produce +# slowdebug/release builds. See: +# http://rpm.org/user_doc/conditional_builds.html +# +# Examples: +# +# Produce release *and* slowdebug builds on x86_64 (default): +# $ rpmbuild -ba java-1.8.0-openjdk.spec +# +# Produce only release builds (no slowdebug builds) on x86_64: +# $ rpmbuild -ba java-1.8.0-openjdk.spec --without slowdebug +# +# Only produce a release build on x86_64: +# $ fedpkg mockbuild --without slowdebug +# +# Only produce a debug build on x86_64: +# $ fedpkg local --without release +# +# Enable slowdebug builds by default on relevant arches. +%bcond_without slowdebug +# Enable release builds by default on relevant arches. +%bcond_without release + # note: parametrized macros are order-sensitive (unlike not-parametrized) even with normal macros # also necessary when passing it as parameter to other macros. If not macro, then it is considered a switch # see the difference between global and deffine: @@ -13,8 +36,12 @@ %global debug_on with full debug on %global for_debug for packages with debug on -# by default we build normal build +%if %{with release} %global include_normal_build 1 +%else +%global include_normal_build 0 +%endif + %if %{include_normal_build} %global build_loop1 %{normal_suffix} %else @@ -30,6 +57,7 @@ %global aot_arches x86_64 %{aarch64} # By default, we build a debug build during main build on JIT architectures +%if %{with slowdebug} %ifarch %{jit_arches} # Temporarily disable slowdebug build for Aarch64 since it does not # bootcycle. See JDK-8204331. @@ -41,6 +69,17 @@ %else %global include_debug_build 0 %endif +%else +%global include_debug_build 0 +%endif + +# On x86_64 and AArch64, we use the Shenandoah HotSpot +%ifarch x86_64 %{aarch64} +%global use_shenandoah_hotspot 1 +%else +%global use_shenandoah_hotspot 0 +%endif + %if %{include_debug_build} %global build_loop2 %{debug_suffix} @@ -66,6 +105,7 @@ %global targets all docs %endif + # Filter out flags from the optflags macro that cause problems with the OpenJDK build # We filter out -O flags so that the optimisation of HotSpot is not lowered from O3 to O2 # We filter out -Wall which will otherwise cause HotSpot to produce hundreds of thousands of warnings (100+mb logs) @@ -91,7 +131,7 @@ # fix for https://bugzilla.redhat.com/show_bug.cgi?id=1111349 -%global _privatelibs libsplashscreen[.]so.*|libawt_xawt[.]so.*|libjawt[.]so.*|libjli[.]so.*|libattach[.]so.*|libawt[.]so.*|libextnet[.]so.*|libjsig[.]so.*|libawt_headless[.]so.*|libdt_socket[.]so.*|libfontmanager[.]so.*|libinstrument[.]so.*|libj2gss[.]so.*|libj2pcsc[.]so.*|libj2pkcs11[.]so.*|libjaas[.]so.*|libjava[.]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.*|libunpack[.]so.*|libverify[.]so.*|libzip[.]so.* +%global _privatelibs libjsoundalsa[.]so.*|libsplashscreen[.]so.*|libawt_xawt[.]so.*|libjawt[.]so.*|libjli[.]so.*|libattach[.]so.*|libawt[.]so.*|libextnet[.]so.*|libjsig[.]so.*|libawt_headless[.]so.*|libdt_socket[.]so.*|libfontmanager[.]so.*|libinstrument[.]so.*|libj2gss[.]so.*|libj2pcsc[.]so.*|libj2pkcs11[.]so.*|libjaas_unix[.]so.*|libjava[.]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.*|libunpack[.]so.*|libverify[.]so.*|libzip[.]so.*|lib[.]so\\(SUNWprivate_.* %global __provides_exclude ^(%{_privatelibs})$ %global __requires_exclude ^(%{_privatelibs})$ @@ -528,8 +568,8 @@ exit 0 %{_jvmdir}/%{sdkdir -- %{?1}}/lib/client/ %ifarch %{jit_arches} %ifnarch %{power64} -%attr(664, root, root) %ghost %{_jvmdir}/%{sdkdir -- %{?1}}/lib/server/classes.jsa -%attr(664, root, root) %ghost %{_jvmdir}/%{sdkdir -- %{?1}}/lib/client/classes.jsa +%attr(444, root, root) %ghost %{_jvmdir}/%{sdkdir -- %{?1}}/lib/server/classes.jsa +%attr(444, root, root) %ghost %{_jvmdir}/%{sdkdir -- %{?1}}/lib/client/classes.jsa %endif %endif %dir %{etcjavasubdir} @@ -802,7 +842,7 @@ Provides: java-%{javaver}-%{origin}-src%{?1} = %{epoch}:%{version}-%{release} # Prevent brp-java-repack-jars from being run %global __jar_repack 0 -Name: java-%{origin} +Name: java-%{javaver}-%{origin} Version: %{newjavaver}.%{buildver} Release: 1%{?dist} # java-1.5.0-ibm from jpackage.org set Epoch to 1 for unknown reasons @@ -834,6 +874,10 @@ URL: http://openjdk.java.net/ Source0: jdk-jdk-jdk-%{majorver}+%{buildver}.tar.xz +# Shenandoah HotSpot +# current name used with tip and bleading edge may be incorrect +Source1: jdk-shenandoah-jdk-ac148db384ee.tar.xz + # Use 'generate_tarballs.sh' to generate the following tarballs # They are based on code contained in the IcedTea7 project @@ -1123,7 +1167,7 @@ else exit 12 fi if [ %{include_debug_build} -eq 0 -a %{include_normal_build} -eq 0 ] ; then - echo "You have disabled both include_debug_build and include_debug_build. That is a no go." + echo "You have disabled both include_debug_build and include_normal_build. That is a no go." exit 13 fi %setup -q -c -n %{uniquesuffix ""} -T -a 0 @@ -1134,6 +1178,15 @@ if [ $prioritylength -ne 7 ] ; then exit 14 fi +%if %{use_shenandoah_hotspot} +# On Shenandoah-supported architectures, replace HotSpot with +# the Shenandoah version +pushd openjdk/src +rm -rf hotspot +tar -xf %{SOURCE1} +popd +%endif + # OpenJDK patches # Remove libraries that are linked diff --git a/sources b/sources index fa743a6..ac3d5a9 100644 --- a/sources +++ b/sources @@ -1,2 +1,3 @@ SHA512 (systemtap-tapset-3.6.0pre02.tar.xz) = 848f42ef7ca751e723fd50e3a6da14c0965ad4da37ea3331568658e27497b7a7e4b9aad3dedd264ad0bb5566c37a92302b905f10258a4e2c89dc4ba609e55481 SHA512 (jdk-jdk-jdk-11+19.tar.xz) = f99aef9e7a4896dfbcdb80f620ad44e69e07760b7fcf100be8cd12070797f8e7a568baec998f32bf8727595d6ed246fd2b53ad9ce39e984859d5174015cedf7a +SHA512 (jdk-shenandoah-jdk-ac148db384ee.tar.xz) = 1aa6a6663eaa9e6cb681753a3015929fab5ff4e339cd718f96281ed6adcc5cf09e764732cc9a06cc97ae071ca4e70172f23909383ff8e777a5fc124069aa5d74 diff --git a/update_package.sh b/update_package.sh index d3fa3f7..68d045e 100644 --- a/update_package.sh +++ b/update_package.sh @@ -61,15 +61,12 @@ else echo "${FILENAME} already exists, using" fi -echo "nothing more TBD for 11 for now!!" -exit 0 - -echo "Touching spec: $SPEC" -sed -i "s/^%global\s\+project.*/%global project ${PROJECT_NAME}/" $SPEC -sed -i "s/^%global\s\+repo.*/%global repo ${REPO_NAME}/" $SPEC -sed -i "s/^%global\s\+revision.*/%global revision ${VERSION}/" $SPEC +#echo "Touching spec: $SPEC" +#sed -i "s/^%global\s\+project.*/%global project ${PROJECT_NAME}/" $SPEC +#sed -i "s/^%global\s\+repo.*/%global repo ${REPO_NAME}/" $SPEC +#sed -i "s/^%global\s\+revision.*/%global revision ${VERSION}/" $SPEC # updated sources, resetting release -sed -i "s/^Release:.*/Release: $RELEASE.%{buildver}%{?dist}/" $SPEC +#sed -i "s/^Release:.*/Release: $RELEASE.%{buildver}%{?dist}/" $SPEC #https://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance#Bash function levenshtein { @@ -111,14 +108,21 @@ if [ "x$VERSION" = "xtip" ] ; then VERSION="tip" else #hardcoding version for anything else except tip - VERSION="aarch64-shenandoah-jdk8u131-b12-shenandoah-merge-2017-04-20" + VERSION="tip" fi -MAIN_REPO_NAME=$REPO_NAME -REPO_NAME=jdk8u-shenandoah +MAIN_REPO_NAME=shenandoah +REPO_NAME=jdk +#PROJECT_NAME=$REPO_NAME-$MAIN_REPO_NAME ??? MAIN_FILE_NAME_ROOT=$FILE_NAME_ROOT FILE_NAME_ROOT=${PROJECT_NAME}-${REPO_NAME}-${VERSION} FILENAME_SH=${FILE_NAME_ROOT}.tar.${COMPRESSION} + +echo "this fialed last time, got http://hg.openjdk.java.net/shenandoah/jdk/archive/ac148db384ee.zip instead" +###TODO! compress only hotspot!!! REPOS="hotspot" +###TODO! compress only hotspot!!! + +exit 1 if [ ! -f ${FILENAME_SH} ] ; then echo "Generating ${FILENAME_SH}" @@ -127,9 +131,15 @@ else echo "${FILENAME_SH} already exists, using" fi +mv jdk-jdk-tip.tar.xz jdk-shenandoah-jdk-tip.tar.xz + sed -i "s/^Source1:.*/Source1: ${FILENAME_SH}/" $SPEC git --no-pager diff $SPEC +echo "shenandoah hotpsot source generated and used" +echo "nothing more for shenandoah jdk 11 now!" +exit 0 + # find the most similar sources name and replace it by newly generated one. echo "Old sources" cat sources