Switch to static builds, reducing system dependencies and making build more portable
This commit is contained in:
parent
b4e6a520f9
commit
f7ce8c82a3
@ -23,6 +23,8 @@
|
|||||||
%bcond_without staticlibs
|
%bcond_without staticlibs
|
||||||
# Build a fresh libjvm.so for use in a copy of the bootstrap JDK
|
# Build a fresh libjvm.so for use in a copy of the bootstrap JDK
|
||||||
%bcond_without fresh_libjvm
|
%bcond_without fresh_libjvm
|
||||||
|
# Build with system libraries
|
||||||
|
%bcond_with system_libs
|
||||||
|
|
||||||
# Workaround for stripping of debug symbols from static libraries
|
# Workaround for stripping of debug symbols from static libraries
|
||||||
%if %{with staticlibs}
|
%if %{with staticlibs}
|
||||||
@ -32,6 +34,16 @@
|
|||||||
%global include_staticlibs 0
|
%global include_staticlibs 0
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
%if %{with system_libs}
|
||||||
|
%global system_libs 1
|
||||||
|
%global link_type system
|
||||||
|
%global freetype_lib %{nil}
|
||||||
|
%else
|
||||||
|
%global system_libs 0
|
||||||
|
%global link_type bundled
|
||||||
|
%global freetype_lib |libfreetype[.]so.*
|
||||||
|
%endif
|
||||||
|
|
||||||
# The -g flag says to use strip -g instead of full strip on DSOs or EXEs.
|
# The -g flag says to use strip -g instead of full strip on DSOs or EXEs.
|
||||||
# This fixes detailed NMT and other tools which need minimal debug info.
|
# This fixes detailed NMT and other tools which need minimal debug info.
|
||||||
# See: https://bugzilla.redhat.com/show_bug.cgi?id=1520879
|
# See: https://bugzilla.redhat.com/show_bug.cgi?id=1520879
|
||||||
@ -368,7 +380,7 @@
|
|||||||
%global top_level_dir_name %{origin}
|
%global top_level_dir_name %{origin}
|
||||||
%global top_level_dir_name_backup %{top_level_dir_name}-backup
|
%global top_level_dir_name_backup %{top_level_dir_name}-backup
|
||||||
%global buildver 36
|
%global buildver 36
|
||||||
%global rpmrelease 1
|
%global rpmrelease 2
|
||||||
# Priority must be 8 digits in total; up to openjdk 1.8, we were using 18..... so when we moved to 11, we had to add another digit
|
# Priority must be 8 digits in total; up to openjdk 1.8, we were using 18..... so when we moved to 11, we had to add another digit
|
||||||
%if %is_system_jdk
|
%if %is_system_jdk
|
||||||
# Using 10 digits may overflow the int used for priority, so we combine the patch and build versions
|
# Using 10 digits may overflow the int used for priority, so we combine the patch and build versions
|
||||||
@ -430,7 +442,7 @@
|
|||||||
# fix for https://bugzilla.redhat.com/show_bug.cgi?id=1111349
|
# fix for https://bugzilla.redhat.com/show_bug.cgi?id=1111349
|
||||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1590796#c14
|
# https://bugzilla.redhat.com/show_bug.cgi?id=1590796#c14
|
||||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1655938
|
# https://bugzilla.redhat.com/show_bug.cgi?id=1655938
|
||||||
%global _privatelibs libsplashscreen[.]so.*|libawt_xawt[.]so.*|libjli[.]so.*|libattach[.]so.*|libawt[.]so.*|libextnet[.]so.*|libawt_headless[.]so.*|libdt_socket[.]so.*|libfontmanager[.]so.*|libinstrument[.]so.*|libj2gss[.]so.*|libj2pcsc[.]so.*|libj2pkcs11[.]so.*|libjaas[.]so.*|libjavajpeg[.]so.*|libjdwp[.]so.*|libjimage[.]so.*|libjsound[.]so.*|liblcms[.]so.*|libmanagement[.]so.*|libmanagement_agent[.]so.*|libmanagement_ext[.]so.*|libmlib_image[.]so.*|libnet[.]so.*|libnio[.]so.*|libprefs[.]so.*|librmi[.]so.*|libsaproc[.]so.*|libsctp[.]so.*|libsystemconf[.]so.*|libzip[.]so.*
|
%global _privatelibs libsplashscreen[.]so.*|libawt_xawt[.]so.*|libjli[.]so.*|libattach[.]so.*|libawt[.]so.*|libextnet[.]so.*|libawt_headless[.]so.*|libdt_socket[.]so.*|libfontmanager[.]so.*|libinstrument[.]so.*|libj2gss[.]so.*|libj2pcsc[.]so.*|libj2pkcs11[.]so.*|libjaas[.]so.*|libjavajpeg[.]so.*|libjdwp[.]so.*|libjimage[.]so.*|libjsound[.]so.*|liblcms[.]so.*|libmanagement[.]so.*|libmanagement_agent[.]so.*|libmanagement_ext[.]so.*|libmlib_image[.]so.*|libnet[.]so.*|libnio[.]so.*|libprefs[.]so.*|librmi[.]so.*|libsaproc[.]so.*|libsctp[.]so.*|libsystemconf[.]so.*|libzip[.]so.*%{freetype_lib}
|
||||||
%global _publiclibs libjawt[.]so.*|libjava[.]so.*|libjvm[.]so.*|libverify[.]so.*|libjsig[.]so.*
|
%global _publiclibs libjawt[.]so.*|libjava[.]so.*|libjvm[.]so.*|libverify[.]so.*|libjsig[.]so.*
|
||||||
%if %is_system_jdk
|
%if %is_system_jdk
|
||||||
%global __provides_exclude ^(%{_privatelibs})$
|
%global __provides_exclude ^(%{_privatelibs})$
|
||||||
@ -871,6 +883,9 @@ exit 0
|
|||||||
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libawt_headless.so
|
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libawt_headless.so
|
||||||
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libdt_socket.so
|
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libdt_socket.so
|
||||||
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libfontmanager.so
|
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libfontmanager.so
|
||||||
|
%if ! %{system_libs}
|
||||||
|
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libfreetype.so
|
||||||
|
%endif
|
||||||
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libinstrument.so
|
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libinstrument.so
|
||||||
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libj2gss.so
|
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libj2gss.so
|
||||||
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libj2pcsc.so
|
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/libj2pcsc.so
|
||||||
@ -1424,14 +1439,8 @@ BuildRequires: desktop-file-utils
|
|||||||
# elfutils only are OK for build without AOT
|
# elfutils only are OK for build without AOT
|
||||||
BuildRequires: elfutils-devel
|
BuildRequires: elfutils-devel
|
||||||
BuildRequires: fontconfig-devel
|
BuildRequires: fontconfig-devel
|
||||||
BuildRequires: freetype-devel
|
|
||||||
BuildRequires: giflib-devel
|
|
||||||
BuildRequires: gcc-c++
|
BuildRequires: gcc-c++
|
||||||
BuildRequires: gdb
|
BuildRequires: gdb
|
||||||
BuildRequires: harfbuzz-devel
|
|
||||||
BuildRequires: lcms2-devel
|
|
||||||
BuildRequires: libjpeg-devel
|
|
||||||
BuildRequires: libpng-devel
|
|
||||||
BuildRequires: libxslt
|
BuildRequires: libxslt
|
||||||
BuildRequires: libX11-devel
|
BuildRequires: libX11-devel
|
||||||
BuildRequires: libXi-devel
|
BuildRequires: libXi-devel
|
||||||
@ -1463,6 +1472,30 @@ BuildRequires: systemtap-sdt-devel
|
|||||||
%endif
|
%endif
|
||||||
BuildRequires: make
|
BuildRequires: make
|
||||||
|
|
||||||
|
%if %{system_libs}
|
||||||
|
BuildRequires: freetype-devel
|
||||||
|
BuildRequires: giflib-devel
|
||||||
|
BuildRequires: harfbuzz-devel
|
||||||
|
BuildRequires: lcms2-devel
|
||||||
|
BuildRequires: libjpeg-devel
|
||||||
|
BuildRequires: libpng-devel
|
||||||
|
%else
|
||||||
|
# Version in src/java.desktop/share/native/libfreetype/include/freetype/freetype.h
|
||||||
|
Provides: bundled(freetype) = 2.12.0
|
||||||
|
# Version in src/java.desktop/share/native/libsplashscreen/giflib/gif_lib.h
|
||||||
|
Provides: bundled(giflib) = 5.2.1
|
||||||
|
# Version in src/java.desktop/share/native/libharfbuzz/hb-version.h
|
||||||
|
Provides: bundled(harfbuzz) = 2.8.0
|
||||||
|
# Version in src/java.desktop/share/native/liblcms/lcms2.h
|
||||||
|
Provides: bundled(lcms2) = 2.12.0
|
||||||
|
# Version in src/java.desktop/share/native/libjavajpeg/jpeglib.h
|
||||||
|
Provides: bundled(libjpeg) = 6b
|
||||||
|
# Version in src/java.desktop/share/native/libsplashscreen/libpng/png.h
|
||||||
|
Provides: bundled(libpng) = 1.6.37
|
||||||
|
# We link statically against libstdc++ to increase portability
|
||||||
|
BuildRequires: libstdc++-static
|
||||||
|
%endif
|
||||||
|
|
||||||
# this is always built, also during debug-only build
|
# this is always built, also during debug-only build
|
||||||
# when it is built in debug-only this package is just placeholder
|
# when it is built in debug-only this package is just placeholder
|
||||||
%{java_rpo %{nil}}
|
%{java_rpo %{nil}}
|
||||||
@ -1818,8 +1851,11 @@ if [ $prioritylength -ne 8 ] ; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# OpenJDK patches
|
# OpenJDK patches
|
||||||
|
|
||||||
|
%if %{system_libs}
|
||||||
# Remove libraries that are linked by both static and dynamic builds
|
# Remove libraries that are linked by both static and dynamic builds
|
||||||
sh %{SOURCE12} %{top_level_dir_name}
|
sh %{SOURCE12} %{top_level_dir_name}
|
||||||
|
%endif
|
||||||
|
|
||||||
# Patch the JDK
|
# Patch the JDK
|
||||||
pushd %{top_level_dir_name}
|
pushd %{top_level_dir_name}
|
||||||
@ -1950,6 +1986,12 @@ function buildjdk() {
|
|||||||
exit 17
|
exit 17
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ "x${link_opt}" = "xbundled" ] ; then
|
||||||
|
libc_link_opt="static";
|
||||||
|
else
|
||||||
|
libc_link_opt="dynamic";
|
||||||
|
fi
|
||||||
|
|
||||||
echo "Using output directory: ${outputdir}";
|
echo "Using output directory: ${outputdir}";
|
||||||
echo "Checking build JDK ${buildjdk} is operational..."
|
echo "Checking build JDK ${buildjdk} is operational..."
|
||||||
${buildjdk}/bin/java -version
|
${buildjdk}/bin/java -version
|
||||||
@ -1981,13 +2023,14 @@ function buildjdk() {
|
|||||||
--with-native-debug-symbols="%{debug_symbols}" \
|
--with-native-debug-symbols="%{debug_symbols}" \
|
||||||
--disable-sysconf-nss \
|
--disable-sysconf-nss \
|
||||||
--enable-unlimited-crypto \
|
--enable-unlimited-crypto \
|
||||||
--with-zlib=system \
|
--with-zlib=${link_opt} \
|
||||||
|
--with-freetype=${link_opt} \
|
||||||
--with-libjpeg=${link_opt} \
|
--with-libjpeg=${link_opt} \
|
||||||
--with-giflib=${link_opt} \
|
--with-giflib=${link_opt} \
|
||||||
--with-libpng=${link_opt} \
|
--with-libpng=${link_opt} \
|
||||||
--with-lcms=${link_opt} \
|
--with-lcms=${link_opt} \
|
||||||
--with-harfbuzz=${link_opt} \
|
--with-harfbuzz=${link_opt} \
|
||||||
--with-stdc++lib=dynamic \
|
--with-stdc++lib=${libc_link_opt} \
|
||||||
--with-extra-cxxflags="$EXTRA_CPP_FLAGS" \
|
--with-extra-cxxflags="$EXTRA_CPP_FLAGS" \
|
||||||
--with-extra-cflags="$EXTRA_CFLAGS" \
|
--with-extra-cflags="$EXTRA_CFLAGS" \
|
||||||
--with-extra-ldflags="%{ourldflags}" \
|
--with-extra-ldflags="%{ourldflags}" \
|
||||||
@ -2154,12 +2197,13 @@ for suffix in %{build_loop} ; do
|
|||||||
bootbuilddir=boot${builddir}
|
bootbuilddir=boot${builddir}
|
||||||
|
|
||||||
if test "x${loop}" = "x%{main_suffix}" ; then
|
if test "x${loop}" = "x%{main_suffix}" ; then
|
||||||
|
link_opt="%{link_type}"
|
||||||
|
%if %{system_libs}
|
||||||
# Copy the source tree so we can remove all in-tree libraries
|
# Copy the source tree so we can remove all in-tree libraries
|
||||||
cp -a %{top_level_dir_name} %{top_level_dir_name_backup}
|
cp -a %{top_level_dir_name} %{top_level_dir_name_backup}
|
||||||
# Remove all libraries that are linked
|
# Remove all libraries that are linked
|
||||||
sh %{SOURCE12} %{top_level_dir_name} full
|
sh %{SOURCE12} %{top_level_dir_name} full
|
||||||
# Use system libraries
|
%endif
|
||||||
link_opt="system"
|
|
||||||
# Debug builds don't need same targets as release for
|
# Debug builds don't need same targets as release for
|
||||||
# build speed-up. We also avoid bootstrapping these
|
# build speed-up. We also avoid bootstrapping these
|
||||||
# slower builds.
|
# slower builds.
|
||||||
@ -2177,9 +2221,11 @@ for suffix in %{build_loop} ; do
|
|||||||
else
|
else
|
||||||
buildjdk ${builddir} ${systemjdk} "${maketargets}" ${debugbuild} ${link_opt}
|
buildjdk ${builddir} ${systemjdk} "${maketargets}" ${debugbuild} ${link_opt}
|
||||||
fi
|
fi
|
||||||
|
%if %{system_libs}
|
||||||
# Restore original source tree we modified by removing full in-tree sources
|
# Restore original source tree we modified by removing full in-tree sources
|
||||||
rm -rf %{top_level_dir_name}
|
rm -rf %{top_level_dir_name}
|
||||||
mv %{top_level_dir_name_backup} %{top_level_dir_name}
|
mv %{top_level_dir_name_backup} %{top_level_dir_name}
|
||||||
|
%endif
|
||||||
else
|
else
|
||||||
# Use bundled libraries for building statically
|
# Use bundled libraries for building statically
|
||||||
link_opt="bundled"
|
link_opt="bundled"
|
||||||
@ -2635,6 +2681,9 @@ cjc.mainProgram(args)
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Aug 29 2022 Andrew Hughes <gnu.andrew@redhat.com> - 1:19.0.0.0.36-2.rolling
|
||||||
|
- Switch to static builds, reducing system dependencies and making build more portable
|
||||||
|
|
||||||
* Mon Aug 29 2022 Andrew Hughes <gnu.andrew@redhat.com> - 1:19.0.0.0.36-1.rolling
|
* Mon Aug 29 2022 Andrew Hughes <gnu.andrew@redhat.com> - 1:19.0.0.0.36-1.rolling
|
||||||
- Update to RC version of OpenJDK 19
|
- Update to RC version of OpenJDK 19
|
||||||
- Update release notes to 19.0.0
|
- Update release notes to 19.0.0
|
||||||
@ -2742,7 +2791,7 @@ cjc.mainProgram(args)
|
|||||||
- updated to CPU jdk-18.0.1+10 sources
|
- updated to CPU jdk-18.0.1+10 sources
|
||||||
|
|
||||||
* Wed Apr 06 2022 Jiri Vanek <jvanek@redhat.com> - 1:18.0.0.0.37-4.rolling
|
* Wed Apr 06 2022 Jiri Vanek <jvanek@redhat.com> - 1:18.0.0.0.37-4.rolling
|
||||||
- Remove hardcoded /usr/lib/jvm by %{_jvmdir} to make rpmlint happy
|
- Remove hardcoded /usr/lib/jvm by %%{_jvmdir} to make rpmlint happy
|
||||||
|
|
||||||
* Wed Mar 23 2022 Andrew Hughes <gnu.andrew@redhat.com> - 1:18.0.0.0.37-3.rolling
|
* Wed Mar 23 2022 Andrew Hughes <gnu.andrew@redhat.com> - 1:18.0.0.0.37-3.rolling
|
||||||
- Automatically turn off building a fresh HotSpot first, if the bootstrap JDK is not the same major version as that being built
|
- Automatically turn off building a fresh HotSpot first, if the bootstrap JDK is not the same major version as that being built
|
||||||
|
Loading…
Reference in New Issue
Block a user