diff --git a/CHANGELOG.md b/CHANGELOG.md index c7469a7fd8..fad6bf3b98 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ ### fix: `dfx canister install` and `dfx deploy` with `--no-asset-upgrade` no longer hang indefinitely when wasm is not up to date +### fix: `dfx` downloads `.did` files for remote canisters + ### feat: streamlined output during asset synchronization # 0.25.0 diff --git a/e2e/assets/remote/download_did/canister_ids.json b/e2e/assets/remote/download_did/canister_ids.json new file mode 100644 index 0000000000..037eb88944 --- /dev/null +++ b/e2e/assets/remote/download_did/canister_ids.json @@ -0,0 +1,5 @@ +{ + "hello_backend": { + "ic": "aaaaa-aa" + } +} \ No newline at end of file diff --git a/e2e/assets/remote/download_did/dfx.json b/e2e/assets/remote/download_did/dfx.json new file mode 100644 index 0000000000..55b735ac6d --- /dev/null +++ b/e2e/assets/remote/download_did/dfx.json @@ -0,0 +1,25 @@ +{ + "canisters": { + "hello_backend": { + "main": "main.mo", + "type": "motoko", + "dependencies": [ + "internet_identity" + ] + }, + "internet_identity": { + "type": "custom", + "candid": "https://github.com/dfinity/internet-identity/releases/download/release-2024-12-13/internet_identity.did", + "wasm": "https://github.com/dfinity/internet-identity/releases/download/release-2024-12-13/internet_identity_dev.wasm.gz", + "init_arg": "(opt record { captcha_config = opt record { max_unsolved_captchas= 50:nat64; captcha_trigger = variant {Static = variant {CaptchaDisabled}}}})", + "remote": { + "id": { + "ic": "rdmx6-jaaaa-aaaaa-aaadq-cai" + } + }, + "frontend": {} + } + }, + "output_env_file": ".env", + "version": 1 +} \ No newline at end of file diff --git a/e2e/assets/remote/download_did/main.mo b/e2e/assets/remote/download_did/main.mo new file mode 100644 index 0000000000..608acadb27 --- /dev/null +++ b/e2e/assets/remote/download_did/main.mo @@ -0,0 +1,3 @@ +import II "canister:internet_identity"; + +actor {}; diff --git a/e2e/tests-dfx/remote.bash b/e2e/tests-dfx/remote.bash index 8e8bc5568e..105a35e53f 100644 --- a/e2e/tests-dfx/remote.bash +++ b/e2e/tests-dfx/remote.bash @@ -345,3 +345,9 @@ teardown() { assert_match "CANISTER_ID_REMOTE: qoctq-giaaa-aaaaa-aaaea-cai" assert_contains "CANISTER_CANDID_PATH_REMOTE: $(pwd -P)/remotecandid.did" } + +@test "build step downloads dependency .did files" { + install_asset remote/download_did + assert_command dfx build --ic -v + assert_not_contains ".did file for canister 'internet_identity' does not exist" +} diff --git a/src/dfx/src/lib/models/canister.rs b/src/dfx/src/lib/models/canister.rs index e6d3e9824a..0084143514 100644 --- a/src/dfx/src/lib/models/canister.rs +++ b/src/dfx/src/lib/models/canister.rs @@ -839,7 +839,7 @@ impl CanisterPool { log: &Logger, build_config: &BuildConfig, ) -> DfxResult<()> { - self.download(build_config).await?; + self.download().await?; let outputs = self.build(env, log, build_config)?; for output in outputs { @@ -849,8 +849,8 @@ impl CanisterPool { Ok(()) } - async fn download(&self, build_config: &BuildConfig) -> DfxResult { - for canister in self.canisters_to_build(build_config) { + async fn download(&self) -> DfxResult { + for canister in self.canisters.iter() { let info = canister.get_info(); if info.is_custom() {