Skip to content

ci: cargo install eza fails to build (palette E0433) — use --locked as a workaround #1912

Description

@kotoji

Workaround

cargo install eza --locked

Symptom

cargo install eza fails while compiling palette:

error[E0433]: failed to resolve: could not find `lms` in the crate root
  --> .../palette-0.7.5/src/hsl.rs:46:28
   |
46 | #[derive(Debug, ArrayCast, FromColorUnclamped, WithAlpha)]
   |                            ^^^^^^^^^^^^^^^^^^ could not find `lms` in the crate root
   |
   = note: this error originates in the derive macro `FromColorUnclamped`

error[E0433]: failed to resolve: could not find `meta` in `xyz`
...
error: could not compile `palette` (lib) due to 34 previous errors
error: failed to compile `eza v0.23.5`

34 errors, all of these two shapes, across hsl.rs, hsluv.rs, hsv.rs, hwb.rs, lab.rs, lch.rs, lchuv.rs, luma/luma.rs, luv.rs, okhsl.rs, okhsv.rs, okhwb.rs, oklab.rs, oklch.rs, rgb/rgb.rs, xyz.rs, yxy.rs.

Cause

eza pins palette = "=0.7.5", but palette_derive is a transitive dependency and palette 0.7.5 requires it as "0.7.5" — a caret requirement. Pinning palette therefore does not hold palette_derive back.

Without a lockfile, palette_derive resolves to 0.7.7, whose derive macros expand to paths (crate::lms, xyz::meta) that do not exist in the 0.7.5 library. --locked works because the committed lockfile keeps palette_derive at a version that still compiles against 0.7.5.

Fix

PR #1910 pins palette_derive directly so that a fresh resolution produces a working pair.

Note that the same gap also meant the palette pin was not achieving its original purpose — see the PR for details.

Metadata

Metadata

Assignees

No one assigned

    Labels

    type: choreCI, testing, packaging infra, dependency/version bumps

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions