Add bundled libffi.so to _privatelibs

- Remove libffi.so copying workaround now the portable build installs it in lib
- Remove libffi.so copy if we are building on the same platform as the portable

Related: RHEL-74304
This commit is contained in:
Andrew Hughes 2025-01-17 13:53:45 +00:00
parent 18975a67ae
commit 03d7c28615

View File

@ -349,7 +349,8 @@
%global rpmrelease 2
# Settings used by the portable build
%global portablerelease 1
%global portablesuffix el8
%global portablerhel 8
%global portablesuffix el%{portablerhel}
%global portablebuilddir /builddir/build/BUILD
# Define milestone (EA for pre-releases, GA ("fcs") for releases)
@ -393,7 +394,7 @@
# 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.*%{jpeg_lib}|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.*|libsystemconf[.]so.*|libunpack[.]so.*|libzip[.]so.*|lib[.]so\\(SUNWprivate_.*
%global _privatelibs libatk-wrapper[.]so.*|libattach[.]so.*|libawt_headless[.]so.*|libawt[.]so.*|libawt_xawt[.]so.*|libdt_socket[.]so.*|libffi[.]so.*|libfontmanager[.]so.*|libhprof[.]so.*|libinstrument[.]so.*|libj2gss[.]so.*|libj2pcsc[.]so.*|libj2pkcs11[.]so.*|libjaas_unix[.]so.*|libjava_crw_demo[.]so.*%{jpeg_lib}|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.*|libsystemconf[.]so.*|libunpack[.]so.*|libzip[.]so.*|lib[.]so\\(SUNWprivate_.*
%global __provides_exclude ^(%{_privatelibs})$
%global __requires_exclude ^(%{_privatelibs})$
@ -894,8 +895,10 @@ exit 0
%{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/libawt_headless.so
%{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/libdt_socket.so
%ifarch %{zero_arches}
%if 0%{?rhel} != %{portablerhel}
%{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/libffi.so.*
%endif
%endif
%{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/libfontmanager.so
%{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/libhprof.so
%{_jvmdir}/%{jredir -- %{?1}}/lib/%{archinstall}/libinstrument.so
@ -1039,8 +1042,10 @@ exit 0
%dir %{_jvmdir}/%{sdkdir -- %{?1}}/lib/%{archinstall}
%dir %{_jvmdir}/%{sdkdir -- %{?1}}/lib/%{archinstall}/jli
%ifarch %{zero_arches}
%if 0%{?rhel} != %{portablerhel}
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/%{archinstall}/libffi.so.*
%endif
%endif
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/%{archinstall}/libjawt.so
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/%{archinstall}/jli/libjli.so
%{_jvmdir}/%{sdkdir -- %{?1}}/lib/ct.sym
@ -2067,8 +2072,10 @@ for suffix in %{build_loop} ; do
tar -xJf ${jdkzip}
mv %{name}* ${installdir}
%ifarch %{zero_arches}
# FIXME: Workaround libffi only being in jre/lib not lib
cp -av ${installdir}/jre/lib/%{archinstall}/libffi.* ${installdir}/lib/%{archinstall}
# We do not need the local copy of libffi.so if we are building on the same platform as the portable
%if 0%{?rhel} == %{portablerhel}
rm -vf ${installdir}/{,jre/}lib/%{archinstall}/libffi.*
%endif
%endif
# Fix build paths in ELF files so it looks like we built them
portablenvr="%{name}-portable-%{pversion}-%{prelease}.%{portablesuffix}.%{_arch}"
@ -2714,6 +2721,9 @@ cjc.mainProgram(args)
- Switch to GA mode for final release
- Revise JDK-8141590 backport to install libffi.so* in lib as well as jre/lib
- Sync the copy of the portable specfile with the latest update
- Remove libffi.so copying workaround now the portable build installs it in lib
- Add bundled libffi.so to _privatelibs
- Remove libffi.so copy if we are building on the same platform as the portable
- Resolves: RHEL-73540
- Related: RHEL-74304