From 4fbdbd183c5632fa3cc149664225a2ffee22ab38 Mon Sep 17 00:00:00 2001 From: Davide Cavalca Date: Thu, 21 Oct 2021 12:17:45 -0700 Subject: [PATCH] Initial import; Fixes: RHBZ#1990930 --- .gitignore | 2 + rd-agent.fc | 4 ++ rd-agent.if | 2 + rd-agent.te | 23 ++++++++ rust-rd-agent.spec | 138 +++++++++++++++++++++++++++++++++++++++++++++ sources | 2 + 6 files changed, 171 insertions(+) create mode 100644 .gitignore create mode 100644 rd-agent.fc create mode 100644 rd-agent.if create mode 100644 rd-agent.te create mode 100644 rust-rd-agent.spec create mode 100644 sources diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0907d6e --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/linux-5.8.11.tar.xz +/rd-agent-2.1.2.crate diff --git a/rd-agent.fc b/rd-agent.fc new file mode 100644 index 0000000..f8a1a5c --- /dev/null +++ b/rd-agent.fc @@ -0,0 +1,4 @@ +/usr/bin/rd-agent -- gen_context(system_u:object_r:resctl_demo_exec_t,s0) + +/var/lib/resctl-demo/misc-bin(/.*)? gen_context(system_u:object_r:var_lib_resctl_demo_bin_t,s0) +/var/lib/resctl-demo/sideload-bin(/.*)? gen_context(system_u:object_r:var_lib_resctl_demo_bin_t,s0) diff --git a/rd-agent.if b/rd-agent.if new file mode 100644 index 0000000..2e81779 --- /dev/null +++ b/rd-agent.if @@ -0,0 +1,2 @@ +## +rd-agentd interface diff --git a/rd-agent.te b/rd-agent.te new file mode 100644 index 0000000..2940ea0 --- /dev/null +++ b/rd-agent.te @@ -0,0 +1,23 @@ +policy_module(rd-agent, 1.0.0) + +######################################## +# +# Declarations +# + +type resctl_demo_t; +type resctl_demo_exec_t; +init_daemon_domain(resctl_demo_t, resctl_demo_exec_t); + +type var_lib_resctl_demo_bin_t; +files_type(var_lib_resctl_demo_bin_t); + +######################################## +# +# rd-agent local policy +# + +allow resctl_demo_exec_t var_lib_resctl_demo_bin_t:file execute; + +manage_dirs_pattern(resctl_demo_exec_t, var_lib_resctl_demo_bin_t, var_lib_resctl_demo_bin_t); +manage_files_pattern(resctl_demo_exec_t, var_lib_resctl_demo_bin_t, var_lib_resctl_demo_bin_t); diff --git a/rust-rd-agent.spec b/rust-rd-agent.spec new file mode 100644 index 0000000..61a5e25 --- /dev/null +++ b/rust-rd-agent.spec @@ -0,0 +1,138 @@ +# Generated by rust2rpm 18 +%bcond_without check +%global __cargo_skip_build 0 + +%global crate rd-agent + +%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 +# SELinux policy +Source10: %{crate}.fc +Source11: %{crate}.if +Source12: %{crate}.te + +ExclusiveArch: %{rust_arches} + +BuildRequires: rust-packaging +%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 + +%cargo_prep + +%generate_buildrequires +%cargo_generate_buildrequires + +%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 diff --git a/sources b/sources new file mode 100644 index 0000000..cc27c9f --- /dev/null +++ b/sources @@ -0,0 +1,2 @@ +SHA512 (linux-5.8.11.tar.xz) = bb6994f09aabfb0076f3023dd8359c5c569a4b398d3a3c3c8d6b27052092cab56ad675f45dd6ceba7fe431f2a6a587858f3c21415b5a00adb346bd2c68d85b0f +SHA512 (rd-agent-2.1.2.crate) = 15dae4e8d6cb2466130eeb208e387e5cc2bc1c0179dd1261057f657738c7f1dc5b54cb29d4a37074aba7196d535b91ee5058b90403c27a12115dfa1ce87712d0