Skip to content

Commit 2577379

Browse files
frame: support for serde added (paritytech#14261)
* frame: support for serde added - enabled `serde` features in dependent crates, no gate feature introduced, linker should do the job and strip unused code. - frame::staking: added impl of `serde::Serialize, serde::Deserialize` for `enum Forcing` - primitives::runtime: impl_opaque_keys macro provides `Serialize/Deserialize` impl if `serde` is enabled - primitives::staking: added impl of `serde::Serialize`, `serde::Deserialize` for `enum StakerStatus` * frame::support: serde for pallets' GenesisConfig enabled in no-std * Cargo.lock updated * Update primitives/staking/Cargo.toml Co-authored-by: Bastian Köcher <git@kchr.de> * fix * Cargo.lock update + missed serde/std in beefy --------- Co-authored-by: Bastian Köcher <git@kchr.de>
1 parent 230876c commit 2577379

16 files changed

Lines changed: 70 additions & 71 deletions

File tree

‎frame/babe/Cargo.toml‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,20 @@ targets = ["x86_64-unknown-linux-gnu"]
1515
[dependencies]
1616
codec = { package = "parity-scale-codec", version = "3.2.2", default-features = false, features = ["derive"] }
1717
log = { version = "0.4.17", default-features = false }
18-
scale-info = { version = "2.5.0", default-features = false, features = ["derive"] }
18+
scale-info = { version = "2.5.0", default-features = false, features = ["derive", "serde"] }
1919
frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true, path = "../benchmarking" }
2020
frame-support = { version = "4.0.0-dev", default-features = false, path = "../support" }
2121
frame-system = { version = "4.0.0-dev", default-features = false, path = "../system" }
2222
pallet-authorship = { version = "4.0.0-dev", default-features = false, path = "../authorship" }
2323
pallet-session = { version = "4.0.0-dev", default-features = false, path = "../session" }
2424
pallet-timestamp = { version = "4.0.0-dev", default-features = false, path = "../timestamp" }
25-
sp-application-crypto = { version = "23.0.0", default-features = false, path = "../../primitives/application-crypto" }
26-
sp-consensus-babe = { version = "0.10.0-dev", default-features = false, path = "../../primitives/consensus/babe" }
27-
sp-core = { version = "21.0.0", default-features = false, path = "../../primitives/core" }
25+
sp-application-crypto = { version = "23.0.0", default-features = false, path = "../../primitives/application-crypto", features = ["serde"] }
26+
sp-consensus-babe = { version = "0.10.0-dev", default-features = false, path = "../../primitives/consensus/babe", features = ["serde"] }
27+
sp-core = { version = "21.0.0", default-features = false, path = "../../primitives/core", features = ["serde"] }
2828
sp-io = { version = "23.0.0", default-features = false, path = "../../primitives/io" }
29-
sp-runtime = { version = "24.0.0", default-features = false, path = "../../primitives/runtime" }
29+
sp-runtime = { version = "24.0.0", default-features = false, path = "../../primitives/runtime", features = ["serde"] }
3030
sp-session = { version = "4.0.0-dev", default-features = false, path = "../../primitives/session" }
31-
sp-staking = { version = "4.0.0-dev", default-features = false, path = "../../primitives/staking" }
31+
sp-staking = { version = "4.0.0-dev", default-features = false, path = "../../primitives/staking", features = ["serde"] }
3232
sp-std = { version = "8.0.0", default-features = false, path = "../../primitives/std" }
3333

3434
[dev-dependencies]

‎frame/beefy/Cargo.toml‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,16 @@ homepage = "https://substrate.io"
1010

