Skip to content

Commit c184f1b

Browse files
committed
fix(justfile): drop deleted celestia/eigenda ELF builds + bypass SP1 docker MSRV
Two fixes to `just build-elfs` for fresh-machine ELF generation. 1. Drop stale celestia/eigenda blocks. Phase 2 deleted those crates (`16b17bbd chore: drop EigenDA + Celestia DA backends`) but the justfile recipe still tried to `cd ../celestia` / `cd ../eigenda` after the ethereum build, failing with "No such file or directory". 2. Pass `--ignore-rust-version` to `cargo-prove prove build`. SP1 v6.1.0's docker image ships rustc 1.93.0-dev inside, but our mantle-v2 deps (kona-genesis, alloy-op-evm, op-alloy, …) declare `rust-version = "1.94"`. Cargo's MSRV check refuses 1.93 < 1.94 even though the deps compile fine — the 1.94 floor is the dep authors' policy declaration, not a hard requirement. Skip the check so ELF builds succeed on the SP1 docker rustc. Remove the flag once SP1 ships a docker image with rustc ≥ 1.94. Also document both fixes in MANTLE_CHANGES.md §3.7 (new dedicated SP1 ELF build subsection) and §5.4 cold-build symptom table. Renumbers prior §3.7 (toolchain pins) to §3.8.
1 parent 106dcb6 commit c184f1b

2 files changed

Lines changed: 28 additions & 9 deletions

File tree

