#1760·librespot

librespot-core 0.8.0 does not build from crates.io: vergen fix (#1683) is merged but unreleased

Author: thesteevCreated Sep 10, 2026Updated Sep 10, 2026

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 build
error[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 error

Reproduced 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:

toml
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:

toml
[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.