3c34da7
# Explicitly use bindir tools, in case others are in the PATH,
3c34da7
# like the rustup shims in a user's ~/.cargo/bin/.
3c34da7
#
3c34da7
# Since cargo 1.31, install only uses $CARGO_HOME/config, ignoring $PWD.
3c34da7
#   https://github.com/rust-lang/cargo/issues/6397
3c34da7
# But we can set CARGO_HOME locally, which is a good idea anyway to make sure
3c34da7
# it never writes to ~/.cargo during rpmbuild.
3c34da7
%__cargo %{_bindir}/env CARGO_HOME=.cargo %{_bindir}/cargo
3c34da7
%__rustc %{_bindir}/rustc
3c34da7
%__rustdoc %{_bindir}/rustdoc
3c34da7
3c34da7
# Enable optimization, debuginfo, and link hardening.
3c34da7
%__global_rustflags -Copt-level=3 -Cdebuginfo=2 -Clink-arg=-Wl,-z,relro,-z,now
3c34da7
3c34da7
%__global_rustflags_toml [%{lua:
3c34da7
    for arg in string.gmatch(rpm.expand("%{__global_rustflags}"), "%S+") do
3c34da7
        print('"' .. arg .. '", ')
3c34da7
    end}]
3c34da7
3c34da7
%cargo_prep(V:) (\
3c34da7
%{__mkdir} -p .cargo \
3c34da7
cat > .cargo/config << EOF \
3c34da7
[build]\
3c34da7
rustc = "%{__rustc}"\
3c34da7
rustdoc = "%{__rustdoc}"\
3c34da7
rustflags = %{__global_rustflags_toml}\
3c34da7
\
3c34da7
[install]\
3c34da7
root = "%{buildroot}%{_prefix}"\
3c34da7
\
3c34da7
[term]\
3c34da7
verbose = true\
3c34da7
EOF\
3c34da7
%if 0%{-V:1}\
3c34da7
%{__tar} -xoaf %{S:%{-V*}}\
3c34da7
cat >> .cargo/config << EOF \
3c34da7
\
3c34da7
[source.crates-io]\
3c34da7
replace-with = "vendored-sources"\
3c34da7
\
3c34da7
[source.vendored-sources]\
3c34da7
directory = "./vendor"\
3c34da7
EOF\
3c34da7
%endif\
3c34da7
)
3c34da7
3c34da7
%cargo_build %__cargo build --release %{?_smp_mflags}
3c34da7
3c34da7
%cargo_test %__cargo test --release %{?_smp_mflags} --no-fail-fast
3c34da7
3c34da7
%cargo_install %__cargo install --no-track --path .