You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
rust-rd-agent/rust-rd-agent.spec

157 lines
3.8 KiB

# Generated by rust2rpm 18
%bcond_without check
%global __cargo_skip_build 0
%global crate rd-agent
%if 0%{?el8}
# el8 doesn't have these macros
%global __crates_url https://crates.io/api/v1/crates/
%global crates_source %{__crates_url}%{crate}/%{version}/download#/%{crate}-%{version}.crate
%global version_no_tilde %{version}
%endif
%global selinuxtype targeted
%bcond_without selinux
Name: rust-%{crate}
Version: 2.1.2
Release: %autorelease
Summary: Management agent for resctl-demo
# Upstream license specification: Apache-2.0
License: ASL 2.0 and MIT
URL: https://crates.io/crates/rd-agent
Source: %{crates_source}
# Used as a data file by rd-agent for the compile sideload
Source1: https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.8.11.tar.xz
# Vendored dependencies for EPEL, update with ./update-vendor-tarball.sh
Source2: %{crate}-%{version}-vendor.tar.gz
# SELinux policy
Source10: %{crate}.fc
Source11: %{crate}.if
Source12: %{crate}.te
ExclusiveArch: %{rust_arches}
%if 0%{?el8}
BuildRequires: rust-toolset
%else
BuildRequires: rust-packaging
%endif
%if 0%{?with_selinux}
BuildRequires: selinux-policy-devel
%endif
%global _description %{expand:
Management agent for resctl-demo.}
%description %{_description}
%package -n %{crate}
Summary: %{summary}
%if 0%{?with_selinux}
Requires: (%{crate}-selinux if selinux-policy-%{selinuxtype})
%endif
Recommends: rd-hashd = %{version}
Recommends: %{crate}-data = %{version}-%{release}
Recommends: bcc
Recommends: fio
Recommends: oomd
Recommends: stress
Recommends: tar
Recommends: wget
Recommends: xz
%description -n %{crate} %{_description}
%files -n %{crate}
%license LICENSE
%doc README.md
%{_bindir}/rd-agent
%attr(2775, root, wheel) %dir %{_sharedstatedir}/resctl-demo
%package -n %{crate}-data
Summary: Data files for %{crate}
BuildArch: noarch
%description -n %{crate}-data
This package contains data files for %{crate}.
%files -n %{crate}-data
%{_datadir}/resctl-demo
%if 0%{?with_selinux}
%package -n %{crate}-selinux
Summary: SELinux policy for %{crate}
BuildArch: noarch
Requires: selinux-policy-%{selinuxtype}
Requires(post): selinux-policy-%{selinuxtype}
%{?selinux_requires}
%description -n %{crate}-selinux
This package contains the SELinux policy for %{crate}.
%pre -n %{crate}-selinux
%selinux_relabel_pre -s %{selinuxtype}
%post -n %{crate}-selinux
%selinux_modules_install -s %{selinuxtype} %{_datadir}/selinux/packages/%{selinuxtype}/%{crate}.pp.bz2
%selinux_relabel_post -s %{selinuxtype}
%postun -n %{crate}-selinux
if [ $1 -eq 0 ]; then
%selinux_modules_uninstall -s %{selinuxtype} %{crate}
%selinux_relabel_post -s %{selinuxtype}
fi
%files -n %{crate}-selinux
%{_datadir}/selinux/packages/%{selinuxtype}/%{crate}.pp.*
%ghost %verify(not md5 size mtime) %{_sharedstatedir}/selinux/%{selinuxtype}/active/modules/200/%{crate}
%endif
%prep
%autosetup -n %{crate}-%{version_no_tilde} -p1
%if 0%{?with_selinux}
mkdir selinux
cp -p %{SOURCE10} %{SOURCE11} %{SOURCE12} selinux
%endif
%if 0%{?el8}
%cargo_prep -V 2
%else
%cargo_prep
%generate_buildrequires
%cargo_generate_buildrequires
%endif
%build
%cargo_build
%if 0%{?with_selinux}
make -C selinux -f %{_datadir}/selinux/devel/Makefile %{crate}.pp
bzip2 -9 selinux/%{crate}.pp
%endif
%install
%cargo_install
install -Dpm0644 %SOURCE1 %{buildroot}%{_datadir}/resctl-demo/linux.tar.xz
mkdir -p %{buildroot}%{_sharedstatedir}/resctl-demo
%if 0%{?with_selinux}
install -Dm0644 selinux/%{crate}.pp.bz2 \
%{buildroot}%{_datadir}/selinux/packages/%{selinuxtype}/%{crate}.pp.bz2
%endif
%if %{with check}
%check
%cargo_test
%endif
%changelog
%autochangelog