IntersectMBO / IntersectMBO/cardano-api
Add +rpc cabal flag to gate gRPC dependencies
- Dominant language
- Haskell
- Stars
- 40
- Forks
- 30
- Avg merge
- 2d 5h
- Merged PRs (30d)
- 30
Description
## Summary
The `cardano-rpc` package introduces new dependencies (`grapesy`, `grpc-spec`, `proto-lens`) that are currently linked into all `cardano-node` builds, including block producers that will never enable the RPC feature.
A cabal flag (`+rpc`, off by default) should gate these dependencies so that builds without the flag exclude them entirely.
## Motivation
- Block producer builds should not carry unnecessary dependencies that increase the attack surface and binary size.
- Operators who want the RPC interface opt in explicitly at build time.
- This was requested during [ADR-018 review](https://github.com/input-output-hk/cardano-node-wiki/pull/96#discussion_r3009619312).
## Proposed approach
- Add a `flag rpc` (default: `False`, manual: `True`) to `cardano-node.cabal`.
- Make `build-depends: cardano-rpc` conditional on `flag(rpc)`.
- Guard RPC server startup code in `cardano-node` behind a CPP conditional (e.g. `#ifdef RPC`).
- Document the flag in the README and in ADR-018.
## Acceptance criteria
- [ ] `cabal build cardano-node` (without the flag) does not pull in `grapesy`, `grpc-spec`, `proto-lens`, or `cardano-rpc`.
- [ ] `cabal build cardano-node -f +rpc` builds with full RPC support.
- [ ] CI runs builds with and without the flag.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Contributor guide
Assessment
This issue has not been assessed yet.