1111
[dependencies]
1212
codec = { package = "parity-scale-codec", version = "3.2.2", default-features = false, features = ["derive"] }
13-
scale-info = { version = "2.5.0", default-features = false, features = ["derive"] }
13+
scale-info = { version = "2.5.0", default-features = false, features = ["derive", "serde"] }
1414
serde = { version = "1.0.163", optional = true }
1515
frame-support = { version = "4.0.0-dev", default-features = false, path = "../support" }
1616
frame-system = { version = "4.0.0-dev", default-features = false, path = "../system" }
1717
pallet-authorship = { version = "4.0.0-dev", default-features = false, path = "../authorship" }
1818
pallet-session = { version = "4.0.0-dev", default-features = false, path = "../session" }
19-
sp-consensus-beefy = { version = "4.0.0-dev", default-features = false, path = "../../primitives/consensus/beefy" }
20-
sp-runtime = { version = "24.0.0", default-features = false, path = "../../primitives/runtime" }
19+
sp-consensus-beefy = { version = "4.0.0-dev", default-features = false, path = "../../primitives/consensus/beefy", features = ["serde"] }
20+
sp-runtime = { version = "24.0.0", default-features = false, path = "../../primitives/runtime", features = ["serde"] }
2121
sp-session = { version = "4.0.0-dev", default-features = false, path = "../../primitives/session" }
22-
sp-staking = { version = "4.0.0-dev", default-features = false, path = "../../primitives/staking" }
22+
sp-staking = { version = "4.0.0-dev", default-features = false, path = "../../primitives/staking", features = ["serde"] }
2323
sp-std = { version = "8.0.0", default-features = false, path = "../../primitives/std" }
2424

2525
[dev-dependencies]
@@ -42,7 +42,7 @@ std = [
4242
"pallet-authorship/std",
4343
"pallet-session/std",
4444
"scale-info/std",
45-
"serde",
45+
"serde/std",
4646
"sp-consensus-beefy/std",
4747
"sp-runtime/std",
4848
"sp-session/std",

‎frame/grandpa/Cargo.toml‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,19 @@ targets = ["x86_64-unknown-linux-gnu"]
1515
[dependencies]
1616
codec = { package = "parity-scale-codec", version = "3.2.2", default-features = false, features = ["derive"] }
1717
log = { version = "0.4.17", default-features = false }
18-
scale-info = { version = "2.5.0", default-features = false, features = ["derive"] }
18+
scale-info = { version = "2.5.0", default-features = false, features = ["derive", "serde"] }
1919
frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true, path = "../benchmarking" }
2020
frame-support = { version = "4.0.0-dev", default-features = false, path = "../support" }
2121
frame-system = { version = "4.0.0-dev", default-features = false, path = "../system" }
2222
pallet-authorship = { version = "4.0.0-dev", default-features = false, path = "../authorship" }
2323
pallet-session = { version = "4.0.0-dev", default-features = false, path = "../session" }
24-
sp-application-crypto = { version = "23.0.0", default-features = false, path = "../../primitives/application-crypto" }
25-
sp-core = { version = "21.0.0", default-features = false, path = "../../primitives/core" }
26-
sp-consensus-grandpa = { version = "4.0.0-dev", default-features = false, path = "../../primitives/consensus/grandpa" }
24+
sp-application-crypto = { version = "23.0.0", default-features = false, path = "../../primitives/application-crypto", features = ["serde"] }
25+
sp-consensus-grandpa = { version = "4.0.0-dev", default-features = false, path = "../../primitives/consensus/grandpa", features = ["serde"] }
26+
sp-core = { version = "21.0.0", default-features = false, path = "../../primitives/core", features = ["serde"] }
2727
sp-io = { version = "23.0.0", default-features = false, path = "../../primitives/io" }
28-
sp-runtime = { version = "24.0.0", default-features = false, path = "../../primitives/runtime" }
28+
sp-runtime = { version = "24.0.0", default-features = false, path = "../../primitives/runtime", features = ["serde"] }
2929
sp-session = { version = "4.0.0-dev", default-features = false, path = "../../primitives/session" }
30-
sp-staking = { version = "4.0.0-dev", default-features = false, path = "../../primitives/staking" }
30+
sp-staking = { version = "4.0.0-dev", default-features = false, path = "../../primitives/staking", features = ["serde"] }
3131
sp-std = { version = "8.0.0", default-features = false, path = "../../primitives/std" }
3232

