From 60ec2f89efa284f2396cc6af5f75f183ad481dba Mon Sep 17 00:00:00 2001 From: Yasir Date: Tue, 25 Mar 2025 10:41:16 +0300 Subject: [PATCH 1/3] feat: use candid-extractor --- ic-canister/tests/canister-a/Cargo.toml | 3 ++ ic-canister/tests/canister-a/src/lib.rs | 6 ++++ ic-canister/tests/canister-a/src/main.rs | 5 --- ic-canister/tests/canister-b/Cargo.toml | 3 ++ ic-canister/tests/canister-b/src/lib.rs | 14 ++------ ic-canister/tests/canister-b/src/main.rs | 3 -- ic-canister/tests/canister-c/Cargo.toml | 3 ++ ic-canister/tests/canister-c/src/lib.rs | 1 + ic-canister/tests/canister-c/src/main.rs | 3 -- ic-canister/tests/canister-d/Cargo.toml | 3 ++ ic-canister/tests/canister-d/src/lib.rs | 1 + ic-canister/tests/canister-d/src/main.rs | 3 -- ic-canister/tests/canister-e/Cargo.toml | 3 ++ .../canister-e/src/{canister.rs => lib.rs} | 7 ++++ ic-canister/tests/canister-e/src/main.rs | 10 ------ ic-log/Cargo.toml | 11 +++++- ic-log/examples/log_canister.rs | 7 ++++ ic-payments/test-payment-canister/Cargo.toml | 3 ++ .../test-payment-canister/src/canister.rs | 6 +++- ic-payments/test-payment-canister/src/lib.rs | 10 ++++++ ic-payments/test-payment-canister/src/main.rs | 4 --- .../tests/dummy_canister/Cargo.toml | 3 ++ .../tests/dummy_canister/src/lib.rs | 10 ++++++ .../tests/dummy_canister/src/main.rs | 10 ------ .../tests/dummy_scheduler_canister/Cargo.toml | 3 ++ .../src/{canister.rs => lib.rs} | 7 ++++ .../dummy_scheduler_canister/src/main.rs | 10 ------ just/build.just | 36 +++++++++---------- 28 files changed, 108 insertions(+), 80 deletions(-) delete mode 100644 ic-canister/tests/canister-a/src/main.rs delete mode 100644 ic-canister/tests/canister-b/src/main.rs delete mode 100644 ic-canister/tests/canister-c/src/main.rs delete mode 100644 ic-canister/tests/canister-d/src/main.rs rename ic-canister/tests/canister-e/src/{canister.rs => lib.rs} (92%) delete mode 100644 ic-canister/tests/canister-e/src/main.rs create mode 100644 ic-payments/test-payment-canister/src/lib.rs delete mode 100644 ic-payments/test-payment-canister/src/main.rs create mode 100644 ic-stable-structures/tests/dummy_canister/src/lib.rs delete mode 100644 ic-stable-structures/tests/dummy_canister/src/main.rs rename ic-task-scheduler/tests/dummy_scheduler_canister/src/{canister.rs => lib.rs} (96%) delete mode 100644 ic-task-scheduler/tests/dummy_scheduler_canister/src/main.rs diff --git a/ic-canister/tests/canister-a/Cargo.toml b/ic-canister/tests/canister-a/Cargo.toml index f19fc644..989a7e7f 100644 --- a/ic-canister/tests/canister-a/Cargo.toml +++ b/ic-canister/tests/canister-a/Cargo.toml @@ -3,6 +3,9 @@ name = "canister-a" version.workspace = true edition.workspace = true +[lib] +crate-type = ["cdylib", "rlib"] + [features] default = [] export-api = [] diff --git a/ic-canister/tests/canister-a/src/lib.rs b/ic-canister/tests/canister-a/src/lib.rs index 0b59e5d8..ca215cc3 100644 --- a/ic-canister/tests/canister-a/src/lib.rs +++ b/ic-canister/tests/canister-a/src/lib.rs @@ -8,6 +8,12 @@ use ic_exports::candid::{CandidType, Deserialize, Principal}; use ic_storage::stable::Versioned; use ic_storage::IcStorage; +#[ic_canister::export_candid] +pub fn idl() -> String { + let idl = CanisterAImpl::get_idl(); + candid::pretty::candid::compile(&idl.env.env, &Some(idl.actor)) +} + #[derive(Default, CandidType, Deserialize, IcStorage)] pub struct StateA { counter: u32, diff --git a/ic-canister/tests/canister-a/src/main.rs b/ic-canister/tests/canister-a/src/main.rs deleted file mode 100644 index d293f053..00000000 --- a/ic-canister/tests/canister-a/src/main.rs +++ /dev/null @@ -1,5 +0,0 @@ -use canister_a::CanisterA; - -fn main() { - std::print!("{}", canister_a::CanisterAImpl::get_idl()); -} diff --git a/ic-canister/tests/canister-b/Cargo.toml b/ic-canister/tests/canister-b/Cargo.toml index bec077cd..958e4fed 100644 --- a/ic-canister/tests/canister-b/Cargo.toml +++ b/ic-canister/tests/canister-b/Cargo.toml @@ -3,6 +3,9 @@ name = "canister-b" version.workspace = true edition.workspace = true +[lib] +crate-type = ["cdylib", "rlib"] + [features] default = [] export-api = [] diff --git a/ic-canister/tests/canister-b/src/lib.rs b/ic-canister/tests/canister-b/src/lib.rs index c10cbc9b..946caec4 100644 --- a/ic-canister/tests/canister-b/src/lib.rs +++ b/ic-canister/tests/canister-b/src/lib.rs @@ -3,8 +3,8 @@ use std::rc::Rc; use canister_a::{CanisterA, CanisterAImpl, StateA}; use ic_canister::{ - canister_call, canister_notify, generate_idl, init, update, virtual_canister_call, - virtual_canister_notify, Canister, PreUpdate, + canister_call, canister_notify, init, update, virtual_canister_call, virtual_canister_notify, + Canister, PreUpdate, }; use ic_exports::candid::{CandidType, Deserialize, Principal}; use ic_storage::IcStorage; @@ -108,16 +108,6 @@ impl CanisterA for CanisterB { } } -pub fn idl() -> String { - use ic_canister::Idl; - - let canister_b_idl = generate_idl!(); - let mut canister_a_idl = ::get_idl(); - canister_a_idl.merge(&canister_b_idl); - - candid::pretty::candid::compile(&canister_a_idl.env.env, &Some(canister_a_idl.actor)) -} - #[cfg(test)] mod tests { use ic_exports::ic_kit::mock_principals::alice; diff --git a/ic-canister/tests/canister-b/src/main.rs b/ic-canister/tests/canister-b/src/main.rs deleted file mode 100644 index 468219ac..00000000 --- a/ic-canister/tests/canister-b/src/main.rs +++ /dev/null @@ -1,3 +0,0 @@ -fn main() { - std::print!("{}", canister_b::idl()); -} diff --git a/ic-canister/tests/canister-c/Cargo.toml b/ic-canister/tests/canister-c/Cargo.toml index 584a371e..d321b9db 100644 --- a/ic-canister/tests/canister-c/Cargo.toml +++ b/ic-canister/tests/canister-c/Cargo.toml @@ -3,6 +3,9 @@ name = "canister-c" version.workspace = true edition.workspace = true +[lib] +crate-type = ["cdylib", "rlib"] + [features] default = [] export-api = [] diff --git a/ic-canister/tests/canister-c/src/lib.rs b/ic-canister/tests/canister-c/src/lib.rs index e5b771b8..8a81ba5a 100644 --- a/ic-canister/tests/canister-c/src/lib.rs +++ b/ic-canister/tests/canister-c/src/lib.rs @@ -53,6 +53,7 @@ impl PreUpdate for CanisterC { } } +#[ic_canister::export_candid] pub fn idl() -> String { use ic_canister::Idl; diff --git a/ic-canister/tests/canister-c/src/main.rs b/ic-canister/tests/canister-c/src/main.rs deleted file mode 100644 index 728859d1..00000000 --- a/ic-canister/tests/canister-c/src/main.rs +++ /dev/null @@ -1,3 +0,0 @@ -fn main() { - print!("{}", canister_c::idl()) -} diff --git a/ic-canister/tests/canister-d/Cargo.toml b/ic-canister/tests/canister-d/Cargo.toml index 82d6a07e..52cba276 100644 --- a/ic-canister/tests/canister-d/Cargo.toml +++ b/ic-canister/tests/canister-d/Cargo.toml @@ -3,6 +3,9 @@ name = "canister-d" version.workspace = true edition.workspace = true +[lib] +crate-type = ["cdylib", "rlib"] + [features] default = [] export-api = [] diff --git a/ic-canister/tests/canister-d/src/lib.rs b/ic-canister/tests/canister-d/src/lib.rs index aaa49b1e..4d1764cd 100644 --- a/ic-canister/tests/canister-d/src/lib.rs +++ b/ic-canister/tests/canister-d/src/lib.rs @@ -51,6 +51,7 @@ pub trait CanisterD: Canister { generate_exports!(CanisterD, CanisterDImpl); +#[ic_canister::export_candid] pub fn idl() -> String { let trait_idl = ::get_idl(); candid::pretty::candid::compile(&trait_idl.env.env, &Some(trait_idl.actor)) diff --git a/ic-canister/tests/canister-d/src/main.rs b/ic-canister/tests/canister-d/src/main.rs deleted file mode 100644 index d4fc5425..00000000 --- a/ic-canister/tests/canister-d/src/main.rs +++ /dev/null @@ -1,3 +0,0 @@ -fn main() { - print!("{}", canister_d::idl()) -} diff --git a/ic-canister/tests/canister-e/Cargo.toml b/ic-canister/tests/canister-e/Cargo.toml index b5f08764..7a55ddb0 100644 --- a/ic-canister/tests/canister-e/Cargo.toml +++ b/ic-canister/tests/canister-e/Cargo.toml @@ -3,6 +3,9 @@ name = "canister-e" version.workspace = true edition.workspace = true +[lib] +crate-type = ["cdylib", "rlib"] + # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [features] diff --git a/ic-canister/tests/canister-e/src/canister.rs b/ic-canister/tests/canister-e/src/lib.rs similarity index 92% rename from ic-canister/tests/canister-e/src/canister.rs rename to ic-canister/tests/canister-e/src/lib.rs index 45963818..69e9be61 100644 --- a/ic-canister/tests/canister-e/src/canister.rs +++ b/ic-canister/tests/canister-e/src/lib.rs @@ -73,3 +73,10 @@ impl CounterCanister { generate_idl!() } } + +#[ic_canister::export_candid] +pub fn idl() -> String { + let idl = CounterCanister::idl(); + + candid::pretty::candid::compile(&idl.env.env, &Some(idl.actor)) +} diff --git a/ic-canister/tests/canister-e/src/main.rs b/ic-canister/tests/canister-e/src/main.rs deleted file mode 100644 index 2bedb7b6..00000000 --- a/ic-canister/tests/canister-e/src/main.rs +++ /dev/null @@ -1,10 +0,0 @@ -use crate::canister::CounterCanister; - -pub mod canister; - -fn main() { - let canister_e_idl = CounterCanister::idl(); - let idl = candid::pretty::candid::compile(&canister_e_idl.env.env, &Some(canister_e_idl.actor)); - - println!("{}", idl); -} diff --git a/ic-log/Cargo.toml b/ic-log/Cargo.toml index ca13d048..0d5b9ac6 100644 --- a/ic-log/Cargo.toml +++ b/ic-log/Cargo.toml @@ -3,6 +3,9 @@ name = "ic-log" version.workspace = true edition.workspace = true +[lib] +crate-type = ["cdylib", "rlib"] + # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] @@ -24,7 +27,13 @@ serde = { workspace = true } ic-canister = { path = "../ic-canister/ic-canister" } [features] -canister = ["export-api", "ic-canister", "ic-storage", "ic-stable-structures", "cfg-if"] +canister = [ + "export-api", + "ic-canister", + "ic-storage", + "ic-stable-structures", + "cfg-if", +] export-api = [] [[example]] diff --git a/ic-log/examples/log_canister.rs b/ic-log/examples/log_canister.rs index 87c69856..1750f0ea 100644 --- a/ic-log/examples/log_canister.rs +++ b/ic-log/examples/log_canister.rs @@ -12,6 +12,13 @@ use ic_stable_structures::stable_structures::DefaultMemoryImpl; use ic_stable_structures::{IcMemoryManager, MemoryId}; use ic_storage::IcStorage; +#[ic_canister::export_candid] +pub fn idl() -> String { + let idl = LoggerCanister::get_idl(); + + candid::pretty::candid::compile(&idl.env.env, &Some(idl.actor)) +} + thread_local! { static MEMORY_MANAGER: IcMemoryManager = IcMemoryManager::init(DefaultMemoryImpl::default()); } diff --git a/ic-payments/test-payment-canister/Cargo.toml b/ic-payments/test-payment-canister/Cargo.toml index 7529d234..f5d677ce 100644 --- a/ic-payments/test-payment-canister/Cargo.toml +++ b/ic-payments/test-payment-canister/Cargo.toml @@ -3,6 +3,9 @@ name = "test-payment-canister" version.workspace = true edition.workspace = true +[lib] +crate-type = ["cdylib", "rlib"] + [features] default = [] export-api = [] diff --git a/ic-payments/test-payment-canister/src/canister.rs b/ic-payments/test-payment-canister/src/canister.rs index bca3c4d9..a491b2fc 100644 --- a/ic-payments/test-payment-canister/src/canister.rs +++ b/ic-payments/test-payment-canister/src/canister.rs @@ -4,7 +4,7 @@ use std::collections::HashMap; use candid::Nat; -use ic_canister::{init, update, Canister, PreUpdate}; +use ic_canister::{generate_idl, init, update, Canister, Idl, PreUpdate}; use ic_exports::candid::{CandidType, Deserialize, Principal}; use ic_exports::ic_kit::ic; use ic_exports::icrc_types::icrc1::account::Account; @@ -148,4 +148,8 @@ impl PaymentCanister { (local_balance, token_canister_balance) } + + pub fn idl() -> Idl { + generate_idl!() + } } diff --git a/ic-payments/test-payment-canister/src/lib.rs b/ic-payments/test-payment-canister/src/lib.rs new file mode 100644 index 00000000..cf79468a --- /dev/null +++ b/ic-payments/test-payment-canister/src/lib.rs @@ -0,0 +1,10 @@ +use canister::PaymentCanister; + +pub mod canister; + +#[ic_canister::export_candid] +pub fn idl() -> String { + let idl = PaymentCanister::idl(); + + candid::pretty::candid::compile(&idl.env.env, &Some(idl.actor)) +} diff --git a/ic-payments/test-payment-canister/src/main.rs b/ic-payments/test-payment-canister/src/main.rs deleted file mode 100644 index fc0a6004..00000000 --- a/ic-payments/test-payment-canister/src/main.rs +++ /dev/null @@ -1,4 +0,0 @@ -pub mod canister; - -// use canister::PaymentCanister; -fn main() {} diff --git a/ic-stable-structures/tests/dummy_canister/Cargo.toml b/ic-stable-structures/tests/dummy_canister/Cargo.toml index 8d19620a..6d1bbd82 100644 --- a/ic-stable-structures/tests/dummy_canister/Cargo.toml +++ b/ic-stable-structures/tests/dummy_canister/Cargo.toml @@ -3,6 +3,9 @@ name = "dummy_canister" version.workspace = true edition.workspace = true +[lib] +crate-type = ["cdylib", "rlib"] + [features] default = [] export-api = [] diff --git a/ic-stable-structures/tests/dummy_canister/src/lib.rs b/ic-stable-structures/tests/dummy_canister/src/lib.rs new file mode 100644 index 00000000..92b92eb4 --- /dev/null +++ b/ic-stable-structures/tests/dummy_canister/src/lib.rs @@ -0,0 +1,10 @@ +pub mod canister; + +use canister::DummyCanister; + +#[ic_canister::export_candid] +pub fn idl() -> String { + let canister_e_idl = DummyCanister::idl(); + + candid::pretty::candid::compile(&canister_e_idl.env.env, &Some(canister_e_idl.actor)) +} diff --git a/ic-stable-structures/tests/dummy_canister/src/main.rs b/ic-stable-structures/tests/dummy_canister/src/main.rs deleted file mode 100644 index 4a4ad2cd..00000000 --- a/ic-stable-structures/tests/dummy_canister/src/main.rs +++ /dev/null @@ -1,10 +0,0 @@ -pub mod canister; - -use canister::DummyCanister; - -fn main() { - let canister_e_idl = DummyCanister::idl(); - let idl = candid::pretty::candid::compile(&canister_e_idl.env.env, &Some(canister_e_idl.actor)); - - println!("{}", idl); -} diff --git a/ic-task-scheduler/tests/dummy_scheduler_canister/Cargo.toml b/ic-task-scheduler/tests/dummy_scheduler_canister/Cargo.toml index 752df3a9..dd782284 100644 --- a/ic-task-scheduler/tests/dummy_scheduler_canister/Cargo.toml +++ b/ic-task-scheduler/tests/dummy_scheduler_canister/Cargo.toml @@ -3,6 +3,9 @@ name = "dummy_scheduler_canister" version.workspace = true edition.workspace = true +[lib] +crate-type = ["cdylib", "rlib"] + [features] default = [] export-api = [] diff --git a/ic-task-scheduler/tests/dummy_scheduler_canister/src/canister.rs b/ic-task-scheduler/tests/dummy_scheduler_canister/src/lib.rs similarity index 96% rename from ic-task-scheduler/tests/dummy_scheduler_canister/src/canister.rs rename to ic-task-scheduler/tests/dummy_scheduler_canister/src/lib.rs index 74ed6f30..4c2cdc55 100644 --- a/ic-task-scheduler/tests/dummy_scheduler_canister/src/canister.rs +++ b/ic-task-scheduler/tests/dummy_scheduler_canister/src/lib.rs @@ -44,6 +44,13 @@ thread_local! { } +#[ic_canister::export_candid] +fn idl() -> String { + let canister_e_idl = DummyCanister::idl(); + + candid::pretty::candid::compile(&canister_e_idl.env.env, &Some(canister_e_idl.actor)) +} + #[derive(CandidType, Serialize, Deserialize, Debug, Clone)] pub enum DummyTask { Panicking, diff --git a/ic-task-scheduler/tests/dummy_scheduler_canister/src/main.rs b/ic-task-scheduler/tests/dummy_scheduler_canister/src/main.rs deleted file mode 100644 index 4a4ad2cd..00000000 --- a/ic-task-scheduler/tests/dummy_scheduler_canister/src/main.rs +++ /dev/null @@ -1,10 +0,0 @@ -pub mod canister; - -use canister::DummyCanister; - -fn main() { - let canister_e_idl = DummyCanister::idl(); - let idl = candid::pretty::candid::compile(&canister_e_idl.env.env, &Some(canister_e_idl.actor)); - - println!("{}", idl); -} diff --git a/just/build.just b/just/build.just index 6789273e..13c12b8a 100644 --- a/just/build.just +++ b/just/build.just @@ -13,47 +13,46 @@ build: pre_build build_ic_stable_structures_dummy_canister build_ic_canister_tes [private] -pre_build: +pre_build: mkdir -p "{{WASM_DIR}}" - [private] build_ic_stable_structures_dummy_canister: - cargo run -p dummy_canister --features export-api > {{WASM_DIR}}/dummy_canister.did cargo build -p dummy_canister --target wasm32-unknown-unknown --features export-api --release - ic-wasm {{WASM_DIR}}/dummy_canister.wasm -o {{WASM_DIR}}/dummy_canister.wasm shrink + ic-wasm {{WASM_DIR}}/dummy_canister.wasm -o {{WASM_DIR}}/dummy_canister.wasm shrink --keep-name-section + candid-extractor "{{WASM_DIR}}/dummy_canister.wasm" > "{{WASM_DIR}}/dummy_canister.did" [private] build_ic_canister_test_canisters: - cargo run -p canister-a --features export-api > {{WASM_DIR}}/canister-a.did - cargo run -p canister-b --features export-api > {{WASM_DIR}}/canister-b.did - cargo run -p canister-c --features export-api > {{WASM_DIR}}/canister-c.did - cargo run -p canister-d --features export-api > {{WASM_DIR}}/canister-d.did - cargo build -p canister-a --target wasm32-unknown-unknown --features export-api --release cargo build -p canister-b --target wasm32-unknown-unknown --features export-api --release cargo build -p canister-c --target wasm32-unknown-unknown --features export-api --release cargo build -p canister-d --target wasm32-unknown-unknown --features export-api --release - ic-wasm {{WASM_DIR}}/canister-a.wasm -o {{WASM_DIR}}/canister-a.wasm shrink - ic-wasm {{WASM_DIR}}/canister-b.wasm -o {{WASM_DIR}}/canister-b.wasm shrink - ic-wasm {{WASM_DIR}}/canister-c.wasm -o {{WASM_DIR}}/canister-c.wasm shrink - ic-wasm {{WASM_DIR}}/canister-d.wasm -o {{WASM_DIR}}/canister-d.wasm shrink + ic-wasm {{WASM_DIR}}/canister_a.wasm -o {{WASM_DIR}}/canister_a.wasm shrink --keep-name-section + ic-wasm {{WASM_DIR}}/canister_b.wasm -o {{WASM_DIR}}/canister_b.wasm shrink --keep-name-section + ic-wasm {{WASM_DIR}}/canister_c.wasm -o {{WASM_DIR}}/canister_c.wasm shrink --keep-name-section + ic-wasm {{WASM_DIR}}/canister_d.wasm -o {{WASM_DIR}}/canister_d.wasm shrink --keep-name-section + + candid-extractor "{{WASM_DIR}}/canister_a.wasm" > "{{WASM_DIR}}/canister_a.did" + candid-extractor "{{WASM_DIR}}/canister_b.wasm" > "{{WASM_DIR}}/canister_b.did" + candid-extractor "{{WASM_DIR}}/canister_c.wasm" > "{{WASM_DIR}}/canister_c.did" + candid-extractor "{{WASM_DIR}}/canister_d.wasm" > "{{WASM_DIR}}/canister_d.did" [private] build_ic_task_scheduler_dummy_scheduler_canister: - cargo run -p dummy_scheduler_canister --features export-api > {{WASM_DIR}}/dummy_scheduler_canister.did cargo build -p dummy_scheduler_canister --target wasm32-unknown-unknown --features export-api --release - ic-wasm {{WASM_DIR}}/dummy_scheduler_canister.wasm -o {{WASM_DIR}}/dummy_scheduler_canister.wasm shrink + ic-wasm {{WASM_DIR}}/dummy_scheduler_canister.wasm -o {{WASM_DIR}}/dummy_scheduler_canister.wasm shrink --keep-name-section + candid-extractor "{{WASM_DIR}}/dummy_scheduler_canister.wasm" > "{{WASM_DIR}}/dummy_scheduler_canister.did" [private] build_ic_log_test_canister: - cargo run -p ic-log --example log_canister --features canister > {{WASM_DIR}}/log_canister.did cargo build -p ic-log --example log_canister --target wasm32-unknown-unknown --features canister --release - ic-wasm {{WASM_DIR}}/examples/log_canister.wasm -o {{WASM_DIR}}/log_canister.wasm shrink + ic-wasm {{WASM_DIR}}/examples/log_canister.wasm -o {{WASM_DIR}}/log_canister.wasm shrink --keep-name-section + candid-extractor "{{WASM_DIR}}/log_canister.wasm" > "{{WASM_DIR}}/log_canister.did" [private] @@ -70,5 +69,6 @@ build_ic_payments_test_canister: fi cargo build --target wasm32-unknown-unknown --features export-api -p test-payment-canister --release - ic-wasm {{WASM_DIR}}/test-payment-canister.wasm -o {{WASM_DIR}}/test-payment-canister.wasm shrink + ic-wasm {{WASM_DIR}}/test_payment_canister.wasm -o {{WASM_DIR}}/test_payment_canister.wasm shrink --keep-name-section + candid-extractor "{{WASM_DIR}}/test_payment_canister.wasm" > "{{WASM_DIR}}/test_payment_canister.did" From a94845071b23caa713e07d5415cd5be6d49864f2 Mon Sep 17 00:00:00 2001 From: Yasir Date: Tue, 25 Mar 2025 10:45:36 +0300 Subject: [PATCH 2/3] Update CI pipeline with ic-wasm 0.9.3 and add candid-extractor installation --- .github/workflows/build_and_tests.yml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build_and_tests.yml b/.github/workflows/build_and_tests.yml index c875f54f..012ea895 100644 --- a/.github/workflows/build_and_tests.yml +++ b/.github/workflows/build_and_tests.yml @@ -17,9 +17,8 @@ jobs: name: Build and Test runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - + - name: Install rust toolchain uses: dtolnay/rust-toolchain@1.85.0 with: @@ -31,9 +30,15 @@ jobs: - name: install ic-wasm run: | - wget https://github.com/dfinity/ic-wasm/releases/download/0.8.1/ic-wasm-linux64 -O /usr/local/bin/ic-wasm + wget https://github.com/dfinity/ic-wasm/releases/download/0.9.3/ic-wasm-linux64 -O /usr/local/bin/ic-wasm chmod +x /usr/local/bin/ic-wasm + - name: install candid-extractor + run: | + wget https://github.com/dfinity/cdk-rs/releases/download/candid-extractor-v0.1.4/candid-extractor-x86_64-unknown-linux-gnu.tar.gz -O /tmp/candid-extractor-x86_64-unknown-linux-gnu.tar.gz + tar -xvf /tmp/candid-extractor-x86_64-unknown-linux-gnu.tar.gz -C /usr/local/bin + chmod +x /usr/local/bin/candid-extractor + - name: check rust code style run: | just check_code @@ -50,4 +55,3 @@ jobs: run: | sudo apt install gcc-multilib just test_i686 - From 2075ee9f6687b2bc234465000eff71ab193dd828 Mon Sep 17 00:00:00 2001 From: Yasir Date: Wed, 26 Mar 2025 12:44:22 +0300 Subject: [PATCH 3/3] refactor: remove unused candid IDL export functions and related installation steps --- .github/workflows/build_and_tests.yml | 6 ------ ic-canister/tests/canister-a/src/lib.rs | 6 ------ ic-canister/tests/canister-c/src/lib.rs | 15 +-------------- ic-canister/tests/canister-d/src/lib.rs | 6 ------ ic-canister/tests/canister-e/src/lib.rs | 7 ------- ic-log/examples/log_canister.rs | 7 ------- ic-payments/test-payment-canister/src/lib.rs | 9 --------- .../tests/dummy_canister/src/lib.rs | 9 --------- .../tests/dummy_scheduler_canister/src/lib.rs | 7 ------- just/build.just | 11 ++--------- 10 files changed, 3 insertions(+), 80 deletions(-) diff --git a/.github/workflows/build_and_tests.yml b/.github/workflows/build_and_tests.yml index 012ea895..a37c1387 100644 --- a/.github/workflows/build_and_tests.yml +++ b/.github/workflows/build_and_tests.yml @@ -33,12 +33,6 @@ jobs: wget https://github.com/dfinity/ic-wasm/releases/download/0.9.3/ic-wasm-linux64 -O /usr/local/bin/ic-wasm chmod +x /usr/local/bin/ic-wasm - - name: install candid-extractor - run: | - wget https://github.com/dfinity/cdk-rs/releases/download/candid-extractor-v0.1.4/candid-extractor-x86_64-unknown-linux-gnu.tar.gz -O /tmp/candid-extractor-x86_64-unknown-linux-gnu.tar.gz - tar -xvf /tmp/candid-extractor-x86_64-unknown-linux-gnu.tar.gz -C /usr/local/bin - chmod +x /usr/local/bin/candid-extractor - - name: check rust code style run: | just check_code diff --git a/ic-canister/tests/canister-a/src/lib.rs b/ic-canister/tests/canister-a/src/lib.rs index ca215cc3..0b59e5d8 100644 --- a/ic-canister/tests/canister-a/src/lib.rs +++ b/ic-canister/tests/canister-a/src/lib.rs @@ -8,12 +8,6 @@ use ic_exports::candid::{CandidType, Deserialize, Principal}; use ic_storage::stable::Versioned; use ic_storage::IcStorage; -#[ic_canister::export_candid] -pub fn idl() -> String { - let idl = CanisterAImpl::get_idl(); - candid::pretty::candid::compile(&idl.env.env, &Some(idl.actor)) -} - #[derive(Default, CandidType, Deserialize, IcStorage)] pub struct StateA { counter: u32, diff --git a/ic-canister/tests/canister-c/src/lib.rs b/ic-canister/tests/canister-c/src/lib.rs index 8a81ba5a..845a1055 100644 --- a/ic-canister/tests/canister-c/src/lib.rs +++ b/ic-canister/tests/canister-c/src/lib.rs @@ -1,7 +1,7 @@ use std::cell::RefCell; use std::rc::Rc; -use ic_canister::{generate_idl, update, Canister, MethodType, PreUpdate}; +use ic_canister::{update, Canister, MethodType, PreUpdate}; use ic_exports::candid::{CandidType, Deserialize, Principal}; use ic_metrics::{Metrics, MetricsStorage}; use ic_storage::stable::Versioned; @@ -53,19 +53,6 @@ impl PreUpdate for CanisterC { } } -#[ic_canister::export_candid] -pub fn idl() -> String { - use ic_canister::Idl; - - let canister_c_idl = generate_idl!(); - - let mut metrics_idl = ::get_idl(); - - metrics_idl.merge(&canister_c_idl); - - candid::pretty::candid::compile(&metrics_idl.env.env, &Some(metrics_idl.actor)) -} - #[cfg(test)] mod tests { use ic_canister::canister_call; diff --git a/ic-canister/tests/canister-d/src/lib.rs b/ic-canister/tests/canister-d/src/lib.rs index 4d1764cd..43cfd372 100644 --- a/ic-canister/tests/canister-d/src/lib.rs +++ b/ic-canister/tests/canister-d/src/lib.rs @@ -51,12 +51,6 @@ pub trait CanisterD: Canister { generate_exports!(CanisterD, CanisterDImpl); -#[ic_canister::export_candid] -pub fn idl() -> String { - let trait_idl = ::get_idl(); - candid::pretty::candid::compile(&trait_idl.env.env, &Some(trait_idl.actor)) -} - #[cfg(test)] mod tests { diff --git a/ic-canister/tests/canister-e/src/lib.rs b/ic-canister/tests/canister-e/src/lib.rs index 69e9be61..45963818 100644 --- a/ic-canister/tests/canister-e/src/lib.rs +++ b/ic-canister/tests/canister-e/src/lib.rs @@ -73,10 +73,3 @@ impl CounterCanister { generate_idl!() } } - -#[ic_canister::export_candid] -pub fn idl() -> String { - let idl = CounterCanister::idl(); - - candid::pretty::candid::compile(&idl.env.env, &Some(idl.actor)) -} diff --git a/ic-log/examples/log_canister.rs b/ic-log/examples/log_canister.rs index 1750f0ea..87c69856 100644 --- a/ic-log/examples/log_canister.rs +++ b/ic-log/examples/log_canister.rs @@ -12,13 +12,6 @@ use ic_stable_structures::stable_structures::DefaultMemoryImpl; use ic_stable_structures::{IcMemoryManager, MemoryId}; use ic_storage::IcStorage; -#[ic_canister::export_candid] -pub fn idl() -> String { - let idl = LoggerCanister::get_idl(); - - candid::pretty::candid::compile(&idl.env.env, &Some(idl.actor)) -} - thread_local! { static MEMORY_MANAGER: IcMemoryManager = IcMemoryManager::init(DefaultMemoryImpl::default()); } diff --git a/ic-payments/test-payment-canister/src/lib.rs b/ic-payments/test-payment-canister/src/lib.rs index cf79468a..1d28d249 100644 --- a/ic-payments/test-payment-canister/src/lib.rs +++ b/ic-payments/test-payment-canister/src/lib.rs @@ -1,10 +1 @@ -use canister::PaymentCanister; - pub mod canister; - -#[ic_canister::export_candid] -pub fn idl() -> String { - let idl = PaymentCanister::idl(); - - candid::pretty::candid::compile(&idl.env.env, &Some(idl.actor)) -} diff --git a/ic-stable-structures/tests/dummy_canister/src/lib.rs b/ic-stable-structures/tests/dummy_canister/src/lib.rs index 92b92eb4..1d28d249 100644 --- a/ic-stable-structures/tests/dummy_canister/src/lib.rs +++ b/ic-stable-structures/tests/dummy_canister/src/lib.rs @@ -1,10 +1 @@ pub mod canister; - -use canister::DummyCanister; - -#[ic_canister::export_candid] -pub fn idl() -> String { - let canister_e_idl = DummyCanister::idl(); - - candid::pretty::candid::compile(&canister_e_idl.env.env, &Some(canister_e_idl.actor)) -} diff --git a/ic-task-scheduler/tests/dummy_scheduler_canister/src/lib.rs b/ic-task-scheduler/tests/dummy_scheduler_canister/src/lib.rs index 4c2cdc55..74ed6f30 100644 --- a/ic-task-scheduler/tests/dummy_scheduler_canister/src/lib.rs +++ b/ic-task-scheduler/tests/dummy_scheduler_canister/src/lib.rs @@ -44,13 +44,6 @@ thread_local! { } -#[ic_canister::export_candid] -fn idl() -> String { - let canister_e_idl = DummyCanister::idl(); - - candid::pretty::candid::compile(&canister_e_idl.env.env, &Some(canister_e_idl.actor)) -} - #[derive(CandidType, Serialize, Deserialize, Debug, Clone)] pub enum DummyTask { Panicking, diff --git a/just/build.just b/just/build.just index 13c12b8a..b7607741 100644 --- a/just/build.just +++ b/just/build.just @@ -20,7 +20,7 @@ pre_build: build_ic_stable_structures_dummy_canister: cargo build -p dummy_canister --target wasm32-unknown-unknown --features export-api --release ic-wasm {{WASM_DIR}}/dummy_canister.wasm -o {{WASM_DIR}}/dummy_canister.wasm shrink --keep-name-section - candid-extractor "{{WASM_DIR}}/dummy_canister.wasm" > "{{WASM_DIR}}/dummy_canister.did" + [private] @@ -35,24 +35,18 @@ build_ic_canister_test_canisters: ic-wasm {{WASM_DIR}}/canister_c.wasm -o {{WASM_DIR}}/canister_c.wasm shrink --keep-name-section ic-wasm {{WASM_DIR}}/canister_d.wasm -o {{WASM_DIR}}/canister_d.wasm shrink --keep-name-section - candid-extractor "{{WASM_DIR}}/canister_a.wasm" > "{{WASM_DIR}}/canister_a.did" - candid-extractor "{{WASM_DIR}}/canister_b.wasm" > "{{WASM_DIR}}/canister_b.did" - candid-extractor "{{WASM_DIR}}/canister_c.wasm" > "{{WASM_DIR}}/canister_c.did" - candid-extractor "{{WASM_DIR}}/canister_d.wasm" > "{{WASM_DIR}}/canister_d.did" - [private] build_ic_task_scheduler_dummy_scheduler_canister: cargo build -p dummy_scheduler_canister --target wasm32-unknown-unknown --features export-api --release ic-wasm {{WASM_DIR}}/dummy_scheduler_canister.wasm -o {{WASM_DIR}}/dummy_scheduler_canister.wasm shrink --keep-name-section - candid-extractor "{{WASM_DIR}}/dummy_scheduler_canister.wasm" > "{{WASM_DIR}}/dummy_scheduler_canister.did" + [private] build_ic_log_test_canister: cargo build -p ic-log --example log_canister --target wasm32-unknown-unknown --features canister --release ic-wasm {{WASM_DIR}}/examples/log_canister.wasm -o {{WASM_DIR}}/log_canister.wasm shrink --keep-name-section - candid-extractor "{{WASM_DIR}}/log_canister.wasm" > "{{WASM_DIR}}/log_canister.did" [private] @@ -70,5 +64,4 @@ build_ic_payments_test_canister: cargo build --target wasm32-unknown-unknown --features export-api -p test-payment-canister --release ic-wasm {{WASM_DIR}}/test_payment_canister.wasm -o {{WASM_DIR}}/test_payment_canister.wasm shrink --keep-name-section - candid-extractor "{{WASM_DIR}}/test_payment_canister.wasm" > "{{WASM_DIR}}/test_payment_canister.did"