NVR Bump to allow rebuilding with GTS-14 gcc.

Resolves: RHEL-53516
This commit is contained in:
Nick Clifton 2024-08-16 14:24:37 +01:00
parent efbb91e081
commit 764e9a6c82

View File

@ -9,7 +9,7 @@ BuildRequires: scl-utils-build
Summary: A GNU collection of binary utilities
Name: %{?scl_prefix}binutils
Version: 2.41
Release: 1%{?dist}
Release: 2%{?dist}
License: GPL-3.0-or-later AND (GPL-3.0-or-later WITH Bison-exception-2.2) AND (LGPL-2.0-or-later WITH GCC-exception-2.0) AND BSD-3-Clause AND GFDL-1.3-or-later AND GPL-2.0-or-later AND LGPL-2.1-or-later AND LGPL-2.0-or-later
URL: https://sourceware.org/binutils
@ -154,6 +154,13 @@ URL: https://sourceware.org/binutils
#----------------------------------------------------------------------------
# Bootstrapping: Set this to 1 to build annobin with the system gcc.
# Then once GTS-gcc is built and in the buildroot, reset this variable
# to 0, bump the NVR and rebuild GTS-binutils.
%define bootstrapping 0
#----------------------------------------------------------------------------
# Note - the Linux Kernel binutils releases are too unstable and contain
# too many controversial patches so we stick with the official FSF version
# instead.
@ -359,77 +366,116 @@ BuildRequires: autoconf, automake, perl, sed, coreutils, make
BuildRequires: clang compiler-rt
%else
# XXX Bootstrapping - build with the system gcc first.
# Use the GTS version of gcc to build the binutils so that the built static libraries
# (libfd.a, libopcodes.a libiberty.a libsframe.a) use the same LTO version as the one
# that will be used by consumers of GTS binutils.
# Note - during GTS bootstrap these have to be changed to the systemOS versions.
# XXX BuildRequires: %%{?scl_prefix}gcc
# XXX BuildRequires: %%{?scl_prefix}annobin-plugin-gcc
# XXX BuildRequires: %%{?scl_prefix}gcc-c++
BuildRequires: gcc
BuildRequires: gcc-c++
# XXX %%define gcc_for_libraries %%{?_scl_root}/usr/bin/gcc
# XXX %%define gxx_for_libraries %%{?_scl_root}/usr/bin/g++
%define gcc_for_libraries /usr/bin/gcc
%define gxx_for_libraries /usr/bin/g++
%if %{bootstrapping}
# Note - during GTS bootstrap these have to use the system compiler.
# Note - during GTS bootstrap it may be necessary to build the binutils without
# annobin annotations.
# %%undefine _annotated_build
%define gcc_package gcc
%define gxx_package gcc-c++
%define gcc_for_binutils /usr/bin/gcc
%define gxx_for_binutils /usr/bin/g++
%else
# Use the GTS version of gcc to build the binutils so that the built static libraries
# (libfd.a, libopcodes.a libiberty.a libsframe.a) use the same LTO version as the one
# that will be used by consumers of GTS binutils.
%define gcc_package %{?scl_prefix}gcc
%define gxx_package %{?scl_prefix}gcc-c++
BuildRequires: %{?scl_prefix}annobin-plugin-gcc
%define gcc_for_binutils %{_scl_root}/usr/bin/gcc
%define gxx_for_binutils %{_scl_root}/usr/bin/g++
%endif
BuildRequires: %{gcc_package}
BuildRequires: %{gxx_package}
%endif
#----------------------------------------------------------------------------
%if %{with gold}
# Gold needs bison in order to build gold/yyscript.c. The GOLD testsuite needs a static libc++
BuildRequires: bison, m4, libstdc++-static
%if ! %{with clang}
# XXX BuildRequires: %%{?scl_prefix}gcc-c++
%if %{bootstrapping}
BuildRequires: gcc-c++
%else
BuildRequires: %{?scl_prefix}gcc-c++
%endif
%endif
%endif
#----------------------------------------------------------------------------
%if %{without bootstrap}
BuildRequires: gettext, flex, jansson-devel
%if %{with systemzlib}
BuildRequires: zlib-devel
%endif
%endif
#----------------------------------------------------------------------------
%if %{with docs}
BuildRequires: texinfo >= 4.0
# BZ 920545: We need pod2man in order to build the manual pages.
BuildRequires: /usr/bin/pod2man
%else
BuildRequires: findutils
%endif
#----------------------------------------------------------------------------
%if %{with testsuite}
# Required for: ld-bootstrap/bootstrap.exp bootstrap with --static
# It should not be required for: ld-elf/elf.exp static {preinit,init,fini} array
%if %{with testsuite}
# relro_test.sh uses dc which is part of the bc rpm, hence its inclusion here.
# sharutils is needed so that we can uuencode the testsuite results.
BuildRequires: dejagnu, glibc-static, sharutils, bc, libstdc++
%if %{with systemzlib}
BuildRequires: zlib-devel
%endif
%endif
#----------------------------------------------------------------------------
%if %{with debuginfod}
BuildRequires: elfutils-debuginfod-client-devel
%endif
#----------------------------------------------------------------------------
%{?scl:Requires:%scl_runtime}
# XXX %%define alternatives_cmd %%{_sbindir}/alternatives
# XXX %%define alternatives_cmdline %%{alternatives_cmd}
%if %{bootstrapping}
%define alternatives_cmd %{_sbindir}/alternatives
%define alternatives_cmdline %{alternatives_cmd}
%else
%define alternatives_cmd %{!?scl:%{_sbindir}}%{?scl:%{_root_sbindir}}/alternatives
%define alternatives_cmdline %{alternatives_cmd}%{?scl: --altdir %{_sysconfdir}/alternatives --admindir %{_scl_root}/var/lib/alternatives}
%endif
Requires(post): %{alternatives_cmd}
Requires(preun): %{alternatives_cmd}
@ -553,8 +599,8 @@ Requires: zlib-devel
%endif
BuildRequires: autoconf automake perl sed coreutils make findutils
BuildRequires: %{?scl_prefix}gcc
BuildRequires: %{?scl_prefix}gcc-c++
BuildRequires: %{gcc_package}
BuildRequires: %{gxx_package}
ExcludeArch: aarch64-linux-gnu aarch64-redhat-linux
@ -572,8 +618,8 @@ Requires: zlib-devel
%endif
BuildRequires: autoconf automake perl sed coreutils make findutils
BuildRequires: %{?scl_prefix}gcc
BuildRequires: %{?scl_prefix}gcc-c++
BuildRequires: %{gcc_package}
BuildRequires: %{gxx_package}
ExcludeArch: ppc64le-linux-gnu ppc64le-redhat-linux
@ -591,8 +637,8 @@ Requires: zlib-devel
%endif
BuildRequires: autoconf automake perl sed coreutils make findutils
BuildRequires: %{?scl_prefix}gcc
BuildRequires: %{?scl_prefix}gcc-c++
BuildRequires: %{gcc_package}
BuildRequires: %{gxx_package}
ExcludeArch: s390x-linux-gnu s390x-redhat-linux
@ -610,8 +656,8 @@ Requires: zlib-devel
%endif
BuildRequires: autoconf automake perl sed coreutils make findutils
BuildRequires: %{?scl_prefix}gcc
BuildRequires: %{?scl_prefix}gcc-c++
BuildRequires: %{gcc_package}
BuildRequires: %{gxx_package}
ExcludeArch: x86_64-linux-gnu x86_64-redhat-linux i686-linux-gnu i686-redhat-linux
@ -876,8 +922,8 @@ run_target_configuration()
else
RARGS="--disable-shared"
fi
../configure --target=$target $CARGS $SARGS $RARGS $TARGS || cat config.log
CC=%gcc_for_binutils CXX=%gxx_for_binutils ../configure --target=$target $CARGS $SARGS $RARGS $TARGS || cat config.log
popd
}
@ -894,10 +940,10 @@ build_target()
%if %{with docs}
# Because of parallel building, info has to be made after all.
%make_build %{_smp_mflags} tooldir=%{_prefix} all
%make_build %{_smp_mflags} tooldir=%{_prefix} info
%make_build %{_smp_mflags} tooldir=%{_prefix} CC=%gcc_for_binutils CXX=%gxx_for_binutils all
%make_build %{_smp_mflags} tooldir=%{_prefix} CC=%gcc_for_binutils CXX=%gxx_for_binutils info
%else
%make_build %{_smp_mflags} tooldir=%{_prefix} MAKEINFO=true all
%make_build %{_smp_mflags} tooldir=%{_prefix} CC=%gcc_for_binutils CXX=%gxx_for_binutils MAKEINFO=true all
%endif
popd
@ -935,14 +981,14 @@ run_tests()
# Run the tests and accumulate the logs - but ignore failures...
if test x$native == x1 ; then
make -k check-gas check-binutils check-ld < /dev/null || :
make -k CC=%gcc_for_binutils CXX=%gxx_for_binutils check-gas check-binutils check-ld < /dev/null || :
%if %{with gold}
# The GOLD testsuite always returns an error code, even if no tests fail.
make -k check-gold < /dev/null || :
make -k CC=%gcc_for_binutils CXX=%gxx_for_binutils check-gold < /dev/null || :
%endif
else
# Do not try running linking tests for the cross-binutils.
make -k check-gas check-binutils < /dev/null || :
make -k CC=%gcc_for_binutils CXX=%gxx_for_binutils check-gas check-binutils < /dev/null || :
fi
for f in {gas/testsuite/gas,ld/ld,binutils/binutils}.sum
@ -985,11 +1031,11 @@ run_tests()
# Run the tests and this time fail if there are any errors.
if test x$native == x1 ; then
make -k check-gas check-binutils check-ld < /dev/null
make -k CC=%gcc_for_binutils CXX=%gxx_for_binutils check-gas check-binutils check-ld < /dev/null
# Ignore the gold tests - they always fail
else
# Do not try running linking tests for the cross-binutils.
make -k check-gas check-binutils < /dev/null
make -k CC=%gcc_for_binutils CXX=%gxx_for_binutils check-gas check-binutils < /dev/null
fi
popd
@ -1008,7 +1054,7 @@ run_tests()
%define _with_cc_clang 1
%endif
# Disable LTO on arm due to:
# Disable LTO on Arm due to:
# https://bugzilla.redhat.com/show_bug.cgi?id=1918924
%ifarch %{arm}
%define enable_lto 0
@ -1078,12 +1124,11 @@ install_binutils()
if test x$native == x1 ; then
%if %{with docs}
%make_install DESTDIR=%{buildroot}
make prefix=%{buildroot}%{_prefix} infodir=$local_infodir install-info
%make_install CC=%gcc_for_binutils CXX=%gxx_for_binutils DESTDIR=%{buildroot}
make CC=%gcc_for_binutils CXX=%gxx_for_binutils prefix=%{buildroot}%{_prefix} infodir=$local_infodir install-info
%else
%make_install DESTDIR=%{buildroot} MAKEINFO=true
%make_install CC=%gcc_for_binutils CXX=%gxx_for_binutils DESTDIR=%{buildroot} MAKEINFO=true
%endif
# Rebuild the static libiaries with -fPIC.
# It would be nice to build the static libraries with -fno-lto so that
# they can be used by programs that are built with a different version
@ -1091,23 +1136,23 @@ install_binutils()
# warnings from annocheck.
# Future: Remove libiberty together with its header file, projects should bundle it.
%make_build -s -C libiberty clean
%make_build -s -C libiberty CC=%gcc_for_binutils CXX=%gxx_for_binutils clean
%set_build_flags
%make_build -s CFLAGS="-g -fPIC $RPM_OPT_FLAGS" -C libiberty
%make_build -s CFLAGS="-g -fPIC $RPM_OPT_FLAGS" -C libiberty CC=%gcc_for_binutils CXX=%gxx_for_binutils
# Without the hidden visibility the 3rd party shared libraries would export
# the bfd non-stable ABI.
%make_build -s -C bfd clean
%make_build -s -C bfd CC=%gcc_for_binutils CXX=%gxx_for_binutils clean
%set_build_flags
%make_build -s CFLAGS="-g -fPIC $RPM_OPT_FLAGS -fvisibility=hidden" -C bfd
%make_build -s CFLAGS="-g -fPIC $RPM_OPT_FLAGS -fvisibility=hidden" -C bfd CC=%gcc_for_binutils CXX=%gxx_for_binutils
%make_build -s -C opcodes clean
%make_build -s -C opcodes clean CC=%gcc_for_binutils CXX=%gxx_for_binutils
%set_build_flags
%make_build -s CFLAGS="-g -fPIC $RPM_OPT_FLAGS" -C opcodes
%make_build -s CFLAGS="-g -fPIC $RPM_OPT_FLAGS" -C opcodes CC=%gcc_for_binutils CXX=%gxx_for_binutils
%make_build -s -C libsframe clean
%make_build -s -C libsframe clean CC=%gcc_for_binutils CXX=%gxx_for_binutils
%set_build_flags
%make_build -s CFLAGS="-g -fPIC $RPM_OPT_FLAGS" -C libsframe
%make_build -s CFLAGS="-g -fPIC $RPM_OPT_FLAGS" -C libsframe CC=%gcc_for_binutils CXX=%gxx_for_binutils
install -m 644 bfd/.libs/libbfd.a $local_libdir
install -m 644 libiberty/libiberty.a $local_libdir
@ -1184,7 +1229,7 @@ EOH
local target_root=$local_root/$target
%make_install DESTDIR=%{buildroot} MAKEINFO=true
%make_install DESTDIR=%{buildroot} MAKEINFO=true CC=%gcc_for_binutils CXX=%gxx_for_binutils
fi
# This one comes from gcc
@ -1268,7 +1313,7 @@ exit 0
# RHEL-22818: Restire the SELinux context of the gprofng libraries.
restorecon -R %{_libdir}
# And the rc file.
restorecon /opt/rh/gcc-toolset-14/root/usr/etc/gprofng.rc
restorecon %{_scl_root}/usr/etc/gprofng.rc
exit 0
%endif
@ -1413,7 +1458,7 @@ exit 0
%dir %{_libdir}/gprofng
%{_libdir}/gprofng/*
# FIXME: Work out the correct way to specify this file:
/opt/rh/gcc-toolset-14/root/etc/gprofng.rc
%{_scl_root}/etc/gprofng.rc
%endif
%if %{with crossbuilds}
@ -1446,5 +1491,8 @@ exit 0
#----------------------------------------------------------------------------
%changelog
* Fri Aug 16 2024 Nick Clifton <nickc@redhat.com> - 2.41-2
- NVR Bump to allow rebuilding with GTS-14 gcc. (RHEL-53516)
* Fri Apr 26 2024 Nick Clifton <nickc@redhat.com> - 2.41-1
- Initial import of upstream 2.41 release with patches from Fedora 40.