3333
[dev-dependencies]

‎frame/im-online/Cargo.toml‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,16 @@ targets = ["x86_64-unknown-linux-gnu"]
1515
[dependencies]
1616
codec = { package = "parity-scale-codec", version = "3.2.2", default-features = false, features = ["derive"] }
1717
log = { version = "0.4.17", default-features = false }
18-
scale-info = { version = "2.5.0", default-features = false, features = ["derive"] }
18+
scale-info = { version = "2.5.0", default-features = false, features = ["derive", "serde"] }
1919
frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true, path = "../benchmarking" }
2020
frame-support = { version = "4.0.0-dev", default-features = false, path = "../support" }
2121
frame-system = { version = "4.0.0-dev", default-features = false, path = "../system" }
2222
pallet-authorship = { version = "4.0.0-dev", default-features = false, path = "../authorship" }
23-
sp-application-crypto = { version = "23.0.0", default-features = false, path = "../../primitives/application-crypto" }
24-
sp-core = { version = "21.0.0", default-features = false, path = "../../primitives/core" }
23+
sp-application-crypto = { version = "23.0.0", default-features = false, path = "../../primitives/application-crypto", features = ["serde"] }
24+
sp-core = { version = "21.0.0", default-features = false, path = "../../primitives/core", features = ["serde"] }
2525
sp-io = { version = "23.0.0", default-features = false, path = "../../primitives/io" }
26-
sp-runtime = { version = "24.0.0", default-features = false, path = "../../primitives/runtime" }
27-
sp-staking = { version = "4.0.0-dev", default-features = false, path = "../../primitives/staking" }
26+
sp-runtime = { version = "24.0.0", default-features = false, path = "../../primitives/runtime", features = ["serde"] }
27+
sp-staking = { version = "4.0.0-dev", default-features = false, path = "../../primitives/staking", features = ["serde"] }
2828
sp-std = { version = "8.0.0", default-features = false, path = "../../primitives/std" }
2929

3030
[dev-dependencies]

‎frame/membership/Cargo.toml‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@ targets = ["x86_64-unknown-linux-gnu"]
1515
[dependencies]
1616
codec = { package = "parity-scale-codec", version = "3.2.2", default-features = false }
1717
log = { version = "0.4.17", default-features = false }
18-
scale-info = { version = "2.5.0", default-features = false, features = ["derive"] }
18+
scale-info = { version = "2.5.0", default-features = false, features = ["derive", "serde"] }
1919
frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true, path = "../benchmarking" }
2020
frame-support = { version = "4.0.0-dev", default-features = false, path = "../support" }
2121
frame-system = { version = "4.0.0-dev", default-features = false, path = "../system" }
22-
sp-core = { version = "21.0.0", default-features = false, path = "../../primitives/core" }
22+
sp-core = { version = "21.0.0", default-features = false, path = "../../primitives/core", features = ["serde"] }
2323
sp-io = { version = "23.0.0", default-features = false, path = "../../primitives/io" }
24-
sp-runtime = { version = "24.0.0", default-features = false, path = "../../primitives/runtime" }
24+
sp-runtime = { version = "24.0.0", default-features = false, path = "../../primitives/runtime", features = ["serde"] }
2525
sp-std = { version = "8.0.0", default-features = false, path = "../../primitives/std" }
2626

2727
[features]

‎frame/session/Cargo.toml‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,15 @@ targets = ["x86_64-unknown-linux-gnu"]
1616
codec = { package = "parity-scale-codec", version = "3.2.2", default-features = false, features = ["derive"] }
1717
impl-trait-for-tuples = "0.2.2"
1818
log = { version = "0.4.17", default-features = false }
19-
scale-info = { version = "2.5.0", default-features = false, features = ["derive"] }
19+
scale-info = { version = "2.5.0", default-features = false, features = ["derive", "serde"] }
2020
frame-support = { version = "4.0.0-dev", default-features = false, path = "../support" }
2121
frame-system = { version = "4.0.0-dev", default-features = false, path = "../system" }
2222
pallet-timestamp = { version = "4.0.0-dev", default-features = false, path = "../timestamp" }
23-
sp-core = { version = "21.0.0", default-features = false, path = "../../primitives/core" }
23+
sp-core = { version = "21.0.0", default-features = false, path = "../../primitives/core", features = ["serde"] }
2424
sp-io = { version = "23.0.0", default-features = false, path = "../../primitives/io" }
25-
sp-runtime = { version = "24.0.0", default-features = false, path = "../../primitives/runtime" }
25+
sp-runtime = { version = "24.0.0", default-features = false, path = "../../primitives/runtime", features = ["serde"] }
2626
sp-session = { version = "4.0.0-dev", default-features = false, path = "../../primitives/session" }
27-
sp-staking = { version = "4.0.0-dev", default-features = false, path = "../../primitives/staking" }
27+
sp-staking = { version = "4.0.0-dev", default-features = false, path = "../../primitives/staking", features = ["serde"] }
2828
sp-std = { version = "8.0.0", default-features = false, path = "../../primitives/std" }
2929
sp-trie = { version = "22.0.0", default-features = false, optional = true, path = "../../primitives/trie" }
3030

‎frame/staking/Cargo.toml‎

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,22 @@ readme = "README.md"
1313
targets = ["x86_64-unknown-linux-gnu"]
1414

1515
[dependencies]
16-
serde = { version = "1.0.163", optional = true }
16+
serde = { version = "1.0.163", default-features = false, features = ["alloc", "derive"]}
1717
codec = { package = "parity-scale-codec", version = "3.2.2", default-features = false, features = [
1818
"derive",
1919
] }
20-
scale-info = { version = "2.5.0", default-features = false, features = ["derive"] }
21-
sp-std = { version = "8.0.0", default-features = false, path = "../../primitives/std" }
20+
scale-info = { version = "2.5.0", default-features = false, features = ["derive", "serde"] }
2221
sp-io = { version = "23.0.0", default-features = false, path = "../../primitives/io" }
23-
sp-runtime = { version = "24.0.0", default-features = false, path = "../../primitives/runtime" }
24-
sp-staking = { version = "4.0.0-dev", default-features = false, path = "../../primitives/staking" }
22+
sp-runtime = { version = "24.0.0", default-features = false, path = "../../primitives/runtime", features = ["serde"] }
23+
sp-staking = { version = "4.0.0-dev", default-features = false, path = "../../primitives/staking", features = ["serde"] }
24+
sp-std = { version = "8.0.0", default-features = false, path = "../../primitives/std" }
2525
frame-support = { version = "4.0.0-dev", default-features = false, path = "../support" }
2626
frame-system = { version = "4.0.0-dev", default-features = false, path = "../system" }
2727
pallet-session = { version = "4.0.0-dev", default-features = false, features = [
2828
"historical",
2929
], path = "../session" }
3030
pallet-authorship = { version = "4.0.0-dev", default-features = false, path = "../authorship" }
31-
sp-application-crypto = { version = "23.0.0", default-features = false, path = "../../primitives/application-crypto" }
31+
sp-application-crypto = { version = "23.0.0", default-features = false, path = "../../primitives/application-crypto", features = ["serde"] }
3232
frame-election-provider-support = { version = "4.0.0-dev", default-features = false, path = "../election-provider-support" }
3333
log = { version = "0.4.17", default-features = false }
3434

