librespot-core 0.8.0 does not build from crates.io: vergen fix (#1683) is merged but unreleased
Summary
librespot-core 0.8.0 — the newest release on crates.io — fails to build, because
its build script picks up an incompatible pair of vergen crates. The fix is
already on dev (#1683, merged 2026-01-27) but has never been released, so
anyone depending on librespot from crates.io hits this immediately.
This is a request for a point release containing that commit, not a bug report
against current dev.
Reproducing
cargo new --lib repro && cd repro
cargo add [email protected]
cargo builderror[E0277]: the trait bound `vergen::feature::build::Build: vergen_lib::entries::Add` is not satisfied
--> ~/.cargo/registry/src/index.crates.io-.../librespot-core-0.8.0/build.rs:16:27
|
16 | .add_instructions(&build)?
| ^^^^^^ the trait `vergen_lib::entries::Add` is not implemented for `vergen::feature::build::Build`
|
note: there are multiple different versions of crate `vergen_lib` in the dependency graph
--> ~/.cargo/registry/src/index.crates.io-.../vergen-lib-0.1.6/src/entries.rs:45:1
|
45 | pub trait Add {
| ^^^^^^^^^^^^^ this is the expected trait
|
::: ~/.cargo/registry/src/index.crates.io-.../vergen-lib-9.1.0/src/entries.rs:45:1
|
45 | pub trait Add {
| ------------- this is the found trait
error: could not compile `librespot-core` (build script) due to 1 previous errorReproduced on rustc 1.98.1 / cargo 1.98.1, aarch64 Linux, with a clean
registry cache. Nothing about the host looks relevant: it is purely dependency
resolution.
Cause
vergen-gitcl 1.0.8 depends on both:
| dependency | requirement | resolves to | which needs |
|---|---|---|---|
vergen |
^9.0.6 |
9.1.0 | vergen-lib ^9.1.0 |
vergen-lib |
^0.1.6 |
0.1.6 | — |
vergen 9.0.6 depended on vergen-lib ^0.1.6, so the pair was consistent.
vergen 9.1.0 moved to vergen-lib ^9.1.0 in a minor release; since
vergen::Build implements a trait defined in vergen-lib, that is a breaking
change for anything pairing the two crates. Two vergen-lib majors then end up
in one build script: Build implements Add from 9.1.0, and
Emitter::add_instructions expects Add from 0.1.6.
Upstream tracked this as rustyhorde/vergen#478
("vergen-gitcl 9.1.0 is broken"), now closed — the vergen family releases
vergen, vergen-lib and vergen-gitcl in lockstep from 10.x onwards.
Already fixed here
#1683 added exactly the right pin, and core/Cargo.toml on dev currently reads:
vergen-gitcl = { version = "1.0.8", default-features = false, features = ["build"] }
# fix for https://github.com/rustyhorde/vergen/issues/478#issuecomment-3769340357
vergen = "=9.0.6"But librespot-core 0.8.0 was published 2025-11-10 and #1683 merged
2026-01-27, so the published crate does not have it, and there has been no
release since.
Request
A 0.8.1 (or 0.8.x) point release containing #1683, so that librespot-core = "0.8"
builds from crates.io.
Workaround for anyone finding this first
Add the same pin to your own build-dependencies — a lockfile pin alone does not survive a fresh clone:
[build-dependencies]
vergen = "=9.0.6"An unused build-dependency is enough: it only has to force cargo to resolve one
version of vergen for the whole graph, including librespot's own build script.
Happy to open a PR if a release needs anything else prepared first, though as far as I can tell the commit that matters is already in.
Source: librespot-org/librespot