Split plugins into separate sub-packages
Since annobin is required by redhat-rpm-config, having the clang and llvm plugins as part of the default package means that llvm-libs is always installed into the buildroot, which is unnecessary for most packages. Also, having an llvm depenency in the buildroot makes upgrading llvm more difficult. This patch attempts to resolve these issues by spliting up the various plugins into their own sub-packages, so that redhat-rpm-config can have finer-grained dependencies on only the plugins that it needs.
This commit is contained in:
parent
2cfdfdf4f4
commit
92c8279fc3
88
annobin.spec
88
annobin.spec
@ -2,7 +2,7 @@
|
||||
Name: annobin
|
||||
Summary: Annotate and examine compiled binary files
|
||||
Version: 9.60
|
||||
Release: 1%{?dist}
|
||||
Release: 2%{?dist}
|
||||
License: GPLv3+
|
||||
# ProtocolURL: https://fedoraproject.org/wiki/Toolchain/Watermark
|
||||
# Maintainer: nickc@redhat.com
|
||||
@ -51,6 +51,10 @@ License: GPLv3+
|
||||
%undefine _annotated_build
|
||||
%endif
|
||||
|
||||
%{!?llvm_version:%global llvm_version 11.1.0}
|
||||
%{!?llvm_plugin_dir:%global llvm_plugin_dir %{_libdir}/llvm/%{llvm_version}}
|
||||
%{!?clang_plugin_dir:%global clang_plugin_dir %{_libdir}/clang/%{llvm_version}}
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
|
||||
Source: https://nickc.fedorapeople.org/annobin-%{version}.tar.xz
|
||||
@ -113,6 +117,18 @@ Requires: (gcc >= %{gcc_major} with gcc < %{gcc_next})
|
||||
Requires: gcc
|
||||
%endif
|
||||
|
||||
%if %{with gccplugin}
|
||||
Requires: annobin-plugin-gcc
|
||||
%endif
|
||||
|
||||
%if %{with llvmplugin}
|
||||
Requires: annobin-plugin-llvm
|
||||
%endif
|
||||
|
||||
%if %{with clangplugin}
|
||||
Requires: annobin-plugin-clang
|
||||
%endif
|
||||
|
||||
BuildRequires: gcc gcc-plugin-devel gcc-c++
|
||||
# The documentation uses pod2man...
|
||||
BuildRequires: perl perl-podlators
|
||||
@ -169,20 +185,48 @@ hardening options.
|
||||
|
||||
%endif
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
%if %{with gccplugin}
|
||||
|
||||
%package plugin-gcc
|
||||
Summary: annobin gcc plugin
|
||||
|
||||
Conflicts: annobin <= 9.60-1
|
||||
|
||||
%description plugin-gcc
|
||||
Installs an annobin plugin that can be used by gcc.
|
||||
|
||||
%endif
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
%if %{with llvmplugin}
|
||||
|
||||
%package plugin-llvm
|
||||
Summary: annobin llvm plugin
|
||||
|
||||
Conflicts: annobin <= 9.60-1
|
||||
|
||||
%description plugin-llvm
|
||||
Installs an annobin plugin that can be used by llvm tools.
|
||||
|
||||
%endif
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
%if %{with clangplugin}
|
||||
|
||||
%package plugin-clang
|
||||
Summary: annobin clang plugin
|
||||
|
||||
Conflicts: annobin <= 9.60-1
|
||||
|
||||
%description plugin-clang
|
||||
Installs an annobin plugin that can be used by clang.
|
||||
|
||||
%endif
|
||||
#---------------------------------------------------------------------------------
|
||||
|
||||
%global ANNOBIN_GCC_PLUGIN_DIR %(gcc --print-file-name=plugin)
|
||||
|
||||
%if %{with clangplugin} || %{with llvmplugin}
|
||||
# FIXME: We currently assume that the first directory listed in clang's
|
||||
# search directory output is the one that we should use for plugins.
|
||||
# This might not be correct.
|
||||
# The gensub() below is because without it $2 would look like:
|
||||
# " =/usr/lib64/clang/8.0.0"
|
||||
# Note - we install LLVM plugins into the same directory as Clang plugins.
|
||||
%global ANNOBIN_CLANG_PLUGIN_DIR %(clang --print-search-dirs | gawk -e'BEGIN { FS = ":" } /libraries/ { print gensub(" =","",1,$2) } END { }')
|
||||
%endif
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
|
||||
%prep
|
||||
@ -278,7 +322,13 @@ make -C llvm-plugin all CXXFLAGS="%{optflags} $BUILD_FLAGS"
|
||||
|
||||
# PLUGIN_INSTALL_DIR is used by the Clang and LLVM makefiles...
|
||||
%install
|
||||
%make_install PLUGIN_INSTALL_DIR=$RPM_BUILD_ROOT%{ANNOBIN_CLANG_PLUGIN_DIR}
|
||||
%make_install PLUGIN_INSTALL_DIR=%{buildroot}/%{llvm_plugin_dir}
|
||||
|
||||
%if %{with clangplugin}
|
||||
# Move clang plugin to a seperate directory.
|
||||
mkdir -p %{buildroot}/%{clang_plugin_dir}
|
||||
mv %{buildroot}/%{llvm_plugin_dir}/annobin-for-clang.so %{buildroot}/%{clang_plugin_dir}
|
||||
%endif
|
||||
rm -f %{buildroot}%{_infodir}/dir
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
@ -307,11 +357,18 @@ fi
|
||||
%{_mandir}/man1/hardened.1*
|
||||
%{_mandir}/man1/run-on-binaries-in.1*
|
||||
|
||||
%if %{with clangplugin} || %{with llvmplugin}
|
||||
%{ANNOBIN_CLANG_PLUGIN_DIR}
|
||||
%if %{with llvmplugin}
|
||||
%files plugin-llvm
|
||||
%{llvm_plugin_dir}/annobin-for-llvm.so
|
||||
%endif
|
||||
|
||||
%if %{with clangplugin}
|
||||
%files plugin-clang
|
||||
%{clang_plugin_dir}/annobin-for-clang.so
|
||||
%endif
|
||||
|
||||
%if %{with gccplugin}
|
||||
%files plugin-gcc
|
||||
%{ANNOBIN_GCC_PLUGIN_DIR}
|
||||
%endif
|
||||
|
||||
@ -324,6 +381,9 @@ fi
|
||||
#---------------------------------------------------------------------------------
|
||||
|
||||
%changelog
|
||||
* Wed Feb 10 2021 Tom Stellard <tstellar@redhat.com> = 9.60-2
|
||||
- Split plugins into separate sub-packages
|
||||
|
||||
* Fri Feb 05 2021 Nick Clifton <nickc@redhat.com> - 9.60-1
|
||||
- Add some GO tests to annocheck.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user