Package: dh-rust
Version: 0.0.11
Followup-For: Bug #1094483
X-Debbugs-Cc: noisyc...@tutanota.com

I confirm the analysis of this bug which I gave in #1094199. Both bugs are the
manifestation of the same underlying implementation bug: dh-rust relies on
`cargo package` to normalize the crate and to include/exclude the desired files
from the Debian package. At this time, `cargo package` always generates or
creates a Cargo.lock file in the package, which requires the local registry to
be populated with all dependencies.

For what concerns this bug, cargo's behavior forces build-dependencies to be
installed even when they are not needed at all for the purposes of Debian
packaging: Cargo.lock is deleted from the package anyway. As a consequence, it
is forcing Jonas to remove the <!nocheck> condition in tens of packages' B-Ds.
In other contexts is makes useless gymastics compulsory, like needing to
resolve the installation order and forcing one into dependency cycles which
could be very hard to solve, like in bug #1094199. Upstream it is causing a
number of issues too, see e.g. [1] and [2].

The situation got (probably one order of magnitude?) worse with cargo 1.84,
which started to create lock files not only for binary crates and for library
crates with examples, but for *all* crates. Starting with cargo 1.84 Jonas will
have to remove the <!nocheck> condition from *all* of his packages as long as
he continues to use `cargo package` in dh-rust. An example of a package that I
could test to build with cargo 1.83 but not with cargo 1.84 is rust-nanorand
0.7.0-11, which just yesterday was updated to 0.7.0-12 in order (among other
things) to remove the <!nocheck>s.



[1] https://github.com/rust-lang/cargo/issues/15059
[2] https://github.com/rust-lang/cargo/issues/15151

Reply via email to