# COPR spec for rusticprofile. See packaging/aur/PKGBUILD for the sibling packaging target. # # This spec is written for COPR with "Enable internet access during builds" ON, so # `cargo build` resolves crates.io at build time and there is no vendor tarball. # Two consequences, both deliberate: # 1. --locked is load-bearing. With network access and no vendoring it is the only # thing pinning what gets resolved to what was actually tested. Never drop it. # 2. This will NOT build in koji. Fedora proper requires offline builds, so shipping # there would need a vendor tarball as Source1. COPR is the endpoint; see NOTES.md. # # Version tracks the last RELEASED tag, not Cargo.toml, because Source0 is a tag tarball # that must exist. This mirrors packaging/aur/PKGBUILD's pkgver and drifts by one command # at release time, not by releases. Name: rusticprofile Version: 0.2.48 Release: 1%{?dist} Summary: A local, per-machine scheduler and orchestrator for rustic backups License: GPL-3.0-or-later URL: https://github.com/l1a/rusticprofile Source0: %{url}/archive/refs/tags/v%{version}.tar.gz#/%{name}-%{version}.tar.gz ExclusiveArch: x86_64 aarch64 BuildRequires: cargo BuildRequires: rust BuildRequires: gcc # rustic is a runtime dependency: rusticprofile spawns it and owns none of the backup # configuration itself. Recommends rather than Requires because rustic is not packaged in # standard Fedora repositories; DNF will install it if an RPM repo provides it, while not # blocking installation if the user provides rustic via cargo or upstream binary. Recommends: rustic %description rusticprofile is a local, per-machine scheduler and orchestrator for rustic backups. It manages systemd and launchd timer units, per-host job gating, run sequencing, exit classification, and lock coordination, delegating backup configuration to rustic's native TOML format. %prep %autosetup -n %{name}-%{version} %build # Keep cargo's state inside the build tree rather than $HOME. export CARGO_HOME=%{_builddir}/cargo-home # Fedora's own rustc flags, from rust-srpm-macros. export RUSTFLAGS="%{build_rustflags}" cargo build --release --locked %install # Not stripped here: with debuginfo present, rpm's own pass extracts the symbols into the # debuginfo subpackage and strips this binary. install -Dpm0755 target/release/rusticprofile %{buildroot}%{_bindir}/rusticprofile # The committed docs/rusticprofile.1 is installed as-is; it is NOT regenerated with mandown. install -Dpm0644 docs/rusticprofile.1 %{buildroot}%{_mandir}/man1/rusticprofile.1 # Generated by the binary just built, so they cannot disagree with its actual CLI. install -d %{buildroot}%{bash_completions_dir} install -d %{buildroot}%{zsh_completions_dir} install -d %{buildroot}%{fish_completions_dir} target/release/rusticprofile --completions bash > %{buildroot}%{bash_completions_dir}/rusticprofile target/release/rusticprofile --completions zsh > %{buildroot}%{zsh_completions_dir}/_rusticprofile target/release/rusticprofile --completions fish > %{buildroot}%{fish_completions_dir}/rusticprofile.fish %check export CARGO_HOME=%{_builddir}/cargo-home # The rustic-backed integration tests skip themselves when rustic is absent, so this # stays hermetic in a clean mock chroot. cargo test --release --locked %files %license LICENSE %doc README.md %{_bindir}/rusticprofile # The glob is load-bearing: rpm compresses man pages on install, so the packaged path is # rusticprofile.1.gz. %{_mandir}/man1/rusticprofile.1* %{bash_completions_dir}/rusticprofile %{zsh_completions_dir}/_rusticprofile %{fish_completions_dir}/rusticprofile.fish %changelog * Tue Sep 22 2026 Ken Tobias <634380+l1a@users.noreply.github.com> - 0.2.48-1 - Update to 0.2.48 * Tue Sep 22 2026 Ken Tobias <634380+l1a@users.noreply.github.com> - 0.2.46-1 - Update to 0.2.46 * Wed Sep 09 2026 Ken Tobias <634380+l1a@users.noreply.github.com> - 0.2.35-1 - Initial COPR packaging