@@ -53,7 +53,7 @@ rand_chacha = { version = "0.2" }
5353
default = ["std"]
5454
std = [
5555
"frame-benchmarking?/std",
56-
"serde",
56+
"serde/std",
5757
"codec/std",
5858
"scale-info/std",
5959
"sp-std/std",

‎frame/staking/src/lib.rs‎

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -849,8 +849,19 @@ impl<Balance: AtLeast32BitUnsigned + Clone, T: Get<&'static PiecewiseLinear<'sta
849849
}
850850

851851
/// Mode of era-forcing.
852-
#[derive(Copy, Clone, PartialEq, Eq, Encode, Decode, RuntimeDebug, TypeInfo, MaxEncodedLen)]
853-
#[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))]
852+
#[derive(
853+
Copy,
854+
Clone,
855+
PartialEq,
856+
Eq,
857+
Encode,
858+
Decode,
859+
RuntimeDebug,
860+
TypeInfo,
861+
MaxEncodedLen,
862+
serde::Serialize,
863+
serde::Deserialize,
864+
)]
854865
pub enum Forcing {
855866
/// Not forcing anything - just let whatever happen.
856867
NotForcing,

‎frame/support/Cargo.toml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ readme = "README.md"
1313
targets = ["x86_64-unknown-linux-gnu"]
1414

1515
[dependencies]
16-
serde = { version = "1.0.163", optional = true, features = ["derive"] }
16+
serde = { version = "1.0.163", default-features = false, features = ["alloc", "derive"] }
1717
codec = { package = "parity-scale-codec", version = "3.2.2", default-features = false, features = ["derive", "max-encoded-len"] }
1818
scale-info = { version = "2.5.0", default-features = false, features = ["derive"] }
1919
frame-metadata = { version = "15.1.0", default-features = false, features = ["v14", "v15-unstable"] }
@@ -54,7 +54,7 @@ std = [
5454
"sp-core/std",
5555
"k256/std",
5656
"once_cell",
57-
"serde",
57+
"serde/std",
5858
"sp-api/std",
5959
"sp-io/std",
6060
"codec/std",

‎frame/support/procedural/src/pallet/expand/genesis_config.rs‎

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -95,23 +95,13 @@ pub fn expand_genesis_config(def: &mut Def) -> proc_macro2::TokenStream {
9595
));
9696
}
9797
attrs.push(syn::parse_quote!(
98-
#[cfg_attr(feature = "std", derive(#frame_support::Serialize, #frame_support::Deserialize))]
98+
#[derive(#frame_support::Serialize, #frame_support::Deserialize)]
9999
));
100-
attrs.push(
101-
syn::parse_quote!( #[cfg_attr(feature = "std", serde(rename_all = "camelCase"))] ),
102-
);
103-
attrs.push(
104-
syn::parse_quote!( #[cfg_attr(feature = "std", serde(deny_unknown_fields))] ),
105-
);
106-
attrs.push(
107-
syn::parse_quote!( #[cfg_attr(feature = "std", serde(bound(serialize = "")))] ),
108-
);
109-
attrs.push(
110-
syn::parse_quote!( #[cfg_attr(feature = "std", serde(bound(deserialize = "")))] ),
111-
);
112-
attrs.push(
113-
syn::parse_quote!( #[cfg_attr(feature = "std", serde(crate = #serde_crate))] ),
114-
);
100+
attrs.push(syn::parse_quote!( #[serde(rename_all = "camelCase")] ));
101+
attrs.push(syn::parse_quote!( #[serde(deny_unknown_fields)] ));
102+
attrs.push(syn::parse_quote!( #[serde(bound(serialize = ""))] ));
103+
attrs.push(syn::parse_quote!( #[serde(bound(deserialize = ""))] ));
104+
attrs.push(syn::parse_quote!( #[serde(crate = #serde_crate)] ));
115105
},
116106
_ => unreachable!("Checked by genesis_config parser"),
117107
}

0 commit comments

Comments
 (0)