diff --git a/.gitignore b/.gitignore index 8e6cb15..ec3bc80 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,20 @@ +SOURCES/java-1.8.0-openjdk-portable-1.8.0.362.b08-4.portable.docs.el.aarch64.tar.xz +SOURCES/java-1.8.0-openjdk-portable-1.8.0.362.b08-4.portable.docs.el.ppc64le.tar.xz +SOURCES/java-1.8.0-openjdk-portable-1.8.0.362.b08-4.portable.docs.el.s390x.tar.xz +SOURCES/java-1.8.0-openjdk-portable-1.8.0.362.b08-4.portable.docs.el.x86_64.tar.xz +SOURCES/java-1.8.0-openjdk-portable-1.8.0.362.b08-4.portable.fastdebug.jdk.el.aarch64.tar.xz +SOURCES/java-1.8.0-openjdk-portable-1.8.0.362.b08-4.portable.fastdebug.jdk.el.ppc64le.tar.xz +SOURCES/java-1.8.0-openjdk-portable-1.8.0.362.b08-4.portable.fastdebug.jdk.el.x86_64.tar.xz +SOURCES/java-1.8.0-openjdk-portable-1.8.0.362.b08-4.portable.misc.el.aarch64.tar.xz +SOURCES/java-1.8.0-openjdk-portable-1.8.0.362.b08-4.portable.misc.el.ppc64le.tar.xz +SOURCES/java-1.8.0-openjdk-portable-1.8.0.362.b08-4.portable.misc.el.s390x.tar.xz +SOURCES/java-1.8.0-openjdk-portable-1.8.0.362.b08-4.portable.misc.el.x86_64.tar.xz +SOURCES/java-1.8.0-openjdk-portable-1.8.0.362.b08-4.portable.slowdebug.jdk.el.aarch64.tar.xz +SOURCES/java-1.8.0-openjdk-portable-1.8.0.362.b08-4.portable.slowdebug.jdk.el.ppc64le.tar.xz +SOURCES/java-1.8.0-openjdk-portable-1.8.0.362.b08-4.portable.slowdebug.jdk.el.x86_64.tar.xz +SOURCES/java-1.8.0-openjdk-portable-1.8.0.362.b08-4.portable.unstripped.jdk.el.aarch64.tar.xz +SOURCES/java-1.8.0-openjdk-portable-1.8.0.362.b08-4.portable.unstripped.jdk.el.ppc64le.tar.xz +SOURCES/java-1.8.0-openjdk-portable-1.8.0.362.b08-4.portable.unstripped.jdk.el.s390x.tar.xz +SOURCES/java-1.8.0-openjdk-portable-1.8.0.362.b08-4.portable.unstripped.jdk.el.x86_64.tar.xz SOURCES/openjdk-shenandoah-jdk8u-shenandoah-jdk8u362-b09-4curve.tar.xz SOURCES/tapsets-icedtea-3.15.0.tar.xz diff --git a/.java-1.8.0-openjdk.metadata b/.java-1.8.0-openjdk.metadata index 458b439..d4b7b4e 100644 --- a/.java-1.8.0-openjdk.metadata +++ b/.java-1.8.0-openjdk.metadata @@ -1,2 +1,20 @@ +5040c94ac7c5179ea177bfc9ef75328eb4241df0 SOURCES/java-1.8.0-openjdk-portable-1.8.0.362.b08-4.portable.docs.el.aarch64.tar.xz +446076472f347a57c4fa011005179bebc1cde458 SOURCES/java-1.8.0-openjdk-portable-1.8.0.362.b08-4.portable.docs.el.ppc64le.tar.xz +60da42b3472f51ce19b77e0dcca1bc0d3d361ba5 SOURCES/java-1.8.0-openjdk-portable-1.8.0.362.b08-4.portable.docs.el.s390x.tar.xz +98265591c2ff120ac6aa962a480a0f2c81b83b3b SOURCES/java-1.8.0-openjdk-portable-1.8.0.362.b08-4.portable.docs.el.x86_64.tar.xz +eb971e577fa2a015d196cf0b0cd153d3b1b43eb8 SOURCES/java-1.8.0-openjdk-portable-1.8.0.362.b08-4.portable.fastdebug.jdk.el.aarch64.tar.xz +b30396042c2b814aa9d1e5d7dca000bb38fb9b24 SOURCES/java-1.8.0-openjdk-portable-1.8.0.362.b08-4.portable.fastdebug.jdk.el.ppc64le.tar.xz +9de8f60988c05f5d268fd6cfb12e31302d9f6043 SOURCES/java-1.8.0-openjdk-portable-1.8.0.362.b08-4.portable.fastdebug.jdk.el.x86_64.tar.xz +d37e85a6b41ea87f803e864612a5e0b00e75c300 SOURCES/java-1.8.0-openjdk-portable-1.8.0.362.b08-4.portable.misc.el.aarch64.tar.xz +446720bd908c3a94c10857344f3a1df065000f72 SOURCES/java-1.8.0-openjdk-portable-1.8.0.362.b08-4.portable.misc.el.ppc64le.tar.xz +6422c248e0f9cab88f38c41e4736ad55993888e3 SOURCES/java-1.8.0-openjdk-portable-1.8.0.362.b08-4.portable.misc.el.s390x.tar.xz +6a657b7794fdb110a255464b5c96ca4ce3c1e717 SOURCES/java-1.8.0-openjdk-portable-1.8.0.362.b08-4.portable.misc.el.x86_64.tar.xz +84caa2fb432ad3b86fc680417c4dd2f31b13a075 SOURCES/java-1.8.0-openjdk-portable-1.8.0.362.b08-4.portable.slowdebug.jdk.el.aarch64.tar.xz +980548c52d9b251f9f4fc5a4aef619f975e51130 SOURCES/java-1.8.0-openjdk-portable-1.8.0.362.b08-4.portable.slowdebug.jdk.el.ppc64le.tar.xz +34774ec568094a519ef14d48e1c0457e156c5d60 SOURCES/java-1.8.0-openjdk-portable-1.8.0.362.b08-4.portable.slowdebug.jdk.el.x86_64.tar.xz +b71a0a3de6ac340fac5934a6d3105791f697d460 SOURCES/java-1.8.0-openjdk-portable-1.8.0.362.b08-4.portable.unstripped.jdk.el.aarch64.tar.xz +affb52225ed805edbad7149ceb5db7a1cdeba237 SOURCES/java-1.8.0-openjdk-portable-1.8.0.362.b08-4.portable.unstripped.jdk.el.ppc64le.tar.xz +1a58a1681a661ad0bcac525ce43e3216b060f093 SOURCES/java-1.8.0-openjdk-portable-1.8.0.362.b08-4.portable.unstripped.jdk.el.s390x.tar.xz +97b42aae506ddfd6b67501940764f4d2018842d5 SOURCES/java-1.8.0-openjdk-portable-1.8.0.362.b08-4.portable.unstripped.jdk.el.x86_64.tar.xz 10817d699dd7c85b03cfbd8eb820e00b19ddcae7 SOURCES/openjdk-shenandoah-jdk8u-shenandoah-jdk8u362-b09-4curve.tar.xz 7ae2cba67467825b2c2a5fec7aea041865023002 SOURCES/tapsets-icedtea-3.15.0.tar.xz diff --git a/SOURCES/repackReproduciblePolycies.sh b/SOURCES/repackReproduciblePolycies.sh index f356bd3..351e7a9 100644 --- a/SOURCES/repackReproduciblePolycies.sh +++ b/SOURCES/repackReproduciblePolycies.sh @@ -17,7 +17,7 @@ fi d=`mktemp -d` NW=$d/$f pushd $d - jar xf $ORIG + unzip $ORIG cat $M # sed -i "s/Created-By.*/Created-By: 1.7.0/g" $M sed -i "s/Created-By.*/Created-By: $2/g" $M diff --git a/SPECS/java-1.8.0-openjdk.spec b/SPECS/java-1.8.0-openjdk.spec index 53abe58..d7cece3 100644 --- a/SPECS/java-1.8.0-openjdk.spec +++ b/SPECS/java-1.8.0-openjdk.spec @@ -123,6 +123,8 @@ %global ssbd_arches x86_64 # Set of architectures where we verify backtraces with gdb %global gdb_arches %{jit_arches} %{zero_arches} +# Set of architectures for which we have a portable build +%global portable_build_arches %{aarch64} %{power64} s390x x86_64 # By default, we build a debug build during main build on JIT architectures %if %{with slowdebug} @@ -189,6 +191,9 @@ %endif %global bootjdk /usr/lib/jvm/java-%{buildjdkver}-openjdk +# debugedit tool for rewriting ELF file paths +%global debugedit %{_rpmconfigdir}/debugedit + # Filter out flags from the optflags macro that cause problems with the OpenJDK build # We filter out -O flags so that the optimization of HotSpot is not lowered from O3 to O2 # We filter out -Wall which will otherwise cause HotSpot to produce hundreds of thousands of warnings (100+mb logs) @@ -334,7 +339,16 @@ %global updatever %(VERSION=%{whole_update}; echo ${VERSION##*u}) # eg jdk8u60-b27 -> b27 %global buildver %(VERSION=%{version_tag}; echo ${VERSION##*-}) -%global rpmrelease 3 +%global rpmrelease 4 +# Settings used by the portable build +%global portablerelease 4 +%global portablesuffix el7openjdkportable +%global portablebuilddir /builddir/build/BUILD +# Temporary override until we have the portable version in sync +# b09 only contains some build fixes for RHEL 6 & Windows +%global portablebuildver b08 +%global portableversion %{javaver}.%{updatever}.%{portablebuildver} + # Define milestone (EA for pre-releases, GA ("fcs") for releases) # Release will be (where N is usually a number starting at 1): # - 0.N%%{?extraver}%%{?dist} for EA releases, @@ -1068,7 +1082,11 @@ exit 0 %define files_demo() %{expand: %defattr(-,root,root,-) +%ifarch %{portable_build_arches} +%license %{installoutputdir -- %{?1}}/jre/LICENSE +%else %license %{installoutputdir -- %{?1}}/images/%{jdkimage}/jre/LICENSE +%endif } %define files_src() %{expand: @@ -1080,13 +1098,21 @@ exit 0 %define files_javadoc() %{expand: %defattr(-,root,root,-) %doc %{_javadocdir}/%{uniquejavadocdir -- %{?1}} +%ifarch %{portable_build_arches} +%license %{installoutputdir -- %{?1}}/jre/LICENSE +%else %license %{installoutputdir -- %{?1}}/images/%{jdkimage}/jre/LICENSE +%endif } %define files_javadoc_zip() %{expand: %defattr(-,root,root,-) %doc %{_javadocdir}/%{uniquejavadocdir -- %{?1}}.zip +%ifarch %{portable_build_arches} +%license %{installoutputdir -- %{?1}}/jre/LICENSE +%else %license %{installoutputdir -- %{?1}}/images/%{jdkimage}/jre/LICENSE +%endif } %define files_accessibility() %{expand: @@ -1334,6 +1360,65 @@ Source20: repackReproduciblePolycies.sh Source100: config.guess Source101: config.sub +# TODO: Portable packages are not yet available in buildroot +# Temporarily add them as sources + +# aarch64 +Source1000: %{name}-portable-%{portableversion}-%{portablerelease}.portable.unstripped.jdk.el.aarch64.tar.xz +Source1002: %{name}-portable-%{portableversion}-%{portablerelease}.portable.docs.el.aarch64.tar.xz +Source1003: %{name}-portable-%{portableversion}-%{portablerelease}.portable.misc.el.aarch64.tar.xz +Source1004: %{name}-portable-%{portableversion}-%{portablerelease}.portable.slowdebug.jdk.el.aarch64.tar.xz +Source1006: %{name}-portable-%{portableversion}-%{portablerelease}.portable.fastdebug.jdk.el.aarch64.tar.xz + +# ppc64le +Source2000: %{name}-portable-%{portableversion}-%{portablerelease}.portable.unstripped.jdk.el.ppc64le.tar.xz +Source2002: %{name}-portable-%{portableversion}-%{portablerelease}.portable.docs.el.ppc64le.tar.xz +Source2003: %{name}-portable-%{portableversion}-%{portablerelease}.portable.misc.el.ppc64le.tar.xz +Source2004: %{name}-portable-%{portableversion}-%{portablerelease}.portable.slowdebug.jdk.el.ppc64le.tar.xz +Source2006: %{name}-portable-%{portableversion}-%{portablerelease}.portable.fastdebug.jdk.el.ppc64le.tar.xz + +# s390x +Source3000: %{name}-portable-%{portableversion}-%{portablerelease}.portable.unstripped.jdk.el.s390x.tar.xz +Source3002: %{name}-portable-%{portableversion}-%{portablerelease}.portable.docs.el.s390x.tar.xz +Source3003: %{name}-portable-%{portableversion}-%{portablerelease}.portable.misc.el.s390x.tar.xz + +# x86_64 +Source4000: %{name}-portable-%{portableversion}-%{portablerelease}.portable.unstripped.jdk.el.x86_64.tar.xz +Source4002: %{name}-portable-%{portableversion}-%{portablerelease}.portable.docs.el.x86_64.tar.xz +Source4003: %{name}-portable-%{portableversion}-%{portablerelease}.portable.misc.el.x86_64.tar.xz +Source4004: %{name}-portable-%{portableversion}-%{portablerelease}.portable.slowdebug.jdk.el.x86_64.tar.xz +Source4006: %{name}-portable-%{portableversion}-%{portablerelease}.portable.fastdebug.jdk.el.x86_64.tar.xz + +# Setup variables to reference correct sources +%ifarch %{aarch64} +%global releasezip %{SOURCE1000} +%global docszip %{SOURCE1002} +%global misczip %{SOURCE1003} +%global slowdebugzip %{SOURCE1004} +%global fastdebugzip %{SOURCE1006} +%endif +%ifarch %{ppc64le} +%global releasezip %{SOURCE2000} +%global docszip %{SOURCE2002} +%global misczip %{SOURCE2003} +%global slowdebugzip %{SOURCE2004} +%global fastdebugzip %{SOURCE2006} +%endif +%ifarch s390x +%global releasezip %{SOURCE3000} +%global docszip %{SOURCE3002} +%global misczip %{SOURCE3003} +%global slowdebugzip %{nil} +%global fastdebugzip %{nil} +%endif +%ifarch x86_64 +%global releasezip %{SOURCE4000} +%global docszip %{SOURCE4002} +%global misczip %{SOURCE4003} +%global slowdebugzip %{SOURCE4004} +%global fastdebugzip %{SOURCE4006} +%endif + ############################################ # # RPM/distribution specific patches @@ -1344,7 +1429,7 @@ Source101: config.sub ############################################ # Accessibility patches -# Ignore AWTError when assistive technologies are loaded +# Ignore AWTError when assistive technologies are loaded Patch1: rh1648242-accessible_toolkit_crash_do_not_break_jvm.patch # Restrict access to java-atk-wrapper classes Patch3: rh1648644-java_access_bridge_privileged_security.patch @@ -1521,8 +1606,19 @@ BuildRequires: pkgconfig BuildRequires: xorg-x11-proto-devel BuildRequires: zip BuildRequires: unzip +# For definitions and macros like jvmdir +BuildRequires: javapackages-filesystem +%ifarch %{portable_build_arches} +# TODO: Portable packages are not yet available in buildroot +#BuildRequires: %{name}-portable-unstripped = %{VERSION} +#BuildRequires: %{name}-portable-docs = %{VERSION} +#BuildRequires: %{name}-portable-misc = %{VERSION} +#BuildRequires: %{name}-portable-devel-fastdebug = %{VERSION} +#BuildRequires: %{name}-portable-devel-slowdebug = %{VERSION} +%else # Require a boot JDK which doesn't fail due to RH1482244 BuildRequires: java-%{buildjdkver}-openjdk-devel >= 1.7.0.151-2.6.11.3 +%endif # Zero-assembler build requirement %ifarch %{zero_arches} BuildRequires: libffi-devel @@ -1550,9 +1646,11 @@ Provides: bundled(lcms2) = 2.10.0 Provides: bundled(libjpeg) = 6b # Version in jdk/src/share/native/sun/awt/libpng/png.h Provides: bundled(libpng) = 1.6.37 +%ifnarch %{portable_build_arches} # We link statically against libstdc++ to increase portability BuildRequires: libstdc++-static %endif +%endif # this is always built, also during debug-only build # when it is built in debug-only this package is just placeholder @@ -1958,6 +2056,8 @@ sed -i -e "s:^security.systemCACerts=.*:security.systemCACerts=%{cacerts_file}:" %build +%ifnarch %{portable_build_arches} + # How many CPU's do we have? export NUM_PROC=%(/usr/bin/getconf _NPROCESSORS_ONLN 2> /dev/null || :) export NUM_PROC=${NUM_PROC:-1} @@ -2006,7 +2106,7 @@ function buildjdk() { libc_link_opt="static"; else libc_link_opt="dynamic"; - fi + fi echo "Checking build JDK ${buildjdk} is operational..." ${buildjdk}/bin/java -version @@ -2056,13 +2156,13 @@ function buildjdk() { cat hotspot-spec.gmk make \ - JAVAC_FLAGS=-g \ - LOG=trace \ - SCTP_WERROR= \ - ${maketargets} || ( pwd; find ${top_srcdir_abs_path} ${top_builddir_abs_path} -name "hs_err_pid*.log" | xargs cat && false ) + JAVAC_FLAGS=-g \ + LOG=trace \ + SCTP_WERROR= \ + ${maketargets} || ( pwd; find ${top_srcdir_abs_path} ${top_builddir_abs_path} -name "hs_err_pid*.log" | xargs cat && false ) popd -} + } function installjdk() { local outputdir=${1} @@ -2074,12 +2174,12 @@ function installjdk() { echo "Installing images..." mv ${outputdir}/images ${installdir} if [ -d ${outputdir}/bundles ] ; then - echo "Installing bundles..."; - mv ${outputdir}/bundles ${installdir} ; + echo "Installing bundles..."; + mv ${outputdir}/bundles ${installdir} ; fi if [ -d ${outputdir}/docs ] ; then - echo "Installing docs..."; - mv ${outputdir}/docs ${installdir} ; + echo "Installing docs..."; + mv ${outputdir}/docs ${installdir} ; fi %if !%{with artifacts} @@ -2088,50 +2188,37 @@ function installjdk() { %endif if [ -d ${imagepath} ] ; then - # the build (erroneously) removes read permissions from some jars - # this is a regression in OpenJDK 7 (our compiler): - # http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=1437 - find ${imagepath} -iname '*.jar' -exec chmod ugo+r {} \; - chmod ugo+r ${imagepath}/lib/ct.sym - - # remove redundant *diz and *debuginfo files - find ${imagepath} -iname '*.diz' -exec rm -v {} \; - find ${imagepath} -iname '*.debuginfo' -exec rm -v {} \; + # the build (erroneously) removes read permissions from some jars + # this is a regression in OpenJDK 7 (our compiler): + # http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=1437 + find ${imagepath} -iname '*.jar' -exec chmod ugo+r {} \; + chmod ugo+r ${imagepath}/lib/ct.sym - # Build screws up permissions on binaries - # https://bugs.openjdk.java.net/browse/JDK-8173610 - find ${imagepath} -iname '*.so' -exec chmod +x {} \; - find ${imagepath}/bin/ -exec chmod +x {} \; + # remove redundant *diz and *debuginfo files + find ${imagepath} -iname '*.diz' -exec rm -v {} \; + find ${imagepath} -iname '*.debuginfo' -exec rm -v {} \; - # Install nss.cfg right away as we will be using the JRE above - install -m 644 nss.cfg ${imagepath}/jre/lib/security/ + # Build screws up permissions on binaries + # https://bugs.openjdk.java.net/browse/JDK-8173610 + find ${imagepath} -iname '*.so' -exec chmod +x {} \; + find ${imagepath}/bin/ -exec chmod +x {} \; - # Install nss.fips.cfg: NSS configuration for global FIPS mode (crypto-policies) - install -m 644 nss.fips.cfg ${imagepath}/jre/lib/security/ + # Install nss.cfg right away as we will be using the JRE above + install -m 644 nss.cfg ${imagepath}/jre/lib/security/ - # Turn on system security properties - sed -i -e "s:^security.useSystemPropertiesFile=.*:security.useSystemPropertiesFile=true:" \ - ${imagepath}/jre/lib/security/java.security + # Install nss.fips.cfg: NSS configuration for global FIPS mode (crypto-policies) + install -m 644 nss.fips.cfg ${imagepath}/jre/lib/security/ - # Use system-wide tzdata - mv ${imagepath}/jre/lib/tzdb.dat{,.upstream} - ln -sv %{_datadir}/javazi-1.8/tzdb.dat ${imagepath}/jre/lib/tzdb.dat + # add alt-java man page + pushd ${imagepath} + echo "Hardened java binary recommended for launching untrusted code from the Web e.g. javaws" > man/man1/%{alt_java_name}.1 + cat man/man1/java.1 >> man/man1/%{alt_java_name}.1 + popd - # Rename OpenJDK cacerts database - mv ${imagepath}/jre/lib/security/cacerts{,.upstream} - # Install cacerts symlink needed by some apps which hard-code the path - ln -sv %{cacerts_file} ${imagepath}/jre/lib/security + # Print release information + cat ${imagepath}/release - # add alt-java man page - pushd ${imagepath} - echo "Hardened java binary recommended for launching untrusted code from the Web e.g. javaws" > man/man1/%{alt_java_name}.1 - cat man/man1/java.1 >> man/man1/%{alt_java_name}.1 - popd - - # Print release information - cat ${imagepath}/release - - fi + fi } %if %{build_hotspot_first} @@ -2144,51 +2231,126 @@ function installjdk() { systemjdk=%{bootjdk} %endif +%endif # portable_builds + +function customisejdk() { + local imagepath=${1} + + if [ -d ${imagepath} ] ; then + # Turn on system security properties + sed -i -e "s:^security.useSystemPropertiesFile=.*:security.useSystemPropertiesFile=true:" \ + ${imagepath}/jre/lib/security/java.security + + # Use system-wide tzdata + mv ${imagepath}/jre/lib/tzdb.dat{,.upstream} + ln -sv %{_datadir}/javazi-1.8/tzdb.dat ${imagepath}/jre/lib/tzdb.dat + + # Rename OpenJDK cacerts database + mv ${imagepath}/jre/lib/security/cacerts{,.upstream} + # Install cacerts symlink needed by some apps which hard-code the path + ln -sv %{cacerts_file} ${imagepath}/jre/lib/security + fi +} + for suffix in %{build_loop} ; do -if [ "x$suffix" = "x" ] ; then - debugbuild=release -else - # change --something to something - debugbuild=`echo $suffix | sed "s/-//g"` -fi -builddir=%{buildoutputdir -- $suffix} -bootbuilddir=boot${builddir} -installdir=%{installoutputdir -- $suffix} -bootinstalldir=boot${installdir} -link_opt="%{link_type}" - -# Debug builds don't need same targets as release for -# build speed-up. We also avoid bootstrapping these -# slower builds. -if echo $debugbuild | grep -q "debug" ; then - maketargets="%{debug_targets}" - run_bootstrap=false -else - maketargets="%{release_targets}" - run_bootstrap=%{bootstrap_build} -fi +%ifarch %{portable_build_arches} -if ${run_bootstrap} ; then - buildjdk ${bootbuilddir} ${systemjdk} "%{bootstrap_targets}" ${debugbuild} ${link_opt} - installjdk ${bootbuilddir} ${bootinstalldir} - buildjdk ${builddir} $(pwd)/${bootinstalldir}/images/%{jdkimage} "${maketargets}" ${debugbuild} ${link_opt} - installjdk ${builddir} ${installdir} - %{!?with_artifacts:rm -rf ${bootinstalldir}} -else - buildjdk ${builddir} ${systemjdk} "${maketargets}" ${debugbuild} ${link_opt} - installjdk ${builddir} ${installdir} -fi + if [ "x$suffix" = "x" ] ; then + jdkzip=%{releasezip} + elif [ "x$suffix" = "x%{fastdebug_suffix_unquoted}" ] ; then + jdkzip=%{fastdebugzip} + else # slowdebug + jdkzip=%{slowdebugzip} + debugbuild=release + fi + + installdir=%{installoutputdir -- ${suffix}} + imagedir=${installdir} + + # TODO: should verify checksums when using packages from buildroot + tar -xJf ${jdkzip} + mkdir -p $(dirname ${installdir}) + mv %{name}* ${installdir} + # Fix build paths in ELF files so it looks like we built them + portablenvr="%{name}-portable-%{portableversion}-%{portablerelease}.%{portablesuffix}.%{_arch}" + for file in $(find ${installdir} -type f) ; do + if file ${file} | grep -q 'ELF'; then + %{debugedit} -b %{portablebuilddir}/${portablenvr} -d $(pwd) -n ${file} + fi + done + +%else + + if [ "x$suffix" = "x" ] ; then + debugbuild=release + else + # change --something to something + debugbuild=`echo $suffix | sed "s/-//g"` + fi + + builddir=%{buildoutputdir -- $suffix} + bootbuilddir=boot${builddir} + installdir=%{installoutputdir -- $suffix} + bootinstalldir=boot${installdir} + imagedir=${installdir}/images/%{jdkimage} + link_opt="%{link_type}" + + # Debug builds don't need same targets as release for + # build speed-up. We also avoid bootstrapping these + # slower builds. + if echo $debugbuild | grep -q "debug" ; then + maketargets="%{debug_targets}" + run_bootstrap=false + else + maketargets="%{release_targets}" + run_bootstrap=%{bootstrap_build} + fi + + if ${run_bootstrap} ; then + buildjdk ${bootbuilddir} ${systemjdk} "%{bootstrap_targets}" ${debugbuild} ${link_opt} + installjdk ${bootbuilddir} ${bootinstalldir} + buildjdk ${builddir} $(pwd)/${bootinstalldir}/images/%{jdkimage} "${maketargets}" ${debugbuild} ${link_opt} + installjdk ${builddir} ${installdir} + %{!?with_artifacts:rm -rf ${bootinstalldir}} + else + buildjdk ${builddir} ${systemjdk} "${maketargets}" ${debugbuild} ${link_opt} + installjdk ${builddir} ${installdir} + fi + +%endif # portable_builds + + # Final setup on the main image + customisejdk ${imagedir} + + # Print release information + cat ${imagedir}/release # build cycles done +%ifarch %{portable_build_arches} + +docdir=%{installoutputdir -- "-docs"} +tar -xJf %{docszip} +mv %{name}*.docs.* ${docdir} + +miscdir=%{installoutputdir -- "-misc"} +tar -xJf %{misczip} +mv %{name}*.misc.* ${miscdir} + +%endif + %check # We test debug first as it will give better diagnostics on a crash for suffix in %{build_loop} ; do +%ifarch %{portable_build_arches} +export JAVA_HOME=$(pwd)/%{installoutputdir -- $suffix} +%else export JAVA_HOME=$(pwd)/%{installoutputdir -- $suffix}/images/%{jdkimage} +%endif # Check unlimited policy has been used $JAVA_HOME/bin/javac -d . %{SOURCE13} @@ -2271,7 +2433,7 @@ done # Make sure gdb can do a backtrace based on line numbers on libjvm.so # javaCalls.cpp:58 should map to: -# http://hg.openjdk.java.net/jdk8u/jdk8u/hotspot/file/ff3b27e6bcc2/src/share/vm/runtime/javaCalls.cpp#l58 +# http://hg.openjdk.java.net/jdk8u/jdk8u/hotspot/file/ff3b27e6bcc2/src/share/vm/runtime/javaCalls.cpp#l58 # Using line number 1 might cause build problems. See: # https://bugzilla.redhat.com/show_bug.cgi?id=1539664 # https://bugzilla.redhat.com/show_bug.cgi?id=1538767 @@ -2292,7 +2454,7 @@ grep 'JavaCallWrapper::JavaCallWrapper' gdb.out %endif # Check src.zip has all sources. See RHBZ#1130490 -jar -tf $JAVA_HOME/src.zip | grep 'sun.misc.Unsafe' +unzip -l $JAVA_HOME/src.zip | grep 'sun.misc.Unsafe' # Check class files include useful debugging information $JAVA_HOME/bin/javap -l java.lang.Object | grep "Compiled from" @@ -2312,12 +2474,32 @@ STRIP_KEEP_SYMTAB=libjvm* for suffix in %{build_loop} ; do -# Install the jdk -pushd %{installoutputdir -- $suffix}/images/%{jdkimage} + # Should match same definitions in build section +%ifarch %{portable_build_arches} + jdk_image=%{installoutputdir -- $suffix} + docdir=$(pwd)/%{installoutputdir -- "-docs"} + miscdir=%{installoutputdir -- "-misc"} +%else + jdk_image=%{installoutputdir -- $suffix}/images/%{jdkimage} + docdir=%{installoutputdir -- $suffix} + miscdir=%{top_level_dir_name}/jdk/src/solaris/classes/sun/awt/X11 +%endif -# Install jsa directories so we can owe them -mkdir -p $RPM_BUILD_ROOT%{_jvmdir}/%{jredir -- $suffix}/lib/%{archinstall}/server/ -mkdir -p $RPM_BUILD_ROOT%{_jvmdir}/%{jredir -- $suffix}/lib/%{archinstall}/client/ + # Install release notes + commondocdir=${RPM_BUILD_ROOT}%{_defaultdocdir}/%{uniquejavadocdir -- $suffix} + install -d -m 755 ${commondocdir} +%ifarch %{portable_build_arches} + mv ${jdk_image}/NEWS ${commondocdir} +%else + cp -a %{SOURCE7} ${commondocdir} +%endif + + # Install the jdk + pushd ${jdk_image} + + # Install jsa directories so we can owe them + mkdir -p $RPM_BUILD_ROOT%{_jvmdir}/%{jredir -- $suffix}/lib/%{archinstall}/server/ + mkdir -p $RPM_BUILD_ROOT%{_jvmdir}/%{jredir -- $suffix}/lib/%{archinstall}/client/ # Install main files. install -d -m 755 $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir -- $suffix} @@ -2362,7 +2544,7 @@ mkdir -p $RPM_BUILD_ROOT%{_jvmdir}/%{jredir -- $suffix}/lib/%{archinstall}/clien # Install demos and samples. cp -a demo $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir -- $suffix} mkdir -p sample/rmi - if [ ! -e sample/rmi/java-rmi.cgi ] ; then + if [ ! -e sample/rmi/java-rmi.cgi ] ; then # hack to allow --short-circuit on install mv bin/java-rmi.cgi sample/rmi fi @@ -2373,20 +2555,20 @@ popd if ! echo $suffix | grep -q "debug" ; then # Install Javadoc documentation install -d -m 755 $RPM_BUILD_ROOT%{_javadocdir} - cp -a %{installoutputdir -- $suffix}/docs $RPM_BUILD_ROOT%{_javadocdir}/%{uniquejavadocdir -- $suffix} + cp -a ${docdir}/docs $RPM_BUILD_ROOT%{_javadocdir}/%{uniquejavadocdir -- $suffix} +%ifarch %{portable_build_arches} + built_doc_archive=jdk-%{javaver}_%{updatever}%{milestone_version}$suffix-%{portablebuildver}-docs.zip + cp -a ${docdir}/$built_doc_archive $RPM_BUILD_ROOT%{_javadocdir}/%{uniquejavadocdir -- $suffix}.zip +%else built_doc_archive=jdk-%{javaver}_%{updatever}%{milestone_version}$suffix-%{buildver}-docs.zip cp -a %{installoutputdir -- $suffix}/bundles/$built_doc_archive $RPM_BUILD_ROOT%{_javadocdir}/%{uniquejavadocdir -- $suffix}.zip +%endif fi -# Install release notes -commondocdir=${RPM_BUILD_ROOT}%{_defaultdocdir}/%{uniquejavadocdir -- $suffix} -install -d -m 755 ${commondocdir} -cp -a %{SOURCE7} ${commondocdir} - # Install icons and menu entries for s in 16 24 32 48 ; do install -D -p -m 644 \ - %{top_level_dir_name}/jdk/src/solaris/classes/sun/awt/X11/java-icon${s}.png \ + ${miscdir}/java-icon${s}.png \ $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/${s}x${s}/apps/java-%{javaver}-%{origin}.png done @@ -2456,11 +2638,11 @@ for file in lib/security/cacerts lib/security/policy/unlimited/US_export_policy. done # stabilize permissions -find $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}/ -name "*.so" -exec chmod 755 {} \; ; -find $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}/ -type d -exec chmod 755 {} \; ; -find $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}/ -name "ASSEMBLY_EXCEPTION" -exec chmod 644 {} \; ; -find $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}/ -name "LICENSE" -exec chmod 644 {} \; ; -find $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}/ -name "THIRD_PARTY_README" -exec chmod 644 {} \; ; +find $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}/ -name "*.so" -exec chmod 755 {} \; ; +find $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}/ -type d -exec chmod 755 {} \; ; +find $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}/ -name "ASSEMBLY_EXCEPTION" -exec chmod 644 {} \; ; +find $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}/ -name "LICENSE" -exec chmod 644 {} \; ; +find $RPM_BUILD_ROOT/%{_jvmdir}/%{sdkdir -- $suffix}/ -name "THIRD_PARTY_README" -exec chmod 644 {} \; ; # end, dual install done @@ -2480,7 +2662,7 @@ local posix = require "posix" if (os.getenv("debug") == "true") then debug = true; print("cjc: in spec debug is on") -else +else debug = false; end @@ -2694,6 +2876,11 @@ cjc.mainProgram(args) %endif %changelog +* Tue Feb 28 2023 Andrew Hughes - 1:1.8.0.362.b09-4 +- On portable architectures, replace build section with extraction of existing builds from portables +- Rewrite ELF files so the source file path is correct and debugsources can be assembled +- Resolves: rhbz#2150203 + * Tue Jan 24 2023 Andrew Hughes - 1:1.8.0.362.b09-3 - Update cacerts patch to fix OPENJDK-1433 SecurityManager issue - Update to shenandoah-jdk8u352-b09 (GA) @@ -3217,7 +3404,7 @@ cjc.mainProgram(args) - Resolves: rhbz#1903904 * Fri Nov 27 2020 Jiri Vanek - 1:1.8.0.275.b01-3 -- added patch600, rh1750419-redhat_alt_java.patch +- added patch600, rh1750419-redhat_alt_java.patch - Replaced alt-java palceholder by real pathced alt-java - remove patch529 rh1566890-CVE_2018_3639-speculative_store_bypass.patch - remove patch531 rh1566890-CVE_2018_3639-speculative_store_bypass_toggle.patch @@ -4459,7 +4646,7 @@ cjc.mainProgram(args) * Thu Nov 03 2016 jvanek - 1:1.8.0.111-2.b16 - added dont-add-unnecessary-debug-links.patch @@ -4530,7 +4717,7 @@ renamed: jdk8-archivedJavadoc.patch -> jdk8154313-generated_javadoc_scattered_al - added patch519, jdwpCrash.abrt.patch to fix trasnportation error * Fri May 13 2016 jvanek - 1:1.8.0.91-6.b14 -- Enable weak reference discovery in ShenandoahMarkCompact. Otherwise we never process any weak references in full-gc. +- Enable weak reference discovery in ShenandoahMarkCompact. Otherwise we never process any weak references in full-gc. * Tue May 03 2016 jvanek - 1:1.8.0.91-5.b14 - Restricted to depend on exactly same version of nss as used for build