[Pkg-rust-maintainers] Bug#975657: Bug#975657: debcargo: Debcargo, cargo, and other Rust packaging tools are NOT in testing

peter green plugwash at p10link.net
Wed Nov 25 00:55:34 GMT 2020


On 24/11/2020 19:04, Sylvestre Ledru wrote:
> Hello,
> 
> Le 24/11/2020 à 19:06, Calum McConnell a écrit :
>  > Package: debcargo
>  > Severity: important
>  > X-Debbugs-Cc: calumlikesapplepie at gmail.com
>  >
>> As the freeze approaches, it becomes more important to make sure that every package desired for the next release is actually
>> present in Debian.  Many of the important rust packages have not been in testing for several months, and must be fixed and updated soon.
>>
> Do you have a list of packages you have in mind?
> 
> Cargo is in testing (version 0.43.1)

AIUI the "cargo" crate is packaged twice in Debian.

The "cargo" source package uses embedded rust libraries (to avoid bootstrapping nightmares) and builds
the cargo tool. It is currently in testing, though it seems to have a FTBFS issue which is not yet
reported in the BTS.

the "rust-cargo" source package on the other hand builds the librust-cargo-dev and librust-cargo+openssl-dev
packages and is not in testing.

> 
> Debcargo indeed needs some love (i reported bug https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=963916).
> 
> As NEW is super fast lately,

Speed is all very well, but is there any resolution to the dispute over feature packages that has caused
a large number of uploads to be rejected recently after sitting in new for ages? I understand one of the ftpmasters
has proposed an archive split, but I don't think it's actually been implemented yet and I would be surprised if it
was implemented in time for bullseye.

> peter, do you think you could have a new look?

I've been trying to help out a bit with getting rust in testing back into a healthy state
and trying to keep it that way, but I am NOT a rust expert and I am NOT comfortable taking responsibility for
major updates/transitions or packaging rust crates that are new to Debian.

Anyway with that disclaimer out of the way lets take a look at the issues with getting debcargo back into testing.

The first issue is that the autopkgtests in rust-cargo and rust-vte have never passed. Should they simply be marked
as broken?

The second issue is rust-core-foundation is currently uninstallable/unbuildable, due to a recent update of
rust-core-foundatoin-sys which in turn means rust-cargo and rust-debcargo are unbuildable. It looks like the new
version was marked as released in the vcs but not actually uploaded to the archive.

The third issue is what to do about rust-cargo itself. The version currently in Debian is quite some way behind
upstream and depends on the old version of rust-core-foundation. It looks like ximin was in the process of updating it
to 0.47.0 but stopped. I looked at building 0.47 (and before that 0.49) but quickly ran intodependency issues.
Tracking through I see.

* rust-cargo 0.47.0
   * rust-git2 0.13.12
     * rust-git2-sys 0.12.14
       * libgit2-dev -- currently in experimental
   * rust-im-rc 15.0.0
     * The featureset packages that I disabled to avoid new and because one of them
       had unsatisfiable dependencies have been re-enabled in git.
     * Neither refpool or metrohash seems to have been packaged, either in debian or in debcargo-conf
       the latter seems to be a hard dependency.
   * semver 0.11.0
     * Autopkgtests fail for most featuresets, the version currently in the archive doesn't have any
       autopkgtests though.

Plus outside of the direct dependency lines, several of those packages have other reverse dependencies.

In summary this is a far bigger set of changes than I am personally prepared to take responsibility
for in packages I have very little knowledge of.

So I looked at the less ambitious option of keeping rust-cargo at the version currently in sid
and figuring out the minimum changes relative to current sid to get things sane. I got as far as

* Update rust-core-foundation to 0.9.1
* Keep rust-vte at 0.3.3, mark the autpkgtest as broken and relax the dependency on rust-utf8parse.
* Keep rust-cargo at 0.43.1, mark the autpkgtest as broken and relax the dependency on rust-core-foundation
* Relax dependency on rust-semver-parser in rust-debcargo.

