# 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 # Do not check unpackaged files %define _unpackaged_files_terminate_build 0 %define _find_debuginfo_opts -g # 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 define: # See https://github.com/rpm-software-management/rpm/issues/127 to comments at "pmatilai commented on Aug 18, 2017" # (initiated in https://bugzilla.redhat.com/show_bug.cgi?id=1482192) %global debug_suffix_unquoted -slowdebug # quoted one for shell operations %global debug_suffix "%{debug_suffix_unquoted}" %global normal_suffix "" # if you want only debug build but providing java build only normal build but set normalbuild_parameter %global debug_warning This package has full debug on. Install only in need and remove asap. %global debug_on with full debug on %global for_debug for packages with debug on %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 %global build_loop1 %{nil} %endif %global aarch64 aarch64 # By default, we build a debug build during main build on JIT architectures %if %{with slowdebug} %global include_debug_build 1 %endif # On x86_64 and AArch64, we use the Shenandoah HotSpot %global use_shenandoah_hotspot 1 %if %{include_debug_build} %global build_loop2 %{debug_suffix} %else %global build_loop2 %{nil} %endif # if you disable both builds, then the build fails %global build_loop %{build_loop1} %{build_loop2} # note: that order: normal_suffix debug_suffix, in case of both enabled # is expected in one single case at the end of the build %global rev_build_loop %{build_loop2} %{build_loop1} %global bootstrap_build 1 %global release_targets images zip-docs # No docs nor bootcycle for debug builds %global debug_targets images # Filter out flags from the optflags macro that cause problems with the OpenJDK build # We filter out -Wall which will otherwise cause HotSpot to produce hundreds of thousands of warnings (100+mb logs) # We filter out -O flags so that the optimization of HotSpot is not lowered from O3 to O2 # We replace it with -Wformat (required by -Werror=format-security) and -Wno-cpp to avoid FORTIFY_SOURCE warnings # We filter out -fexceptions as the HotSpot build explicitly does -fno-exceptions and it's otherwise the default for C++ %global ourflags %(echo %optflags | sed -e 's|-Wall|-Wformat -Wno-cpp|' | sed -r -e 's|-O[0-9]*||') %global ourcppflags %(echo %ourflags | sed -e 's|-fexceptions||' | sed -e 's|-Werror=format-security||') %global ourldflags %{__global_ldflags} # With disabled nss is NSS deactivated, so NSS_LIBDIR can contain the wrong path # the initialization must be here. Later the pkg-config have buggy behavior # looks like openjdk RPM specific bug # Always set this so the nss.cfg file is not broken %global NSS_LIBDIR %(pkg-config --variable=libdir nss) %global NSS_LIBS %(pkg-config --libs nss) %global NSS_CFLAGS %(pkg-config --cflags nss-softokn) # see https://bugzilla.redhat.com/show_bug.cgi?id=1332456 %global NSSSOFTOKN_BUILDTIME_NUMBER %(pkg-config --modversion nss-softokn || : ) %global NSS_BUILDTIME_NUMBER %(pkg-config --modversion nss || : ) # this is workaround for processing of requires during srpm creation %global NSSSOFTOKN_BUILDTIME_VERSION %(if [ "x%{NSSSOFTOKN_BUILDTIME_NUMBER}" == "x" ] ; then echo "" ;else echo ">= %{NSSSOFTOKN_BUILDTIME_NUMBER}" ;fi) %global NSS_BUILDTIME_VERSION %(if [ "x%{NSS_BUILDTIME_NUMBER}" == "x" ] ; then echo "" ;else echo ">= %{NSS_BUILDTIME_NUMBER}" ;fi) # Fix for https://bugzilla.redhat.com/show_bug.cgi?id=1111349. # See also https://bugzilla.redhat.com/show_bug.cgi?id=1590796 # as to why some libraries *cannot* be excluded. In particular, # these are: # libjsig.so, libjava.so, libjawt.so, libjvm.so and libverify.so %global _privatelibs libatk-wrapper[.]so.*|libattach[.]so.*|libawt_headless[.]so.*|libawt[.]so.*|libawt_xawt[.]so.*|libdt_socket[.]so.*|libfontmanager[.]so.*|libhprof[.]so.*|libinstrument[.]so.*|libj2gss[.]so.*|libj2pcsc[.]so.*|libj2pkcs11[.]so.*|libjaas_unix[.]so.*|libjava_crw_demo[.]so.*|libjavajpeg[.]so.*|libjdwp[.]so.*|libjli[.]so.*|libjsdt[.]so.*|libjsoundalsa[.]so.*|libjsound[.]so.*|liblcms[.]so.*|libmanagement[.]so.*|libmlib_image[.]so.*|libnet[.]so.*|libnio[.]so.*|libnpt[.]so.*|libsaproc[.]so.*|libsctp[.]so.*|libsplashscreen[.]so.*|libsunec[.]so.*|libunpack[.]so.*|libzip[.]so.*|lib[.]so\\(SUNWprivate_.* %global __provides_exclude ^(%{_privatelibs})$ %global __requires_exclude ^(%{_privatelibs})$ # In some cases, the arch used by the JDK does # not match _arch. # Also, in some cases, the machine name used by SystemTap # does not match that given by _build_cpu %ifarch x86_64 %global archinstall amd64 %global stapinstall x86_64 %endif %ifarch %{aarch64} %global archinstall aarch64 %global stapinstall arm64 %endif # New Version-String scheme-style defines %global majorver 8 %global openjfx_path %{_jvmdir}/openjfx8 # links src directories %global jfx_jre_libs_dir %{openjfx_path}/rt/lib %global jfx_jre_native_dir %{jfx_jre_libs_dir}/%{archinstall} %global jfx_sdk_libs_dir %{openjfx_path}/lib %global jfx_sdk_bins_dir %{openjfx_path}/bin %global jfx_jre_exts_dir %{jfx_jre_libs_dir}/ext # links src files # maybe depend on jfx and generate the lists in build time? Yes, bad idea to inlcude cyclic depndenci, but this list is aweful %global jfx_jre_libs jfxswt.jar javafx.properties %global jfx_jre_native libprism_es2.so libprism_common.so libjavafx_font.so libdecora_sse.so libjavafx_font_freetype.so libprism_sw.so libjavafx_font_pango.so libglass.so libjavafx_iio.so libglassgtk2.so libglassgtk3.so %global jfx_sdk_libs javafx-mx.jar packager.jar ant-javafx.jar %global jfx_sdk_bins javafxpackager javapackager %global jfx_jre_exts jfxrt.jar # Standard JPackage naming and versioning defines. %global origin openjdk %global origin_nice OpenJDK %global top_level_dir_name %{origin} # note, following three variables are sedded from update_sources if used correctly. Hardcode them rather there. %global shenandoah_project aarch64-port %global shenandoah_repo jdk8u-shenandoah %global shenandoah_revision aarch64-shenandoah-jdk8u262-b02 # Define old aarch64/jdk8u tree variables for compatibility %global project %{shenandoah_project} %global repo %{shenandoah_repo} %global revision %{shenandoah_revision} # Define IcedTea version used for SystemTap tapsets and desktop files %global icedteaver 3.15.0 # eg # jdk8u60-b27 -> jdk8u60 or # aarch64-jdk8u60-b27 -> aarch64-jdk8u60 (dont forget spec escape % by %%) %global whole_update %(VERSION=%{revision}; echo ${VERSION%%-*}) # eg jdk8u60 -> 60 or aarch64-jdk8u60 -> 60 %global updatever %(VERSION=%{whole_update}; echo ${VERSION##*u}) # eg jdk8u60-b27 -> b27 %global buildver %(VERSION=%{revision}; echo ${VERSION##*-}) # priority must be 7 digits in total. The expression is workarounding tip %global priority %(TIP=1800%{updatever}; echo ${TIP/tip/999}) %global javaver 1.%{majorver}.0 # parametrized macros are order-sensitive %global compatiblename %{name} %global fullversion %{compatiblename}-%{version}-%{release} # images stub %global jdkimage j2sdk-image # output dir stub %define buildoutputdir() %{expand:build/jdk8.build%{?1}} # we can copy the javadoc to not arched dir, or make it not noarch %define uniquejavadocdir() %{expand:%{fullversion}%{?1}} # main id and dir of this jdk %define uniquesuffix() %{expand:%{fullversion}.%{_arch}%{?1}} %global etcjavasubdir %{_sysconfdir}/java/java-%{javaver}-%{origin} %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 jredir() %{expand:%{sdkdir -- %{?1}}/jre} %define sdkbindir() %{expand:%{_jvmdir}/%{sdkdir -- %{?1}}/bin} %define jrebindir() %{expand:%{_jvmdir}/%{jredir -- %{?1}}/bin} %global rpm_state_dir %{_localstatedir}/lib/rpm-state/ # Where to install systemtap tapset (links) # We would like these to be in a package specific sub-dir, # but currently systemtap doesn't support that, so we have to # use the root tapset dir for now. To distinguish between 64 # and 32 bit architectures we place the tapsets under the arch # specific dir (note that systemtap will only pickup the tapset # for the primary arch for now). Systemtap uses the machine name # aka target_cpu as architecture specific directory name. %global tapsetroot /usr/share/systemtap %global tapsetdirttapset %{tapsetroot}/tapset/ %global tapsetdir %{tapsetdirttapset}/%{stapinstall} # not-duplicated scriptlets for normal/debug packages %global update_desktop_icons /usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : %define post_script() %{expand: update-desktop-database %{_datadir}/applications &> /dev/null || : /bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || : exit 0 } %define post_headless() %{expand: PRIORITY=%{priority} if [ "%{?1}" == %{debug_suffix} ]; then let PRIORITY=PRIORITY-1 fi ext=.gz alternatives \\ --install %{_bindir}/java java %{jrebindir -- %{?1}}/java $PRIORITY --family %{name}.%{_arch} \\ --slave %{_jvmdir}/jre jre %{_jvmdir}/%{jredir -- %{?1}} \\ --slave %{_bindir}/jjs jjs %{jrebindir -- %{?1}}/jjs \\ --slave %{_bindir}/keytool keytool %{jrebindir -- %{?1}}/keytool \\ --slave %{_bindir}/orbd orbd %{jrebindir -- %{?1}}/orbd \\ --slave %{_bindir}/pack200 pack200 %{jrebindir -- %{?1}}/pack200 \\ --slave %{_bindir}/rmid rmid %{jrebindir -- %{?1}}/rmid \\ --slave %{_bindir}/rmiregistry rmiregistry %{jrebindir -- %{?1}}/rmiregistry \\ --slave %{_bindir}/servertool servertool %{jrebindir -- %{?1}}/servertool \\ --slave %{_bindir}/tnameserv tnameserv %{jrebindir -- %{?1}}/tnameserv \\ --slave %{_bindir}/policytool policytool %{jrebindir -- %{?1}}/policytool \\ --slave %{_bindir}/unpack200 unpack200 %{jrebindir -- %{?1}}/unpack200 \\ --slave %{_mandir}/man1/java.1$ext java.1$ext \\ %{_mandir}/man1/java-%{uniquesuffix -- %{?1}}.1$ext \\ --slave %{_mandir}/man1/jjs.1$ext jjs.1$ext \\ %{_mandir}/man1/jjs-%{uniquesuffix -- %{?1}}.1$ext \\ --slave %{_mandir}/man1/keytool.1$ext keytool.1$ext \\ %{_mandir}/man1/keytool-%{uniquesuffix -- %{?1}}.1$ext \\ --slave %{_mandir}/man1/orbd.1$ext orbd.1$ext \\ %{_mandir}/man1/orbd-%{uniquesuffix -- %{?1}}.1$ext \\ --slave %{_mandir}/man1/pack200.1$ext pack200.1$ext \\ %{_mandir}/man1/pack200-%{uniquesuffix -- %{?1}}.1$ext \\ --slave %{_mandir}/man1/rmid.1$ext rmid.1$ext \\ %{_mandir}/man1/rmid-%{uniquesuffix -- %{?1}}.1$ext \\ --slave %{_mandir}/man1/rmiregistry.1$ext rmiregistry.1$ext \\ %{_mandir}/man1/rmiregistry-%{uniquesuffix -- %{?1}}.1$ext \\ --slave %{_mandir}/man1/servertool.1$ext servertool.1$ext \\ %{_mandir}/man1/servertool-%{uniquesuffix -- %{?1}}.1$ext \\ --slave %{_mandir}/man1/tnameserv.1$ext tnameserv.1$ext \\ %{_mandir}/man1/tnameserv-%{uniquesuffix -- %{?1}}.1$ext \\ --slave %{_mandir}/man1/policytool.1$ext policytool.1$ext \\ %{_mandir}/man1/policytool-%{uniquesuffix -- %{?1}}.1$ext \\ --slave %{_mandir}/man1/unpack200.1$ext unpack200.1$ext \\ %{_mandir}/man1/unpack200-%{uniquesuffix -- %{?1}}.1$ext for X in %{origin} %{javaver} ; do alternatives --install %{_jvmdir}/jre-"$X" jre_"$X" %{_jvmdir}/%{jredir -- %{?1}} $PRIORITY --family %{name}.%{_arch} done update-alternatives --install %{_jvmdir}/jre-%{javaver}-%{origin} jre_%{javaver}_%{origin} %{_jvmdir}/%{jrelnk -- %{?1}} $PRIORITY --family %{name}.%{_arch} 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: 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 postun_headless() %{expand: alternatives --remove java %{jrebindir -- %{?1}}/java alternatives --remove jre_%{origin} %{_jvmdir}/%{jredir -- %{?1}} alternatives --remove jre_%{javaver} %{_jvmdir}/%{jredir -- %{?1}} alternatives --remove jre_%{javaver}_%{origin} %{_jvmdir}/%{jrelnk -- %{?1}} } %define posttrans_script() %{expand: %{update_desktop_icons} } %define post_devel() %{expand: PRIORITY=%{priority} if [ "%{?1}" == %{debug_suffix} ]; then let PRIORITY=PRIORITY-1 fi ext=.gz alternatives \\ --install %{_bindir}/javac javac %{sdkbindir -- %{?1}}/javac $PRIORITY --family %{name}.%{_arch} \\ --slave %{_jvmdir}/java java_sdk %{_jvmdir}/%{sdkdir -- %{?1}} \\ --slave %{_bindir}/appletviewer appletviewer %{sdkbindir -- %{?1}}/appletviewer \\ --slave %{_bindir}/clhsdb clhsdb %{sdkbindir -- %{?1}}/clhsdb \\ --slave %{_bindir}/extcheck extcheck %{sdkbindir -- %{?1}}/extcheck \\ --slave %{_bindir}/hsdb hsdb %{sdkbindir -- %{?1}}/hsdb \\ --slave %{_bindir}/idlj idlj %{sdkbindir -- %{?1}}/idlj \\ --slave %{_bindir}/jar jar %{sdkbindir -- %{?1}}/jar \\ --slave %{_bindir}/jarsigner jarsigner %{sdkbindir -- %{?1}}/jarsigner \\ --slave %{_bindir}/javadoc javadoc %{sdkbindir -- %{?1}}/javadoc \\ --slave %{_bindir}/javah javah %{sdkbindir -- %{?1}}/javah \\ --slave %{_bindir}/javap javap %{sdkbindir -- %{?1}}/javap \\ --slave %{_bindir}/jcmd jcmd %{sdkbindir -- %{?1}}/jcmd \\ --slave %{_bindir}/jconsole jconsole %{sdkbindir -- %{?1}}/jconsole \\ --slave %{_bindir}/jdb jdb %{sdkbindir -- %{?1}}/jdb \\ --slave %{_bindir}/jdeps jdeps %{sdkbindir -- %{?1}}/jdeps \\ --slave %{_bindir}/jhat jhat %{sdkbindir -- %{?1}}/jhat \\ --slave %{_bindir}/jinfo jinfo %{sdkbindir -- %{?1}}/jinfo \\ --slave %{_bindir}/jmap jmap %{sdkbindir -- %{?1}}/jmap \\ --slave %{_bindir}/jps jps %{sdkbindir -- %{?1}}/jps \\ --slave %{_bindir}/jrunscript jrunscript %{sdkbindir -- %{?1}}/jrunscript \\ --slave %{_bindir}/jsadebugd jsadebugd %{sdkbindir -- %{?1}}/jsadebugd \\ --slave %{_bindir}/jstack jstack %{sdkbindir -- %{?1}}/jstack \\ --slave %{_bindir}/jstat jstat %{sdkbindir -- %{?1}}/jstat \\ --slave %{_bindir}/jstatd jstatd %{sdkbindir -- %{?1}}/jstatd \\ --slave %{_bindir}/native2ascii native2ascii %{sdkbindir -- %{?1}}/native2ascii \\ --slave %{_bindir}/rmic rmic %{sdkbindir -- %{?1}}/rmic \\ --slave %{_bindir}/schemagen schemagen %{sdkbindir -- %{?1}}/schemagen \\ --slave %{_bindir}/serialver serialver %{sdkbindir -- %{?1}}/serialver \\ --slave %{_bindir}/wsgen wsgen %{sdkbindir -- %{?1}}/wsgen \\ --slave %{_bindir}/wsimport wsimport %{sdkbindir -- %{?1}}/wsimport \\ --slave %{_bindir}/xjc xjc %{sdkbindir -- %{?1}}/xjc \\ --slave %{_mandir}/man1/appletviewer.1$ext appletviewer.1$ext \\ %{_mandir}/man1/appletviewer-%{uniquesuffix -- %{?1}}.1$ext \\ --slave %{_mandir}/man1/extcheck.1$ext extcheck.1$ext \\ %{_mandir}/man1/extcheck-%{uniquesuffix -- %{?1}}.1$ext \\ --slave %{_mandir}/man1/idlj.1$ext idlj.1$ext \\ %{_mandir}/man1/idlj-%{uniquesuffix -- %{?1}}.1$ext \\ --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/javah.1$ext javah.1$ext \\ %{_mandir}/man1/javah-%{uniquesuffix -- %{?1}}.1$ext \\ --slave %{_mandir}/man1/javap.1$ext javap.1$ext \\ %{_mandir}/man1/javap-%{uniquesuffix -- %{?1}}.1$ext \\ --slave %{_mandir}/man1/jcmd.1$ext jcmd.1$ext \\ %{_mandir}/man1/jcmd-%{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/jhat.1$ext jhat.1$ext \\ %{_mandir}/man1/jhat-%{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/jrunscript.1$ext jrunscript.1$ext \\ %{_mandir}/man1/jrunscript-%{uniquesuffix -- %{?1}}.1$ext \\ --slave %{_mandir}/man1/jsadebugd.1$ext jsadebugd.1$ext \\ %{_mandir}/man1/jsadebugd-%{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/jstatd.1$ext jstatd.1$ext \\ %{_mandir}/man1/jstatd-%{uniquesuffix -- %{?1}}.1$ext \\ --slave %{_mandir}/man1/native2ascii.1$ext native2ascii.1$ext \\ %{_mandir}/man1/native2ascii-%{uniquesuffix -- %{?1}}.1$ext \\ --slave %{_mandir}/man1/rmic.1$ext rmic.1$ext \\ %{_mandir}/man1/rmic-%{uniquesuffix -- %{?1}}.1$ext \\ --slave %{_mandir}/man1/schemagen.1$ext schemagen.1$ext \\ %{_mandir}/man1/schemagen-%{uniquesuffix -- %{?1}}.1$ext \\ --slave %{_mandir}/man1/serialver.1$ext serialver.1$ext \\ %{_mandir}/man1/serialver-%{uniquesuffix -- %{?1}}.1$ext \\ --slave %{_mandir}/man1/wsgen.1$ext wsgen.1$ext \\ %{_mandir}/man1/wsgen-%{uniquesuffix -- %{?1}}.1$ext \\ --slave %{_mandir}/man1/wsimport.1$ext wsimport.1$ext \\ %{_mandir}/man1/wsimport-%{uniquesuffix -- %{?1}}.1$ext \\ --slave %{_mandir}/man1/xjc.1$ext xjc.1$ext \\ %{_mandir}/man1/xjc-%{uniquesuffix -- %{?1}}.1$ext for X in %{origin} %{javaver} ; do alternatives \\ --install %{_jvmdir}/java-"$X" java_sdk_"$X" %{_jvmdir}/%{sdkdir -- %{?1}} $PRIORITY --family %{name}.%{_arch} done update-alternatives --install %{_jvmdir}/java-%{javaver}-%{origin} java_sdk_%{javaver}_%{origin} %{_jvmdir}/%{sdkdir -- %{?1}} $PRIORITY --family %{name}.%{_arch} update-desktop-database %{_datadir}/applications &> /dev/null || : /bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || : exit 0 } %define postun_devel() %{expand: alternatives --remove javac %{sdkbindir -- %{?1}}/javac alternatives --remove java_sdk_%{origin} %{_jvmdir}/%{sdkdir -- %{?1}} alternatives --remove java_sdk_%{javaver} %{_jvmdir}/%{sdkdir -- %{?1}} alternatives --remove java_sdk_%{javaver}_%{origin} %{_jvmdir}/%{sdkdir -- %{?1}} 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: %{update_desktop_icons} } %define post_javadoc() %{expand: PRIORITY=%{priority} if [ "%{?1}" == %{debug_suffix} ]; then let PRIORITY=PRIORITY-1 fi alternatives \\ --install %{_javadocdir}/java javadocdir %{_javadocdir}/%{uniquejavadocdir -- %{?1}}/api \\ $PRIORITY --family %{name} exit 0 } %define postun_javadoc() %{expand: alternatives --remove javadocdir %{_javadocdir}/%{uniquejavadocdir -- %{?1}}/api exit 0 } %define post_javadoc_zip() %{expand: PRIORITY=%{priority} if [ "%{?1}" == %{debug_suffix} ]; then let PRIORITY=PRIORITY-1 fi alternatives \\ --install %{_javadocdir}/java-zip javadoczip %{_javadocdir}/%{uniquejavadocdir -- %{?1}}.zip \\ $PRIORITY --family %{name} exit 0 } %define postun_javadoc_zip() %{expand: alternatives --remove javadoczip %{_javadocdir}/%{uniquejavadocdir -- %{?1}}.zip exit 0 } %define files_jre() %{expand: %{_datadir}/icons/hicolor/*x*/apps/java-%{javaver}-%{origin}.png %{_datadir}/applications/*policytool%{?1}.desktop %{_jvmdir}/%{sdkdir -- %{?1}}/jre/lib/%{archinstall}/libjsoundalsa.so %{_jvmdir}/%{sdkdir -- %{?1}}/jre/lib/%{archinstall}/libsplashscreen.so %{_jvmdir}/%{sdkdir -- %{?1}}/jre/lib/%{archinstall}/libawt_xawt.so %{_jvmdir}/%{sdkdir -- %{?1}}/jre/lib/%{archinstall}/libjawt.so %{_jvmdir}/%{sdkdir -- %{?1}}/jre/bin/policytool } %define files_jre_headless() %{expand: %defattr(-,root,root,-) %dir %{_sysconfdir}/.java/.systemPrefs %dir %{_sysconfdir}/.java %license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/jre/ASSEMBLY_EXCEPTION %license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/jre/LICENSE %license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/jre/THIRD_PARTY_README %dir %{_jvmdir}/%{sdkdir -- %{?1}} %{_jvmdir}/%{jrelnk -- %{?1}} %dir %{_jvmdir}/%{jredir -- %{?1}}/lib/security %{_jvmdir}/%{jredir -- %{?1}}/lib/security/cacerts %dir %{_jvmdir}/%{jredir -- %{?1}} %dir %{_jvmdir}/%{jredir -- %{?1}}/bin %dir %{_jvmdir}/%{jredir -- %{?1}}/lib %{_jvmdir}/%{jredir -- %{?1}}/bin/java %{_jvmdir}/%{jredir -- %{?1}}/bin/jjs %{_jvmdir}/%{jredir -- %{?1}}/bin/keytool %{_jvmdir}/%{jredir -- %{?1}}/bin/orbd %{_jvmdir}/%{jredir -- %{?1}}/bin/pack200 %{_jvmdir}/%{jredir -- %{?1}}/bin/rmid %{_jvmdir}/%{jredir -- %{?1}}/bin/rmiregistry %{_jvmdir}/%{jredir -- %{?1}}/bin/servertool %{_jvmdir}/%{jredir -- %{?1}}/bin/tnameserv %{_jvmdir}/%{jredir -- %{?1}}/bin/unpack200 %dir %{_jvmdir}/%{jredir -- %{?1}}/lib/security/policy/unlimited/ %dir %{_jvmdir}/%{jredir -- %{?1}}/lib/security/policy/limited/ %dir %{_jvmdir}/%{jredir -- %{?1}}/lib/security/policy/ %config(noreplace) %{etcjavadir -- %{?1}}/lib/security/policy/unlimited/US_export_policy.jar %config(noreplace) %{etcjavadir -- %{?1}}/lib/security/policy/unlimited/local_policy.jar %config(noreplace) %{etcjavadir -- %{?1}}/lib/security/policy/limited/US_export_policy.jar %config(noreplace) %{etcjavadir -- %{?1}}/lib/security/policy/limited/local_policy.jar %config(noreplace) %{etcjavadir -- %{?1}}/lib/security/java.policy %config(noreplace) %{etcjavadir -- %{?1}}/lib/security/java.security %config(noreplace) %{etcjavadir -- %{?1}}/lib/security/blacklisted.certs %config(noreplace) %{etcjavadir -- %{?1}}/lib/logging.properties %config(noreplace) %{etcjavadir -- %{?1}}/lib/calendars.properties %{_jvmdir}/%{jredir -- %{?1}}/lib/security/policy/unlimited/US_export_policy.jar %{_jvmdir}/%{jredir -- %{?1}}/lib/security/policy/unlimited/local_policy.jar %{_jvmdir}/%{jredir -- %{?1}}/lib/security/policy/limited/US_export_policy.jar %{_jvmdir}/%{jredir -- %{?1}}/lib/security/policy/limited/local_policy.jar %{_jvmdir}/%{jredir -- %{?1}}/lib/security/java.policy %{_jvmdir}/%{jredir -- %{?1}}/lib/security/java.security %{_jvmdir}/%{jredir -- %{?1}}/lib/security/blacklisted.certs %{_jvmdir}/%{jredir -- %{?1}}/lib/logging.properties %{_jvmdir}/%{jredir -- %{?1}}/lib/calendars.properties %{_mandir}/man1/java-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/jjs-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/keytool-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/orbd-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/pack200-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/rmid-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/rmiregistry-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/servertool-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/tnameserv-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/unpack200-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/policytool-%{uniquesuffix -- %{?1}}.1* %{_jvmdir}/%{jredir -- %{?1}}/lib/security/nss.cfg %config(noreplace) %{etcjavadir -- %{?1}}/lib/security/nss.cfg %attr(444, root, root) %ghost %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/server/classes.jsa %dir %{etcjavasubdir} %dir %{etcjavadir -- %{?1}} %dir %{etcjavadir -- %{?1}}/lib %dir %{etcjavadir -- %{?1}}/lib/security %{etcjavadir -- %{?1}}/lib/security/cacerts %dir %{etcjavadir -- %{?1}}/lib/security/policy %dir %{etcjavadir -- %{?1}}/lib/security/policy/limited %dir %{etcjavadir -- %{?1}}/lib/security/policy/unlimited %attr(444, root, root) %ghost %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/client/classes.jsa %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/server/ %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/client/ %dir %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall} %dir %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/jli %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/jli/libjli.so %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/jvm.cfg %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/libattach.so %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/libawt.so %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/libawt_headless.so %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/libdt_socket.so %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/libfontmanager.so %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/libhprof.so %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/libinstrument.so %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/libj2gss.so %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/libj2pcsc.so %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/libj2pkcs11.so %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/libjaas_unix.so %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/libjava.so %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/libjava_crw_demo.so %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/libjdwp.so %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/libjpeg.so %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/libjsdt.so %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/libjsig.so %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/libjsound.so %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/liblcms.so %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/libmanagement.so %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/libmlib_image.so %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/libnet.so %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/libnio.so %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/libnpt.so %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/libsaproc.so %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/libsctp.so %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/libsunec.so %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/libunpack.so %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/libverify.so %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/libzip.so %{_jvmdir}/%{jredir -- %{?1}}/lib/charsets.jar %{_jvmdir}/%{jredir -- %{?1}}/lib/classlist %{_jvmdir}/%{jredir -- %{?1}}/lib/content-types.properties %{_jvmdir}/%{jredir -- %{?1}}/lib/currency.data %{_jvmdir}/%{jredir -- %{?1}}/lib/flavormap.properties %{_jvmdir}/%{jredir -- %{?1}}/lib/hijrah-config-umalqura.properties %{_jvmdir}/%{jredir -- %{?1}}/lib/images/cursors/* %{_jvmdir}/%{jredir -- %{?1}}/lib/jce.jar %{_jvmdir}/%{jredir -- %{?1}}/lib/jexec %{_jvmdir}/%{jredir -- %{?1}}/lib/jsse.jar %{_jvmdir}/%{jredir -- %{?1}}/lib/jvm.hprof.txt %{_jvmdir}/%{jredir -- %{?1}}/lib/meta-index %{_jvmdir}/%{jredir -- %{?1}}/lib/net.properties %config(noreplace) %{etcjavadir -- %{?1}}/lib/net.properties %{_jvmdir}/%{jredir -- %{?1}}/lib/psfont.properties.ja %{_jvmdir}/%{jredir -- %{?1}}/lib/psfontj2d.properties %{_jvmdir}/%{jredir -- %{?1}}/lib/resources.jar %{_jvmdir}/%{jredir -- %{?1}}/lib/rt.jar %{_jvmdir}/%{jredir -- %{?1}}/lib/sound.properties %{_jvmdir}/%{jredir -- %{?1}}/lib/tzdb.dat %{_jvmdir}/%{jredir -- %{?1}}/lib/management-agent.jar %{_jvmdir}/%{jredir -- %{?1}}/lib/management/* %{_jvmdir}/%{jredir -- %{?1}}/lib/cmm/* %{_jvmdir}/%{jredir -- %{?1}}/lib/ext/cldrdata.jar %{_jvmdir}/%{jredir -- %{?1}}/lib/ext/dnsns.jar %{_jvmdir}/%{jredir -- %{?1}}/lib/ext/jaccess.jar %{_jvmdir}/%{jredir -- %{?1}}/lib/ext/localedata.jar %{_jvmdir}/%{jredir -- %{?1}}/lib/ext/meta-index %{_jvmdir}/%{jredir -- %{?1}}/lib/ext/nashorn.jar %{_jvmdir}/%{jredir -- %{?1}}/lib/ext/sunec.jar %{_jvmdir}/%{jredir -- %{?1}}/lib/ext/sunjce_provider.jar %{_jvmdir}/%{jredir -- %{?1}}/lib/ext/sunpkcs11.jar %{_jvmdir}/%{jredir -- %{?1}}/lib/ext/zipfs.jar %dir %{_jvmdir}/%{jredir -- %{?1}}/lib/images %dir %{_jvmdir}/%{jredir -- %{?1}}/lib/images/cursors %dir %{_jvmdir}/%{jredir -- %{?1}}/lib/management %dir %{_jvmdir}/%{jredir -- %{?1}}/lib/cmm %dir %{_jvmdir}/%{jredir -- %{?1}}/lib/ext } %define files_devel() %{expand: %defattr(-,root,root,-) %license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/ASSEMBLY_EXCEPTION %license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/LICENSE %license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/THIRD_PARTY_README %dir %{_jvmdir}/%{sdkdir -- %{?1}}/bin %dir %{_jvmdir}/%{sdkdir -- %{?1}}/include %dir %{_jvmdir}/%{sdkdir -- %{?1}}/lib %{_jvmdir}/%{sdkdir -- %{?1}}/bin/appletviewer %{_jvmdir}/%{sdkdir -- %{?1}}/bin/clhsdb %{_jvmdir}/%{sdkdir -- %{?1}}/bin/extcheck %{_jvmdir}/%{sdkdir -- %{?1}}/bin/hsdb %{_jvmdir}/%{sdkdir -- %{?1}}/bin/idlj %{_jvmdir}/%{sdkdir -- %{?1}}/bin/jar %{_jvmdir}/%{sdkdir -- %{?1}}/bin/jarsigner %{_jvmdir}/%{sdkdir -- %{?1}}/bin/java %{_jvmdir}/%{sdkdir -- %{?1}}/bin/javac %{_jvmdir}/%{sdkdir -- %{?1}}/bin/javadoc %{_jvmdir}/%{sdkdir -- %{?1}}/bin/javah %{_jvmdir}/%{sdkdir -- %{?1}}/bin/javap %{_jvmdir}/%{sdkdir -- %{?1}}/bin/java-rmi.cgi %{_jvmdir}/%{sdkdir -- %{?1}}/bin/jcmd %{_jvmdir}/%{sdkdir -- %{?1}}/bin/jconsole %{_jvmdir}/%{sdkdir -- %{?1}}/bin/jdb %{_jvmdir}/%{sdkdir -- %{?1}}/bin/jdeps %{_jvmdir}/%{sdkdir -- %{?1}}/bin/jhat %{_jvmdir}/%{sdkdir -- %{?1}}/bin/jinfo %{_jvmdir}/%{sdkdir -- %{?1}}/bin/jjs %{_jvmdir}/%{sdkdir -- %{?1}}/bin/jmap %{_jvmdir}/%{sdkdir -- %{?1}}/bin/jps %{_jvmdir}/%{sdkdir -- %{?1}}/bin/jrunscript %{_jvmdir}/%{sdkdir -- %{?1}}/bin/jsadebugd %{_jvmdir}/%{sdkdir -- %{?1}}/bin/jstack %{_jvmdir}/%{sdkdir -- %{?1}}/bin/jstat %{_jvmdir}/%{sdkdir -- %{?1}}/bin/jstatd %{_jvmdir}/%{sdkdir -- %{?1}}/bin/keytool %{_jvmdir}/%{sdkdir -- %{?1}}/bin/native2ascii %{_jvmdir}/%{sdkdir -- %{?1}}/bin/orbd %{_jvmdir}/%{sdkdir -- %{?1}}/bin/pack200 %{_jvmdir}/%{sdkdir -- %{?1}}/bin/policytool %{_jvmdir}/%{sdkdir -- %{?1}}/bin/rmic %{_jvmdir}/%{sdkdir -- %{?1}}/bin/rmid %{_jvmdir}/%{sdkdir -- %{?1}}/bin/rmiregistry %{_jvmdir}/%{sdkdir -- %{?1}}/bin/schemagen %{_jvmdir}/%{sdkdir -- %{?1}}/bin/serialver %{_jvmdir}/%{sdkdir -- %{?1}}/bin/servertool %{_jvmdir}/%{sdkdir -- %{?1}}/bin/tnameserv %{_jvmdir}/%{sdkdir -- %{?1}}/bin/unpack200 %{_jvmdir}/%{sdkdir -- %{?1}}/bin/wsgen %{_jvmdir}/%{sdkdir -- %{?1}}/bin/wsimport %{_jvmdir}/%{sdkdir -- %{?1}}/bin/xjc %{_jvmdir}/%{sdkdir -- %{?1}}/include/* %{_jvmdir}/%{sdkdir -- %{?1}}/lib/%{archinstall} %{_jvmdir}/%{sdkdir -- %{?1}}/lib/ct.sym %{_jvmdir}/%{sdkdir -- %{?1}}/tapset %{_jvmdir}/%{sdkdir -- %{?1}}/lib/ir.idl %{_jvmdir}/%{sdkdir -- %{?1}}/lib/jconsole.jar %{_jvmdir}/%{sdkdir -- %{?1}}/lib/orb.idl %{_jvmdir}/%{sdkdir -- %{?1}}/lib/sa-jdi.jar %{_jvmdir}/%{sdkdir -- %{?1}}/lib/dt.jar %{_jvmdir}/%{sdkdir -- %{?1}}/lib/jexec %{_jvmdir}/%{sdkdir -- %{?1}}/lib/tools.jar %{_datadir}/applications/*jconsole%{?1}.desktop %{_mandir}/man1/appletviewer-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/extcheck-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/idlj-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/jar-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/jarsigner-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/javac-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/javadoc-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/javah-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/javap-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/jconsole-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/jcmd-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/jdb-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/jdeps-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/jhat-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/jinfo-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/jmap-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/jps-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/jrunscript-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/jsadebugd-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/jstack-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/jstat-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/jstatd-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/native2ascii-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/rmic-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/schemagen-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/serialver-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/wsgen-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/wsimport-%{uniquesuffix -- %{?1}}.1* %{_mandir}/man1/xjc-%{uniquesuffix -- %{?1}}.1* %dir %{tapsetroot} %dir %{tapsetdirttapset} %dir %{tapsetdir} %{tapsetdir}/*%{_arch}%{?1}.stp } %define files_demo() %{expand: %defattr(-,root,root,-) %license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/jre/LICENSE } %define files_src() %{expand: %defattr(-,root,root,-) %{_jvmdir}/%{sdkdir -- %{?1}}/src.zip } %define files_javadoc() %{expand: %defattr(-,root,root,-) %doc %{_javadocdir}/%{uniquejavadocdir -- %{?1}} %license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/jre/LICENSE } %define files_javadoc_zip() %{expand: %defattr(-,root,root,-) %doc %{_javadocdir}/%{uniquejavadocdir -- %{?1}}.zip %license %{buildoutputdir -- %{?1}}/images/%{jdkimage}/jre/LICENSE } %define files_accessibility() %{expand: %{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/libatk-wrapper.so %{_jvmdir}/%{jredir -- %{?1}}/lib/ext/java-atk-wrapper.jar %{_jvmdir}/%{jredir -- %{?1}}/lib/accessibility.properties } # not-duplicated requires/provides/obsoletes for normal/debug packages %define java_rpo() %{expand: Requires: fontconfig%{?_isa} Requires: xorg-x11-fonts-Type1 # Require libXcomposite explicitly since it's only dynamically loaded # at runtime. Fixes screenshot issues. See JDK-8150954. Requires: libXcomposite%{?_isa} # Requires rest of java Requires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release} OrderWithRequires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release} Provides: java-%{javaver}-%{origin} = %{epoch}:%{version}-%{release} # Standard JPackage base provides Provides: jre = %{javaver}%{?1} Provides: jre-%{origin}%{?1} = %{epoch}:%{version}-%{release} Provides: jre-%{javaver}%{?1} = %{epoch}:%{version}-%{release} Provides: jre-%{javaver}-%{origin}%{?1} = %{epoch}:%{version}-%{release} Provides: java-%{javaver}%{?1} = %{epoch}:%{version}-%{release} Provides: java-%{origin}%{?1} = %{epoch}:%{version}-%{release} Provides: java%{?1} = %{epoch}:%{javaver} } %define java_headless_rpo() %{expand: # Require /etc/pki/java/cacerts Requires: ca-certificates # Require javapackages-filesystem for ownership of /usr/lib/jvm/ Requires: javapackages-filesystem # Require zone-info data provided by tzdata-java sub-package Requires: tzdata-java >= 2015d # libsctp.so.1 is being `dlopen`ed on demand Requires: lksctp-tools%{?_isa} # there is a need to depend on the exact version of NSS Requires: nss%{?_isa} %{NSS_BUILDTIME_VERSION} Requires: nss-softokn%{?_isa} %{NSSSOFTOKN_BUILDTIME_VERSION} # 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 >= 3.3 OrderWithRequires: copy-jdk-configs # Post requires alternatives to install tool alternatives Requires(post): %{_sbindir}/alternatives # in version 1.7 and higher for --family switch Requires(post): chkconfig >= 1.7 # Postun requires alternatives to uninstall tool alternatives Requires(postun): %{_sbindir}/alternatives # in version 1.7 and higher for --family switch Requires(postun): chkconfig >= 1.7 # for optional support of kernel stream control, card reader and printing bindings Suggests: lksctp-tools%{?_isa}, pcsc-lite-devel%{?_isa}, cups # Standard JPackage base provides Provides: jre-headless%{?1} = %{epoch}:%{javaver} Provides: jre-%{javaver}-%{origin}-headless%{?1} = %{epoch}:%{version}-%{release} Provides: jre-%{origin}-headless%{?1} = %{epoch}:%{version}-%{release} Provides: jre-%{javaver}-headless%{?1} = %{epoch}:%{version}-%{release} Provides: java-%{javaver}-%{origin}-headless%{?1} = %{epoch}:%{version}-%{release} Provides: java-%{javaver}-headless%{?1} = %{epoch}:%{version}-%{release} Provides: java-%{origin}-headless%{?1} = %{epoch}:%{version}-%{release} Provides: java-headless%{?1} = %{epoch}:%{javaver} # https://bugzilla.redhat.com/show_bug.cgi?id=1312019 Provides: /usr/bin/jjs } %define java_devel_rpo() %{expand: # Requires base package Requires: %{name}%{?1}%{?_isa} = %{epoch}:%{version}-%{release} OrderWithRequires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release} # Post requires alternatives to install tool alternatives Requires(post): %{_sbindir}/alternatives # in version 1.7 and higher for --family switch Requires(post): chkconfig >= 1.7 # Postun requires alternatives to uninstall tool alternatives Requires(postun): %{_sbindir}/alternatives # in version 1.7 and higher for --family switch Requires(postun): chkconfig >= 1.7 # Standard JPackage devel provides Provides: java-sdk-%{javaver}-%{origin}%{?1} = %{epoch}:%{version} Provides: java-sdk-%{javaver}%{?1} = %{epoch}:%{version} Provides: java-sdk-%{origin}%{?1} = %{epoch}:%{version} Provides: java-sdk%{?1} = %{epoch}:%{javaver} Provides: java-%{javaver}-devel%{?1} = %{epoch}:%{version} Provides: java-%{javaver}-%{origin}-devel%{?1} = %{epoch}:%{version} Provides: java-devel-%{origin}%{?1} = %{epoch}:%{version} Provides: java-devel%{?1} = %{epoch}:%{javaver} } %define java_demo_rpo() %{expand: Requires: %{name}%{?1}%{?_isa} = %{epoch}:%{version}-%{release} OrderWithRequires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release} Provides: java-demo%{?1} = %{epoch}:%{version}-%{release} Provides: java-%{javaver}-demo%{?1} = %{epoch}:%{version}-%{release} Provides: java-%{javaver}-%{origin}-demo%{?1} = %{epoch}:%{version}-%{release} } %define java_javadoc_rpo() %{expand: OrderWithRequires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release} # Post requires alternatives to install javadoc alternative Requires(post): %{_sbindir}/alternatives # in version 1.7 and higher for --family switch Requires(post): chkconfig >= 1.7 # Postun requires alternatives to uninstall javadoc alternative Requires(postun): %{_sbindir}/alternatives # in version 1.7 and higher for --family switch Requires(postun): chkconfig >= 1.7 # Standard JPackage javadoc provides Provides: java-javadoc%{?1} = %{epoch}:%{version}-%{release} Provides: java-%{javaver}-javadoc%{?1} = %{epoch}:%{version}-%{release} Provides: java-%{javaver}-%{origin}-javadoc%{?1} = %{epoch}:%{version}-%{release} } %define java_src_rpo() %{expand: Requires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release} # Standard JPackage sources provides Provides: java-src%{?1} = %{epoch}:%{version}-%{release} Provides: java-%{javaver}-src%{?1} = %{epoch}:%{version}-%{release} Provides: java-%{javaver}-%{origin}-src%{?1} = %{epoch}:%{version}-%{release} } %define java_accessibility_rpo() %{expand: Requires: java-atk-wrapper%{?_isa} Requires: %{name}%{?1}%{?_isa} = %{epoch}:%{version}-%{release} OrderWithRequires: %{name}-headless%{?1}%{?_isa} = %{epoch}:%{version}-%{release} Provides: java-accessibility%{?1} = %{epoch}:%{version}-%{release} Provides: java-%{origin}-accessibility%{?1} = %{epoch}:%{version}-%{release} Provides: java-%{javaver}-accessibility%{?1} = %{epoch}:%{version}-%{release} Provides: java-%{javaver}-%{origin}-accessibility%{?1} = %{epoch}:%{version}-%{release} } # Prevent brp-java-repack-jars from being run %global __jar_repack 0 Name: java-%{javaver}-%{origin} Version: %{javaver}.%{updatever}.%{buildver} Release: 7 # java-1.5.0-ibm from jpackage.org set Epoch to 1 for unknown reasons # and this change was brought into RHEL-4. java-1.5.0-ibm packages # also included the epoch in their virtual provides. This created a # situation where in-the-wild java-1.5.0-ibm packages provided "java = # 1:1.5.0". In RPM terms, "1.6.0 < 1:1.5.0" since 1.6.0 is # interpreted as 0:1.6.0. So the "java >= 1.6.0" requirement would be # satisfied by the 1:1.5.0 packages. Thus we need to set the epoch in # JDK package >= 1.6.0 to 1, and packages referring to JDK virtual # provides >= 1.6.0 must specify the epoch, "java >= 1:1.6.0". Epoch: 1 Summary: %{origin_nice} Runtime Environment %{majorver} Group: Development/Languages # HotSpot code is licensed under GPLv2 # JDK library code is licensed under GPLv2 with the Classpath exception # The Apache license is used in code taken from Apache projects (primarily JAXP & JAXWS) # DOM levels 2 & 3 and the XML digital signature schemas are licensed under the W3C Software License # The JSR166 concurrency code is in the public domain # The BSD and MIT licenses are used for a number of third-party libraries (see THIRD_PARTY_README) # The OpenJDK source tree includes the JPEG library (IJG), zlib & libpng (zlib), giflib and LCMS (MIT) # The test code includes copies of NSS under the Mozilla Public License v2.0 # The PCSClite headers are under a BSD with advertising license # The elliptic curve cryptography (ECC) source code is licensed under the LGPLv2.1 or any later version License: ASL 1.1 and ASL 2.0 and BSD and BSD with advertising and GPL+ and GPLv2 and GPLv2 with exceptions and IJG and LGPLv2+ and MIT and MPLv2.0 and Public Domain and W3C and zlib URL: http://openjdk.java.net # Shenandoah HotSpot # aarch64-port/jdk8u-shenandoah contains an integration forest of # OpenJDK 8u, the aarch64 port and Shenandoah # To regenerate, use: # VERSION=%%{shenandoah_revision} # FILE_NAME_ROOT=%%{shenandoah_project}-%%{shenandoah_repo}-${VERSION} # REPO_ROOT= generate_source_tarball.sh # where the source is obtained from http://hg.openjdk.java.net/%%{project}/%%{repo} Source0: %{shenandoah_revision}.tar.xz # Custom README for -src subpackage Source2: README.md # Use 'icedtea_sync.sh' to update the following # They are based on code contained in the IcedTea project (3.x). # Systemtap tapsets. Zipped up to keep it small. Source8: tapsets-icedtea-%{icedteaver}.tar.xz # Desktop files. Adapted from IcedTea Source9: jconsole.desktop.in Source10: policytool.desktop.in # nss configuration file Source11: nss.cfg.in # Ensure we aren't using the limited crypto policy Source13: TestCryptoLevel.java # Ensure ECDSA is working Source14: TestECDSA.java Source20: repackReproduciblePolycies.sh Patch1: 8160300.patch Patch8: replace-vector-to-improve-performance-of-xml.validat.patch Patch9: AARCH64-fix-itable-stub-code-size-limit.patch Patch10: 8221658.patch Patch11: 8148754-C2-loop-unrolling-fails-due-to-unexpected-gr.patch Patch12: add-debuginfo-for-libsaproc-on-aarch64.patch Patch13: 8171537.patch Patch18: fix-vendor-info.patch Patch21: 8202952-C2-Unexpected-dead-nodes-after-matching.patch Patch22: 8161072.patch Patch24: 8134883.patch Patch25: FromCardCache-default-card-index-can-cause.patch Patch26: disable-UseLSE-on-ARMv8.1-by-default.patch Patch27: 8157570.patch Patch28: 8194246.patch Patch29: 8214345.patch Patch30: 8191483.patch Patch31: 8141356.patch Patch32: 8151788.patch Patch33: 8166253.patch Patch34: 8191955.patch Patch35: 8186042-OopmapCache-implementation.patch Patch36: 8060463.patch Patch37: 8131600.patch Patch38: 8138971.patch Patch40: 8129626.patch Patch41: 8203699-java-lang-invoke-SpecialInte.patch Patch45: 8191129.patch Patch46: 8182036.patch Patch47: 8166197.patch Patch48: 8158946-JDK-8165808-JDK-8166583-JDK-.patch Patch51: add-with-company-name-option.patch Patch56: 8160369.patch Patch57: 8031085.patch Patch58: Reduce-the-probability-of-the-crash-related-to-ciObj.patch Patch62: 8165857-CMS-_overflow_list-is-missing-volatile-speci.patch Patch63: 8033552-Fix-missing-missing-volatile-specifiers-in-C.patch Patch67: 8165860-WorkGroup-classes-are-missing-volatile-speci.patch Patch68: 8194154-System-property-user.dir-should-not-be-chang.patch Patch70: 8164948.patch Patch72: inline-optimize-for-aarch64.patch # 8u242 Patch73: PS-GC-adding-acquire_size-method-for-PSParallelCompa.patch Patch74: 8191915-java.lang.Math.multiplyExact-not-throw-an-ex.patch Patch75: Add-ability-to-configure-third-port-for-remote-JMX.patch Patch76: 8203196-C1-emits-incorrect-code-due-to-integer-overf.patch Patch77: 8190332-PngReader-throws-NegativeArraySizeException-.patch Patch78: 8171410-aarch64-long-multiplyExact-shifts-by-31-inst.patch Patch81: fix-incorrect-offset-for-oop-field-with-weak-memory-.patch Patch83: 8204947-Port-ShenandoahTaskTerminator-to-mainline-an.patch Patch84: 8205921-Optimizing-best-of-2-work-stealing-queue-sel.patch Patch85: 8139041-Redundant-DMB-instructions.patch # 8u252 Patch86: 6858051-Create-GC-worker-threads-dynamically.patch Patch87: 6858051-Add-a-switch-for-the-dynamic-thread-related-.patch Patch88: dismiss-warnings-in-GCC-8.X.patch ############################################# # # Upstreamable patches # # This section includes patches which need to # be reviewed & pushed to the current development # tree of OpenJDK. ############################################# # PR2888: OpenJDK should check for system cacerts database (e.g. /etc/pki/java/cacerts) # PR3575, RH1567204: System cacerts database handling should not affect jssecacerts Patch539: pr2888-openjdk_should_check_for_system_cacerts_database_eg_etc_pki_java_cacerts.patch ############################################# # # Patches which need backporting to 8u # # This section includes patches which have # been pushed upstream to the latest OpenJDK # development tree, but need to be backported # to OpenJDK 8u. ############################################# # S8154313: Generated javadoc scattered all over the place Patch578: jdk8154313-generated_javadoc_scattered_all_over_the_place.patch # 8035341: Allow using a system installed libpng # Patch202: jdk8035341-allow_using_system_installed_libpng.patch # 8042159: Allow using a system-installed lcms2 # Patch203: jdk8042159-allow_using_system_installed_lcms2.patch ############################################# # # Patches ineligible for 8u # # This section includes patches which are present # upstream, but ineligible for upstream 8u backport. ############################################# # 8043805: Allow using a system-installed libjpeg # Patch201: jdk8043805-allow_using_system_installed_libjpeg.patch ############################################# # # Non-OpenJDK fixes # # This section includes patches to code other # that from OpenJDK. ############################################# Patch1000: rh1648249-add_commented_out_nss_cfg_provider_to_java_security.patch ############################################# # # Dependencies # ############################################# BuildRequires: autoconf BuildRequires: automake BuildRequires: alsa-lib-devel BuildRequires: binutils BuildRequires: cups-devel BuildRequires: desktop-file-utils # elfutils only are OK for build without AOT BuildRequires: elfutils-devel BuildRequires: fontconfig-devel BuildRequires: freetype-devel BuildRequires: giflib-devel BuildRequires: gcc-c++ BuildRequires: gdb BuildRequires: gtk2-devel BuildRequires: lcms2-devel BuildRequires: libjpeg-devel BuildRequires: libpng-devel BuildRequires: libxslt BuildRequires: libX11-devel BuildRequires: libXext-devel BuildRequires: libXi-devel BuildRequires: libXrender-devel BuildRequires: libXt-devel BuildRequires: libXtst-devel # Requirements for setting up the nss.cfg BuildRequires: nss-devel BuildRequires: pkgconfig BuildRequires: xorg-x11-proto-devel BuildRequires: zip BuildRequires: unzip BuildRequires: java-1.8.0-openjdk-devel BuildRequires: tzdata-java >= 2015d # Earlier versions have a bug in tree vectorization on PPC BuildRequires: gcc >= 4.8.3-8 # Build requirements for SunEC system NSS support BuildRequires: nss-softokn-freebl-devel >= 3.16.1 BuildRequires: systemtap-sdt-devel # this is always built, also during debug-only build # when it is built in debug-only this package is just placeholder %{java_rpo %{nil}} %description The %{origin_nice} runtime environment. %if %{include_debug_build} %package slowdebug Summary: %{origin_nice} Runtime Environment %{majorver} %{debug_on} Group: Development/Languages %{java_rpo -- %{debug_suffix_unquoted}} %description slowdebug The %{origin_nice} runtime environment. %{debug_warning} %endif %if %{include_normal_build} %package headless Summary: %{origin_nice} Headless Runtime Environment %{majorver} Group: Development/Languages %{java_headless_rpo %{nil}} %description headless The %{origin_nice} runtime environment %{majorver} without audio and video support. %endif %if %{include_debug_build} %package headless-slowdebug Summary: %{origin_nice} Runtime Environment %{debug_on} Group: Development/Languages %{java_headless_rpo -- %{debug_suffix_unquoted}} %description headless-slowdebug The %{origin_nice} runtime environment %{majorver} without audio and video support. %{debug_warning} %endif %if %{include_normal_build} %package devel Summary: %{origin_nice} Development Environment %{majorver} Group: Development/Tools %{java_devel_rpo %{nil}} %description devel The %{origin_nice} development tools %{majorver}. %endif %if %{include_debug_build} %package devel-slowdebug Summary: %{origin_nice} Development Environment %{majorver} %{debug_on} Group: Development/Tools %{java_devel_rpo -- %{debug_suffix_unquoted}} %description devel-slowdebug The %{origin_nice} development tools %{majorver}. %{debug_warning} %endif %if %{include_normal_build} %package demo Summary: %{origin_nice} Demos %{majorver} Group: Development/Languages %{java_demo_rpo %{nil}} %description demo The %{origin_nice} demos %{majorver}. %endif %if %{include_debug_build} %package demo-slowdebug Summary: %{origin_nice} Demos %{majorver} %{debug_on} Group: Development/Languages %{java_demo_rpo -- %{debug_suffix_unquoted}} %description demo-slowdebug The %{origin_nice} demos %{majorver}. %{debug_warning} %endif %if %{include_normal_build} %package src Summary: %{origin_nice} Source Bundle %{majorver} Group: Development/Languages %{java_src_rpo %{nil}} %description src The java-%{origin}-src sub-package contains the complete %{origin_nice} %{majorver} class library source code for use by IDE indexers and debuggers. %endif %if %{include_debug_build} %package src-slowdebug Summary: %{origin_nice} Source Bundle %{majorver} %{for_debug} Group: Development/Languages %{java_src_rpo -- %{debug_suffix_unquoted}} %description src-slowdebug The java-%{origin}-src-slowdebug sub-package contains the complete %{origin_nice} %{majorver} class library source code for use by IDE indexers and debuggers. Debugging %{for_debug}. %endif %if %{include_normal_build} %package javadoc Summary: %{origin_nice} %{majorver} API documentation Group: Documentation Requires: javapackages-filesystem Obsoletes: javadoc-slowdebug < 1:1.8.0.222.b10-1 BuildArch: noarch %{java_javadoc_rpo %{nil}} %description javadoc The %{origin_nice} %{majorver} API documentation. %endif %if %{include_debug_build} %package javadoc-slowdebug Summary: %{origin_nice} %{majorver} API documentation %{for_debug} Group: Documentation Requires: javapackages-filesystem BuildArch: noarch %{java_javadoc_rpo -- %{debug_suffix_unquoted}} %description javadoc-slowdebug The %{origin_nice} %{majorver} API documentation %{for_debug}. %endif %if %{include_normal_build} %package javadoc-zip Summary: %{origin_nice} %{majorver} API documentation compressed in a single archive Requires: javapackages-filesystem Obsoletes: javadoc-zip-slowdebug < 1:1.8.0.222.b10-1 BuildArch: noarch %{java_javadoc_rpo %{nil}} %description javadoc-zip The %{origin_nice} %{majorver} API documentation compressed in a single archive. %endif %if %{include_normal_build} %package accessibility Summary: %{origin_nice} %{majorver} accessibility connector %{java_accessibility_rpo %{nil}} %description accessibility Enables accessibility support in %{origin_nice} %{majorver} by using java-atk-wrapper. This allows compatible at-spi2 based accessibility programs to work for AWT and Swing-based programs. Please note, the java-atk-wrapper is still in beta, and %{origin_nice} %{majorver} itself is still being tuned to be working with accessibility features. There are known issues with accessibility on, so please do not install this package unless you really need to. %endif %if %{include_debug_build} %package accessibility-slowdebug Summary: %{origin_nice} %{majorver} accessibility connector %{for_debug} %{java_accessibility_rpo -- %{debug_suffix_unquoted}} %description accessibility-slowdebug See normal java-%{version}-openjdk-accessibility description. %endif %package openjfx Summary: OpenJDK x OpenJFX connector. This package adds symliks finishing Java FX integration to %{name} Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release} Requires: openjfx8%{?_isa} Provides: javafx = %{epoch}:%{version}-%{release} %description openjfx Set of links from OpenJDK (jre) to OpenJFX %package openjfx-devel Summary: OpenJDK x OpenJFX connector for FX developers. This package adds symliks finishing Java FX integration to %{name}-devel Requires: %{name}-devel%{?_isa} = %{epoch}:%{version}-%{release} Requires: openjfx8-devel%{?_isa} Provides: javafx-devel = %{epoch}:%{version}-%{release} %description openjfx-devel Set of links from OpenJDK (sdk) to OpenJFX %if %{include_debug_build} %package openjfx-slowdebug Summary: OpenJDK x OpenJFX connector %{for_debug}. his package adds symliks finishing Java FX integration to %{name}-slowdebug Requires: %{name}-slowdebug%{?_isa} = %{epoch}:%{version}-%{release} Requires: openjfx8%{?_isa} Provides: javafx-slowdebug = %{epoch}:%{version}-%{release} %description openjfx-slowdebug Set of links from OpenJDK-slowdebug (jre) to normal OpenJFX. OpenJFX do not support debug buuilds of itself %package openjfx-devel-slowdebug Summary: OpenJDK x OpenJFX connector for FX developers %{for_debug}. This package adds symliks finishing Java FX integration to %{name}-devel-slowdebug Requires: %{name}-devel-slowdebug%{?_isa} = %{epoch}:%{version}-%{release} Requires: openjfx8-devel%{?_isa} Provides: javafx-devel-slowdebug = %{epoch}:%{version}-%{release} %description openjfx-devel-slowdebug Set of links from OpenJDK-slowdebug (sdk) to normal OpenJFX. OpenJFX do not support debug buuilds of itself %endif %prep # Using the echo macro breaks rpmdev-bumpspec, as it parses the first line of stdout :-( %if 0%{?stapinstall:1} echo "CPU: %{_target_cpu}, arch install directory: %{archinstall}, SystemTap install directory: %{stapinstall}" %else %{error:Unrecognised architecture %{_target_cpu}} %endif if [ %{include_normal_build} -eq 0 -o %{include_normal_build} -eq 1 ] ; then echo "include_normal_build is %{include_normal_build}" else echo "include_normal_build is %{include_normal_build}, thats invalid. Use 1 for yes or 0 for no" exit 11 fi if [ %{include_debug_build} -eq 0 -o %{include_debug_build} -eq 1 ] ; then echo "include_debug_build is %{include_debug_build}" else echo "include_debug_build is %{include_debug_build}, thats invalid. Use 1 for yes or 0 for no" 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_normal_build. That is a no go." exit 13 fi %setup -q -c -n %{uniquesuffix ""} -T -a 0 # https://bugzilla.redhat.com/show_bug.cgi?id=1189084 prioritylength=`expr length %{priority}` if [ $prioritylength -ne 7 ] ; then echo "priority must be 7 digits in total, violated" exit 14 fi # For old patches ln -s %{top_level_dir_name} jdk8 pushd %{top_level_dir_name} # OpenJDK patches %patch1 -p1 %patch8 -p1 %patch9 -p1 %patch10 -p1 %patch11 -p1 %patch12 -p1 %patch13 -p1 %patch18 -p1 %patch21 -p1 %patch22 -p1 %patch24 -p1 %patch25 -p1 %patch26 -p1 %patch27 -p1 %patch28 -p1 %patch29 -p1 %patch30 -p1 %patch31 -p1 %patch32 -p1 %patch33 -p1 %patch34 -p1 %patch35 -p1 %patch36 -p1 %patch37 -p1 %patch38 -p1 %patch40 -p1 %patch41 -p1 %patch45 -p1 %patch46 -p1 %patch47 -p1 %patch48 -p1 %patch51 -p1 %patch56 -p1 %patch57 -p1 %patch58 -p1 %patch62 -p1 %patch63 -p1 %patch67 -p1 %patch68 -p1 %patch70 -p1 %patch72 -p1 %patch73 -p1 %patch74 -p1 %patch75 -p1 %patch76 -p1 %patch77 -p1 %patch78 -p1 %patch81 -p1 %patch83 -p1 %patch84 -p1 %patch85 -p1 %patch86 -p1 %patch87 -p1 %patch88 -p1 popd # System library fixes # %patch201 # %patch202 # %patch203 # Upstreamable fixes %patch578 # RPM-only fixes %patch1000 # Extract systemtap tapsets tar --strip-components=1 -x -I xz -f %{SOURCE8} %if %{include_debug_build} cp -r tapset tapset%{debug_suffix} for suffix in %{build_loop} ; do for file in "tapset"$suffix/*.in; do OUTPUT_FILE=`echo $file | sed -e "s:\.stp\.in$:-%{version}-%{release}.%{_arch}.stp:g"` sed -e "s:@ABS_SERVER_LIBJVM_SO@:%{_jvmdir}/%{sdkdir -- $suffix}/jre/lib/%{archinstall}/server/libjvm.so:g" $file > $file.1 # TODO find out which architectures other than i686 have a client vm %ifarch %{ix86} sed -e "s:@ABS_CLIENT_LIBJVM_SO@:%{_jvmdir}/%{sdkdir -- $suffix}/jre/lib/%{archinstall}/client/libjvm.so:g" $file.1 > $OUTPUT_FILE %else sed -e "/@ABS_CLIENT_LIBJVM_SO@/d" $file.1 > $OUTPUT_FILE %endif sed -i -e "s:@ABS_JAVA_HOME_DIR@:%{_jvmdir}/%{sdkdir -- $suffix}:g" $OUTPUT_FILE sed -i -e "s:@INSTALL_ARCH_DIR@:%{archinstall}:g" $OUTPUT_FILE sed -i -e "s:@prefix@:%{_jvmdir}/%{sdkdir -- $suffix}/:g" $OUTPUT_FILE done done # systemtap tapsets ends %endif # Prepare desktop files # The _X_ syntax indicates variables that are replaced by make upstream # The @X@ syntax indicates variables that are replaced by configure upstream for suffix in %{build_loop} ; do for file in %{SOURCE9} %{SOURCE10} ; do FILE=`basename $file | sed -e s:\.in$::g` EXT="${FILE##*.}" NAME="${FILE%.*}" OUTPUT_FILE=$NAME$suffix.$EXT sed -e "s:_SDKBINDIR_:%{sdkbindir -- $suffix}:g" $file > $OUTPUT_FILE sed -i -e "s:_JREBINDIR_:%{jrebindir -- $suffix}:g" $OUTPUT_FILE sed -i -e "s:@target_cpu@:%{_arch}:g" $OUTPUT_FILE sed -i -e "s:@OPENJDK_VER@:%{version}-%{release}.%{_arch}$suffix:g" $OUTPUT_FILE sed -i -e "s:@JAVA_VER@:%{javaver}:g" $OUTPUT_FILE sed -i -e "s:@JAVA_VENDOR@:%{origin}:g" $OUTPUT_FILE done done # Setup nss.cfg sed -e "s:@NSS_LIBDIR@:%{NSS_LIBDIR}:g" %{SOURCE11} > nss.cfg %build # How many CPU's do we have? export NUM_PROC=%(/usr/bin/getconf _NPROCESSORS_ONLN 2> /dev/null || :) export NUM_PROC=${NUM_PROC:-1} %if 0%{?_smp_ncpus_max} # Honor %%_smp_ncpus_max [ ${NUM_PROC} -gt %{?_smp_ncpus_max} ] && export NUM_PROC=%{?_smp_ncpus_max} %endif %ifarch %{aarch64} export ARCH_DATA_MODEL=64 %endif # We use ourcppflags because the OpenJDK build seems to # pass EXTRA_CFLAGS to the HotSpot C++ compiler... EXTRA_CFLAGS="%ourcppflags -Wno-error -fcommon" EXTRA_CPP_FLAGS="%ourcppflags" EXTRA_ASFLAGS="${EXTRA_CFLAGS} -Wa,--generate-missing-build-notes=yes" export EXTRA_CFLAGS EXTRA_ASFLAGS 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 # Variable used in hs_err hook on build failures top_srcdir_abs_path=$(pwd)/%{top_level_dir_name} mkdir -p %{buildoutputdir -- $suffix} pushd %{buildoutputdir -- $suffix} bash ${top_srcdir_abs_path}/configure \ --with-native-debug-symbols=internal \ --with-milestone="fcs" \ --with-update-version=%{updatever} \ --with-build-number=%{buildver} \ --with-debug-level=$debugbuild \ --enable-unlimited-crypto \ --with-zlib=system \ --with-stdc++lib=dynamic \ --with-extra-cflags="$EXTRA_CFLAGS" \ --with-extra-cxxflags="$EXTRA_CPP_FLAGS" \ --with-extra-asflags="$EXTRA_ASFLAGS" \ --with-extra-ldflags="%{ourldflags}" \ --with-num-cores="$NUM_PROC" \ --with-boot-jdk-jvmargs=-XX:-UsePerfData cat spec.gmk cat hotspot-spec.gmk # Debug builds don't need same targets as release for # build speed-up maketargets="%{release_targets}" if echo $debugbuild | grep -q "debug" ; then maketargets="%{debug_targets}" fi make \ JAVAC_FLAGS=-g \ LOG=trace \ SCTP_WERROR= \ ${maketargets} || ( pwd; find $top_dir_abs_path -name "hs_err_pid*.log" | xargs cat && false ) # 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 images/%{jdkimage} -iname '*.jar' -exec chmod ugo+r {} \; chmod ugo+r images/%{jdkimage}/lib/ct.sym # remove redundant *diz and *debuginfo files find images/%{jdkimage} -iname '*.diz' -exec rm {} \; find images/%{jdkimage} -iname '*.debuginfo' -exec rm {} \; # Build screws up permissions on binaries # https://bugs.openjdk.java.net/browse/JDK-8173610 find images/%{jdkimage} -iname '*.so' -exec chmod +x {} \; find images/%{jdkimage}/bin/ -exec chmod +x {} \; popd >& /dev/null # Install nss.cfg right away as we will be using the JRE above export JAVA_HOME=$(pwd)/%{buildoutputdir -- $suffix}/images/%{jdkimage} # Install nss.cfg right away as we will be using the JRE above install -m 644 nss.cfg $JAVA_HOME/jre/lib/security/ # Use system-wide tzdata rm $JAVA_HOME/jre/lib/tzdb.dat ln -s %{_datadir}/javazi-1.8/tzdb.dat $JAVA_HOME/jre/lib/tzdb.dat # build cycles done %check # We test debug first as it will give better diagnostics on a crash for suffix in %{rev_build_loop} ; do export JAVA_HOME=$(pwd)/%{buildoutputdir -- $suffix}/images/%{jdkimage} # Check unlimited policy has been used $JAVA_HOME/bin/javac -d . %{SOURCE13} $JAVA_HOME/bin/java TestCryptoLevel # Check ECC is working $JAVA_HOME/bin/javac -d . %{SOURCE14} $JAVA_HOME/bin/java $(echo $(basename %{SOURCE14})|sed "s|\.java||") # Check debug symbols are present and can identify code find "$JAVA_HOME" -iname '*.so' -print0 | while read -d $'\0' lib do if [ -f "$lib" ] ; then echo "Testing $lib for debug symbols" # All these tests rely on RPM failing the build if the exit code of any set # of piped commands is non-zero. # Test for .debug_* sections in the shared object. This is the main test # Stripped objects will not contain these eu-readelf -S "$lib" | grep "] .debug_" test $(eu-readelf -S "$lib" | grep -E "\]\ .debug_(info|abbrev)" | wc --lines) == 2 # Test FILE symbols. These will most likely be removed by anything that # manipulates symbol tables because it's generally useless. So a nice test # that nothing has messed with symbols old_IFS="$IFS" IFS=$'\n' for line in $(eu-readelf -s "$lib" | grep "00000000 0 FILE LOCAL DEFAULT") do # We expect to see .cpp files, except for architectures like aarch64 and # s390 where we expect .o and .oS files echo "$line" | grep -E "ABS ((.*/)?[-_a-zA-Z0-9]+\.(c|cc|cpp|cxx|o|oS))?$" done IFS="$old_IFS" # If this is the JVM, look for javaCalls.(cpp|o) in FILEs, for extra sanity checking if [ "`basename $lib`" = "libjvm.so" ]; then eu-readelf -s "$lib" | \ grep -E "00000000 0 FILE LOCAL DEFAULT ABS javaCalls.(cpp|o)$" fi # Test that there are no .gnu_debuglink sections pointing to another # debuginfo file. There shouldn't be any debuginfo files, so the link makes # no sense either eu-readelf -S "$lib" | grep 'gnu' if eu-readelf -S "$lib" | grep '] .gnu_debuglink' | grep PROGBITS; then echo "bad .gnu_debuglink section." eu-readelf -x .gnu_debuglink "$lib" false fi fi 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 # Using line number 1 might cause build problems. See: # https://bugzilla.redhat.com/show_bug.cgi?id=1539664 # https://bugzilla.redhat.com/show_bug.cgi?id=1538767 gdb -q "$JAVA_HOME/bin/java" <> %{name}-demo.files"$suffix" # Find documentation demo files. find $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir -- $suffix}/demo \ $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir -- $suffix}/sample \ -type f -o -type l | sort \ | grep README \ | sed 's|'$RPM_BUILD_ROOT'||' \ | sed 's|^|%doc |' \ >> %{name}-demo.files"$suffix" # Create links which leads to separately installed java-atk-bridge and allow configuration # links points to java-atk-wrapper - an dependence pushd $RPM_BUILD_ROOT/%{_jvmdir}/%{jredir -- $suffix}/lib/%{archinstall} ln -s %{_libdir}/java-atk-wrapper/libatk-wrapper.so.0 libatk-wrapper.so popd pushd $RPM_BUILD_ROOT/%{_jvmdir}/%{jredir -- $suffix}/lib/ext ln -s %{_libdir}/java-atk-wrapper/java-atk-wrapper.jar java-atk-wrapper.jar popd pushd $RPM_BUILD_ROOT/%{_jvmdir}/%{jredir -- $suffix}/lib/ echo "#Config file to enable java-atk-wrapper" > accessibility.properties echo "" >> accessibility.properties echo "assistive_technologies=org.GNOME.Accessibility.AtkWrapper" >> accessibility.properties echo "" >> accessibility.properties popd # intentionally after all else, fx links with redirections on its own FXSDK_FILES=%{name}-openjfx-devel.files"$suffix" FXJRE_FILES=%{name}-openjfx.files"$suffix" echo -n "" > $FXJRE_FILES echo -n "" > $FXSDK_FILES for file in %{jfx_jre_libs} ; do srcfile=%{jfx_jre_libs_dir}/$file targetfile=%{_jvmdir}/%{jredir -- $suffix}/lib/$file ln -s $srcfile $RPM_BUILD_ROOT/$targetfile echo $targetfile >> $FXJRE_FILES done for file in %{jfx_jre_native} ; do srcfile=%{jfx_jre_native_dir}/$file targetfile=%{_jvmdir}/%{jredir -- $suffix}/lib/%{archinstall}/$file ln -s $srcfile $RPM_BUILD_ROOT/$targetfile echo $targetfile >> $FXJRE_FILES done for file in %{jfx_jre_exts} ; do srcfile=%{jfx_jre_exts_dir}/$file targetfile=%{_jvmdir}/%{jredir -- $suffix}/lib/ext/$file ln -s $srcfile $RPM_BUILD_ROOT/$targetfile echo $targetfile >> $FXJRE_FILES done for file in %{jfx_sdk_libs} ; do srcfile=%{jfx_sdk_libs_dir}/$file targetfile=%{_jvmdir}/%{sdkdir -- $suffix}/lib/$file ln -s $srcfile $RPM_BUILD_ROOT/$targetfile echo $targetfile >> $FXSDK_FILES done for file in %{jfx_sdk_bins} ; do srcfile=%{jfx_sdk_bins_dir}/$file targetfile=%{_jvmdir}/%{sdkdir -- $suffix}/bin/$file ln -s $srcfile $RPM_BUILD_ROOT/$targetfile echo $targetfile >> $FXSDK_FILES done bash %{SOURCE20} $RPM_BUILD_ROOT/%{_jvmdir}/%{jredir -- $suffix} %{javaver} # https://bugzilla.redhat.com/show_bug.cgi?id=1183793 touch -t 201401010000 $RPM_BUILD_ROOT/%{_jvmdir}/%{jredir -- $suffix}/lib/security/java.security # moving config files to /etc mkdir -p $RPM_BUILD_ROOT/%{etcjavadir -- $suffix}/lib/security/policy/unlimited/ mkdir -p $RPM_BUILD_ROOT/%{etcjavadir -- $suffix}/lib/security/policy/limited/ for file in lib/security/cacerts lib/security/policy/unlimited/US_export_policy.jar lib/security/policy/unlimited/local_policy.jar lib/security/policy/limited/US_export_policy.jar lib/security/policy/limited/local_policy.jar lib/security/java.policy lib/security/java.security lib/security/blacklisted.certs lib/logging.properties lib/calendars.properties lib/security/nss.cfg lib/net.properties ; do mv $RPM_BUILD_ROOT/%{_jvmdir}/%{jredir -- $suffix}/$file $RPM_BUILD_ROOT/%{etcjavadir -- $suffix}/$file ln -sf %{etcjavadir -- $suffix}/$file $RPM_BUILD_ROOT/%{_jvmdir}/%{jredir -- $suffix}/$file 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 {} \; ; # end, dual install done %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" local debug = false 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 -- run content of included file with fake args arg = {"--currentjvm", "%{uniquesuffix %{nil}}", "--jvmdir", "%{_jvmdir %{nil}}", "--origname", "%{name}", "--origjavaver", "%{javaver}", "--arch", "%{_arch}", "--temp", "%{rpm_state_dir}/%{name}.%{_arch}"} require "copy_jdk_configs.lua" %post %{post_script %{nil}} %post headless %{post_headless %{nil}} %postun %{postun_script %{nil}} %postun headless %{postun_headless %{nil}} %posttrans %{posttrans_script %{nil}} %post devel %{post_devel %{nil}} %postun devel %{postun_devel %{nil}} %posttrans devel %{posttrans_devel %{nil}} %post javadoc %{post_javadoc %{nil}} %postun javadoc %{postun_javadoc %{nil}} %post javadoc-zip %{post_javadoc_zip %{nil}} %postun javadoc-zip %{postun_javadoc_zip %{nil}} %endif %if %{include_debug_build} %post slowdebug %{post_script -- %{debug_suffix_unquoted}} %post headless-slowdebug %{post_headless -- %{debug_suffix_unquoted}} %postun slowdebug %{postun_script -- %{debug_suffix_unquoted}} %postun headless-slowdebug %{postun_headless -- %{debug_suffix_unquoted}} %posttrans slowdebug %{posttrans_script -- %{debug_suffix_unquoted}} %post devel-slowdebug %{post_devel -- %{debug_suffix_unquoted}} %postun devel-slowdebug %{postun_devel -- %{debug_suffix_unquoted}} %posttrans devel-slowdebug %{posttrans_devel -- %{debug_suffix_unquoted}} %endif %if %{include_normal_build} %files # main package builds always %{files_jre %{nil}} %else %files # placeholder %endif %if %{include_normal_build} %files headless %{files_jre_headless %{nil}} %files devel %{files_devel %{nil}} %files demo -f %{name}-demo.files %{files_demo %{nil}} %files src %{files_src %{nil}} %files javadoc %{files_javadoc %{nil}} # this puts huge file to /usr/share # unluckily ti is really a documentation file # and unluckily it really is architecture-dependent, as eg. aot and grail are now x86_64 only # same for debug variant %files javadoc-zip %{files_javadoc_zip %{nil}} %files accessibility %{files_accessibility %{nil}} %files openjfx -f %{name}-openjfx.files %files openjfx-devel -f %{name}-openjfx-devel.files %endif %if %{include_debug_build} %files slowdebug %{files_jre -- %{debug_suffix_unquoted}} %files headless-slowdebug %{files_jre_headless -- %{debug_suffix_unquoted}} %files devel-slowdebug %{files_devel -- %{debug_suffix_unquoted}} %files demo-slowdebug -f %{name}-demo.files-slowdebug %{files_demo -- %{debug_suffix_unquoted}} %files src-slowdebug %{files_src -- %{debug_suffix_unquoted}} %files accessibility-slowdebug %{files_accessibility -- %{debug_suffix_unquoted}} %files openjfx-slowdebug -f %{name}-openjfx.files-slowdebug %files openjfx-devel-slowdebug -f %{name}-openjfx-devel.files-slowdebug %endif %changelog * Fri May 29 2020 jvmboy - 1:1.8.0.262-b02.7 - Support desktop, nss, systemtap and openjfx. - Provide slowdebug and java-doc-zip * Thu May 21 2020 jdkboy - 1:1.8.0.262-b02.6 - Update to jdk8u-shenandoah-8u262-b02 - Create GC worker threads dynamically * Fri Mar 20 2020 jdkboy - 1:1.8.0.242-b08.5 - upgrade openjdk to jdk8u242-b08 * Thu Mar 12 2020 jdkboy - 1:1.8.0.232-b09.4 - add inline optimize for aarch64 * Thu Mar 12 2020 jdkboy - 1:1.8.0.232-b09.3 - add libjpeg.so in jre * Tue Jan 21 2020 jdkboy - 1:1.8.0.232-b09.2 - remove accessibility * Sat Dec 14 2019 guoge - 1:1.8.0.232-b09.1 - Initial build from OpenJDK aarch64-shenandoah-8u232-b09