diff --git a/Cargo.lock b/Cargo.lock
index 9393f8d606de..3797823a4a70 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -5445,35 +5445,6 @@ version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa"
-[[package]]
-name = "frame"
-version = "0.0.1-dev"
-dependencies = [
- "docify",
- "frame-executive",
- "frame-support",
- "frame-system",
- "frame-system-rpc-runtime-api",
- "log",
- "pallet-examples",
- "parity-scale-codec",
- "scale-info",
- "sp-api",
- "sp-arithmetic",
- "sp-block-builder",
- "sp-consensus-aura",
- "sp-consensus-grandpa",
- "sp-core",
- "sp-inherents",
- "sp-io",
- "sp-offchain",
- "sp-runtime",
- "sp-session",
- "sp-std 14.0.0",
- "sp-transaction-pool",
- "sp-version",
-]
-
[[package]]
name = "frame-benchmarking"
version = "28.0.0"
@@ -5811,8 +5782,8 @@ dependencies = [
name = "frame-support-test-stg-frame-crate"
version = "0.1.0"
dependencies = [
- "frame",
"parity-scale-codec",
+ "polkadot-sdk-frame",
"scale-info",
]
@@ -8123,11 +8094,11 @@ name = "minimal-template-node"
version = "0.0.0"
dependencies = [
"clap 4.5.3",
- "frame",
"futures",
"futures-timer",
"jsonrpsee",
"minimal-template-runtime",
+ "polkadot-sdk-frame",
"sc-basic-authorship",
"sc-cli",
"sc-client-api",
@@ -8157,7 +8128,6 @@ dependencies = [
name = "minimal-template-runtime"
version = "0.0.0"
dependencies = [
- "frame",
"pallet-balances",
"pallet-minimal-template",
"pallet-sudo",
@@ -8165,6 +8135,7 @@ dependencies = [
"pallet-transaction-payment",
"pallet-transaction-payment-rpc-runtime-api",
"parity-scale-codec",
+ "polkadot-sdk-frame",
"scale-info",
"sp-genesis-builder",
"substrate-wasm-builder",
@@ -9835,8 +9806,8 @@ dependencies = [
name = "pallet-example-frame-crate"
version = "0.0.1"
dependencies = [
- "frame",
"parity-scale-codec",
+ "polkadot-sdk-frame",
"scale-info",
]
@@ -10169,8 +10140,8 @@ dependencies = [
name = "pallet-minimal-template"
version = "0.0.0"
dependencies = [
- "frame",
"parity-scale-codec",
+ "polkadot-sdk-frame",
"scale-info",
]
@@ -13366,7 +13337,6 @@ dependencies = [
"cumulus-pallet-aura-ext",
"cumulus-pallet-parachain-system",
"docify",
- "frame",
"frame-executive",
"frame-support",
"frame-system",
@@ -13394,6 +13364,7 @@ dependencies = [
"pallet-uniques",
"pallet-utility",
"parity-scale-codec",
+ "polkadot-sdk-frame",
"sc-cli",
"sc-client-db",
"sc-consensus-aura",
@@ -13423,6 +13394,35 @@ dependencies = [
"substrate-wasm-builder",
]
+[[package]]
+name = "polkadot-sdk-frame"
+version = "0.1.0"
+dependencies = [
+ "docify",
+ "frame-executive",
+ "frame-support",
+ "frame-system",
+ "frame-system-rpc-runtime-api",
+ "log",
+ "pallet-examples",
+ "parity-scale-codec",
+ "scale-info",
+ "sp-api",
+ "sp-arithmetic",
+ "sp-block-builder",
+ "sp-consensus-aura",
+ "sp-consensus-grandpa",
+ "sp-core",
+ "sp-inherents",
+ "sp-io",
+ "sp-offchain",
+ "sp-runtime",
+ "sp-session",
+ "sp-std 14.0.0",
+ "sp-transaction-pool",
+ "sp-version",
+]
+
[[package]]
name = "polkadot-service"
version = "7.0.0"
diff --git a/docs/sdk/Cargo.toml b/docs/sdk/Cargo.toml
index 64b23866f0cd..426c5d9de4a0 100644
--- a/docs/sdk/Cargo.toml
+++ b/docs/sdk/Cargo.toml
@@ -17,7 +17,7 @@ workspace = true
# Needed for all FRAME-based code
parity-scale-codec = { version = "3.0.0", default-features = false }
scale-info = { version = "2.6.0", default-features = false }
-frame = { path = "../../substrate/frame", features = [
+frame = { package = "polkadot-sdk-frame", path = "../../substrate/frame", features = [
"experimental",
"runtime",
] }
diff --git a/prdoc/pr_3813.prdoc b/prdoc/pr_3813.prdoc
new file mode 100644
index 000000000000..66dfd70e1b17
--- /dev/null
+++ b/prdoc/pr_3813.prdoc
@@ -0,0 +1,14 @@
+# Schema: Polkadot SDK PRDoc Schema (prdoc) v1.0.0
+# See doc at https://raw.githubusercontent.com/paritytech/polkadot-sdk/master/prdoc/schema_user.json
+
+title: Renames `frame` crate to `polkadot-sdk-frame`
+
+doc:
+ - audience: Runtime Dev
+ description: |
+ This PR renames `frame` crate to `polkadot-sdk-frame` as `frame` is not available on crates.io.
+ Please note that this crate can only be imported as `polkadot-sdk-frame` or `frame`.
+
+crates:
+ - name: polkadot-sdk-frame
+ bump: major
diff --git a/substrate/client/chain-spec/src/lib.rs b/substrate/client/chain-spec/src/lib.rs
index e8b87a604042..6da5fd26d526 100644
--- a/substrate/client/chain-spec/src/lib.rs
+++ b/substrate/client/chain-spec/src/lib.rs
@@ -140,7 +140,7 @@
//!
A JSON object that provides an explicit and comprehensive representation of the
//! RuntimeGenesisConfig struct, which is generated by frame::runtime::prelude::construct_runtime macro (polkadot_sdk_frame::runtime::prelude::construct_runtime macro (example of generated struct). Must contain all the keys of
//! the genesis config, no defaults will be used.
diff --git a/substrate/frame/Cargo.toml b/substrate/frame/Cargo.toml
index 27001ee5afd9..919d6d17ce8b 100644
--- a/substrate/frame/Cargo.toml
+++ b/substrate/frame/Cargo.toml
@@ -1,6 +1,6 @@
[package]
-name = "frame"
-version = "0.0.1-dev"
+name = "polkadot-sdk-frame"
+version = "0.1.0"
authors = ["Parity Technologies "]
edition = "2021"
license = "Apache-2.0"
diff --git a/substrate/frame/examples/frame-crate/Cargo.toml b/substrate/frame/examples/frame-crate/Cargo.toml
index 76bfd65282a9..3a0e4f720f95 100644
--- a/substrate/frame/examples/frame-crate/Cargo.toml
+++ b/substrate/frame/examples/frame-crate/Cargo.toml
@@ -19,7 +19,7 @@ targets = ["x86_64-unknown-linux-gnu"]
codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
scale-info = { version = "2.11.1", default-features = false, features = ["derive"] }
-frame = { path = "../..", default-features = false, features = ["experimental", "runtime"] }
+frame = { package = "polkadot-sdk-frame", path = "../..", default-features = false, features = ["experimental", "runtime"] }
[features]
diff --git a/substrate/frame/src/lib.rs b/substrate/frame/src/lib.rs
index 52db7c34bfdc..d395b4c1902b 100644
--- a/substrate/frame/src/lib.rs
+++ b/substrate/frame/src/lib.rs
@@ -45,16 +45,20 @@
//!
//! In short, this crate only re-exports types and traits from multiple sources. All of these
//! sources are listed (and re-exported again) in [`deps`].
+//!
+//! ## Usage
+//!
+//! Please note that this crate can only be imported as `polkadot-sdk-frame` or `frame`.
#![cfg_attr(not(feature = "std"), no_std)]
#![cfg(feature = "experimental")]
/// Exports the main pallet macro. This can wrap a `mod pallet` and will transform it into
-/// being a pallet, eg `#[frame::pallet] mod pallet { .. }`.
+/// being a pallet, eg `#[polkadot_sdk_frame::pallet] mod pallet { .. }`.
///
/// Note that this is not part of the prelude, in order to make it such that the common way to
-/// define a macro is `#[frame::pallet] mod pallet { .. }`, followed by `#[pallet::foo]`,
-/// `#[pallet::bar]` inside the mod.
+/// define a macro is `#[polkadot_sdk_frame::pallet] mod pallet { .. }`, followed by
+/// `#[pallet::foo]`, `#[pallet::bar]` inside the mod.
pub use frame_support::pallet;
pub use frame_support::pallet_macros::{import_section, pallet_section};
@@ -75,7 +79,7 @@ pub mod pallet_macros {
/// This prelude should almost always be the first line of code in any pallet or runtime.
///
/// ```
-/// use frame::prelude::*;
+/// use polkadot_sdk_frame::prelude::*;
///
/// // rest of your pallet..
/// mod pallet {}
@@ -84,7 +88,7 @@ pub mod prelude {
/// `frame_system`'s parent crate, which is mandatory in all pallets build with this crate.
///
/// Conveniently, the keyword `frame_system` is in scope as one uses `use
- /// frame::prelude::*`
+ /// polkadot_sdk_frame::prelude::*`
#[doc(inline)]
pub use frame_system;
@@ -112,7 +116,7 @@ pub mod prelude {
/// A test setup typically starts with:
///
/// ```
-/// use frame::testing_prelude::*;
+/// use polkadot_sdk_frame::testing_prelude::*;
/// // rest of your test setup.
/// ```
#[cfg(feature = "std")]
@@ -141,7 +145,7 @@ pub mod runtime {
/// A runtime typically starts with:
///
/// ```
- /// use frame::{prelude::*, runtime::prelude::*};
+ /// use polkadot_sdk_frame::{prelude::*, runtime::prelude::*};
/// ```
pub mod prelude {
/// All of the types related to the FRAME runtime executive.
@@ -186,7 +190,7 @@ pub mod runtime {
/// A non-testing runtime should have this enabled, as such:
///
/// ```
- /// use frame::runtime::{prelude::*, apis::{*,}};
+ /// use polkadot_sdk_frame::runtime::{prelude::*, apis::{*,}};
/// ```
// TODO: This is because of wildcard imports, and it should be not needed once we can avoid
// that. Imports like that are needed because we seem to need some unknown types in the macro
@@ -330,8 +334,8 @@ pub mod derive {
/// In most cases, hopefully the answer is yes.
pub mod deps {
// TODO: It would be great to somehow instruct RA to prefer *not* suggesting auto-imports from
- // these. For example, we prefer `frame::derive::CloneNoBound` rather than
- // `frame::deps::frame_support::CloneNoBound`.
+ // these. For example, we prefer `polkadot_sdk_frame::derive::CloneNoBound` rather than
+ // `polkadot_sdk_frame::deps::frame_support::CloneNoBound`.
pub use frame_support;
pub use frame_system;
diff --git a/substrate/frame/support/procedural/src/lib.rs b/substrate/frame/support/procedural/src/lib.rs
index bc62c0509b05..f22be024d3fe 100644
--- a/substrate/frame/support/procedural/src/lib.rs
+++ b/substrate/frame/support/procedural/src/lib.rs
@@ -665,9 +665,9 @@ pub fn storage_alias(attributes: TokenStream, input: TokenStream) -> TokenStream
"{}::macro_magic",
match generate_access_from_frame_or_crate("frame-support") {
Ok(path) => Ok(path),
- Err(_) => generate_access_from_frame_or_crate("frame"),
+ Err(_) => generate_access_from_frame_or_crate("polkadot-sdk-frame"),
}
- .expect("Failed to find either `frame-support` or `frame` in `Cargo.toml` dependencies.")
+ .expect("Failed to find either `frame-support` or `polkadot-sdk-frame` in `Cargo.toml` dependencies.")
.to_token_stream()
.to_string()
)
@@ -1181,9 +1181,9 @@ pub fn pallet_section(attr: TokenStream, tokens: TokenStream) -> TokenStream {
"{}::macro_magic",
match generate_access_from_frame_or_crate("frame-support") {
Ok(path) => Ok(path),
- Err(_) => generate_access_from_frame_or_crate("frame"),
+ Err(_) => generate_access_from_frame_or_crate("polkadot-sdk-frame"),
}
- .expect("Failed to find either `frame-support` or `frame` in `Cargo.toml` dependencies.")
+ .expect("Failed to find either `frame-support` or `polkadot-sdk-frame` in `Cargo.toml` dependencies.")
.to_token_stream()
.to_string()
)
diff --git a/substrate/frame/support/procedural/src/pallet/parse/config.rs b/substrate/frame/support/procedural/src/pallet/parse/config.rs
index fbab92db196c..406072df4b9d 100644
--- a/substrate/frame/support/procedural/src/pallet/parse/config.rs
+++ b/substrate/frame/support/procedural/src/pallet/parse/config.rs
@@ -275,7 +275,8 @@ fn check_event_type(
}
/// Check that the path to `frame_system::Config` is valid, this is that the path is just
-/// `frame_system::Config` or when using the `frame` crate it is `frame::xyz::frame_system::Config`.
+/// `frame_system::Config` or when using the `frame` crate it is
+/// `polkadot_sdk_frame::xyz::frame_system::Config`.
fn has_expected_system_config(path: syn::Path, frame_system: &syn::Path) -> bool {
// Check if `frame_system` is actually 'frame_system'.
if path.segments.iter().all(|s| s.ident != "frame_system") {
@@ -293,7 +294,7 @@ fn has_expected_system_config(path: syn::Path, frame_system: &syn::Path) -> bool
// `frame` re-exports it as such.
syn::parse2::(quote::quote!(frame_system)).expect("is a valid path; qed"),
(_, _) =>
- // They are either both `frame_system` or both `frame::xyz::frame_system`.
+ // They are either both `frame_system` or both `polkadot_sdk_frame::xyz::frame_system`.
frame_system.clone(),
};
@@ -516,14 +517,28 @@ mod tests {
#[test]
fn has_expected_system_config_works_with_frame() {
+ let path = syn::parse2::(quote::quote!(frame_system::Config)).unwrap();
+
+ let frame_system =
+ syn::parse2::(quote::quote!(polkadot_sdk_frame::deps::frame_system))
+ .unwrap();
+ assert!(has_expected_system_config(path.clone(), &frame_system));
+
let frame_system =
syn::parse2::(quote::quote!(frame::deps::frame_system)).unwrap();
- let path = syn::parse2::(quote::quote!(frame_system::Config)).unwrap();
assert!(has_expected_system_config(path, &frame_system));
}
#[test]
fn has_expected_system_config_works_with_frame_full_path() {
+ let frame_system =
+ syn::parse2::(quote::quote!(polkadot_sdk_frame::deps::frame_system))
+ .unwrap();
+ let path =
+ syn::parse2::(quote::quote!(polkadot_sdk_frame::deps::frame_system::Config))
+ .unwrap();
+ assert!(has_expected_system_config(path, &frame_system));
+
let frame_system =
syn::parse2::(quote::quote!(frame::deps::frame_system)).unwrap();
let path =
@@ -533,6 +548,13 @@ mod tests {
#[test]
fn has_expected_system_config_works_with_other_frame_full_path() {
+ let frame_system =
+ syn::parse2::(quote::quote!(polkadot_sdk_frame::xyz::frame_system)).unwrap();
+ let path =
+ syn::parse2::(quote::quote!(polkadot_sdk_frame::xyz::frame_system::Config))
+ .unwrap();
+ assert!(has_expected_system_config(path, &frame_system));
+
let frame_system =
syn::parse2::(quote::quote!(frame::xyz::frame_system)).unwrap();
let path =
@@ -543,18 +565,21 @@ mod tests {
#[test]
fn has_expected_system_config_does_not_works_with_mixed_frame_full_path() {
let frame_system =
- syn::parse2::(quote::quote!(frame::xyz::frame_system)).unwrap();
+ syn::parse2::(quote::quote!(polkadot_sdk_frame::xyz::frame_system)).unwrap();
let path =
- syn::parse2::(quote::quote!(frame::deps::frame_system::Config)).unwrap();
+ syn::parse2::(quote::quote!(polkadot_sdk_frame::deps::frame_system::Config))
+ .unwrap();
assert!(!has_expected_system_config(path, &frame_system));
}
#[test]
fn has_expected_system_config_does_not_works_with_other_mixed_frame_full_path() {
let frame_system =
- syn::parse2::(quote::quote!(frame::deps::frame_system)).unwrap();
+ syn::parse2::(quote::quote!(polkadot_sdk_frame::deps::frame_system))
+ .unwrap();
let path =
- syn::parse2::(quote::quote!(frame::xyz::frame_system::Config)).unwrap();
+ syn::parse2::(quote::quote!(polkadot_sdk_frame::xyz::frame_system::Config))
+ .unwrap();
assert!(!has_expected_system_config(path, &frame_system));
}
@@ -562,7 +587,8 @@ mod tests {
fn has_expected_system_config_does_not_work_with_frame_full_path_if_not_frame_crate() {
let frame_system = syn::parse2::(quote::quote!(frame_system)).unwrap();
let path =
- syn::parse2::(quote::quote!(frame::deps::frame_system::Config)).unwrap();
+ syn::parse2::(quote::quote!(polkadot_sdk_frame::deps::frame_system::Config))
+ .unwrap();
assert!(!has_expected_system_config(path, &frame_system));
}
diff --git a/substrate/frame/support/procedural/tools/src/lib.rs b/substrate/frame/support/procedural/tools/src/lib.rs
index be4396133628..8952cd6011ff 100644
--- a/substrate/frame/support/procedural/tools/src/lib.rs
+++ b/substrate/frame/support/procedural/tools/src/lib.rs
@@ -54,15 +54,19 @@ pub fn generate_crate_access(unique_id: &str, def_crate: &str) -> TokenStream {
///
/// This will usually check the output of [`generate_access_from_frame_or_crate`].
/// We want to know if whatever the `path` takes us to, is exported from `frame` or not. In that
-/// case `path` would start with `frame`, something like `frame::x::y:z`.
+/// case `path` would start with `frame`, something like `polkadot_sdk_frame::x::y:z` or
+/// frame::x::y:z.
pub fn is_using_frame_crate(path: &syn::Path) -> bool {
- path.segments.first().map(|s| s.ident == "frame").unwrap_or(false)
+ path.segments
+ .first()
+ .map(|s| s.ident == "polkadot_sdk_frame" || s.ident == "frame")
+ .unwrap_or(false)
}
/// Generate the crate access for the crate using 2018 syntax.
///
-/// If `frame` is in scope, it will use `frame::deps::`. Else, it will try and find
-/// `` directly.
+/// If `frame` is in scope, it will use `polkadot_sdk_frame::deps::`. Else, it will try
+/// and find `` directly.
pub fn generate_access_from_frame_or_crate(def_crate: &str) -> Result {
if let Some(path) = get_frame_crate_path(def_crate) {
Ok(path)
@@ -114,7 +118,9 @@ pub fn generate_hidden_includes(unique_id: &str, def_crate: &str) -> TokenStream
/// Generates the path to the frame crate deps.
fn get_frame_crate_path(def_crate: &str) -> Option {
// This does not work if the frame crate is renamed.
- if let Ok(FoundCrate::Name(name)) = crate_name(&"frame") {
+ if let Ok(FoundCrate::Name(name)) =
+ crate_name(&"polkadot-sdk-frame").or_else(|_| crate_name(&"frame"))
+ {
let path = format!("{}::deps::{}", name, def_crate.to_string().replace("-", "_"));
Some(syn::parse_str::(&path).expect("is a valid path; qed"))
} else {
diff --git a/substrate/frame/support/test/stg_frame_crate/Cargo.toml b/substrate/frame/support/test/stg_frame_crate/Cargo.toml
index 295b2a1a5247..554c81ab43de 100644
--- a/substrate/frame/support/test/stg_frame_crate/Cargo.toml
+++ b/substrate/frame/support/test/stg_frame_crate/Cargo.toml
@@ -16,7 +16,7 @@ targets = ["x86_64-unknown-linux-gnu"]
[dependencies]
codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive"] }
-frame = { path = "../../..", default-features = false, features = ["experimental", "runtime"] }
+frame = { package = "polkadot-sdk-frame", path = "../../..", default-features = false, features = ["experimental", "runtime"] }
scale-info = { version = "2.11.1", default-features = false, features = ["derive"] }
[features]
diff --git a/substrate/frame/support/test/tests/pallet_ui/event_type_invalid_bound_no_frame_crate.rs b/substrate/frame/support/test/tests/pallet_ui/event_type_invalid_bound_no_frame_crate.rs
index 573ceb6dfab7..b510beb54dda 100644
--- a/substrate/frame/support/test/tests/pallet_ui/event_type_invalid_bound_no_frame_crate.rs
+++ b/substrate/frame/support/test/tests/pallet_ui/event_type_invalid_bound_no_frame_crate.rs
@@ -17,13 +17,13 @@
#[frame_support::pallet]
mod pallet {
- use frame::deps::frame_system::pallet_prelude::BlockNumberFor;
+ use polkadot_sdk_frame::deps::frame_system::pallet_prelude::BlockNumberFor;
use frame_support::pallet_prelude::{Hooks, IsType};
#[pallet::config]
- pub trait Config: frame::deps::frame_system::Config {
+ pub trait Config: polkadot_sdk_frame::deps::frame_system::Config {
type Bar: Clone + std::fmt::Debug + Eq;
- type RuntimeEvent: IsType<::RuntimeEvent>
+ type RuntimeEvent: IsType<::RuntimeEvent>
+ From>;
}
diff --git a/substrate/frame/support/test/tests/pallet_ui/event_type_invalid_bound_no_frame_crate.stderr b/substrate/frame/support/test/tests/pallet_ui/event_type_invalid_bound_no_frame_crate.stderr
index 0f805c972e4d..384e44d97a61 100644
--- a/substrate/frame/support/test/tests/pallet_ui/event_type_invalid_bound_no_frame_crate.stderr
+++ b/substrate/frame/support/test/tests/pallet_ui/event_type_invalid_bound_no_frame_crate.stderr
@@ -1,5 +1,5 @@
error: Invalid `type RuntimeEvent`, associated type `RuntimeEvent` is reserved and must bound: `IsType<::RuntimeEvent>`
--> tests/pallet_ui/event_type_invalid_bound_no_frame_crate.rs:26:3
|
-26 | type RuntimeEvent: IsType<::RuntimeEvent>
+26 | type RuntimeEvent: IsType<::RuntimeEvent>
| ^^^^
diff --git a/substrate/primitives/api/proc-macro/src/utils.rs b/substrate/primitives/api/proc-macro/src/utils.rs
index c8c1f12d90a1..a6570a98f1f7 100644
--- a/substrate/primitives/api/proc-macro/src/utils.rs
+++ b/substrate/primitives/api/proc-macro/src/utils.rs
@@ -34,7 +34,9 @@ pub fn generate_crate_access() -> TokenStream {
quote!(#renamed_name::__private)
},
Err(e) =>
- if let Ok(FoundCrate::Name(name)) = crate_name(&"frame") {
+ if let Ok(FoundCrate::Name(name)) =
+ crate_name(&"polkadot-sdk-frame").or_else(|_| crate_name(&"frame"))
+ {
let path = format!("{}::deps::sp_api::__private", name);
let path = syn::parse_str::(&path).expect("is a valid path; qed");
quote!( #path )
diff --git a/substrate/utils/frame/benchmarking-cli/src/pallet/command.rs b/substrate/utils/frame/benchmarking-cli/src/pallet/command.rs
index 80a5d27d8c26..5fbfc0530bb3 100644
--- a/substrate/utils/frame/benchmarking-cli/src/pallet/command.rs
+++ b/substrate/utils/frame/benchmarking-cli/src/pallet/command.rs
@@ -48,7 +48,7 @@ use std::{
};
/// Logging target
-const LOG_TARGET: &'static str = "frame::benchmark::pallet";
+const LOG_TARGET: &'static str = "polkadot_sdk_frame::benchmark::pallet";
/// The inclusive range of a component.
#[derive(Serialize, Debug, Clone, Eq, PartialEq)]
diff --git a/substrate/utils/frame/rpc/support/src/lib.rs b/substrate/utils/frame/rpc/support/src/lib.rs
index a839bbc34021..dea822167ff3 100644
--- a/substrate/utils/frame/rpc/support/src/lib.rs
+++ b/substrate/utils/frame/rpc/support/src/lib.rs
@@ -161,7 +161,7 @@ impl StorageQuery {
/// Send this query over RPC, await the typed result.
///
- /// Hash should be `::Hash`.
+ /// Hash should be `::Hash`.
///
/// # Arguments
///
diff --git a/templates/minimal/node/Cargo.toml b/templates/minimal/node/Cargo.toml
index 0668304e5028..606fd0580356 100644
--- a/templates/minimal/node/Cargo.toml
+++ b/templates/minimal/node/Cargo.toml
@@ -49,7 +49,7 @@ substrate-frame-rpc-system = { path = "../../../substrate/utils/frame/rpc/system
# Once the native runtime is gone, there should be little to no dependency on FRAME here, and
# certainly no dependency on the runtime.
-frame = { path = "../../../substrate/frame", features = [
+frame = { package = "polkadot-sdk-frame", path = "../../../substrate/frame", features = [
"experimental",
"runtime",
] }
diff --git a/templates/minimal/pallets/template/Cargo.toml b/templates/minimal/pallets/template/Cargo.toml
index a85391f29421..909ba0344548 100644
--- a/templates/minimal/pallets/template/Cargo.toml
+++ b/templates/minimal/pallets/template/Cargo.toml
@@ -22,7 +22,7 @@ codec = { package = "parity-scale-codec", version = "3.0.0", features = [
scale-info = { version = "2.11.1", default-features = false, features = [
"derive",
] }
-frame = { path = "../../../../substrate/frame", default-features = false, features = [
+frame = { package = "polkadot-sdk-frame", path = "../../../../substrate/frame", default-features = false, features = [
"experimental",
"runtime",
] }
diff --git a/templates/minimal/runtime/Cargo.toml b/templates/minimal/runtime/Cargo.toml
index a99a1e43f85f..e7f88ca47af7 100644
--- a/templates/minimal/runtime/Cargo.toml
+++ b/templates/minimal/runtime/Cargo.toml
@@ -17,7 +17,7 @@ parity-scale-codec = { version = "3.0.0", default-features = false }
scale-info = { version = "2.6.0", default-features = false }
# this is a frame-based runtime, thus importing `frame` with runtime feature enabled.
-frame = { path = "../../../substrate/frame", default-features = false, features = [
+frame = { package = "polkadot-sdk-frame", path = "../../../substrate/frame", default-features = false, features = [
"experimental",
"runtime",
] }
|