Skip to content

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

Open

Description

@thesteev

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 librespot-core@0.8
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:

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.

Activity

  1. SharliBeicon commented on Oct 1, 2026

    @SharliBeicon
    Contributor

    This error has been around for months. Do you think it would be possible to release a 0.8.1 version with this fix included, so the library becomes usable again?

    I'd tremendously appreciate it :)

  2. shejan0 commented on Oct 14, 2026

    @shejan0

    Hey, still broken on the crates.io version. I would much rather not have to pull the entire project or its release into my Rust project; I would just like to use the crate so the dependency is easy to work with.

    Hoping this can be addressed soon.

    Image
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions