feat(transport-interop): add Haskell (libp2p-hs) implementation#857
feat(transport-interop): add Haskell (libp2p-hs) implementation#857adust09 wants to merge 4 commits into
Conversation
Register libp2p-hs as a transport-interop implementation (haskell-v0.1), supporting TCP + Noise + Yamux. - impl/haskell/v0.1/Makefile: fetches libp2p-hs at a pinned commit and builds its root Dockerfile (which produces the libp2p-interop daemon) via dockerBuildWrapper.sh, writing image.json. - versionsInput.json: add haskell-v0.1 (transports: tcp, secureChannels: noise, muxers: yamux). containerImageID is omitted so the canonical image.json lookup is used.
The haskell-v0.1 entry lacked a containerImageID, so versions.ts fell back to canonicalImageIDLookup and the run-transport-interop job tried to read a local ./impl/haskell/v0.1/image.json that does not exist in CI, failing with ENOENT. Reference the GHCR image like every other implementation so the test pulls it from the registry instead.
CI diagnosis: failures are caused by the image not being published, not a protocol/interop issueI dug into the two red checks ( 1. The Haskell Docker image compiles successfully; the job only fails at the final "push to 2. I pulled the shard artifacts and inspected Since even the haskell-vs-haskell self-pair fails, this is not a byte-level spec mismatch with any specific implementation — the interop runners simply can't pull the haskell image that step 1 never published. Meanwhile the non-haskell pairs are green (1240 success), confirming the harness itself is healthy. Causal chain: The implementation's interop is verified locally (tcp+noise+yamux against go-libp2p and rust-libp2p pass). Could a maintainer re-run the workflow with package-write permissions, or advise the preferred way to publish the image for fork PRs? Happy to adjust the Makefile / Dockerfile if there's a recommended pattern. Thanks! |
Register libp2p-hs as a transport-interop implementation (haskell-v0.1), supporting TCP + Noise + Yamux.