rust-sequoia-sq/rust-sequoia-sq.spec
Jakub Jelen 56ab30f457 Make installation of shell completions and man pages more robust
Without this, OpenScanHub fails to run the install step as it injects
clippy build into the process, which creates different configuration and
therefore different build directory.

Taken from Fedora change

1bcf609430

Related: RHEL-84033
2025-03-27 15:50:33 +01:00

180 lines
4.7 KiB
RPMSpec

# Generated by rust2rpm 27
%bcond check 1
%global crate sequoia-sq
%if 0%{?rhel}
# RHEL: Use bundled deps as it doesn't ship Rust libraries
%global bundled_rust_deps 1
%global __brp_mangle_shebangs_exclude_from ^/usr/src/debug/.*$
%bcond_without bundled_capnproto
%else
# Fedora: Use only system Rust libraries
%global bundled_rust_deps 0
%bcond_with bundled_capnproto
%endif
Name: rust-sequoia-sq
Version: 1.3.0
Release: %autorelease
Summary: Command-line frontends for Sequoia
License: LGPL-2.0-or-later
URL: https://crates.io/crates/sequoia-sq
Source0: %{crates_source}
# Generated using cargo-vendor-filterer:
# cargo download %%{crate}==%%{version} > %%{crate}-%%{version}.crate
# tar xf %%{crate}-%%{version}.crate
# cargo update ... # optional, if you want to update specific dependencies
# pushd %%{crate}-%%{version}
# cargo vendor-filterer --platform x86_64-unknown-linux-gnu \
# --platform powerpc64le-unknown-linux-gnu \
# --platform aarch64-unknown-linux-gnu \
# --platform i686-unknown-linux-gnu \
# --platform s390x-unknown-linux-gnu \
# --all-features
# tar -cJf ../rust-%%{crate}-%%{version}-vendor.tar.xz vendor
Source1: %{name}-%{version}-vendor.tar.xz
Source2: capnproto-c++-1.0.1.tar.gz
# Manually created patch for downstream crate metadata changes
# * switch crypto backend from Nettle to OpenSSL
# * exclude files that are only useful for upstream development
# * drop automated generation of upstream integration tests
# * drop features for unsupported crypto backends
Patch: sequoia-sq-fix-metadata.diff
%if 0%{?bundled_rust_deps}
BuildRequires: rust-toolset
# vendored openssl-sys
BuildRequires: openssl-devel
# vendored rustqlite
BuildRequires: sqlite-devel
%else
BuildRequires: cargo-rpm-macros >= 24
%endif
%if %{with bundled_capnproto}
BuildRequires: gcc-c++
BuildRequires: cmake >= 3.1
%endif
%global _description %{expand:
Command-line frontends for Sequoia.}
%description %{_description}
%package -n %{crate}
Summary: %{summary}
# (Apache-2.0 OR MIT) AND BSD-3-Clause
# (MIT OR Apache-2.0) AND Unicode-DFS-2016
# 0BSD OR MIT OR Apache-2.0
# Apache-2.0
# Apache-2.0 AND MIT
# Apache-2.0 OR BSL-1.0
# Apache-2.0 OR ISC OR MIT
# Apache-2.0 OR MIT
# Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT
# BSD-2-Clause OR Apache-2.0 OR MIT
# BSD-3-Clause
# BSL-1.0
# LGPL-2.0-or-later
# MIT
# MIT OR Apache-2.0
# MIT OR Apache-2.0 OR Zlib
# MIT OR Zlib OR Apache-2.0
# MPL-2.0
# Unlicense OR MIT
# Zlib OR Apache-2.0 OR MIT
License: %{shrink:
LGPL-2.0-or-later AND
Apache-2.0 AND
BSL-1.0 AND
BSD-3-Clause AND
MIT AND
MPL-2.0 AND
Unicode-DFS-2016 AND
(0BSD OR MIT OR Apache-2.0) AND
(Apache-2.0 OR BSL-1.0) AND
(Apache-2.0 OR ISC OR MIT) AND
(Apache-2.0 OR MIT) AND
(Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT) AND
(MIT OR Apache-2.0 OR Zlib) AND
(Unlicense OR MIT)
}
# LICENSE.dependencies contains a full license breakdown
%description -n %{crate} %{_description}
%files -n %{crate}
%license LICENSE.txt
%license LICENSE.dependencies
%doc README.md
%{_bindir}/sq
%{_mandir}/man1/sq*
%{bash_completions_dir}/sq.bash
%{fish_completions_dir}/sq.fish
%{zsh_completions_dir}/_sq
%prep
%autosetup -n %{crate}-%{version} -N %{?bundled_rust_deps:-a1}
%autopatch -M 99 -p1
%if 0%{?bundled_rust_deps}
%cargo_prep -v vendor
# drop broken integration tests
rm -vr subplot/
rm -v tests/sq-subplot.rs
# don't lock the dependencies
rm -f Cargo.lock
%else
%cargo_prep
# drop broken integration tests
rm -vr subplot/
rm -v tests/sq-subplot.rs
%generate_buildrequires
%cargo_generate_buildrequires
%endif
%if %{with bundled_capnproto}
mkdir -p bundled_capnproto
pushd bundled_capnproto
tar --strip-components=1 -xf %{SOURCE2}
popd
%endif
%build
export ASSET_OUT_DIR=target/assets
%if %{with bundled_capnproto}
pushd bundled_capnproto
%cmake -DBUILD_TESTING=OFF
%cmake_build
export PATH="$PWD/%{__cmake_builddir}/src/capnp:$PATH"
popd
%endif
%cargo_build
%{cargo_license_summary}
%{cargo_license} > LICENSE.dependencies
%install
%cargo_install
# install manual pages
mkdir -p %{buildroot}/%{_mandir}/man1
cp -pav target/assets/man-pages/sq*.1 %{buildroot}/%{_mandir}/man1/
# install shell completions
install -Dpm 0644 target/assets/shell-completions/sq.bash \
%{buildroot}/%{bash_completions_dir}/sq.bash
install -Dpm 0644 target/assets/shell-completions/sq.fish \
%{buildroot}/%{fish_completions_dir}/sq.fish
install -Dpm 0644 target/assets/shell-completions/_sq \
%{buildroot}/%{zsh_completions_dir}/_sq
%if %{with check}
%check
%cargo_test
%endif
%changelog
%autochangelog