Blob Blame History Raw
# Generated by rust2rpm 24
%bcond_without check

%global crate below

%global forgeurl https://github.com/facebookincubator/below

Name:           rust-below
Version:        0.7.1
Release:        %autorelease
Summary:        Interactive tool to view and record historical system data

License:        Apache-2.0
URL:            https://crates.io/crates/below
Source:         %{crates_source}
# Get these from the repo as they aren't included in the crate
Source1:        %{forgeurl}/raw/v%{version}/etc/below.service
Source2:        %{forgeurl}/raw/v%{version}/etc/logrotate.conf
# Manually created patch for downstream crate metadata changes
# * bump clap from 3.2.5 to 4.3.5
# * bump clap_complete from 3.2.5 to 4.3.1
Patch:          below-fix-metadata.diff
# Migrate to clap 4
# based on https://github.com/facebookincubator/below/commit/a1b257d91677637063c1eb359097d53078f7272a
Patch:          below-clap4.diff

# below-config and below-model are not available
ExcludeArch:    %{arm32} %{ix86}

BuildRequires:  rust-packaging >= 21
BuildRequires:  systemd-rpm-macros

%global _description %{expand:
below is an interactive tool to view and record historical system data. It has
support for:

- information regarding hardware resource utilization
- viewing the cgroup hierarchy
- cgroup and process information
- pressure stall information (PSI)
- record mode to record system data
- replay mode to replay historical system data
- live mode to view live system data
- dump subcommand to report script-friendly information (e.g. JSON and CSV)

below does not have support for cgroup1.

The name "below" stems from the fact that the below developers rejected many of
atop's design and style decisions.}

%description %{_description}

%package     -n %{crate}
Summary:        %{summary}
License:        Apache-2.0 AND (Apache-2.0 OR MIT) AND Unicode-DFS-2016 AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT) AND BSD-2-Clause AND (Apache-2.0 OR BSD-3-Clause OR MIT) AND (BSD-2-Clause OR LGPL-2.1) AND MIT AND (MPL-2.0 OR MIT OR Apache-2.0) AND (Unlicense OR MIT)
# LICENSE.dependencies contains a full license breakdown

Recommends:     logrotate

%description -n %{crate} %{_description}

%files       -n %{crate}
%license LICENSE
%license LICENSE.dependencies
%doc README.md
%{_bindir}/below
%{_unitdir}/%{crate}.service
%dir %{_sysconfdir}/logrotate.d
%config(noreplace) %{_sysconfdir}/logrotate.d/%{crate}.conf
%dir %{_localstatedir}/log/%{crate}

%post        -n %{crate}
%systemd_post %{crate}.service

%preun       -n %{crate}
%systemd_preun %{crate}.service

%postun      -n %{crate}
%systemd_postun_with_restart %{crate}.service

%prep
%autosetup -n %{crate}-%{version_no_tilde} -p1
%cargo_prep

%generate_buildrequires
%cargo_generate_buildrequires

%build
%cargo_build
%{cargo_license} > LICENSE.dependencies

%install
%cargo_install
install -D -p -m0644 %{SOURCE1} %{buildroot}%{_unitdir}/%{crate}.service
install -D -p -m0644 %{SOURCE2} \
  %{buildroot}%{_sysconfdir}/logrotate.d/%{crate}.conf
install -d -m1777 %{buildroot}%{_localstatedir}/log/%{crate}

%if %{with check}
%check
# thread 'test::record_replay_integration' panicked at 'missing memory.pressure', src/test.rs:58:10
%cargo_test -- -- --skip test::record_replay_integration
%endif

%changelog
%autochangelog