cdk-rs icon indicating copy to clipboard operation
cdk-rs copied to clipboard

`rust-analyzer` fails with `ic_cdk_bindgen`

Open letmejustputthishere opened this issue 2 years ago • 3 comments

it seems like ic_cdk_bindgen expects an env variable set for the candid path. if you're not building with dfx, the env variables doens't seem to be present and the rust-analyzer VSCode plugin throws the following error:

[ERROR rust_analyzer::main_loop] FetchBuildDataError:
error: failed to run custom build command for `iluvatar_backend v0.1.0 (/Users/moritz/projects/iluvatar/src/iluvatar_backend)`
note: To improve backtraces for build dependencies, set the CARGO_PROFILE_DEV_BUILD_OVERRIDE_DEBUG=true environment variable to enable debug information generation.

Caused by:
  process didn't exit successfully: `/Users/moritz/projects/iluvatar/target/debug/build/iluvatar_backend-0919ac66e4da000e/build-script-build` (exit status: 101)
  --- stderr
  thread 'main' panicked at /Users/moritz/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ic-cdk-bindgen-0.1.1/src/lib.rs:18:58:
  Cannot find candid path: NotPresent
  stack backtrace:
     0: rust_begin_unwind
               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/panicking.rs:595:5
     1: core::panicking::panic_fmt
               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/panicking.rs:67:14
     2: core::result::unwrap_failed
               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/result.rs:1652:5
     3: core::result::Result<T,E>::expect
     4: ic_cdk_bindgen::Config::new
     5: build_script_build::main
     6: core::ops::function::FnOnce::call_once
  note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

letmejustputthishere avatar Nov 05 '23 02:11 letmejustputthishere

Thanks for reporting. Will let you know when we fix it.

lwshang avatar Nov 06 '23 13:11 lwshang

i guess this is related.

  • run dfx generate
  • run cargo build --target wasm32-unknown-unknown --release -p token_transfer_backend --locked --offline
Compiling token_transfer_backend v0.1.0 (/Users/moritz/projects/examples/rust/token_transfer/src/token_transfer_backend)
error: failed to run custom build command for `token_transfer_backend v0.1.0 (/Users/moritz/projects/examples/rust/token_transfer/src/token_transfer_backend)`

Caused by:
  process didn't exit successfully: `/Users/moritz/projects/examples/rust/token_transfer/target/release/build/token_transfer_backend-ba044735f0bc079b/build-script-build` (exit status: 101)
  --- stderr
  thread 'main' panicked at /Users/moritz/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ic-cdk-bindgen-0.1.3/src/lib.rs:63:9:
  Cannot find environment variable: CANISTER_CANDID_PATH_ICRC1_LEDGER_CANISTER
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

the content of the .env file is as follows


# DFX CANISTER ENVIRONMENT VARIABLES
DFX_VERSION='0.17.0'
DFX_NETWORK='local'
ICRC1_LEDGER_CANISTER_CANISTER_ID='bkyz2-fmaaa-aaaaa-qaaaq-cai'
CANISTER_ID_ICRC1_LEDGER_CANISTER='bkyz2-fmaaa-aaaaa-qaaaq-cai'
CANISTER_ID_icrc1_ledger_canister='bkyz2-fmaaa-aaaaa-qaaaq-cai'
CANISTER_ID='bkyz2-fmaaa-aaaaa-qaaaq-cai'
CANISTER_CANDID_PATH='/Users/moritz/projects/examples/rust/token_transfer/.dfx/local/canisters/icrc1_ledger_canister/icrc1_ledger_canister.did'
# END DFX CANISTER ENVIRONMENT VARIABLES

letmejustputthishere avatar Mar 06 '24 07:03 letmejustputthishere