c12df7d085
So far we had %cargo_install (for binaries) and %cargo_install_crate (for libraries) which is a bit awkward and requires us to put additional arguments for latter one. We can do all the magic behind the scene. Closes: https://pagure.io/fedora-rust/rust2rpm/issue/7 Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
47 lines
1.6 KiB
Text
47 lines
1.6 KiB
Text
%__cargo %{_bindir}/cargo
|
|
%__cargo_common_opts --release %{?_smp_mflags}
|
|
%__cargo_inspector %{_rpmconfigdir}/cargodeps
|
|
|
|
%cargo_registry %{_usrsrc}/rust
|
|
|
|
%__cargo_is_lib() %{expand:%__cargo_inspector --target-kinds Cargo.toml | grep -q -F lib}
|
|
%__cargo_is_bin() %{expand:%__cargo_inspector --target-kinds Cargo.toml | grep -q -F bin}
|
|
|
|
%cargo_prep %{expand:\
|
|
%{__mkdir} -p .cargo && cat > .cargo/config << EOF \
|
|
[build]\
|
|
rustc = "%{__rustc}"\
|
|
rustflags = %{__global_rustflags_toml}\
|
|
\
|
|
[term]\
|
|
verbose = true\
|
|
\
|
|
[source]\
|
|
\
|
|
[source.local-registry]\
|
|
directory = "%{cargo_registry}"\
|
|
\
|
|
[source.crates-io]\
|
|
registry = "https://crates.io"\
|
|
replace-with = "local-registry"\
|
|
EOF}
|
|
|
|
%cargo_build() %{expand:%__cargo build %{__cargo_common_opts} %{?1}}
|
|
|
|
%cargo_test() %{expand:%__cargo test %{__cargo_common_opts} %{?1}}
|
|
|
|
%cargo_install %{expand:(\
|
|
set -eu \
|
|
if %__cargo_is_lib; then \
|
|
CRATE_NAME=$(%__cargo_inspector --name Cargo.toml) \
|
|
CRATE_VERSION=$(%__cargo_inspector --version Cargo.toml) \
|
|
REG_DIR=%{buildroot}%{cargo_registry}/$CRATE_NAME-$CRATE_VERSION \
|
|
mkdir -p $REG_DIR \
|
|
%__cargo package -l | xargs cp --parents -p -t $REG_DIR \
|
|
echo '{"files":{},"package":""}' > $REG_DIR/.cargo-checksum.json \
|
|
fi \
|
|
if %__cargo_is_bin; then \
|
|
%__cargo install %{?_smp_mflags} --path . --root %{buildroot}%{_prefix} \
|
|
rm %{buildroot}%{_prefix}/.crates.toml \
|
|
fi \
|
|
)}
|