From 2e9ffefb814b902fd941f7e02a5cc2830ce6db8f Mon Sep 17 00:00:00 2001 From: Marek Polacek Date: Tue, 4 Jan 2022 11:34:18 -0500 Subject: [PATCH] Update annobin plugin patch Resolves: #2030667 --- gcc.spec | 50 ++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 38 insertions(+), 12 deletions(-) diff --git a/gcc.spec b/gcc.spec index 69e7e69..44225b3 100644 --- a/gcc.spec +++ b/gcc.spec @@ -127,8 +127,8 @@ # The next line has been stolen from redhat-rpm-config.spec. # We install the version info into a file in this directory, rather than # gcc's plugin directory, because there is no reliable way for redhat-rpm-config -# to determine the name of gcc's plugin directory. Plus there may be more than -# one plugin directory if different versions of gcc are installed. +# to determine the name of gcc's plugin directory. +# FIXME: We need a way to cope if more than one version of gcc is installed. %global rrcdir /usr/lib/rpm/redhat # A file that records information about the built gcc-annobin plugin. @@ -137,7 +137,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}.1%{?dist} +Release: %{gcc_release}.2%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -226,9 +226,10 @@ BuildRequires: graphviz, dblatex, texlive-collection-latex, docbook5-style-xsl %endif %if %{with annobin_plugin} -# Starting with release 9.93 annobin puts a copy of the sources in /usr/src/annobin # Starting with release 10.01 annobin fixed a bug in its configure scripts which prevented them from working with a built but not installed compiler BuildRequires: annobin >= 10.01 +# Starting with release 9.93 annobin-plugin-gcc puts a copy of the sources in /usr/src/annobin +BuildRequires: annobin-plugin-gcc # See The %%install phase for why we need xz. BuildRequires: xz %endif @@ -1302,7 +1303,7 @@ CC="${ccompiler}" CFLAGS="${comp_flags}" \ ./configure ${CONFIG_ARGS} || cat config.log echo "Building the annobin plugin" -make +make echo "Annobin plugin build complete" popd @@ -2126,14 +2127,27 @@ rm -f gcc-annobin.so.0 gcc-annobin.so ln -s gcc-annobin.so.0.0.0 gcc-annobin.so.0 ln -s gcc-annobin.so.0.0.0 gcc-annobin.so -# Record information about the plugin. -mkdir -p %{buildroot}%{rrcdir} -# Note - the comparison logic in redhat-rpm-config's %%triggger macros require -# that the plugin builder information appear as "major.minor.revision-release", -# eg "11.2.1-1" on the first line of the version file. -echo "%{gcc_version}-%{gcc_release}" > %{buildroot}%{gver} +# Record information about the version of the compiler that built the plugin. +# +# Note - we cannot just store %%{gcc_version} and %%{gcc_release} as sometimes +# the gcc rpm version changes without the NVR being altered. See BZ #2030671 +# for more discussion on this. +# +# Note that when performing a scratch build %%{release} will not contain +# a distribution tag. Ie it would be "1-7" rather than "1-7.fc36". This means +# that if a scratch build is installed, eg into a mock chroot, then the logic +# in redhat-rpm-config's redhat-annobin-plugin-select.sh script will always +# select the gcc built plugin no matter what. (Since the version string for +# the gcc built plugin can never match the version string for the annobin +# built plugin, as the annobin version string always includes a distribution +# tag). Sadly this is unavoidable. + +mkdir -p %{buildroot}%{rrcdir} +echo "%{version}-%{release}" > %{buildroot}%{gver} + # Provide a more complete version information string on the second line. -# This is not used by the comparison logic, but makes the file more useful to humans. +# This is not used by the comparison logic in the redhat-annobin-plugin-select.sh +# script, but it does make the file more useful to humans. echo "%{ANNOBIN_GCC_PLUGIN_DIR}/gcc-annobin.so.0.0.0 was built by gcc version %{gcc_version}-%{gcc_release} from the ${annobin_dir} sources" >> %{buildroot}%{gver} popd # endif for %{with annobin_plugin} @@ -2150,6 +2164,15 @@ ln -s gcc-annobin.so.0.0.0 gcc-annobin.so popd > /dev/null %endif +%if %{with annobin_plugin} +%preun +pushd %{ANNOBIN_GCC_PLUGIN_DIR} > /dev/null +# Compress the annobin plugin before it is removed. This avoids a warning from rpm. +rm -f gcc-annobin.so.0 gcc-annobin.so +xz -9 gcc-annobin.so.0.0.0 +popd > /dev/null +%endif + %if %{with tests} %check cd obj-%{gcc_target_platform} @@ -3303,6 +3326,9 @@ end %endif %changelog +* Tue Jan 4 2022 Marek Polacek 11.2.1-7.2 +- update annobin plugin patch (#2030667) + * Thu Dec 16 2021 Marek Polacek 11.2.1-7.1 - build annobin plugin (patch by Nick Clifton) (#2030667)