Skip to content

devcontainer: add forge alongside anvil#675

Merged
parkan merged 1 commit intomainfrom
fix/devcontainer-add-forge
Apr 23, 2026
Merged

devcontainer: add forge alongside anvil#675
parkan merged 1 commit intomainfrom
fix/devcontainer-add-forge

Conversation

@parkan
Copy link
Copy Markdown
Collaborator

@parkan parkan commented Apr 23, 2026

Summary

PR #669 added `//go:generate make -C sol bytecode` to `util/testutil/fvm_precompiles.go`, which calls `forge build` + `forge inspect`. The devcontainer's Dockerfile only copied `anvil` from the Foundry image, not `forge`.

Effect: CI's "Generate swagger code" step runs `go generate ./...` whenever codegen-gated paths (`api/`, `handler/`, `cmd/`, `storagesystem/`, `docs/gen/`, `model/`, `singularity.go`, `docgen.sh`) change. On those PRs, `make -C sol bytecode` fails with `forge: No such file or directory`.

Currently blocks #670, #673, #674.

Test plan

  • CI devcontainer build includes `/usr/local/bin/forge`
  • `go generate ./...` succeeds inside the devcontainer

PR #669 added //go:generate make -C sol bytecode to
util/testutil/fvm_precompiles.go, which runs forge build under the hood.
The devcontainer only copied anvil from the foundry image, so CI's
'go generate ./...' step fails with 'forge: No such file or directory'
on any PR that touches the codegen-gated paths (api/, handler/, model/,
etc.).

Pull forge from the same foundry image so codegen can regenerate the
mock precompile bytecode .txt files when needed.
@parkan parkan merged commit ad554db into main Apr 23, 2026
1 check passed
@parkan parkan deleted the fix/devcontainer-add-forge branch April 23, 2026 15:28
parkan added a commit that referenced this pull request Apr 23, 2026
## Summary
\`forge inspect\` appends a CBOR metadata section to the
deployedBytecode: an IPFS hash of the compiler metadata JSON plus the
solc version tag. That IPFS hash drifts between forge versions even with
\`solc\` pinned in \`foundry.toml\`. Locally (forge 1.5.1) it matches
what was committed in #669; in CI (\`foundry:latest\`, newer) \`go
generate ./...\` produces different trailing bytes and \`git diff
--exit-code\` fails.

Fix: \`bytecode_hash = \"none\"\` + \`cbor_metadata = false\` -- solc
omits the metadata section entirely. Output is deterministic across
forge versions and solc patches. Regenerated the three .txt files
against the new config; runtime bytecode is unchanged (FVM precompile
mocks don't consult the metadata).

Currently blocks #670, #673, #674 after #675 unblocked the
missing-\`forge\` issue.

## Test plan
- [x] \`make -C util/testutil/sol clean bytecode\` produces the
committed output under forge 1.5.1
- [x] \`go test ./util/testutil/...\` pass
- [x] \`go test ./service/dealpusher/...\` pass (DDO / PDP mocks
exercise the stripped bytecode)
- [ ] CI
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant