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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions