Description
The upstream proto revisions as currently pulled to build ibc-proto-rs are not consistent as per the revisions of tendermint
files they expect to import:
- cosmos/cosmos-sdk@2e9e5d6 uses v0.37
- cosmos/ibc-go@57fcdb9 uses v0.38
- cosmos/interchain-security@ea545b4 uses v0.37
However, by the way the build process is set up in sync-protobuf.sh, all of these inputs to proto-compiler actually end up including the tendermint/*
protobuf files found in the cosmos-sdk buf export (the proto-include directory).
Which means our ibc::
generated types for this set of upstream revisions do not necessarily interoperate with the Go types generated in ibc-go as per the targeted commit.
The proper way out of this mess is to convert the upstreams to produce buf modules and reuse buf.build/cometbft/cometbft as a common dependency. Then the build process in ibc-proto-rs could consume the buf modules to generate Rust bindings for them.
Meanwhile, it's possible to juggle the src/*_COMMIT
files in ibc-proto-rs to arrive at a combination of proto upstreams that happens to use the same revision of the tendermint
protos, and then do the extern_path
trick on that. But it's a high-quality balancing act that needs developer's time and care. Which is precisely what buf
is meant to get rid of.
Originally posted by @mzabaluev in informalsystems/ibc-rs#1073 (comment)