# Generated by rust2rpm 25
%bcond_without check

%global crate bpfman

## START DO NOT OVERRIDE: These are generated at runtime by .packit.sh
%global commit 2265d02a3bffb4853471bd0caeb02e103e7a9dce
%global shortcommit 2265d02a
%global base_version 0.5.6

## END DO NOT OVERRIDE

%global package_version %{base_version}%{?prerelease:~%{prerelease}}
%global upstream_version %{base_version}%{?prerelease:-%{prerelease}}

Name:           bpfman
Version:        %{package_version}
Release: 1.20250313113624231560.main.31.2265d02a%{?dist}
Summary:        An eBPF program manager

License: Apache-2.0

URL:             https://bpfman.io
Source0:         https://github.com/bpfman/bpfman/archive/%{commit}/%{name}-%{shortcommit}.tar.gz
# The vendor tarball is created using cargo-vendor-filterer to remove Windows
# related files (https://github.com/coreos/cargo-vendor-filterer)
#   cargo vendor-filterer --format tar.gz --prefix vendor bpfman-bpfman-vendor.tar.gz
Source1:         bpfman-bpfman-vendor.tar.gz

BuildRequires:  cargo-rpm-macros >= 25
BuildRequires:  systemd-rpm-macros
BuildRequires:  openssl-devel
BuildRequires:  pkgconfig(zlib)
BuildRequires:  gcc
BuildRequires:  cmake
BuildRequires:  clang-devel

# TODO: Generate Provides for all of the vendored dependencies

%global _description %{expand:
An eBPF Program Manager.}

%description %{_description}

%prep
%autosetup %{name}-%{version_no_tilde} -n %{name}-%{commit} -p1 -a1

# Source1 is vendored dependencies
tar -xoaf %{SOURCE1}

# Remove the executable bit from lib.rs as it affects brp_mange_shebangs
chmod -x ./vendor/typed-path/src/lib.rs

# Let the macros setup Cargo.toml to use vendored sources
%cargo_prep -v vendor
%cargo_license_summary
%cargo_license

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

%install
install -Dpm 0755 \
    -t %{buildroot}%{_sbindir} \
    ./target/release/bpfman
install -Dpm 0755 \
    -t %{buildroot}%{_sbindir} \
    ./target/release/bpfman-ns
install -Dpm 0755 \
    -t %{buildroot}%{_sbindir} \
    ./target/release/bpfman-rpc
install -Dpm 644 \
    -t %{buildroot}%{_unitdir} \
    ./scripts/bpfman.socket
install -Dpm 644 \
    -t %{buildroot}%{_unitdir} \
    ./scripts/bpfman.service

%post
%systemd_post bpfman.service

%preun
%systemd_preun bpfman.service

%postun
%systemd_postun_with_restart bpfman.service

%files
%license LICENSE-APACHE
%license LICENSE.dependencies
%license cargo-vendor.txt
%doc README.md
%{_sbindir}/bpfman
%{_sbindir}/bpfman-ns
%{_sbindir}/bpfman-rpc
%{_unitdir}/bpfman.socket
%{_unitdir}/bpfman.service

%if %{with check}
%check
# Skip image_pull_* tests as require Internet to pull images from a registry
%cargo_test -- -- --skip oci_utils::image_manager::tests::image_pull_failure --skip oci_utils::image_manager::tests::image_pull_and_bytecode_verify --skip oci_utils::image_manager::tests::private_image_pull_and_bytecode_verify --skip oci_utils::image_manager::tests::image_pull_policy_never_failure
%endif

%changelog
%autochangelog