From bfab5e8ab49741fba0d39feb7f7a035911f9bf4c Mon Sep 17 00:00:00 2001 From: PG Herveou Date: Fri, 15 Mar 2024 15:59:58 +0100 Subject: [PATCH 1/3] Contracts use polkavm workspace deps --- substrate/frame/contracts/fixtures/Cargo.toml | 2 +- substrate/frame/contracts/fixtures/build/Cargo.toml | 2 +- substrate/frame/contracts/uapi/Cargo.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/substrate/frame/contracts/fixtures/Cargo.toml b/substrate/frame/contracts/fixtures/Cargo.toml index 9ca9e404c3100..5ac140cd91b1c 100644 --- a/substrate/frame/contracts/fixtures/Cargo.toml +++ b/substrate/frame/contracts/fixtures/Cargo.toml @@ -20,7 +20,7 @@ parity-wasm = "0.45.0" tempfile = "3.8.1" toml = "0.8.2" twox-hash = "1.6.3" -polkavm-linker = { version = "0.5.0", optional = true } +polkavm-linker = { workspace = true, optional = true } anyhow = "1.0.0" [features] diff --git a/substrate/frame/contracts/fixtures/build/Cargo.toml b/substrate/frame/contracts/fixtures/build/Cargo.toml index d524dbff1ce1b..48fc6f868d3a8 100644 --- a/substrate/frame/contracts/fixtures/build/Cargo.toml +++ b/substrate/frame/contracts/fixtures/build/Cargo.toml @@ -10,7 +10,7 @@ edition = "2021" [dependencies] uapi = { package = 'pallet-contracts-uapi', path = "", default-features = false } common = { package = 'pallet-contracts-fixtures-common', path = "" } -polkavm-derive = '0.5.0' +polkavm-derive = { workspace = true } [profile.release] opt-level = 3 diff --git a/substrate/frame/contracts/uapi/Cargo.toml b/substrate/frame/contracts/uapi/Cargo.toml index a5081af2a2d28..12bb6b8fc2c0b 100644 --- a/substrate/frame/contracts/uapi/Cargo.toml +++ b/substrate/frame/contracts/uapi/Cargo.toml @@ -21,7 +21,7 @@ scale = { package = "parity-scale-codec", version = "3.6.1", default-features = ], optional = true } [target.'cfg(target_arch = "riscv32")'.dependencies] -polkavm-derive = '0.5.0' +polkavm-derive = { workspace = true } [package.metadata.docs.rs] default-target = ["wasm32-unknown-unknown"] From 5c8a1bc480fe9fe821bc0b57130e6f62f7b349ad Mon Sep 17 00:00:00 2001 From: PG Herveou Date: Fri, 15 Mar 2024 17:09:29 +0100 Subject: [PATCH 2/3] Fix lock --- Cargo.lock | 57 +++++++----------------------------------------------- 1 file changed, 7 insertions(+), 50 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e38f09db4d390..5dfaaa1c93818 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9550,7 +9550,7 @@ dependencies = [ "anyhow", "frame-system", "parity-wasm", - "polkavm-linker 0.5.0", + "polkavm-linker", "sp-runtime", "tempfile", "toml 0.8.8", @@ -9611,7 +9611,7 @@ dependencies = [ "bitflags 1.3.2", "parity-scale-codec", "paste", - "polkavm-derive 0.5.0", + "polkavm-derive", "scale-info", ] @@ -13802,28 +13802,12 @@ dependencies = [ "westend-runtime", ] -[[package]] -name = "polkavm-common" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88b4e215c80fe876147f3d58158d5dfeae7dabdd6047e175af77095b78d0035c" - [[package]] name = "polkavm-common" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92c99f7eee94e7be43ba37eef65ad0ee8cbaf89b7c00001c3f6d2be985cb1817" -[[package]] -name = "polkavm-derive" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6380dbe1fb03ecc74ad55d841cfc75480222d153ba69ddcb00977866cbdabdb8" -dependencies = [ - "polkavm-derive-impl 0.5.0", - "syn 2.0.50", -] - [[package]] name = "polkavm-derive" version = "0.8.0" @@ -13833,25 +13817,13 @@ dependencies = [ "polkavm-derive-impl-macro", ] -[[package]] -name = "polkavm-derive-impl" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc8211b3365bbafb2fb32057d68b0e1ca55d079f5cf6f9da9b98079b94b3987d" -dependencies = [ - "polkavm-common 0.5.0", - "proc-macro2", - "quote", - "syn 2.0.50", -] - [[package]] name = "polkavm-derive-impl" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c10b2654a8a10a83c260bfb93e97b262cf0017494ab94a65d389e0eda6de6c9c" dependencies = [ - "polkavm-common 0.8.0", + "polkavm-common", "proc-macro2", "quote", "syn 2.0.50", @@ -13863,25 +13835,10 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "15e85319a0d5129dc9f021c62607e0804f5fb777a05cdda44d750ac0732def66" dependencies = [ - "polkavm-derive-impl 0.8.0", + "polkavm-derive-impl", "syn 2.0.50", ] -[[package]] -name = "polkavm-linker" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5a668bb33c7f0b5f4ca91adb1e1e71cf4930fef5e6909f46c2180d65cce37d0" -dependencies = [ - "gimli 0.28.0", - "hashbrown 0.14.3", - "log", - "object 0.32.2", - "polkavm-common 0.5.0", - "regalloc2 0.9.3", - "rustc-demangle", -] - [[package]] name = "polkavm-linker" version = "0.8.2" @@ -13892,7 +13849,7 @@ dependencies = [ "hashbrown 0.14.3", "log", "object 0.32.2", - "polkavm-common 0.8.0", + "polkavm-common", "regalloc2 0.9.3", "rustc-demangle", ] @@ -18958,7 +18915,7 @@ dependencies = [ "bytes", "impl-trait-for-tuples", "parity-scale-codec", - "polkavm-derive 0.8.0", + "polkavm-derive", "primitive-types", "rustversion", "sp-core", @@ -19980,7 +19937,7 @@ dependencies = [ "console", "filetime", "parity-wasm", - "polkavm-linker 0.8.2", + "polkavm-linker", "sp-maybe-compressed-blob", "strum 0.24.1", "tempfile", From ad12c48243de0683c6f7a0a2031e1a9efb90f5fc Mon Sep 17 00:00:00 2001 From: PG Herveou Date: Fri, 15 Mar 2024 17:58:00 +0100 Subject: [PATCH 3/3] Fix build script --- substrate/frame/contracts/fixtures/build.rs | 7 ++++++- substrate/frame/contracts/fixtures/build/Cargo.toml | 4 ++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/substrate/frame/contracts/fixtures/build.rs b/substrate/frame/contracts/fixtures/build.rs index 12a7805294b67..19aff37c16014 100644 --- a/substrate/frame/contracts/fixtures/build.rs +++ b/substrate/frame/contracts/fixtures/build.rs @@ -121,9 +121,11 @@ fn collect_entries(contracts_dir: &Path, out_dir: &Path) -> Vec { /// Create a `Cargo.toml` to compile the given contract entries. fn create_cargo_toml<'a>( fixtures_dir: &Path, + root_cargo_toml: &Path, entries: impl Iterator, output_dir: &Path, ) -> Result<()> { + let root_toml: toml::Value = toml::from_str(&fs::read_to_string(root_cargo_toml)?)?; let mut cargo_toml: toml::Value = toml::from_str(include_str!("./build/Cargo.toml"))?; let mut set_dep = |name, path| -> Result<()> { cargo_toml["dependencies"][name]["path"] = toml::Value::String( @@ -133,6 +135,8 @@ fn create_cargo_toml<'a>( }; set_dep("uapi", "../uapi")?; set_dep("common", "./contracts/common")?; + cargo_toml["dependencies"]["polkavm-derive"]["version"] = + root_toml["workspace"]["dependencies"]["polkavm-derive"].clone(); cargo_toml["bin"] = toml::Value::Array( entries @@ -324,6 +328,7 @@ fn main() -> Result<()> { let contracts_dir = fixtures_dir.join("contracts"); let out_dir: PathBuf = env::var("OUT_DIR")?.into(); let workspace_root = find_workspace_root(&fixtures_dir).expect("workspace root exists; qed"); + let root_cargo_toml = workspace_root.join("Cargo.toml"); let entries = collect_entries(&contracts_dir, &out_dir); if entries.is_empty() { @@ -333,7 +338,7 @@ fn main() -> Result<()> { let tmp_dir = tempfile::tempdir()?; let tmp_dir_path = tmp_dir.path(); - create_cargo_toml(&fixtures_dir, entries.iter(), tmp_dir.path())?; + create_cargo_toml(&fixtures_dir, &root_cargo_toml, entries.iter(), tmp_dir.path())?; invoke_cargo_fmt( &workspace_root.join(".rustfmt.toml"), entries.iter().map(|entry| &entry.path as _), diff --git a/substrate/frame/contracts/fixtures/build/Cargo.toml b/substrate/frame/contracts/fixtures/build/Cargo.toml index 48fc6f868d3a8..ba487a2bb5ca6 100644 --- a/substrate/frame/contracts/fixtures/build/Cargo.toml +++ b/substrate/frame/contracts/fixtures/build/Cargo.toml @@ -6,11 +6,11 @@ edition = "2021" # Binary targets are injected dynamically by the build script. [[bin]] -# local path are injected dynamically by the build script. +# All paths or versions are injected dynamically by the build script. [dependencies] uapi = { package = 'pallet-contracts-uapi', path = "", default-features = false } common = { package = 'pallet-contracts-fixtures-common', path = "" } -polkavm-derive = { workspace = true } +polkavm-derive = { version = "" } [profile.release] opt-level = 3