Unfortunately it seems that there have been API changes in semver-parser that actually effect debcargo

      Running `LD_LIBRARY_PATH='/tmp/autopkgtest.Q6QoAY/build.Kd0/src/target/debug/deps:/usr/lib' CARGO_PKG_VERSION_PATCH=3 CARGO_PKG_VERSION_MAJOR=2 CARGO_PKG_VERSION=2.4.3 CARGO_PKG_NAME=debcargo CARGO=/usr/bin/cargo CARGO_PKG_DESCRIPTION='Create a Debian package from a Cargo crate.' CARGO_PKG_HOMEPAGE= CARGO_PKG_REPOSITORY='https://salsa.debian.org/rust-team/debcargo' CARGO_PKG_VERSION_PRE= CARGO_MANIFEST_DIR=/tmp/autopkgtest.Q6QoAY/build.Kd0/src CARGO_PKG_AUTHORS='Josh Triplett <josh at joshtriplett.org>:Ximin Luo <infinity0 at debian.org>:Vasudev Kamath <vasudev at copyninja.info>' CARGO_PKG_VERSION_MINOR=4 rustc --crate-name debcargo --edition=2018 src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type lib --emit=dep-info,metadata,link -C debuginfo=2 -C metadata=c8362fd769a53753 -C extra-filename=-c8362fd769a53753 --out-dir /tmp/autopkgtest.Q6QoAY/build.Kd0/src/target/x86_64-unknown-linux-gnu/debug/deps --target x86_64-unknown-linux-gnu -C incremental=/tmp/autopkgtest.Q6QoAY/build.Kd0/src/target/x86_64-unknown-linux-gnu/debug/incremental -L dependency=/tmp/autopkgtest.Q6QoAY/build.Kd0/src/target/x86_64-unknown-linux-gnu/debug/deps -L dependency=/tmp/autopkgtest.Q6QoAY/build.Kd0/src/target/debug/deps --extern ansi_term=/tmp/autopkgtest.Q6QoAY/build.Kd0/src/target/x86_64-unknown-linux-gnu/debug/deps/libansi_term-34e552010f828746.rmeta --extern anyhow=/tmp/autopkgtest.Q6QoAY/build.Kd0/src/target/x86_64-unknown-linux-gnu/debug/deps/libanyhow-c7e349a4163d139d.rmeta --extern cargo=/tmp/autopkgtest.Q6QoAY/build.Kd0/src/target/x86_64-unknown-linux-gnu/debug/deps/libcargo-e40a62f860023931.rmeta --extern chrono=/tmp/autopkgtest.Q6QoAY/build.Kd0/src/target/x86_64-unknown-linux-gnu/debug/deps/libchrono-654efa7ffc2482b4.rmeta --extern clap=/tmp/autopkgtest.Q6QoAY/build.Kd0/src/target/x86_64-unknown-linux-gnu/debug/deps/libclap-95deb79aeecc6040.rmeta --extern filetime=/tmp/autopkgtest.Q6QoAY/build.Kd0/src/target/x86_64-unknown-linux-gnu/debug/deps/libfiletime-dafc6a94d28e153e.rmeta --extern flate2=/tmp/autopkgtest.Q6QoAY/build.Kd0/src/target/x86_64-unknown-linux-gnu/debug/deps/libflate2-c81f64771f47481b.rmeta --extern git2=/tmp/autopkgtest.Q6QoAY/build.Kd0/src/target/x86_64-unknown-linux-gnu/debug/deps/libgit2-33f617a53d663e14.rmeta --extern glob=/tmp/autopkgtest.Q6QoAY/build.Kd0/src/target/x86_64-unknown-linux-gnu/debug/deps/libglob-dfd15eef4c26fca2.rmeta --extern itertools=/tmp/autopkgtest.Q6QoAY/build.Kd0/src/target/x86_64-unknown-linux-gnu/debug/deps/libitertools-bc3ee1b5879334bf.rmeta --extern regex=/tmp/autopkgtest.Q6QoAY/build.Kd0/src/target/x86_64-unknown-linux-gnu/debug/deps/libregex-275d6b997fc8f3bc.rmeta --extern semver=/tmp/autopkgtest.Q6QoAY/build.Kd0/src/target/x86_64-unknown-linux-gnu/debug/deps/libsemver-8ace63291457ddd1.rmeta --extern semver_parser=/tmp/autopkgtest.Q6QoAY/build.Kd0/src/target/x86_64-unknown-linux-gnu/debug/deps/libsemver_parser-99c41a2765c77dec.rmeta --extern serde=/tmp/autopkgtest.Q6QoAY/build.Kd0/src/target/x86_64-unknown-linux-gnu/debug/deps/libserde-a54cb3b7a5382044.rmeta --extern serde_derive=/tmp/autopkgtest.Q6QoAY/build.Kd0/src/target/debug/deps/libserde_derive-7a8c3179645a5709.so --extern tar=/tmp/autopkgtest.Q6QoAY/build.Kd0/src/target/x86_64-unknown-linux-gnu/debug/deps/libtar-0d397838ec0fafc9.rmeta --extern tempfile=/tmp/autopkgtest.Q6QoAY/build.Kd0/src/target/x86_64-unknown-linux-gnu/debug/deps/libtempfile-45a9428073a120eb.rmeta --extern textwrap=/tmp/autopkgtest.Q6QoAY/build.Kd0/src/target/x86_64-unknown-linux-gnu/debug/deps/libtextwrap-36c4fddb155e8870.rmeta --extern toml=/tmp/autopkgtest.Q6QoAY/build.Kd0/src/target/x86_64-unknown-linux-gnu/debug/deps/libtoml-feb862549a36ab80.rmeta --extern walkdir=/tmp/autopkgtest.Q6QoAY/build.Kd0/src/target/x86_64-unknown-linux-gnu/debug/deps/libwalkdir-2858051cb98c19c8.rmeta -C debuginfo=2 --cap-lints warn -C linker=x86_64-linux-gnu-gcc -C link-arg=-Wl,-z,relro --remap-path-prefix /tmp/autopkgtest.Q6QoAY/build.Kd0/src=/usr/share/cargo/registry/debcargo-2.4.3 -L native=/usr/lib/x86_64-linux-gnu -L native=/usr/lib/x86_64-linux-gnu -L native=/usr/lib/x86_64-linux-gnu -L native=/usr/lib/x86_64-linux-gnu`
