-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Use frame umbrella crate in pallet-proxy and pallet-multisig
#5995
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
27df8ea
8eefc00
c151681
78b52f2
0305c59
d253bc5
a4b1fd2
e0293d1
253ce3f
ff36c53
2d8323f
687b61f
49a4cc3
4debb8e
556e8ea
a6dfbed
645f2f4
21cd6da
2c910cb
6e6f1ac
bd17cf2
532ee9b
d0120f2
1e7d1bb
4d8b583
cf32fbf
d460295
ca35eed
68c5eea
393d998
2f5eea9
b85d644
9e771ee
66d7396
88265e5
dc2973d
8cd8c73
5918bef
325d62e
801156c
48050fd
d9f132b
61db970
f5ba680
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -6,6 +6,7 @@ | |
| import argparse | ||
| import _help | ||
| import importlib.util | ||
| import re | ||
|
|
||
| _HelpAction = _help._HelpAction | ||
|
|
||
|
|
@@ -40,20 +41,20 @@ def setup_logging(): | |
| setup_logging() | ||
|
|
||
| """ | ||
| BENCH | ||
| BENCH | ||
| """ | ||
|
|
||
| bench_example = '''**Examples**: | ||
| Runs all benchmarks | ||
| Runs all benchmarks | ||
| %(prog)s | ||
|
|
||
| Runs benchmarks for pallet_balances and pallet_multisig for all runtimes which have these pallets. **--quiet** makes it to output nothing to PR but reactions | ||
| %(prog)s --pallet pallet_balances pallet_xcm_benchmarks::generic --quiet | ||
|
|
||
| Runs bench for all pallets for westend runtime and fails fast on first failed benchmark | ||
| %(prog)s --runtime westend --fail-fast | ||
| Does not output anything and cleans up the previous bot's & author command triggering comments in PR | ||
|
|
||
| Does not output anything and cleans up the previous bot's & author command triggering comments in PR | ||
| %(prog)s --runtime westend rococo --pallet pallet_balances pallet_multisig --quiet --clean | ||
| ''' | ||
|
|
||
|
|
@@ -67,14 +68,14 @@ def setup_logging(): | |
| parser_bench.add_argument('--fail-fast', help='Fail fast on first failed benchmark', action='store_true') | ||
|
|
||
| """ | ||
| FMT | ||
| FMT | ||
| """ | ||
| parser_fmt = subparsers.add_parser('fmt', help='Formats code (cargo +nightly-VERSION fmt) and configs (taplo format)') | ||
| for arg, config in common_args.items(): | ||
| parser_fmt.add_argument(arg, **config) | ||
|
|
||
| """ | ||
| Update UI | ||
| Update UI | ||
| """ | ||
| parser_ui = subparsers.add_parser('update-ui', help='Updates UI tests') | ||
| for arg, config in common_args.items(): | ||
|
|
@@ -175,7 +176,15 @@ def main(): | |
| print(f'-- package_dir: {package_dir}') | ||
| print(f'-- manifest_path: {manifest_path}') | ||
| output_path = os.path.join(package_dir, "src", "weights.rs") | ||
| # TODO: we can remove once all pallets in dev runtime are migrated to polkadot-sdk-frame | ||
| try: | ||
| uses_polkadot_sdk_frame = "true" in os.popen(f"cargo metadata --locked --format-version 1 --no-deps | jq -r '.packages[] | select(.name == \"{pallet.replace('_', '-')}\") | .dependencies | any(.name == \"polkadot-sdk-frame\")'").read() | ||
| # Empty output from the previous os.popen command | ||
| except StopIteration: | ||
| uses_polkadot_sdk_frame = False | ||
| template = config['template'] | ||
| if uses_polkadot_sdk_frame and re.match(r"frame-(:?umbrella-)?weight-template\.hbs", os.path.normpath(template).split(os.path.sep)[-1]): | ||
| template = "substrate/.maintain/frame-umbrella-weight-template.hbs" | ||
| else: | ||
| default_path = f"./{config['path']}/src/weights" | ||
| xcm_path = f"./{config['path']}/src/weights/xcm" | ||
|
|
@@ -251,4 +260,4 @@ def main(): | |
| print('🚀 Done') | ||
|
|
||
| if __name__ == '__main__': | ||
| main() | ||
| main() | ||
|
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @mordamax can you review this file please? |
||
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,21 @@ | ||
| # 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: Use frame umbrella crate in pallet-proxy and pallet-multisig | ||
|
|
||
| doc: | ||
| - audience: Runtime Dev | ||
| description: | | ||
| Extends the FRAME umbrella crate and uses it in pallet-proxy and pallet-multisig. | ||
| Migrates benchmarking from v1 to v2 for pallet-proxy and pallet-multisig. | ||
| Allows CI to pick the umbrella crate weights template to run benchmarks. | ||
|
|
||
| crates: | ||
| - name: pallet-multisig | ||
| bump: minor | ||
|
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This seems correct to me -- the interface of these two pallets is the same, but altering deps is a backwards compatible new feature, and should be minor, not patch. Can you double check this please @ggwpez?
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yea, in these simple cases the CI should also fail if its incorrectly attributed a patch. So just try patch. |
||
| - name: pallet-proxy | ||
| bump: minor | ||
| - name: polkadot-sdk-frame | ||
| bump: major | ||
| - name: pallet-migrations | ||
| bump: patch | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,120 @@ | ||
| {{header}} | ||
| //! Autogenerated weights for `{{pallet}}` | ||
| //! | ||
| //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION {{version}} | ||
| //! DATE: {{date}}, STEPS: `{{cmd.steps}}`, REPEAT: `{{cmd.repeat}}`, LOW RANGE: `{{cmd.lowest_range_values}}`, HIGH RANGE: `{{cmd.highest_range_values}}` | ||
| //! WORST CASE MAP SIZE: `{{cmd.worst_case_map_values}}` | ||
| //! HOSTNAME: `{{hostname}}`, CPU: `{{cpuname}}` | ||
| //! WASM-EXECUTION: `{{cmd.wasm_execution}}`, CHAIN: `{{cmd.chain}}`, DB CACHE: `{{cmd.db_cache}}` | ||
|
|
||
| // Executed Command: | ||
| {{#each args as |arg|}} | ||
| // {{arg}} | ||
| {{/each}} | ||
|
|
||
| #![cfg_attr(rustfmt, rustfmt_skip)] | ||
| #![allow(unused_parens)] | ||
| #![allow(unused_imports)] | ||
| #![allow(missing_docs)] | ||
|
|
||
| use frame::weights_prelude::*; | ||
|
|
||
| /// Weight functions needed for `{{pallet}}`. | ||
| pub trait WeightInfo { | ||
| {{#each benchmarks as |benchmark|}} | ||
| fn {{benchmark.name~}} | ||
| ( | ||
| {{~#each benchmark.components as |c| ~}} | ||
| {{c.name}}: u32, {{/each~}} | ||
| ) -> Weight; | ||
| {{/each}} | ||
| } | ||
|
|
||
| /// Weights for `{{pallet}}` using the Substrate node and recommended hardware. | ||
| pub struct SubstrateWeight<T>(PhantomData<T>); | ||
| {{#if (eq pallet "frame_system")}} | ||
| impl<T: crate::Config> WeightInfo for SubstrateWeight<T> { | ||
| {{else}} | ||
| impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { | ||
| {{/if}} | ||
| {{#each benchmarks as |benchmark|}} | ||
| {{#each benchmark.comments as |comment|}} | ||
| /// {{comment}} | ||
| {{/each}} | ||
| {{#each benchmark.component_ranges as |range|}} | ||
| /// The range of component `{{range.name}}` is `[{{range.min}}, {{range.max}}]`. | ||
| {{/each}} | ||
| fn {{benchmark.name~}} | ||
| ( | ||
| {{~#each benchmark.components as |c| ~}} | ||
| {{~#if (not c.is_used)}}_{{/if}}{{c.name}}: u32, {{/each~}} | ||
| ) -> Weight { | ||
| // Proof Size summary in bytes: | ||
| // Measured: `{{benchmark.base_recorded_proof_size}}{{#each benchmark.component_recorded_proof_size as |cp|}} + {{cp.name}} * ({{cp.slope}} ±{{underscore cp.error}}){{/each}}` | ||
| // Estimated: `{{benchmark.base_calculated_proof_size}}{{#each benchmark.component_calculated_proof_size as |cp|}} + {{cp.name}} * ({{cp.slope}} ±{{underscore cp.error}}){{/each}}` | ||
| // Minimum execution time: {{underscore benchmark.min_execution_time}}_000 picoseconds. | ||
| Weight::from_parts({{underscore benchmark.base_weight}}, {{benchmark.base_calculated_proof_size}}) | ||
| {{#each benchmark.component_weight as |cw|}} | ||
| // Standard Error: {{underscore cw.error}} | ||
| .saturating_add(Weight::from_parts({{underscore cw.slope}}, 0).saturating_mul({{cw.name}}.into())) | ||
| {{/each}} | ||
| {{#if (ne benchmark.base_reads "0")}} | ||
| .saturating_add(T::DbWeight::get().reads({{benchmark.base_reads}}_u64)) | ||
| {{/if}} | ||
| {{#each benchmark.component_reads as |cr|}} | ||
| .saturating_add(T::DbWeight::get().reads(({{cr.slope}}_u64).saturating_mul({{cr.name}}.into()))) | ||
| {{/each}} | ||
| {{#if (ne benchmark.base_writes "0")}} | ||
| .saturating_add(T::DbWeight::get().writes({{benchmark.base_writes}}_u64)) | ||
| {{/if}} | ||
| {{#each benchmark.component_writes as |cw|}} | ||
| .saturating_add(T::DbWeight::get().writes(({{cw.slope}}_u64).saturating_mul({{cw.name}}.into()))) | ||
| {{/each}} | ||
| {{#each benchmark.component_calculated_proof_size as |cp|}} | ||
| .saturating_add(Weight::from_parts(0, {{cp.slope}}).saturating_mul({{cp.name}}.into())) | ||
| {{/each}} | ||
| } | ||
| {{/each}} | ||
| } | ||
|
|
||
| // For backwards compatibility and tests. | ||
| impl WeightInfo for () { | ||
| {{#each benchmarks as |benchmark|}} | ||
| {{#each benchmark.comments as |comment|}} | ||
| /// {{comment}} | ||
| {{/each}} | ||
| {{#each benchmark.component_ranges as |range|}} | ||
| /// The range of component `{{range.name}}` is `[{{range.min}}, {{range.max}}]`. | ||
| {{/each}} | ||
| fn {{benchmark.name~}} | ||
| ( | ||
| {{~#each benchmark.components as |c| ~}} | ||
| {{~#if (not c.is_used)}}_{{/if}}{{c.name}}: u32, {{/each~}} | ||
| ) -> Weight { | ||
| // Proof Size summary in bytes: | ||
| // Measured: `{{benchmark.base_recorded_proof_size}}{{#each benchmark.component_recorded_proof_size as |cp|}} + {{cp.name}} * ({{cp.slope}} ±{{underscore cp.error}}){{/each}}` | ||
| // Estimated: `{{benchmark.base_calculated_proof_size}}{{#each benchmark.component_calculated_proof_size as |cp|}} + {{cp.name}} * ({{cp.slope}} ±{{underscore cp.error}}){{/each}}` | ||
| // Minimum execution time: {{underscore benchmark.min_execution_time}}_000 picoseconds. | ||
| Weight::from_parts({{underscore benchmark.base_weight}}, {{benchmark.base_calculated_proof_size}}) | ||
| {{#each benchmark.component_weight as |cw|}} | ||
| // Standard Error: {{underscore cw.error}} | ||
| .saturating_add(Weight::from_parts({{underscore cw.slope}}, 0).saturating_mul({{cw.name}}.into())) | ||
| {{/each}} | ||
| {{#if (ne benchmark.base_reads "0")}} | ||
| .saturating_add(RocksDbWeight::get().reads({{benchmark.base_reads}}_u64)) | ||
| {{/if}} | ||
| {{#each benchmark.component_reads as |cr|}} | ||
| .saturating_add(RocksDbWeight::get().reads(({{cr.slope}}_u64).saturating_mul({{cr.name}}.into()))) | ||
| {{/each}} | ||
| {{#if (ne benchmark.base_writes "0")}} | ||
| .saturating_add(RocksDbWeight::get().writes({{benchmark.base_writes}}_u64)) | ||
| {{/if}} | ||
| {{#each benchmark.component_writes as |cw|}} | ||
| .saturating_add(RocksDbWeight::get().writes(({{cw.slope}}_u64).saturating_mul({{cw.name}}.into()))) | ||
| {{/each}} | ||
| {{#each benchmark.component_calculated_proof_size as |cp|}} | ||
| .saturating_add(Weight::from_parts(0, {{cp.slope}}).saturating_mul({{cp.name}}.into())) | ||
| {{/each}} | ||
| } | ||
| {{/each}} | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -18,11 +18,7 @@ targets = ["x86_64-unknown-linux-gnu"] | |
| [dependencies] | ||
| codec = { workspace = true } | ||
| scale-info = { features = ["derive"], workspace = true } | ||
| frame-benchmarking = { optional = true, workspace = true } | ||
| frame-support = { workspace = true } | ||
| frame-system = { workspace = true } | ||
| sp-io = { workspace = true } | ||
| sp-runtime = { workspace = true } | ||
| frame = { workspace = true, features = ["experimental", "runtime"] } | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. do we actually need experimental? I don't see it used in the past AFAICT
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I will remove it as soon as I am a bit more confident in the readiness of the
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What we should try here is to see if removing the The idea in the |
||
|
|
||
| # third party | ||
| log = { workspace = true } | ||
|
|
@@ -34,25 +30,15 @@ pallet-balances = { workspace = true, default-features = true } | |
| default = ["std"] | ||
| std = [ | ||
| "codec/std", | ||
| "frame-benchmarking?/std", | ||
| "frame-support/std", | ||
| "frame-system/std", | ||
| "frame/std", | ||
| "log/std", | ||
| "pallet-balances/std", | ||
| "scale-info/std", | ||
| "sp-io/std", | ||
| "sp-runtime/std", | ||
| ] | ||
| runtime-benchmarks = [ | ||
| "frame-benchmarking/runtime-benchmarks", | ||
| "frame-support/runtime-benchmarks", | ||
| "frame-system/runtime-benchmarks", | ||
| "frame/runtime-benchmarks", | ||
| "pallet-balances/runtime-benchmarks", | ||
| "sp-runtime/runtime-benchmarks", | ||
| ] | ||
| try-runtime = [ | ||
| "frame-support/try-runtime", | ||
| "frame-system/try-runtime", | ||
| "frame/try-runtime", | ||
| "pallet-balances/try-runtime", | ||
| "sp-runtime/try-runtime", | ||
| ] | ||
Uh oh!
There was an error while loading. Please reload this page.