Skip to content

Proto build paths break under cargo vendor / nix #1039

Description

@mmsqe

Summary of Bug

ibc-eureka-solidity-types, solana-ibc-proto, proof-api-core and proof-api-lib reference workspace-root files (proto/, abi/,contracts/) from their build scripts / sol! macros via package-relative paths like ../../../proto/... and ../../abi/.... This works locally, but cargo vendor / nix copies only package dir, dropping sibling folders, build fails:

error: Cannot build '/nix/store/7mvry16ayhcbv7k5amya4cqbr7n4b2z8-ibc-attestor.drv'.
       Reason: builder failed with exit code 101.
       Output paths:
         /nix/store/611hzq09hwhh1hql0gqybbw0cxla3sa4-ibc-attestor
       Last 25 log lines:
       >    Compiling encoding_rs v0.8.35
       >    Compiling protobuf v3.7.2
       >    Compiling same-file v1.0.6
       >    Compiling solana-native-token v2.3.0
       >    Compiling sync_wrapper v0.1.2
       >    Compiling walkdir v2.5.0
       >    Compiling peg v0.8.5
       >    Compiling solana-genesis-config v2.3.0
       >    Compiling zstd v0.13.3
       >    Compiling anchor-lang v0.32.1
       >    Compiling eth-keystore v0.5.0
       >    Compiling solana-example-mocks v2.2.1
       >    Compiling solana-account-decoder-client-types v2.3.13
       >    Compiling reqwest v0.11.27
       >    Compiling tendermint-light-client-update-client v0.1.0 (https://github.com/cosmos/solidity-ibc-eureka.git?rev=daa539a0e6d70cdf8835bfeef363dac3e4e58ed6#daa539a0)
       >    Compiling ark-bn254 v0.4.0
       >    Compiling async-lock v3.4.1
       >    Compiling tendermint-config v0.40.4 (https://github.com/cometbft/tendermint-rs#a2aa5bff)
       > error: failed to run custom build command for `solana-ibc-proto v0.1.0 (https://github.com/cosmos/solidity-ibc-eureka.git?branch=feat%2Fsolana#3519a345)`
       >
       > Caused by:
       >   process didn't exit successfully: `/nix/var/nix/builds/nix-12901-3903171072/source/target/release/build/solana-ibc-proto-b4ce79ae2e23b113/build-script-build` (exit status: 1)
       >   --- stderr
       >   Error: Custom { kind: Other, error: "protoc failed: Could not make proto path relative: ../../../../proto/gmp/packet.proto: No such file or directory\n" }
       > warning: build failed, waiting for other jobs to finish...
       For full logs, run:
         nix-store -l /nix/store/7mvry16ayhcbv7k5amya4cqbr7n4b2z8-ibc-attestor.drv
error: Cannot build '/nix/store/h7xsl36bj88m5vzlf9x6pfnzkk09vzdk-nix-shell-env.drv'.
       Reason: 1 dependency failed.
       Output paths:
         /nix/store/8fr7cs41iwdf54grkqnp7xqahzx9c266-nix-shell-env
error: Build failed due to failed dependency

Same surfaces for the sol! macros in ibc-eureka-solidity-types, e.g. failed to canonicalize path ".../../../abi/bytecode/SP1ICS07Tendermint.json" and .../../../contracts/.../IAttestationMsgs.sol.

Expected Behaviour

The crates build when vendored as git dependencies (e.g. under nix).

Version

main branch

Steps to Reproduce

  1. Depend on one of these crates as a git dependency
  2. cargo vendor (or build under nix)
  3. Build → fails because root proto/ / abi/ / contracts/ aren't in vendored crate

For Admin Use

  • Not duplicate issue
  • Appropriate labels applied
  • Appropriate contributors tagged/assigned
  • Estimate provided

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions