diff --git a/CHANGELOG.md b/CHANGELOG.md index 51d743faf7e..29f3256a669 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,14 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.44.2] - 2026-01-09 + +This manually cherry-picks https://github.com/paritytech/subxt/pull/2142 onto the 0.44 branch to allow using $OUT_DIR in a couple of Subxt macro attributes. + +### Changed + +- Allow passing $OUT_DIR in the runtime_metadata_path attribute [#2142](https://github.com/paritytech/subxt/pull/2142) + ## [0.44.1] - 2026-01-08 When using `.tip_of(some_tip, optional_asset_id)` to configure a tip for transactions, the actual tip was being set to 0. This is now fixed. diff --git a/Cargo.lock b/Cargo.lock index a62b9ef57d3..faf190bee62 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -464,7 +464,7 @@ checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "artifacts" -version = "0.44.1" +version = "0.44.2" dependencies = [ "substrate-runner", ] @@ -2110,7 +2110,7 @@ dependencies = [ [[package]] name = "generate-custom-metadata" -version = "0.44.1" +version = "0.44.2" dependencies = [ "frame-metadata 23.0.0", "parity-scale-codec", @@ -2731,7 +2731,7 @@ dependencies = [ [[package]] name = "integration-tests" -version = "0.44.1" +version = "0.44.2" dependencies = [ "assert_matches", "cfg_aliases", @@ -5575,7 +5575,7 @@ dependencies = [ [[package]] name = "substrate-runner" -version = "0.44.1" +version = "0.44.2" [[package]] name = "subtle" @@ -5585,7 +5585,7 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "subxt" -version = "0.44.1" +version = "0.44.2" dependencies = [ "assert_matches", "async-trait", @@ -5630,7 +5630,7 @@ dependencies = [ [[package]] name = "subxt-cli" -version = "0.44.1" +version = "0.44.2" dependencies = [ "clap", "color-eyre", @@ -5662,7 +5662,7 @@ dependencies = [ [[package]] name = "subxt-codegen" -version = "0.44.1" +version = "0.44.2" dependencies = [ "frame-metadata 23.0.0", "getrandom 0.2.16", @@ -5679,7 +5679,7 @@ dependencies = [ [[package]] name = "subxt-core" -version = "0.44.1" +version = "0.44.2" dependencies = [ "assert_matches", "base58", @@ -5735,7 +5735,7 @@ dependencies = [ [[package]] name = "subxt-lightclient" -version = "0.44.1" +version = "0.44.2" dependencies = [ "futures", "futures-timer", @@ -5760,7 +5760,7 @@ dependencies = [ [[package]] name = "subxt-macro" -version = "0.44.1" +version = "0.44.2" dependencies = [ "darling", "parity-scale-codec", @@ -5780,7 +5780,7 @@ dependencies = [ [[package]] name = "subxt-metadata" -version = "0.44.1" +version = "0.44.2" dependencies = [ "bitvec", "criterion", @@ -5796,7 +5796,7 @@ dependencies = [ [[package]] name = "subxt-rpcs" -version = "0.44.1" +version = "0.44.2" dependencies = [ "derive-where", "finito", @@ -5825,7 +5825,7 @@ dependencies = [ [[package]] name = "subxt-signer" -version = "0.44.1" +version = "0.44.2" dependencies = [ "base64 0.22.1", "bip32", @@ -5858,7 +5858,7 @@ dependencies = [ [[package]] name = "subxt-test-macro" -version = "0.44.1" +version = "0.44.2" dependencies = [ "quote", "syn 2.0.101", @@ -5866,7 +5866,7 @@ dependencies = [ [[package]] name = "subxt-utils-fetchmetadata" -version = "0.44.1" +version = "0.44.2" dependencies = [ "frame-metadata 23.0.0", "hex", @@ -5879,7 +5879,7 @@ dependencies = [ [[package]] name = "subxt-utils-stripmetadata" -version = "0.44.1" +version = "0.44.2" dependencies = [ "either", "frame-metadata 23.0.0", @@ -5962,7 +5962,7 @@ dependencies = [ [[package]] name = "test-runtime" -version = "0.44.1" +version = "0.44.2" dependencies = [ "hex", "impl-serde", @@ -6390,7 +6390,7 @@ checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" [[package]] name = "ui-tests" -version = "0.44.1" +version = "0.44.2" dependencies = [ "frame-metadata 23.0.0", "generate-custom-metadata", diff --git a/Cargo.toml b/Cargo.toml index 3250be8ddb8..d21d77f26a2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -38,7 +38,7 @@ resolver = "2" [workspace.package] authors = ["Parity Technologies "] edition = "2024" -version = "0.44.1" +version = "0.44.2" rust-version = "1.85.0" license = "Apache-2.0 OR GPL-3.0" repository = "https://github.com/paritytech/subxt" @@ -156,16 +156,16 @@ sp-state-machine = { version = "0.45.0", default-features = false } sp-runtime = { version = "41.1.0", default-features = false } # Subxt workspace crates: -subxt = { version = "0.44.1", path = "subxt", default-features = false } -subxt-core = { version = "0.44.1", path = "core", default-features = false } -subxt-macro = { version = "0.44.1", path = "macro" } -subxt-metadata = { version = "0.44.1", path = "metadata", default-features = false } -subxt-codegen = { version = "0.44.1", path = "codegen" } -subxt-signer = { version = "0.44.1", path = "signer", default-features = false } -subxt-rpcs = { version = "0.44.1", path = "rpcs", default-features = false } -subxt-lightclient = { version = "0.44.1", path = "lightclient", default-features = false } -subxt-utils-fetchmetadata = { version = "0.44.1", path = "utils/fetch-metadata", default-features = false } -subxt-utils-stripmetadata = { version = "0.44.1", path = "utils/strip-metadata", default-features = false } +subxt = { version = "0.44.2", path = "subxt", default-features = false } +subxt-core = { version = "0.44.2", path = "core", default-features = false } +subxt-macro = { version = "0.44.2", path = "macro" } +subxt-metadata = { version = "0.44.2", path = "metadata", default-features = false } +subxt-codegen = { version = "0.44.2", path = "codegen" } +subxt-signer = { version = "0.44.2", path = "signer", default-features = false } +subxt-rpcs = { version = "0.44.2", path = "rpcs", default-features = false } +subxt-lightclient = { version = "0.44.2", path = "lightclient", default-features = false } +subxt-utils-fetchmetadata = { version = "0.44.2", path = "utils/fetch-metadata", default-features = false } +subxt-utils-stripmetadata = { version = "0.44.2", path = "utils/strip-metadata", default-features = false } test-runtime = { path = "testing/test-runtime" } substrate-runner = { path = "testing/substrate-runner" } diff --git a/examples/ffi-example/Cargo.lock b/examples/ffi-example/Cargo.lock index f907047af09..d4223f5d85d 100644 --- a/examples/ffi-example/Cargo.lock +++ b/examples/ffi-example/Cargo.lock @@ -2686,7 +2686,7 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "subxt" -version = "0.44.1" +version = "0.44.2" dependencies = [ "async-trait", "derive-where", @@ -2721,7 +2721,7 @@ dependencies = [ [[package]] name = "subxt-codegen" -version = "0.44.1" +version = "0.44.2" dependencies = [ "heck", "parity-scale-codec", @@ -2736,7 +2736,7 @@ dependencies = [ [[package]] name = "subxt-core" -version = "0.44.1" +version = "0.44.2" dependencies = [ "base58", "blake2", @@ -2774,7 +2774,7 @@ dependencies = [ [[package]] name = "subxt-lightclient" -version = "0.44.1" +version = "0.44.2" dependencies = [ "futures", "futures-util", @@ -2789,7 +2789,7 @@ dependencies = [ [[package]] name = "subxt-macro" -version = "0.44.1" +version = "0.44.2" dependencies = [ "darling", "parity-scale-codec", @@ -2804,7 +2804,7 @@ dependencies = [ [[package]] name = "subxt-metadata" -version = "0.44.1" +version = "0.44.2" dependencies = [ "frame-decode", "frame-metadata", @@ -2817,7 +2817,7 @@ dependencies = [ [[package]] name = "subxt-rpcs" -version = "0.44.1" +version = "0.44.2" dependencies = [ "derive-where", "frame-metadata", @@ -2839,7 +2839,7 @@ dependencies = [ [[package]] name = "subxt-signer" -version = "0.44.1" +version = "0.44.2" dependencies = [ "base64", "bip39", @@ -2865,7 +2865,7 @@ dependencies = [ [[package]] name = "subxt-utils-fetchmetadata" -version = "0.44.1" +version = "0.44.2" dependencies = [ "hex", "parity-scale-codec", diff --git a/examples/parachain-example/Cargo.lock b/examples/parachain-example/Cargo.lock index 9e2730cb770..8001e55566f 100644 --- a/examples/parachain-example/Cargo.lock +++ b/examples/parachain-example/Cargo.lock @@ -2757,7 +2757,7 @@ checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" [[package]] name = "subxt" -version = "0.44.1" +version = "0.44.2" dependencies = [ "async-trait", "derive-where", @@ -2792,7 +2792,7 @@ dependencies = [ [[package]] name = "subxt-codegen" -version = "0.44.1" +version = "0.44.2" dependencies = [ "heck", "parity-scale-codec", @@ -2807,7 +2807,7 @@ dependencies = [ [[package]] name = "subxt-core" -version = "0.44.1" +version = "0.44.2" dependencies = [ "base58", "blake2", @@ -2835,7 +2835,7 @@ dependencies = [ [[package]] name = "subxt-lightclient" -version = "0.44.1" +version = "0.44.2" dependencies = [ "futures", "futures-util", @@ -2850,7 +2850,7 @@ dependencies = [ [[package]] name = "subxt-macro" -version = "0.44.1" +version = "0.44.2" dependencies = [ "darling", "parity-scale-codec", @@ -2865,7 +2865,7 @@ dependencies = [ [[package]] name = "subxt-metadata" -version = "0.44.1" +version = "0.44.2" dependencies = [ "frame-decode", "frame-metadata", @@ -2878,7 +2878,7 @@ dependencies = [ [[package]] name = "subxt-rpcs" -version = "0.44.1" +version = "0.44.2" dependencies = [ "derive-where", "frame-metadata", @@ -2900,7 +2900,7 @@ dependencies = [ [[package]] name = "subxt-signer" -version = "0.44.1" +version = "0.44.2" dependencies = [ "base64 0.22.1", "bip39", @@ -2926,7 +2926,7 @@ dependencies = [ [[package]] name = "subxt-utils-fetchmetadata" -version = "0.44.1" +version = "0.44.2" dependencies = [ "hex", "parity-scale-codec", diff --git a/examples/wasm-example/Cargo.lock b/examples/wasm-example/Cargo.lock index 49498cbaccf..b1aa685e943 100644 --- a/examples/wasm-example/Cargo.lock +++ b/examples/wasm-example/Cargo.lock @@ -2452,7 +2452,7 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "subxt" -version = "0.44.1" +version = "0.44.2" dependencies = [ "async-trait", "derive-where", @@ -2486,7 +2486,7 @@ dependencies = [ [[package]] name = "subxt-codegen" -version = "0.44.1" +version = "0.44.2" dependencies = [ "getrandom", "heck", @@ -2502,7 +2502,7 @@ dependencies = [ [[package]] name = "subxt-core" -version = "0.44.1" +version = "0.44.2" dependencies = [ "base58", "blake2", @@ -2530,7 +2530,7 @@ dependencies = [ [[package]] name = "subxt-lightclient" -version = "0.44.1" +version = "0.44.2" dependencies = [ "futures", "futures-timer", @@ -2555,7 +2555,7 @@ dependencies = [ [[package]] name = "subxt-macro" -version = "0.44.1" +version = "0.44.2" dependencies = [ "darling", "parity-scale-codec", @@ -2570,7 +2570,7 @@ dependencies = [ [[package]] name = "subxt-metadata" -version = "0.44.1" +version = "0.44.2" dependencies = [ "frame-decode", "frame-metadata", @@ -2583,7 +2583,7 @@ dependencies = [ [[package]] name = "subxt-rpcs" -version = "0.44.1" +version = "0.44.2" dependencies = [ "derive-where", "finito", @@ -2608,7 +2608,7 @@ dependencies = [ [[package]] name = "subxt-utils-fetchmetadata" -version = "0.44.1" +version = "0.44.2" dependencies = [ "hex", "parity-scale-codec", diff --git a/macro/src/lib.rs b/macro/src/lib.rs index c3e00da1b97..01261f8793c 100644 --- a/macro/src/lib.rs +++ b/macro/src/lib.rs @@ -102,17 +102,7 @@ fn subxt_inner(args: TokenStream, item_mod: syn::ItemMod) -> Result. - scale_typegen::utils::ensure_unique_type_paths(metadata.types_mut()) - .expect("ensure_unique_type_paths should not fail; please report an issue."); - - metadata - }; + let metadata = fetch_metadata(&args)?; let mut codegen = CodegenBuilder::new(); @@ -145,7 +135,6 @@ fn subxt_inner(args: TokenStream, item_mod: syn::ItemMod) -> Result std::path::PathBuf { + if path_str.contains("$OUT_DIR") { + let out_dir = std::env::var("OUT_DIR").unwrap_or_else(|_| { + abort_call_site!("$OUT_DIR is used in path but OUT_DIR environment variable is not set") + }); + std::path::Path::new(&path_str.replace("$OUT_DIR", &out_dir)).into() + } else { + let root = std::env::var("CARGO_MANIFEST_DIR").unwrap_or_else(|_| ".".into()); + let root_path = std::path::Path::new(&root); + root_path.join(path_str) + } +} + /// Fetches metadata in a blocking manner, from a url or file path. fn fetch_metadata(args: &RuntimeMetadataArgs) -> Result { // Do we want to fetch unstable metadata? This only works if fetching from a URL. @@ -224,9 +229,7 @@ fn fetch_metadata(args: &RuntimeMetadataArgs) -> Result Result