macros: automatically strip dev-dependencies
All background written in upstream cargo GitHub issue[0]. In short, cargo build/install enforces us to have all dev-dependencies even they are not used for building/installed. [0] https://github.com/rust-lang/cargo/issues/3732 Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
This commit is contained in:
parent
ee68fab15b
commit
d4334a2ee7
1 changed files with 17 additions and 7 deletions
|
@ -7,8 +7,10 @@
|
||||||
%__cargo_is_lib() %{expand:%__cargo_inspector --target-kinds Cargo.toml | grep -q -F lib}
|
%__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_is_bin() %{expand:%__cargo_inspector --target-kinds Cargo.toml | grep -q -F bin}
|
||||||
|
|
||||||
%cargo_prep %{expand:\
|
%cargo_prep (\
|
||||||
%{__mkdir} -p .cargo && cat > .cargo/config << EOF \
|
set -eu \
|
||||||
|
%{__mkdir} -p .cargo \
|
||||||
|
cat > .cargo/config << EOF \
|
||||||
[build]\
|
[build]\
|
||||||
rustc = "%{__rustc}"\
|
rustc = "%{__rustc}"\
|
||||||
rustflags = %{__global_rustflags_toml}\
|
rustflags = %{__global_rustflags_toml}\
|
||||||
|
@ -24,24 +26,32 @@ directory = "%{cargo_registry}"\
|
||||||
[source.crates-io]\
|
[source.crates-io]\
|
||||||
registry = "https://crates.io"\
|
registry = "https://crates.io"\
|
||||||
replace-with = "local-registry"\
|
replace-with = "local-registry"\
|
||||||
EOF}
|
EOF\
|
||||||
|
%if ! %{with check} \
|
||||||
|
# https://github.com/rust-lang/cargo/issues/3732 \
|
||||||
|
%{__awk} -i inplace -v INPLACE_SUFFIX=.orig '/^\\\[dev-dependencies\\\]$/{f=1;next} /^\\\[/{f=0}; !f' Cargo.toml \
|
||||||
|
%endif \
|
||||||
|
)
|
||||||
|
|
||||||
%cargo_build %__cargo build %{__cargo_common_opts}
|
%cargo_build %__cargo build %{__cargo_common_opts}
|
||||||
|
|
||||||
%cargo_test %__cargo test %{__cargo_common_opts}
|
%cargo_test %__cargo test %{__cargo_common_opts}
|
||||||
|
|
||||||
%cargo_install %{expand:(\
|
%cargo_install (\
|
||||||
set -eu \
|
set -eu \
|
||||||
if %__cargo_is_lib; then \
|
if %__cargo_is_lib; then \
|
||||||
CRATE_NAME=$(%__cargo_inspector --name Cargo.toml) \
|
CRATE_NAME=$(%__cargo_inspector --name Cargo.toml) \
|
||||||
CRATE_VERSION=$(%__cargo_inspector --version Cargo.toml) \
|
CRATE_VERSION=$(%__cargo_inspector --version Cargo.toml) \
|
||||||
REG_DIR=%{buildroot}%{cargo_registry}/$CRATE_NAME-$CRATE_VERSION \
|
REG_DIR=%{buildroot}%{cargo_registry}/$CRATE_NAME-$CRATE_VERSION \
|
||||||
mkdir -p $REG_DIR \
|
%{__mkdir} -p $REG_DIR \
|
||||||
%__cargo package -l | xargs cp --parents -p -t $REG_DIR \
|
%__cargo package -l | xargs cp --parents -p -t $REG_DIR \
|
||||||
|
%if ! %{with check} \
|
||||||
|
%{__install} -p Cargo.toml.orig $REG_DIR/Cargo.toml \
|
||||||
|
%endif \
|
||||||
echo '{"files":{},"package":""}' > $REG_DIR/.cargo-checksum.json \
|
echo '{"files":{},"package":""}' > $REG_DIR/.cargo-checksum.json \
|
||||||
fi \
|
fi \
|
||||||
if %__cargo_is_bin; then \
|
if %__cargo_is_bin; then \
|
||||||
%__cargo install %{?_smp_mflags} --path . --root %{buildroot}%{_prefix} \
|
%__cargo install %{?_smp_mflags} --path . --root %{buildroot}%{_prefix} \
|
||||||
rm %{buildroot}%{_prefix}/.crates.toml \
|
%{__rm} %{buildroot}%{_prefix}/.crates.toml \
|
||||||
fi \
|
fi \
|
||||||
)}
|
)
|
||||||
|
|
Loading…
Reference in a new issue