error[E0432]: unresolved import `semver_parser`
  --> src/debian/dependency.rs:3:5
   |
3 | use semver_parser;
   |     ^^^^^^^^^^^^^

error[E0433]: failed to resolve: use of undeclared type or module `WildcardVersion`
    --> src/debian/dependency.rs:300:20
     |
300 |         (&Wildcard(WildcardVersion::Minor), _) => {
     |                    ^^^^^^^^^^^^^^^ use of undeclared type or module `WildcardVersion`

error[E0433]: failed to resolve: use of undeclared type or module `WildcardVersion`
    --> src/debian/dependency.rs:304:20
     |
304 |         (&Wildcard(WildcardVersion::Patch), _) => {
     |                    ^^^^^^^^^^^^^^^ use of undeclared type or module `WildcardVersion`

error[E0412]: cannot find type `Predicate` in this scope
   --> src/debian/dependency.rs:22:16
    |
22 |     fn new(p: &Predicate) -> Result<Self> {
    |                ^^^^^^^^^ not found in this scope

error[E0412]: cannot find type `Predicate` in `semver_parser::range`
    --> src/debian/dependency.rs:195:34
     |
195 |     p: &'a semver_parser::range::Predicate,
     |                                  ^^^^^^^^^ not found in `semver_parser::range`

error[E0425]: cannot find value `Gt` in this scope
    --> src/debian/dependency.rs:229:17
     |
229 |             Ok(&Gt)
     |                 ^^ not found in this scope
     |
help: consider importing one of these items
     |
1   | use crate::debian::dependency::semver_parser::Op::Gt;
     |
1   | use semver_parser::Op::Gt;
     |
1   | use semver_parser::lexer::Token::Gt;
     |

error[E0412]: cannot find type `Predicate` in `semver_parser::range`
    --> src/debian/dependency.rs:245:31
     |
245 |     p: &semver_parser::range::Predicate,
     |                               ^^^^^^^^^ not found in `semver_parser::range`

error[E0531]: cannot find tuple struct or tuple variant `Wildcard` in this scope
    --> src/debian/dependency.rs:300:11
     |
300 |         (&Wildcard(WildcardVersion::Minor), _) => {
     |           ^^^^^^^^ not found in this scope

error[E0531]: cannot find tuple struct or tuple variant `Wildcard` in this scope
    --> src/debian/dependency.rs:304:11
     |
304 |         (&Wildcard(WildcardVersion::Patch), _) => {
     |           ^^^^^^^^ not found in this scope

error[E0425]: cannot find function `parse` in `semver_parser::range`
    --> src/debian/dependency.rs:327:37
     |
327 |     let req = semver_parser::range::parse(&dep.version_req().to_string()).unwrap();
     |                                     ^^^^^ not found in `semver_parser::range`
     |
help: consider importing one of these items
     |
1   | use cargo::util::toml::parse;
     |
1   | use chrono::format::parse;
     |
1   | use crate::debian::chrono::format::parse;
     |
1   | use crate::debian::dependency::semver_parser::version::parse;
     |
       and 1 other candidate

error[E0603]: module `range` is private
   --> src/debian/dependency.rs:4:20
    |
4  | use semver_parser::range::Op::*;
    |                    ^^^^^ private module
    |
note: the module `range` is defined here

and a bunch more similar errors, I really have no idea where to start on fixing this.



More information about the Pkg-rust-maintainers mailing list