From 10145f016ef709378d6c6cfda1078ebaadea904e Mon Sep 17 00:00:00 2001 From: karim-en Date: Wed, 26 Feb 2025 01:29:26 +0000 Subject: [PATCH 1/4] chore: deploy test contracts with cargo-near --- Cargo.toml | 1 + near-plugins-derive/Cargo.toml | 1 + near-plugins-derive/tests/common/repo.rs | 66 ++++--------------- .../tests/contracts/upgradable/src/lib.rs | 2 +- 4 files changed, 15 insertions(+), 55 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 88a4562..8ae8699 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -36,3 +36,4 @@ proc-macro2 = "1.0" quote = "1.0.9" syn = { version = "1.0.69", features = ["full"] } proc-macro-crate = "0.1.5" +cargo-near-build = "0.4.4" \ No newline at end of file diff --git a/near-plugins-derive/Cargo.toml b/near-plugins-derive/Cargo.toml index 599a427..716d1d2 100644 --- a/near-plugins-derive/Cargo.toml +++ b/near-plugins-derive/Cargo.toml @@ -22,3 +22,4 @@ near-sdk = { workspace = true, features = ["unit-testing"] } tokio.workspace = true near-workspaces.workspace = true toml.workspace = true +cargo-near-build.workspace = true diff --git a/near-plugins-derive/tests/common/repo.rs b/near-plugins-derive/tests/common/repo.rs index 2f52b94..1ac1c44 100644 --- a/near-plugins-derive/tests/common/repo.rs +++ b/near-plugins-derive/tests/common/repo.rs @@ -1,19 +1,5 @@ -use std::path::{Path, PathBuf}; use std::process::Output; - -async fn read_toolchain(project_path: &Path) -> anyhow::Result { - let content = tokio::fs::read_to_string(project_path.join("rust-toolchain")).await?; - let value: toml::Value = toml::from_str(&content)?; - let result = value - .as_table() - .and_then(|t| t.get("toolchain")) - .and_then(|v| v.as_table()) - .and_then(|t| t.get("channel")) - .and_then(|v| v.as_str()) - .ok_or_else(|| anyhow::Error::msg("Failed to parse rust-toolchain toml"))? - .to_string(); - Ok(result) -} +use std::{path::Path, str::FromStr}; pub fn require_success(output: Output) -> Result<(), anyhow::Error> { if output.status.success() { @@ -23,45 +9,17 @@ pub fn require_success(output: Output) -> Result<(), anyhow::Error> { } } -async fn add_wasm_target(project_path: &Path, toolchain: &str) -> anyhow::Result<()> { - let output = tokio::process::Command::new("rustup") - .env("RUSTUP_TOOLCHAIN", toolchain) - .current_dir(project_path) - .args(["target", "add", "wasm32-unknown-unknown"]) - .output() - .await?; - require_success(output)?; - Ok(()) -} - pub async fn compile_project(project_path: &Path, package_name: &str) -> anyhow::Result> { - let toolchain = read_toolchain(project_path).await?; - add_wasm_target(project_path, &toolchain).await?; - let output = tokio::process::Command::new("cargo") - .env("RUSTUP_TOOLCHAIN", &toolchain) - .current_dir(project_path) - .args([ - "build", - "--target", - "wasm32-unknown-unknown", - "--release", - "--no-default-features", - "-p", - package_name, - ]) - .output() - .await?; + let path = project_path.join("Cargo.toml"); + let artifact = cargo_near_build::build(cargo_near_build::BuildOpts { + manifest_path: Some( + cargo_near_build::camino::Utf8PathBuf::from_str(path.to_str().unwrap()) + .expect("camino PathBuf from str"), + ), + no_abi: true, // TODO remove this flag when we fix ABI generation + ..Default::default() + }) + .unwrap_or_else(|_| panic!("building contract {package_name} from {project_path:?}")); - require_success(output)?; - let binary_path = project_path.join( - [ - "target", - "wasm32-unknown-unknown", - "release", - format!("{}.wasm", package_name).as_str(), - ] - .iter() - .collect::(), - ); - Ok(tokio::fs::read(binary_path).await?) + Ok(tokio::fs::read(&artifact.path).await?) } diff --git a/near-plugins-derive/tests/contracts/upgradable/src/lib.rs b/near-plugins-derive/tests/contracts/upgradable/src/lib.rs index b233a8f..f678bec 100644 --- a/near-plugins-derive/tests/contracts/upgradable/src/lib.rs +++ b/near-plugins-derive/tests/contracts/upgradable/src/lib.rs @@ -1,5 +1,5 @@ use near_plugins::{access_control, AccessControlRole, AccessControllable, Upgradable}; -use near_sdk::borsh::{BorshDeserialize, BorshSerialize}; +use near_sdk::borsh::BorshDeserialize; use near_sdk::env; use near_sdk::serde::{Deserialize, Serialize}; use near_sdk::{near, AccountId, Duration, PanicOnDefault}; From 3442d12b4af209e9656e5566e87d95a75bb9179e Mon Sep 17 00:00:00 2001 From: karim-en Date: Wed, 26 Feb 2025 01:32:32 +0000 Subject: [PATCH 2/4] Update rust-toolchain --- .../tests/contracts/access_controllable/rust-toolchain | 2 +- near-plugins-derive/tests/contracts/ownable/rust-toolchain | 2 +- near-plugins-derive/tests/contracts/pausable/rust-toolchain | 2 +- near-plugins-derive/tests/contracts/upgradable/rust-toolchain | 2 +- near-plugins-derive/tests/contracts/upgradable_2/rust-toolchain | 2 +- .../tests/contracts/upgradable_state_migration/rust-toolchain | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/near-plugins-derive/tests/contracts/access_controllable/rust-toolchain b/near-plugins-derive/tests/contracts/access_controllable/rust-toolchain index 14f0527..d6d7b98 100644 --- a/near-plugins-derive/tests/contracts/access_controllable/rust-toolchain +++ b/near-plugins-derive/tests/contracts/access_controllable/rust-toolchain @@ -1,4 +1,4 @@ [toolchain] -channel = "1.80.0" +channel = "1.84.0" components = ["clippy", "rustfmt"] targets = [ "wasm32-unknown-unknown" ] diff --git a/near-plugins-derive/tests/contracts/ownable/rust-toolchain b/near-plugins-derive/tests/contracts/ownable/rust-toolchain index 14f0527..d6d7b98 100644 --- a/near-plugins-derive/tests/contracts/ownable/rust-toolchain +++ b/near-plugins-derive/tests/contracts/ownable/rust-toolchain @@ -1,4 +1,4 @@ [toolchain] -channel = "1.80.0" +channel = "1.84.0" components = ["clippy", "rustfmt"] targets = [ "wasm32-unknown-unknown" ] diff --git a/near-plugins-derive/tests/contracts/pausable/rust-toolchain b/near-plugins-derive/tests/contracts/pausable/rust-toolchain index 14f0527..d6d7b98 100644 --- a/near-plugins-derive/tests/contracts/pausable/rust-toolchain +++ b/near-plugins-derive/tests/contracts/pausable/rust-toolchain @@ -1,4 +1,4 @@ [toolchain] -channel = "1.80.0" +channel = "1.84.0" components = ["clippy", "rustfmt"] targets = [ "wasm32-unknown-unknown" ] diff --git a/near-plugins-derive/tests/contracts/upgradable/rust-toolchain b/near-plugins-derive/tests/contracts/upgradable/rust-toolchain index 14f0527..d6d7b98 100644 --- a/near-plugins-derive/tests/contracts/upgradable/rust-toolchain +++ b/near-plugins-derive/tests/contracts/upgradable/rust-toolchain @@ -1,4 +1,4 @@ [toolchain] -channel = "1.80.0" +channel = "1.84.0" components = ["clippy", "rustfmt"] targets = [ "wasm32-unknown-unknown" ] diff --git a/near-plugins-derive/tests/contracts/upgradable_2/rust-toolchain b/near-plugins-derive/tests/contracts/upgradable_2/rust-toolchain index 14f0527..d6d7b98 100644 --- a/near-plugins-derive/tests/contracts/upgradable_2/rust-toolchain +++ b/near-plugins-derive/tests/contracts/upgradable_2/rust-toolchain @@ -1,4 +1,4 @@ [toolchain] -channel = "1.80.0" +channel = "1.84.0" components = ["clippy", "rustfmt"] targets = [ "wasm32-unknown-unknown" ] diff --git a/near-plugins-derive/tests/contracts/upgradable_state_migration/rust-toolchain b/near-plugins-derive/tests/contracts/upgradable_state_migration/rust-toolchain index 14f0527..d6d7b98 100644 --- a/near-plugins-derive/tests/contracts/upgradable_state_migration/rust-toolchain +++ b/near-plugins-derive/tests/contracts/upgradable_state_migration/rust-toolchain @@ -1,4 +1,4 @@ [toolchain] -channel = "1.80.0" +channel = "1.84.0" components = ["clippy", "rustfmt"] targets = [ "wasm32-unknown-unknown" ] From 1b7b8a921ff141e3f7f27e018a3f07417c44af9a Mon Sep 17 00:00:00 2001 From: karim-en Date: Wed, 26 Feb 2025 01:33:42 +0000 Subject: [PATCH 3/4] Update rust toolchain --- .github/workflows/test.yml | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 0da8c40..22c0473 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -8,7 +8,7 @@ on: env: RUST_BACKTRACE: full - MSRV: 1.80.0 + MSRV: 1.84.0 jobs: tests: diff --git a/Cargo.toml b/Cargo.toml index 8ae8699..e721c05 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,7 +13,7 @@ authors = ["Aurora Labs "] # An update of the MSRV requires updating: # - `rust-toolchain` files in `near-plugins-derive/tests/contracts/**` # - the toolchain installed in CI via the `toolchain` parameter of `actions-rs/toolchain@v1` -rust-version = "1.80.0" +rust-version = "1.84.0" description = "Ergonomic plugin system to extend NEAR contracts." license = "CC0-1.0" readme = "README.md" From 0dfb6b7b698e92b6461421d69d0f6cb79e333a4b Mon Sep 17 00:00:00 2001 From: karim-en Date: Wed, 26 Feb 2025 01:44:33 +0000 Subject: [PATCH 4/4] Add `no_locked` flag --- near-plugins-derive/tests/common/repo.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/near-plugins-derive/tests/common/repo.rs b/near-plugins-derive/tests/common/repo.rs index 1ac1c44..9a569b8 100644 --- a/near-plugins-derive/tests/common/repo.rs +++ b/near-plugins-derive/tests/common/repo.rs @@ -17,6 +17,7 @@ pub async fn compile_project(project_path: &Path, package_name: &str) -> anyhow: .expect("camino PathBuf from str"), ), no_abi: true, // TODO remove this flag when we fix ABI generation + no_locked: true, ..Default::default() }) .unwrap_or_else(|_| panic!("building contract {package_name} from {project_path:?}"));