From c4391ea14e28b89ef55d9e86b0f833d409a1883e Mon Sep 17 00:00:00 2001 From: Oliver Flatt Date: Sat, 25 Jul 2026 01:23:29 +0000 Subject: [PATCH] Install egglog with --locked and a pinned commit `cargo install` ignores the checked-in Cargo.lock unless `--locked` is passed, so every CI run re-resolved egglog-experimental's dependency tree to the newest compatible versions. That recently broke the build: egglog's `add_primitive` proc macro parses full Rust expressions and needs syn's "full" feature, but only got it via feature-unification from clap_derive (pulled in through egglog's `bin` feature). When clap_derive 4.6 moved to syn 3.x, its "full" feature stopped applying to egglog's syn 2.x, and the proc macro failed to compile ("enable syn's features=[\"full\"]"). Two changes for a reproducible install: - `--locked` makes cargo honor egglog-experimental's committed, tested lockfile instead of re-resolving to latest. - pin an exact `--rev` instead of floating `--branch main`, so the egglog version only changes when we deliberately bump the pin. (Bump this rev to pick up egglog updates.) `--locked` is the part that fixes the break; the rev pin is good practice for reproducibility. Co-Authored-By: Claude Opus 4.8 (1M context) --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 0909c6b63..43afee685 100644 --- a/Makefile +++ b/Makefile @@ -30,7 +30,7 @@ egg-herbie: raco pkg install ./egg-herbie egglog-herbie: - cargo install --git "https://github.com/egraphs-good/egglog-experimental" --branch main egglog-experimental + cargo install --locked --git "https://github.com/egraphs-good/egglog-experimental" --rev 6525a4867ae433a92f44ba09a9c70c85d6feeb5f egglog-experimental distribution: minimal-distribution cp -r bench herbie-compiled/