MANTLE_CHANGES.md

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,17 @@ The current solution: maintain them at `~/Projects/mantle-rollup-configs/` (out-
188188
sourced from `mantle-xyz/op-succinct origin/main` HEAD `664a1bd4`. See that directory's
189189
`README.md` for the chain-id list and refresh procedure.
190190

191-
### 3.7 Toolchain pins — `rust-toolchain.toml` + `mise.toml`
191+
### 3.7 SP1 ELF build (`justfile` + `--ignore-rust-version`)
192+
193+
`just build-elfs` runs `cargo-prove prove build --docker` for the range and
194+
aggregation SP1 programs. Two Mantle-specific tweaks:
195+
196+
| File | Change |
197+
|---|---|
198+
| `justfile` (`build-range-elfs`) | Drop the `programs/range/celestia` and `programs/range/eigenda` invocations — Phase 2 deleted those crates (Validity-Oracle-only runtime). Only the `ethereum` block remains. |
199+
| `justfile` (`build-range-elfs` + `build-agg-elf`) | Pass `--ignore-rust-version` to `cargo-prove`. SP1 v6.1.0's docker image ships rustc 1.93.0-dev inside, but our mantle-v2 deps declare `rust-version = "1.94"`. The 1.93 build compiles those crates fine — the 1.94 floor is the dep authors' MSRV declaration, not a hard requirement — so we tell cargo to skip the check. **Remove the flag once SP1 ships a docker image with rustc ≥ 1.94.** |
200+
201+
### 3.8 Toolchain pins — `rust-toolchain.toml` + `mise.toml`
192202

193203
| File | Pin | Why |
194204
|---|---|---|
@@ -307,6 +317,8 @@ Subsequent incrementals are seconds.
307317
| `git submodule update --init` prompts for `Username for 'https://github.com'` | One of the submodule URLs points at a private repo and the machine has no GitHub credentials. Phase 5 removed `mantle-xyz/mantle-cdk` (the only private one) — if you see this on a fresh clone of `mantle/op-succinct-v3.8.1` post-Phase-5, you're on an older commit. `git pull` first. | `git pull` to land Phase 5 cleanup, or set up a GitHub PAT in `~/.netrc` / git credential helper if you intentionally re-added a private submodule |
308318
| `Error (6275): Source "@safe-contracts/contracts/common/Enum.sol" not found` from `forge bind` | v117 left dangling imports in `contracts/test/helpers/Utils.sol`. Phase 5 dropped the two unused imports; this only resurfaces if someone edits that file and re-adds them. | Drop `Safe` / `Enum` imports from `Utils.sol` (they're never used); see §3.2 row. |
309319
| `bindings/src/codegen/*.rs` won't compile — errors like `cannot find trait 'Transport' in module 'alloy_contract::private'`, `RawCallBuilder` takes 2 generics not 3, `abi_decode_returns` has 1 parameter not 2 | `forge bind` from forge 1.2.x generates alloy-0.x-flavoured Rust; workspace uses alloy 2.0.4. PATH has a forge older than 1.4. | `mise install forge@1.4.3` (mise.toml already pins 1.4.3 — typically caused by a system Foundry from `~/.foundry/bin` shadowing mise's pin: `which forge` to confirm); then `cargo clean -p op-succinct-bindings && cargo build --workspace` |
320+
| `just build-elfs` fails inside docker with `error: rustc 1.93.0-dev is not supported by the following packages: alloy-op-evm@0.32.0 requires rustc 1.94 …` | SP1 v6.1.0's docker image bundles rustc 1.93.0-dev, but mantle-v2 deps declare `rust-version = "1.94"` as a policy floor | `justfile` already passes `--ignore-rust-version` to `cargo-prove prove build` (§3.7). If you see this anyway, you're calling `cargo-prove` directly — add the flag, or `git pull` to land the §3.7 justfile fix |
321+
| `just build-elfs` exits with `cd: ../celestia: No such file or directory` | Stale justfile recipe referencing `programs/range/celestia` / `eigenda` paths that Phase 2 deleted | `git pull` to land the §3.7 justfile fix (cleanup committed in the same commit as the `--ignore-rust-version` flag) |
310322
| `mise: command not found` after running the installer | mise binary lives at `~/.local/bin/mise` but PATH doesn't include it yet | `eval "$(~/.local/bin/mise activate bash)"` for the current shell; the `echo … >> ~/.bashrc` line above seeds future shells |
311323
| `mise install` finishes instantly with "all tools are installed" but `forge --version` returns the wrong version | Shell didn't pick up mise's PATH shim, so an older `forge` from `~/.foundry/bin/` or system pkg manager is winning | re-source rc files; check `which forge` vs `mise which forge`; `mise exec -- forge --version` to bypass PATH and confirm mise's copy works |
312324
| `git submodule update` hangs or errors out on github.com | network / proxy / firewall on the server can't reach github.com | configure git http proxy or pull through an internal mirror |

justfile

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -432,24 +432,31 @@ vkeys:
432432
build-elfs: build-range-elfs build-agg-elf
433433

434434
# Build ELF files for range programs.
435+
#
436+
# [MANTLE] Two adjustments vs. upstream Succinct Labs v3.8.1's justfile:
437+
# 1. Drop the `celestia` and `eigenda` blocks — Phase 2 deleted those crates
438+
# (Validity-Oracle-only runtime). Only `ethereum` remains.
439+
# 2. Pass `--ignore-rust-version` to `cargo-prove`. SP1 v6.1.0 ships rustc
440+
# 1.93.0-dev inside its docker image; our mantle-v2 deps (kona-genesis,
441+
# alloy-op-evm, etc.) declare `rust-version = "1.94"`. The 1.93 build
442+
# compiles those crates fine — the 1.94 floor is a policy declaration,
443+
# not a hard requirement — so we tell cargo to skip the MSRV check.
444+
# Remove the flag once SP1 ships a docker image with rustc >= 1.94.
435445
build-range-elfs:
436446
#!/usr/bin/env bash
437447
438448
cd programs/range/ethereum
439-
~/.sp1/bin/cargo-prove prove build --elf-name range-elf-embedded --docker --tag v6.1.0 --output-directory ../../../elf
440-
441-
cd ../celestia
442-
~/.sp1/bin/cargo-prove prove build --elf-name celestia-range-elf-embedded --docker --tag v6.1.0 --output-directory ../../../elf
443-
444-
cd ../eigenda
445-
~/.sp1/bin/cargo-prove prove build --elf-name eigenda-range-elf-embedded --docker --tag v6.1.0 --output-directory ../../../elf
449+
~/.sp1/bin/cargo-prove prove build --elf-name range-elf-embedded --docker --tag v6.1.0 --output-directory ../../../elf --ignore-rust-version
446450
447451
# Build ELF file for aggregation program.
452+
#
453+
# [MANTLE] `--ignore-rust-version` for the same SP1-1.93 vs mantle-v2-1.94
454+
# reason documented on `build-range-elfs` above.
448455
build-agg-elf:
449456
#!/usr/bin/env bash
450457
451458
cd programs/aggregation
452-
~/.sp1/bin/cargo-prove prove build --elf-name aggregation-elf --docker --tag v6.1.0 --output-directory ../../elf
459+
~/.sp1/bin/cargo-prove prove build --elf-name aggregation-elf --docker --tag v6.1.0 --output-directory ../../elf --ignore-rust-version
453460
454461
# Run all unit tests except for the specified ones.
455462
tests:

0 commit comments

Comments
 (0)