From c9ce952e260ec0adb166bd6e1de652a0277d2437 Mon Sep 17 00:00:00 2001 From: Igor Gnatenko Date: Jun 22 2018 19:05:42 +0000 Subject: macros: make %cargo_* macros parametric Unfortunately cargo-install doesn't accept --target-dir, so have to pass setting through envvar. Also %{shrink:…} them so it looks nicer in build log. Signed-off-by: Igor Gnatenko --- diff --git a/data/macros.cargo b/data/macros.cargo index 22721e9..96a2931 100644 --- a/data/macros.cargo +++ b/data/macros.cargo @@ -35,25 +35,53 @@ EOF\ %endif \ ) -%cargo_build %__cargo build --release %{__cargo_common_opts} +%__cargo_parse_opts(t:naf:) %{shrink:\ +%{-f:%{-a:%{error:Can't specify both -f(%{-f*}) and -a}}} \ + %{-t:--target-dir %{-t*}} \ + %{-n:--no-default-features} \ + %{-a:--all-features} \ + %{-f:--features %{-f*}} \ + %{nil} +} -%cargo_test %__cargo test --release %{__cargo_common_opts} --no-fail-fast +%cargo_build(t:naf:) %{shrink:\ +%{__cargo} build \ + %{__cargo_common_opts} \ + --release \ + %{__cargo_parse_opts %{-t:-t%{-t*}} %{-n} %{-a} %{-f:-f%{-f*}}} \ + %* \ +} -%cargo_install (\ -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 -a -t $REG_DIR \ -%if ! %{with check} \ - %{__cp} -a Cargo.toml.orig $REG_DIR/Cargo.toml \ -%endif \ - echo '{"files":{},"package":""}' > $REG_DIR/.cargo-checksum.json \ +%cargo_test(t:naf:) %{shrink:\ +%{__cargo} test \ + %{__cargo_common_opts} \ + --release \ + --no-fail-fast \ + %{__cargo_parse_opts %{-t:-t%{-t*}} %{-n} %{-a} %{-f:-f%{-f*}}} \ + %* \ +} + +%cargo_install(t:naf:) (\ +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 -a -t $REG_DIR \ +%if ! %{with check} \ + %{__cp} -a Cargo.toml.orig $REG_DIR/Cargo.toml \ +%endif \ + echo '{"files":{},"package":""}' > $REG_DIR/.cargo-checksum.json \ fi \ -if %__cargo_is_bin; then \ - %__cargo install %{__cargo_common_opts} --path . --root %{buildroot}%{_prefix} \ - %{__rm} %{buildroot}%{_prefix}/.crates.toml \ +if %__cargo_is_bin; then \ + %{shrink:%{-t:CARGO_TARGET_DIR=%{-t*}} %{__cargo} install \ + %{__cargo_common_opts} \ + --path . \ + --root %{buildroot}%{_prefix} \ + %{__cargo_parse_opts %{-n} %{-a} %{-f:-f%{-f*}}} \ + %* \ + }\ + %{__rm} %{buildroot}%{_prefix}/.crates.toml \ fi \ )