Blob Blame History Raw
From 643bf0d32982b67854a39586244b25f54518de02 Mon Sep 17 00:00:00 2001
From: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
Date: Sat, 9 Mar 2019 22:04:49 +0100
Subject: [PATCH 19/19] Do not pull optional dependencies

Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
---
 data/macros.cargo            | 20 +++++++++++---------
 rust2rpm/templates/main.spec |  5 -----
 2 files changed, 11 insertions(+), 14 deletions(-)

diff --git a/data/macros.cargo b/data/macros.cargo
index 96dc354..f950e79 100644
--- a/data/macros.cargo
+++ b/data/macros.cargo
@@ -2,8 +2,10 @@
 #   https://github.com/rust-lang/cargo/issues/6397
 # But we can set CARGO_HOME locally, which is a good idea anyway to make sure
 # it never writes to ~/.cargo during rpmbuild.
-%__cargo %{_bindir}/env CARGO_HOME=.cargo %{_bindir}/cargo
-%__cargo_common_opts %{?_smp_mflags}
+# We also need RUSTC_BOOTSTRAP since we use -Z avoid-dev-deps
+# until it gets stabilized: https://github.com/rust-lang/cargo/issues/5133
+%__cargo %{_bindir}/env CARGO_HOME=.cargo RUSTC_BOOTSTRAP=1 %{_bindir}/cargo
+%__cargo_common_opts %{?_smp_mflags} -Z avoid-dev-deps
 %__cargo_inspector %{_bindir}/cargo-inspector
 
 %cargo_registry %{_datadir}/cargo/registry
@@ -36,10 +38,6 @@ registry = "https://crates.io"\
 replace-with = "local-registry"\
 EOF\
 %{__rm} -f Cargo.lock \
-%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_parse_opts(naf:) %{shrink:\
@@ -74,10 +72,14 @@ if %__cargo_is_lib; then                                            \
   CRATE_VERSION=$(%__cargo_inspector --version Cargo.toml)          \
   REG_DIR=%{buildroot}%{cargo_registry}/$CRATE_NAME-$CRATE_VERSION  \
   %{__mkdir} -p $REG_DIR                                            \
+# Drop all dependency/features information                          \
+# so that cargo doesn't fail resolving dependencies:                \
+# https://github.com/rust-lang/cargo/pull/6729                      \
+  %{__awk} -i inplace -v INPLACE_SUFFIX=.deps '/^\\\[((.+\\\.)?((dev|build)-)?dependencies|features)/{f=1;next} /^\\\[/{f=0}; !f' Cargo.toml \
   %{__cargo} package -l | xargs -d '\\\n' %{__cp} --parents -a -t $REG_DIR \
-%if ! %{with check}                                                 \
-  %{__cp} -a Cargo.toml.orig $REG_DIR/Cargo.toml                    \
-%endif                                                              \
+  %{__mv} Cargo.toml{.deps,}                                        \
+  %{__mv} $REG_DIR/Cargo.toml{.deps,}                               \
+  %{__rm} -f $REG_DIR/Cargo.toml.orig                               \
   echo '{"files":{},"package":""}' > $REG_DIR/.cargo-checksum.json  \
 fi \
 if %__cargo_is_bin; then                                            \
diff --git a/rust2rpm/templates/main.spec b/rust2rpm/templates/main.spec
index 1ebef7b..f0c5445 100644
--- a/rust2rpm/templates/main.spec
+++ b/rust2rpm/templates/main.spec
@@ -44,12 +44,7 @@ Patch0:         {{ patch_file }}
 ExclusiveArch:  %{rust_arches}
 
 BuildRequires:  rust-packaging
-{# We will put all non-optional and optional dependencies until
-   https://github.com/rust-lang/cargo/issues/5133
-   is solved
 {% set buildrequires = normalize_deps(md.requires("default", resolve=True))|sort %}
-#}
-{% set buildrequires = normalize_deps(md.all_dependencies)|sort %}
 {% for req in buildrequires %}
 BuildRequires:  {{ req }}
 {% endfor %}
-- 
2.21.0