diff --git a/.github/actions/cargo-check-runtimes/action.yml b/.github/actions/cargo-check-runtimes/action.yml
new file mode 100644
index 000000000000..869f17661e4a
--- /dev/null
+++ b/.github/actions/cargo-check-runtimes/action.yml
@@ -0,0 +1,22 @@
+name: 'cargo check runtimes'
+description: 'Runs `cargo check` for every directory in provided root.'
+inputs:
+ root:
+ description: "Root directory. Expected to contain several cargo packages inside."
+ required: true
+runs:
+ using: "composite"
+ steps:
+ - name: Check
+ shell: bash
+ run: |
+ mkdir -p ~/.forklift
+ cp .forklift/config.toml ~/.forklift/config.toml
+ cd ${{ inputs.root }}
+ for directory in $(echo */); do
+ echo "_____Running cargo check for ${directory} ______";
+ cd ${directory};
+ pwd;
+ SKIP_WASM_BUILD=1 forklift cargo check --locked;
+ cd ..;
+ done
diff --git a/.github/commands-readme.md b/.github/commands-readme.md
index 793524e056f8..ce4e0fd0d789 100644
--- a/.github/commands-readme.md
+++ b/.github/commands-readme.md
@@ -10,6 +10,7 @@ The current available command actions are:
- [Command FMT](https://github.com/paritytech/polkadot-sdk/actions/workflows/command-fmt.yml)
- [Command Update UI](https://github.com/paritytech/polkadot-sdk/actions/workflows/command-update-ui.yml)
+- [Command Prdoc](https://github.com/paritytech/polkadot-sdk/actions/workflows/command-prdoc.yml)
- [Command Sync](https://github.com/paritytech/polkadot-sdk/actions/workflows/command-sync.yml)
- [Command Bench](https://github.com/paritytech/polkadot-sdk/actions/workflows/command-bench.yml)
- [Command Bench All](https://github.com/paritytech/polkadot-sdk/actions/workflows/command-bench-all.yml)
@@ -235,6 +236,16 @@ You can use the following [`gh cli`](https://cli.github.com/) inside the repo:
gh workflow run command-bench-overheard.yml -f pr=1000 -f benchmark=substrate -f runtime=rococo -f target_dir=substrate
```
+### PrDoc
+
+Generate a PrDoc with the crates populated by all modified crates.
+
+Options:
+- `pr`: The PR number to generate the PrDoc for.
+- `audience`: The audience of whom the changes may concern.
+- `bump`: A default bump level for all crates. The PrDoc will likely need to be edited to reflect the actual changes after generation.
+- `overwrite`: Whether to overwrite any existing PrDoc.
+
### Sync
Run sync and commit back results to PR.
diff --git a/.github/scripts/common/lib.sh b/.github/scripts/common/lib.sh
index 33ef2d3e7eda..bfb3120ad9bb 100755
--- a/.github/scripts/common/lib.sh
+++ b/.github/scripts/common/lib.sh
@@ -315,6 +315,7 @@ function import_gpg_keys() {
) &
done
wait
+ gpg -k $SEC
}
# Check the GPG signature for a given binary
@@ -457,3 +458,15 @@ function get_polkadot_node_version_from_code() {
# Remove the semicolon
sed 's/;//g'
}
+
+validate_stable_tag() {
+ tag="$1"
+ pattern='^stable[0-9]+(-[0-9]+)?$'
+
+ if [[ $tag =~ $pattern ]]; then
+ echo $tag
+ else
+ echo "The input '$tag' does not match the pattern."
+ exit 1
+ fi
+}
diff --git a/.github/scripts/generate-prdoc.py b/.github/scripts/generate-prdoc.py
new file mode 100644
index 000000000000..b7b2e6f970fa
--- /dev/null
+++ b/.github/scripts/generate-prdoc.py
@@ -0,0 +1,112 @@
+#!/usr/bin/env python3
+
+"""
+Generate the PrDoc for a Pull Request with a specific number, audience and bump level.
+
+It downloads and parses the patch from the GitHub API to opulate the prdoc with all modified crates.
+This will delete any prdoc that already exists for the PR if `--force` is passed.
+
+Usage:
+ python generate-prdoc.py --pr 1234 --audience "TODO" --bump "TODO"
+"""
+
+import argparse
+import os
+import re
+import sys
+import subprocess
+import toml
+import yaml
+import requests
+
+from github import Github
+import whatthepatch
+from cargo_workspace import Workspace
+
+# Download the patch and pass the info into `create_prdoc`.
+def from_pr_number(n, audience, bump, force):
+ print(f"Fetching PR '{n}' from GitHub")
+ g = Github()
+
+ repo = g.get_repo("paritytech/polkadot-sdk")
+ pr = repo.get_pull(n)
+
+ patch_url = pr.patch_url
+ patch = requests.get(patch_url).text
+
+ create_prdoc(n, audience, pr.title, pr.body, patch, bump, force)
+
+def create_prdoc(pr, audience, title, description, patch, bump, force):
+ path = f"prdoc/pr_{pr}.prdoc"
+
+ if os.path.exists(path):
+ if force == True:
+ print(f"Overwriting existing PrDoc for PR {pr}")
+ else:
+ print(f"PrDoc already exists for PR {pr}. Use --force to overwrite.")
+ sys.exit(1)
+ else:
+ print(f"No preexisting PrDoc for PR {pr}")
+
+ prdoc = { "doc": [{}], "crates": [] }
+
+ prdoc["title"] = title
+ prdoc["doc"][0]["audience"] = audience
+ prdoc["doc"][0]["description"] = description
+
+ workspace = Workspace.from_path(".")
+
+ modified_paths = []
+ for diff in whatthepatch.parse_patch(patch):
+ modified_paths.append(diff.header.new_path)
+
+ modified_crates = {}
+ for p in modified_paths:
+ # Go up until we find a Cargo.toml
+ p = os.path.join(workspace.path, p)
+ while not os.path.exists(os.path.join(p, "Cargo.toml")):
+ p = os.path.dirname(p)
+
+ with open(os.path.join(p, "Cargo.toml")) as f:
+ manifest = toml.load(f)
+
+ if not "package" in manifest:
+ print(f"File was not in any crate: {p}")
+ continue
+
+ crate_name = manifest["package"]["name"]
+ if workspace.crate_by_name(crate_name).publish:
+ modified_crates[crate_name] = True
+ else:
+ print(f"Skipping unpublished crate: {crate_name}")
+
+ print(f"Modified crates: {modified_crates.keys()}")
+
+ for crate_name in modified_crates.keys():
+ entry = { "name": crate_name }
+
+ if bump == 'silent' or bump == 'ignore' or bump == 'no change':
+ entry["validate"] = False
+ else:
+ entry["bump"] = bump
+
+ print(f"Adding crate {entry}")
+ prdoc["crates"].append(entry)
+
+ # write the parsed PR documentation back to the file
+ with open(path, "w") as f:
+ yaml.dump(prdoc, f)
+
+def parse_args():
+ parser = argparse.ArgumentParser()
+ parser.add_argument("--pr", type=int, required=True)
+ parser.add_argument("--audience", type=str, default="TODO")
+ parser.add_argument("--bump", type=str, default="TODO")
+ parser.add_argument("--force", type=str)
+ return parser.parse_args()
+
+if __name__ == "__main__":
+ args = parse_args()
+ force = True if args.force.lower() == "true" else False
+ print(f"Args: {args}, force: {force}")
+ from_pr_number(args.pr, args.audience, args.bump, force)
diff --git a/.github/workflows/check-cargo-check-runtimes.yml b/.github/workflows/check-cargo-check-runtimes.yml
new file mode 100644
index 000000000000..ebcf6c5fc9bd
--- /dev/null
+++ b/.github/workflows/check-cargo-check-runtimes.yml
@@ -0,0 +1,136 @@
+name: Check Cargo Check Runtimes
+
+on:
+ pull_request:
+ types: [ opened, synchronize, reopened, ready_for_review, labeled ]
+
+
+# Jobs in this workflow depend on each other, only for limiting peak amount of spawned workers
+
+jobs:
+ # GitHub Actions allows using 'env' in a container context.
+ # However, env variables don't work for forks: https://github.com/orgs/community/discussions/44322
+ # This workaround sets the container image for each job using 'set-image' job output.
+ set-image:
+ if: contains(github.event.label.name, 'GHA-migration') || contains(github.event.pull_request.labels.*.name, 'GHA-migration')
+ runs-on: ubuntu-latest
+ timeout-minutes: 20
+ outputs:
+ IMAGE: ${{ steps.set_image.outputs.IMAGE }}
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - id: set_image
+ run: cat .github/env >> $GITHUB_OUTPUT
+ check-runtime-assets:
+ runs-on: arc-runners-polkadot-sdk-beefy
+ needs: [set-image]
+ timeout-minutes: 20
+ container:
+ image: ${{ needs.set-image.outputs.IMAGE }}
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - name: Run cargo check
+ uses: ./.github/actions/cargo-check-runtimes
+ with:
+ root: cumulus/parachains/runtimes/assets
+
+ check-runtime-collectives:
+ runs-on: arc-runners-polkadot-sdk-beefy
+ needs: [check-runtime-assets, set-image]
+ timeout-minutes: 20
+ container:
+ image: ${{ needs.set-image.outputs.IMAGE }}
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - name: Run cargo check
+ uses: ./.github/actions/cargo-check-runtimes
+ with:
+ root: cumulus/parachains/runtimes/collectives
+
+ check-runtime-coretime:
+ runs-on: arc-runners-polkadot-sdk-beefy
+ container:
+ image: ${{ needs.set-image.outputs.IMAGE }}
+ needs: [check-runtime-assets, set-image]
+ timeout-minutes: 20
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - name: Run cargo check
+ uses: ./.github/actions/cargo-check-runtimes
+ with:
+ root: cumulus/parachains/runtimes/coretime
+
+ check-runtime-bridge-hubs:
+ runs-on: arc-runners-polkadot-sdk-beefy
+ container:
+ image: ${{ needs.set-image.outputs.IMAGE }}
+ needs: [set-image]
+ timeout-minutes: 20
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - name: Run cargo check
+ uses: ./.github/actions/cargo-check-runtimes
+ with:
+ root: cumulus/parachains/runtimes/bridge-hubs
+
+ check-runtime-contracts:
+ runs-on: arc-runners-polkadot-sdk-beefy
+ container:
+ image: ${{ needs.set-image.outputs.IMAGE }}
+ needs: [check-runtime-collectives, set-image]
+ timeout-minutes: 20
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - name: Run cargo check
+ uses: ./.github/actions/cargo-check-runtimes
+ with:
+ root: cumulus/parachains/runtimes/contracts
+
+ check-runtime-starters:
+ runs-on: arc-runners-polkadot-sdk-beefy
+ container:
+ image: ${{ needs.set-image.outputs.IMAGE }}
+ needs: [check-runtime-assets, set-image]
+ timeout-minutes: 20
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - name: Run cargo check
+ uses: ./.github/actions/cargo-check-runtimes
+ with:
+ root: cumulus/parachains/runtimes/starters
+
+ check-runtime-testing:
+ runs-on: arc-runners-polkadot-sdk-beefy
+ container:
+ image: ${{ needs.set-image.outputs.IMAGE }}
+ needs: [check-runtime-starters, set-image]
+ timeout-minutes: 20
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - name: Run cargo check
+ uses: ./.github/actions/cargo-check-runtimes
+ with:
+ root: cumulus/parachains/runtimes/testing
+
+ confirm-required-jobs-passed:
+ runs-on: ubuntu-latest
+ name: All check-runtime-* tests passed
+ # If any new job gets added, be sure to add it to this array
+ needs:
+ - check-runtime-assets
+ - check-runtime-collectives
+ - check-runtime-coretime
+ - check-runtime-bridge-hubs
+ - check-runtime-contracts
+ - check-runtime-starters
+ - check-runtime-testing
+ steps:
+ - run: echo '### Good job! All the tests passed 🚀' >> $GITHUB_STEP_SUMMARY
diff --git a/.github/workflows/check-changed-files.yml b/.github/workflows/check-changed-files.yml
deleted file mode 100644
index 657c05cd047d..000000000000
--- a/.github/workflows/check-changed-files.yml
+++ /dev/null
@@ -1,57 +0,0 @@
-# Reusable workflow to perform checks and generate conditions for other workflows.
-# Currently it checks if any Rust (build-related) file is changed
-# and if the current (caller) workflow file is changed.
-# Example:
-#
-# jobs:
-# changes:
-# permissions:
-# pull-requests: read
-# uses: ./.github/workflows/check-changed-files.yml
-# some-job:
-# needs: changes
-# if: ${{ needs.changes.outputs.rust }}
-# .......
-
-name: Check changes files
-
-on:
- workflow_call:
- # Map the workflow outputs to job outputs
- outputs:
- rust:
- value: ${{ jobs.changes.outputs.rust }}
- description: 'true if any of the build-related OR current (caller) workflow files have changed'
- current-workflow:
- value: ${{ jobs.changes.outputs.current-workflow }}
- description: 'true if current (caller) workflow file has changed'
-
-jobs:
- changes:
- runs-on: ubuntu-latest
- permissions:
- pull-requests: read
- outputs:
- # true if current workflow (caller) file is changed
- rust: ${{ steps.filter.outputs.rust == 'true' || steps.filter.outputs.current-workflow == 'true' }}
- current-workflow: ${{ steps.filter.outputs.current-workflow }}
- steps:
- - id: current-file
- run: echo "current-workflow-file=$(echo ${{ github.workflow_ref }} | sed -nE "s/.*(\.github\/workflows\/[a-zA-Z0-9_-]*\.y[a]?ml)@refs.*/\1/p")" >> $GITHUB_OUTPUT
- - run: echo "${{ steps.current-file.outputs.current-workflow-file }}"
- # For pull requests it's not necessary to checkout the code
- - id: filter
- uses: dorny/paths-filter@v3
- with:
- predicate-quantifier: 'every'
- # current-workflow - check if the current (caller) workflow file is changed
- # rust - check if any Rust (build-related) file is changed
- filters: |
- current-workflow:
- - '${{ steps.current-file.outputs.current-workflow-file }}'
- rust:
- - '**/*'
- - '!.github/**/*'
- - '!prdoc/**/*'
- - '!docs/**/*'
- #
\ No newline at end of file
diff --git a/.github/workflows/check-frame-omni-bencher.yml b/.github/workflows/check-frame-omni-bencher.yml
new file mode 100644
index 000000000000..e9db2d912979
--- /dev/null
+++ b/.github/workflows/check-frame-omni-bencher.yml
@@ -0,0 +1,85 @@
+name: Short benchmarks (frame-omni-bencher)
+
+on:
+ push:
+ branches:
+ - master
+ pull_request:
+ types: [ opened, synchronize, reopened, ready_for_review, labeled ]
+ merge_group:
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
+ cancel-in-progress: true
+
+env:
+ ARTIFACTS_NAME: frame-omni-bencher-artifacts
+
+jobs:
+ changes:
+ # TODO: remove once migration is complete or this workflow is fully stable
+ if: contains(github.event.label.name, 'GHA-migration')
+ permissions:
+ pull-requests: read
+ uses: ./.github/workflows/reusable-check-changed-files.yml
+
+ set-image:
+ # GitHub Actions allows using 'env' in a container context.
+ # However, env variables don't work for forks: https://github.com/orgs/community/discussions/44322
+ # This workaround sets the container image for each job using 'set-image' job output.
+ runs-on: ubuntu-latest
+ needs: changes
+ if: ${{ needs.changes.outputs.rust }}
+ outputs:
+ IMAGE: ${{ steps.set_image.outputs.IMAGE }}
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - id: set_image
+ run: cat .github/env >> $GITHUB_OUTPUT
+
+ run-frame-omni-bencher:
+ runs-on: arc-runners-polkadot-sdk-beefy
+ needs: [ set-image, changes ] # , build-frame-omni-bencher ]
+ if: ${{ needs.changes.outputs.rust }}
+ timeout-minutes: 30
+ strategy:
+ fail-fast: false # keep running other workflows even if one fails, to see the logs of all possible failures
+ matrix:
+ runtime:
+ [
+ westend-runtime,
+ rococo-runtime,
+ asset-hub-rococo-runtime,
+ asset-hub-westend-runtime,
+ bridge-hub-rococo-runtime,
+ bridge-hub-westend-runtime,
+ collectives-westend-runtime,
+ coretime-rococo-runtime,
+ coretime-westend-runtime,
+ people-rococo-runtime,
+ people-westend-runtime,
+ glutton-westend-runtime,
+ ]
+ container:
+ image: ${{ needs.set-image.outputs.IMAGE }}
+ env:
+ PACKAGE_NAME: ${{ matrix.runtime }}
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: script
+ run: |
+ RUNTIME_BLOB_NAME=$(echo $PACKAGE_NAME | sed 's/-/_/g').compact.compressed.wasm
+ RUNTIME_BLOB_PATH=./target/release/wbuild/$PACKAGE_NAME/$RUNTIME_BLOB_NAME
+ forklift cargo build --release --locked -p $PACKAGE_NAME -p frame-omni-bencher --features runtime-benchmarks
+ echo "Running short benchmarking for PACKAGE_NAME=$PACKAGE_NAME and RUNTIME_BLOB_PATH=$RUNTIME_BLOB_PATH"
+ ls -lrt $RUNTIME_BLOB_PATH
+ ./target/release/frame-omni-bencher v1 benchmark pallet --runtime $RUNTIME_BLOB_PATH --all --steps 2 --repeat 1
+ confirm-frame-omni-benchers-passed:
+ runs-on: ubuntu-latest
+ name: All benchmarks passed
+ needs: run-frame-omni-bencher
+ steps:
+ - run: echo '### Good job! All the benchmarks passed 🚀' >> $GITHUB_STEP_SUMMARY
diff --git a/.github/workflows/check-runtime-migration.yml b/.github/workflows/check-runtime-migration.yml
index 2b963b2230fb..9b7a6fafcd15 100644
--- a/.github/workflows/check-runtime-migration.yml
+++ b/.github/workflows/check-runtime-migration.yml
@@ -6,6 +6,9 @@ on:
- master
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
+ # Take a snapshot at 5am when most SDK devs are not working.
+ schedule:
+ - cron: '0 5 * * *'
merge_group:
workflow_dispatch:
diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml
new file mode 100644
index 000000000000..054c7d786ca9
--- /dev/null
+++ b/.github/workflows/checks.yml
@@ -0,0 +1,90 @@
+name: checks
+
+on:
+ push:
+ branches:
+ - master
+ pull_request:
+ types: [opened, synchronize, reopened, ready_for_review, labeled]
+ merge_group:
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
+ cancel-in-progress: true
+
+permissions: {}
+
+jobs:
+ changes:
+ # TODO: remove once migration is complete or this workflow is fully stable
+ if: contains(github.event.label.name, 'GHA-migration')
+ permissions:
+ pull-requests: read
+ uses: ./.github/workflows/reusable-check-changed-files.yml
+ set-image:
+ # GitHub Actions allows using 'env' in a container context.
+ # However, env variables don't work for forks: https://github.com/orgs/community/discussions/44322
+ # This workaround sets the container image for each job using 'set-image' job output.
+ runs-on: ubuntu-latest
+ timeout-minutes: 20
+ outputs:
+ IMAGE: ${{ steps.set_image.outputs.IMAGE }}
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - id: set_image
+ run: cat .github/env >> $GITHUB_OUTPUT
+ cargo-clippy:
+ runs-on: arc-runners-polkadot-sdk-beefy
+ needs: [set-image, changes] # , build-frame-omni-bencher ]
+ if: ${{ needs.changes.outputs.rust }}
+ timeout-minutes: 40
+ container:
+ image: ${{ needs.set-image.outputs.IMAGE }}
+ env:
+ RUSTFLAGS: "-D warnings"
+ SKIP_WASM_BUILD: 1
+ steps:
+ - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ - name: script
+ run: |
+ forklift cargo clippy --all-targets --locked --workspace
+ forklift cargo clippy --all-targets --all-features --locked --workspace
+ check-try-runtime:
+ runs-on: arc-runners-polkadot-sdk-beefy
+ needs: [set-image, changes] # , build-frame-omni-bencher ]
+ if: ${{ needs.changes.outputs.rust }}
+ timeout-minutes: 40
+ container:
+ image: ${{ needs.set-image.outputs.IMAGE }}
+ steps:
+ - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ - name: script
+ run: |
+ forklift cargo check --locked --all --features try-runtime
+ # this is taken from cumulus
+ # Check that parachain-template will compile with `try-runtime` feature flag.
+ forklift cargo check --locked -p parachain-template-node --features try-runtime
+ # add after https://github.com/paritytech/substrate/pull/14502 is merged
+ # experimental code may rely on try-runtime and vice-versa
+ forklift cargo check --locked --all --features try-runtime,experimental
+ # check-core-crypto-features works fast without forklift
+ check-core-crypto-features:
+ runs-on: arc-runners-polkadot-sdk-beefy
+ needs: [set-image, changes] # , build-frame-omni-bencher ]
+ if: ${{ needs.changes.outputs.rust }}
+ timeout-minutes: 30
+ container:
+ image: ${{ needs.set-image.outputs.IMAGE }}
+ steps:
+ - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ - name: script
+ run: |
+ cd substrate/primitives/core
+ ./check-features-variants.sh
+ cd -
+ cd substrate/primitives/application-crypto
+ ./check-features-variants.sh
+ cd -
+ cd substrate/primitives/keyring
+ ./check-features-variants.sh
+ cd -
diff --git a/.github/workflows/command-inform.yml b/.github/workflows/command-inform.yml
index 2825f4a60460..afdcf4c1b7b9 100644
--- a/.github/workflows/command-inform.yml
+++ b/.github/workflows/command-inform.yml
@@ -7,7 +7,8 @@ on:
jobs:
comment:
runs-on: ubuntu-latest
- if: github.event.issue.pull_request && startsWith(github.event.comment.body, 'bot ')
+ # Temporary disable the bot until the new command bot works properly
+ if: github.event.issue.pull_request && startsWith(github.event.comment.body, 'bot ') && false
steps:
- name: Inform that the new command exist
uses: actions/github-script@v7
diff --git a/.github/workflows/command-prdoc.yml b/.github/workflows/command-prdoc.yml
new file mode 100644
index 000000000000..3a08b9a5fb28
--- /dev/null
+++ b/.github/workflows/command-prdoc.yml
@@ -0,0 +1,90 @@
+name: Command PrDoc
+
+on:
+ workflow_dispatch:
+ inputs:
+ pr:
+ type: number
+ description: Number of the Pull Request
+ required: true
+ bump:
+ type: choice
+ description: Default bump level for all crates
+ default: "TODO"
+ required: true
+ options:
+ - "TODO"
+ - "no change"
+ - "patch"
+ - "minor"
+ - "major"
+ audience:
+ type: choice
+ description: Audience of the PrDoc
+ default: "TODO"
+ required: true
+ options:
+ - "TODO"
+ - "Runtime Dev"
+ - "Runtime User"
+ - "Node Dev"
+ - "Node User"
+ overwrite:
+ type: choice
+ description: Overwrite existing PrDoc
+ default: "true"
+ required: true
+ options:
+ - "true"
+ - "false"
+
+concurrency:
+ group: command-prdoc
+ cancel-in-progress: true
+
+jobs:
+ set-image:
+ runs-on: ubuntu-latest
+ outputs:
+ IMAGE: ${{ steps.set_image.outputs.IMAGE }}
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - id: set_image
+ run: cat .github/env >> $GITHUB_OUTPUT
+ cmd-prdoc:
+ needs: [set-image]
+ runs-on: ubuntu-latest
+ timeout-minutes: 20
+ container:
+ image: ${{ needs.set-image.outputs.IMAGE }}
+ permissions:
+ contents: write
+ pull-requests: write
+ steps:
+ - name: Download repo
+ uses: actions/checkout@v4
+ - name: Install gh cli
+ id: gh
+ uses: ./.github/actions/set-up-gh
+ with:
+ pr-number: ${{ inputs.pr }}
+ GH_TOKEN: ${{ github.token }}
+ - name: Generate PrDoc
+ run: |
+ python3 -m pip install -q cargo-workspace PyGithub whatthepatch pyyaml toml
+
+ python3 .github/scripts/generate-prdoc.py --pr "${{ inputs.pr }}" --bump "${{ inputs.bump }}" --audience "${{ inputs.audience }}" --force "${{ inputs.overwrite }}"
+
+ - name: Report failure
+ if: ${{ failure() }}
+ run: gh pr comment ${{ inputs.pr }} --body "
Command failed ❌
Run by @${{ github.actor }} for ${{ github.workflow }}
failed. See logs here."
+ env:
+ RUN: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
+ GH_TOKEN: ${{ github.token }}
+ - name: Push Commit
+ uses: stefanzweifel/git-auto-commit-action@v5
+ with:
+ commit_message: Add PrDoc (auto generated)
+ branch: ${{ steps.gh.outputs.branch }}
+ file_pattern: 'prdoc/*.prdoc'
diff --git a/.github/workflows/misc-sync-templates.yml b/.github/workflows/misc-sync-templates.yml
index d22dc8724f37..c06beb5e98eb 100644
--- a/.github/workflows/misc-sync-templates.yml
+++ b/.github/workflows/misc-sync-templates.yml
@@ -166,9 +166,13 @@ jobs:
title: "[Don't merge] Update the ${{ matrix.template }} template to ${{ github.event.inputs.stable_release_branch }}"
body: "The template has NOT been successfully built and needs to be inspected."
branch: "update-template/${{ github.event.inputs.stable_release_branch }}"
- - name: Push changes
- run: |
- git add -A .
- git commit --allow-empty -m "Update to ${{ github.event.inputs.stable_release_branch }} triggered by ${{ github.event_name }}"
- git push
- working-directory: "${{ env.template-path }}"
+ - name: Create PR on success
+ uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c # v5
+ with:
+ path: "${{ env.template-path }}"
+ token: ${{ steps.app_token.outputs.token }}
+ add-paths: |
+ ./*
+ title: "Update the ${{ matrix.template }} template to ${{ github.event.inputs.stable_release_branch }}"
+ body: "This synchronizes the template to the ${{ github.event.inputs.stable_release_branch }} branch."
+ branch: "update-template/${{ github.event.inputs.stable_release_branch }}"
diff --git a/.github/workflows/misc-update-wishlist-leaderboard.yml b/.github/workflows/misc-update-wishlist-leaderboard.yml
index 68625e5433ca..326168717674 100644
--- a/.github/workflows/misc-update-wishlist-leaderboard.yml
+++ b/.github/workflows/misc-update-wishlist-leaderboard.yml
@@ -11,6 +11,7 @@ permissions:
jobs:
update-wishlist-leaderboard:
+ if: github.repository == 'paritytech/polkadot-sdk'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
diff --git a/.github/workflows/release-50_publish-docker.yml b/.github/workflows/release-50_publish-docker.yml
index cda10f2ebf15..f09ecf1c7998 100644
--- a/.github/workflows/release-50_publish-docker.yml
+++ b/.github/workflows/release-50_publish-docker.yml
@@ -45,7 +45,7 @@ on:
type: string
default: docker.io
- # The owner is often the same than the Docker Hub username but does ont have to be.
+ # The owner is often the same as the Docker Hub username but does ont have to be.
# In our case, it is not.
owner:
description: Owner of the container image repo
@@ -58,6 +58,10 @@ on:
default: v0.9.18
required: true
+ stable_tag:
+ description: Tag matching the actual stable release version in the format stableYYMM or stableYYMM-X for patch releases
+ required: true
+
permissions:
contents: write
@@ -74,6 +78,29 @@ env:
VERSION: ${{ inputs.version }}
jobs:
+ validate-inputs:
+ runs-on: ubuntu-latest
+ outputs:
+ stable_tag: ${{ steps.validate_inputs.outputs.stable_tag }}
+
+ steps:
+ - name: Checkout sources
+ uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+
+ - name: Validate inputs
+ id: validate_inputs
+ run: |
+ . ./.github/scripts/common/lib.sh
+
+ VERSION=$(filter_version_from_input "${{ inputs.version }}")
+ echo "VERSION=${VERSION}" >> $GITHUB_ENV
+
+ RELEASE_ID=$(check_release_id "${{ inputs.release_id }}")
+ echo "RELEASE_ID=${RELEASE_ID}" >> $GITHUB_ENV
+
+ STABLE_TAG=$(validate_stable_tag ${{ inputs.stable_tag }})
+ echo "stable_tag=${STABLE_TAG}" >> $GITHUB_OUTPUT
+
fetch-artifacts: # this job will be triggered for the polkadot-parachain rc and release or polkadot rc image build
if: ${{ inputs.binary == 'polkadot-parachain' || inputs.binary == 'chain-spec-builder' || inputs.image_type == 'rc' }}
runs-on: ubuntu-latest
@@ -102,9 +129,6 @@ jobs:
run: |
. ./.github/scripts/common/lib.sh
- VERSION=$(filter_version_from_input "${{ inputs.version }}")
- echo "VERSION=${VERSION}" >> $GITHUB_ENV
-
fetch_release_artifacts_from_s3
- name: Fetch chain-spec-builder rc artifacts or release artifacts based on release id
@@ -112,7 +136,7 @@ jobs:
if: ${{ env.EVENT_NAME == 'workflow_dispatch' && inputs.binary == 'chain-spec-builder' }}
run: |
. ./.github/scripts/common/lib.sh
- RELEASE_ID=$(check_release_id "${{ inputs.release_id }}")
+
fetch_release_artifacts
- name: Upload artifacts
@@ -124,7 +148,7 @@ jobs:
build-container: # this job will be triggered for the polkadot-parachain rc and release or polkadot rc image build
if: ${{ inputs.binary == 'polkadot-parachain' || inputs.binary == 'chain-spec-builder' || inputs.image_type == 'rc' }}
runs-on: ubuntu-latest
- needs: fetch-artifacts
+ needs: [fetch-artifacts, validate-inputs]
environment: release
steps:
@@ -179,7 +203,7 @@ jobs:
release=$( echo $VERSION | cut -f1 -d- )
echo "tag=latest" >> $GITHUB_OUTPUT
echo "release=${release}" >> $GITHUB_OUTPUT
- echo "stable=stable" >> $GITHUB_OUTPUT
+ echo "stable=${{ needs.validate-inputs.outputs.stable_tag }}" >> $GITHUB_OUTPUT
- name: Build Injected Container image for polkadot rc or chain-spec-builder
if: ${{ env.BINARY == 'polkadot' || env.BINARY == 'chain-spec-builder' }}
@@ -257,7 +281,7 @@ jobs:
build-polkadot-release-container: # this job will be triggered for polkadot release build
if: ${{ inputs.binary == 'polkadot' && inputs.image_type == 'release' }}
runs-on: ubuntu-latest
- needs: fetch-latest-debian-package-version
+ needs: [fetch-latest-debian-package-version, validate-inputs]
environment: release
steps:
- name: Checkout sources
@@ -295,7 +319,7 @@ jobs:
# TODO: The owner should be used below but buildx does not resolve the VARs
# TODO: It would be good to get rid of this GHA that we don't really need.
tags: |
- parity/polkadot:stable
+ parity/polkadot:${{ needs.validate-inputs.outputs.stable_tag }}
parity/polkadot:latest
parity/polkadot:${{ needs.fetch-latest-debian-package-version.outputs.polkadot_container_tag }}
build-args: |
diff --git a/.github/workflows/reusable-check-changed-files.yml b/.github/workflows/reusable-check-changed-files.yml
new file mode 100644
index 000000000000..47f0620439c7
--- /dev/null
+++ b/.github/workflows/reusable-check-changed-files.yml
@@ -0,0 +1,59 @@
+# Reusable workflow to perform checks and generate conditions for other workflows.
+# Currently it checks if any Rust (build-related) file is changed
+# and if the current (caller) workflow file is changed.
+# Example:
+#
+# jobs:
+# changes:
+# permissions:
+# pull-requests: read
+# uses: ./.github/workflows/reusable-check-changed-files.yml
+# some-job:
+# needs: changes
+# if: ${{ needs.changes.outputs.rust }}
+# .......
+
+name: Check changes files
+
+on:
+ workflow_call:
+ # Map the workflow outputs to job outputs
+ outputs:
+ rust:
+ value: ${{ jobs.changes.outputs.rust }}
+ description: "true if any of the build-related OR current (caller) workflow files have changed"
+ current-workflow:
+ value: ${{ jobs.changes.outputs.current-workflow }}
+ description: "true if current (caller) workflow file has changed"
+
+jobs:
+ changes:
+ runs-on: ubuntu-latest
+ permissions:
+ pull-requests: read
+ outputs:
+ # true if current workflow (caller) file is changed
+ rust: ${{ steps.filter.outputs.rust == 'true' || steps.filter.outputs.current-workflow == 'true' }}
+ current-workflow: ${{ steps.filter.outputs.current-workflow }}
+ steps:
+ - id: current-file
+ run: echo "current-workflow-file=$(echo ${{ github.workflow_ref }} | sed -nE "s/.*(\.github\/workflows\/[a-zA-Z0-9_-]*\.y[a]?ml)@refs.*/\1/p")" >> $GITHUB_OUTPUT
+ - run: echo "${{ steps.current-file.outputs.current-workflow-file }}"
+ # For pull requests it's not necessary to checkout the code
+ - name: Checkout
+ if: github.event_name != 'pull_request'
+ uses: actions/checkout@v4
+ - id: filter
+ uses: dorny/paths-filter@v3
+ with:
+ predicate-quantifier: "every"
+ # current-workflow - check if the current (caller) workflow file is changed
+ # rust - check if any Rust (build-related) file is changed
+ filters: |
+ current-workflow:
+ - '${{ steps.current-file.outputs.current-workflow-file }}'
+ rust:
+ - '**/*'
+ - '!.github/**/*'
+ - '!prdoc/**/*'
+ - '!docs/**/*'
diff --git a/.github/workflows/subsystem-benchmarks.yml b/.github/workflows/subsystem-benchmarks.yml
new file mode 100644
index 000000000000..7c19b420a6ac
--- /dev/null
+++ b/.github/workflows/subsystem-benchmarks.yml
@@ -0,0 +1,82 @@
+on:
+ push:
+ branches:
+ - master
+ pull_request:
+ types: [ opened, synchronize, reopened, closed, labeled ]
+ merge_group:
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+ pull-requests: write
+
+jobs:
+ set-image:
+ # TODO: remove once migration is complete or this workflow is fully stable
+ if: contains(github.event.label.name, 'GHA-migration')
+ # GitHub Actions allows using 'env' in a container context.
+ # However, env variables don't work for forks: https://github.com/orgs/community/discussions/44322
+ # This workaround sets the container image for each job using 'set-image' job output.
+ runs-on: ubuntu-latest
+ outputs:
+ IMAGE: ${{ steps.set_image.outputs.IMAGE }}
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - id: set_image
+ run: cat .github/env >> $GITHUB_OUTPUT
+
+ build:
+ needs: [ set-image ]
+ runs-on: arc-runners-polkadot-sdk-benchmark
+ container:
+ image: ${{ needs.set-image.outputs.IMAGE }}
+ env:
+ BENCH_DIR: ./charts/bench/${{ matrix.features.bench }}
+ BENCH_FILE_NAME: ${{ matrix.features.bench }}
+ strategy:
+ fail-fast: false
+ matrix:
+ features: [
+ { name: "polkadot-availability-recovery", bench: "availability-recovery-regression-bench" },
+ { name: "polkadot-availability-distribution", bench: "availability-distribution-regression-bench" },
+ { name: "polkadot-node-core-approval-voting", bench: "approval-voting-regression-bench" },
+ { name: "polkadot-statement-distribution", bench: "statement-distribution-regression-bench" }
+ ]
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Check Rust
+ run: |
+ rustup show
+ rustup +nightly show
+
+ - name: Run Benchmarks
+ continue-on-error: true
+ id: run-benchmarks
+ run: |
+ cargo bench -p ${{ matrix.features.name }} --bench ${{ matrix.features.bench }} --features subsystem-benchmarks || echo "Benchmarks failed"
+ ls -lsa ./charts
+ mkdir -p $BENCH_DIR || echo "Directory exists"
+ cp charts/${BENCH_FILE_NAME}.json $BENCH_DIR
+ ls -lsa $BENCH_DIR
+ # Fixes "detected dubious ownership" error in the ci
+ git config --global --add safe.directory '*'
+
+ - name: Publish result to GH Pages
+ if: ${{ steps.run-benchmarks.outcome == 'success' }}
+ uses: benchmark-action/github-action-benchmark@v1
+ with:
+ tool: "customSmallerIsBetter"
+ name: ${{ env.BENCH_FILE_NAME }}
+ output-file-path: ${{ env.BENCH_DIR }}/${{ env.BENCH_FILE_NAME }}.json
+ benchmark-data-dir-path: ${{ env.BENCH_DIR }}
+ github-token: ${{ secrets.GITHUB_TOKEN }}
+ comment-on-alert: ${{ github.event_name == 'pull_request' }} # will comment on PRs if regression is detected
+ auto-push: false # TODO: enable when gitlab part is removed ${{ github.ref == 'refs/heads/master' }}
+
diff --git a/.github/workflows/tests-linux-stable.yml b/.github/workflows/tests-linux-stable.yml
index 55addf11de06..4a13f5318f7d 100644
--- a/.github/workflows/tests-linux-stable.yml
+++ b/.github/workflows/tests-linux-stable.yml
@@ -6,7 +6,7 @@ on:
branches:
- master
pull_request:
- types: [opened, synchronize, reopened, ready_for_review]
+ types: [opened, synchronize, reopened, ready_for_review, labeled]
merge_group:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
@@ -14,9 +14,11 @@ concurrency:
jobs:
changes:
+ # TODO: remove once migration is complete or this workflow is fully stable
+ if: contains(github.event.label.name, 'GHA-migration')
permissions:
pull-requests: read
- uses: ./.github/workflows/check-changed-files.yml
+ uses: ./.github/workflows/reusable-check-changed-files.yml
set-image:
# GitHub Actions allows using 'env' in a container context.
@@ -51,7 +53,7 @@ jobs:
- name: Checkout
uses: actions/checkout@v4
- name: script
- run: WASM_BUILD_NO_COLOR=1 time forklift cargo test -p staging-node-cli --release --locked -- --ignored
+ run: WASM_BUILD_NO_COLOR=1 forklift cargo test -p staging-node-cli --release --locked -- --ignored
# https://github.com/paritytech/ci_cd/issues/864
test-linux-stable-runtime-benchmarks:
@@ -70,4 +72,55 @@ jobs:
- name: Checkout
uses: actions/checkout@v4
- name: script
- run: time forklift cargo nextest run --workspace --features runtime-benchmarks benchmark --locked --cargo-profile testnet
+ run: forklift cargo nextest run --workspace --features runtime-benchmarks benchmark --locked --cargo-profile testnet
+
+ test-linux-stable:
+ needs: [set-image, changes]
+ if: ${{ needs.changes.outputs.rust }}
+ runs-on: ${{ matrix.runners }}
+ timeout-minutes: 60
+ strategy:
+ fail-fast: false
+ matrix:
+ partition: [1/3, 2/3, 3/3]
+ runners: [arc-runners-polkadot-sdk-beefy, oldlinux]
+ container:
+ image: ${{ needs.set-image.outputs.IMAGE }}
+ # needed for tests that use unshare syscall
+ options: --security-opt seccomp=unconfined
+ env:
+ RUST_TOOLCHAIN: stable
+ # Enable debug assertions since we are running optimized builds for testing
+ # but still want to have debug assertions.
+ RUSTFLAGS: "-Cdebug-assertions=y -Dwarnings"
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - name: script
+ run: |
+ # Fixes "detected dubious ownership" error in the ci
+ git config --global --add safe.directory '*'
+ forklift cargo nextest run \
+ --workspace \
+ --locked \
+ --release \
+ --no-fail-fast \
+ --features try-runtime,experimental,riscv,ci-only-tests \
+ --partition count:${{ matrix.partition }}
+ # run runtime-api tests with `enable-staging-api` feature on the 1st node
+ - name: runtime-api tests
+ if: ${{ matrix.partition == '1/3' }}
+ run: forklift cargo nextest run -p sp-api-test --features enable-staging-api
+
+ confirm-required-jobs-passed:
+ runs-on: ubuntu-latest
+ name: All tests passed
+ # If any new job gets added, be sure to add it to this array
+ needs:
+ [
+ test-linux-stable-int,
+ test-linux-stable-runtime-benchmarks,
+ test-linux-stable,
+ ]
+ steps:
+ - run: echo '### Good job! All the tests passed 🚀' >> $GITHUB_STEP_SUMMARY
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index a413d3306159..1be2dd7921e0 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -5,7 +5,7 @@ on:
branches:
- master
pull_request:
- types: [opened, synchronize, reopened, ready_for_review]
+ types: [ opened, synchronize, reopened, ready_for_review ]
merge_group:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
@@ -15,7 +15,7 @@ jobs:
changes:
permissions:
pull-requests: read
- uses: ./.github/workflows/check-changed-files.yml
+ uses: ./.github/workflows/reusable-check-changed-files.yml
set-image:
# GitHub Actions allows using 'env' in a container context.
@@ -31,7 +31,7 @@ jobs:
run: cat .github/env >> $GITHUB_OUTPUT
quick-benchmarks:
- needs: [set-image, changes]
+ needs: [ set-image, changes ]
if: ${{ needs.changes.outputs.rust }}
runs-on: arc-runners-polkadot-sdk-beefy
timeout-minutes: 60
@@ -50,7 +50,7 @@ jobs:
# cf https://github.com/paritytech/polkadot-sdk/issues/1652
test-syscalls:
- needs: [set-image, changes]
+ needs: [ set-image, changes ]
if: ${{ needs.changes.outputs.rust }}
runs-on: arc-runners-polkadot-sdk-beefy
timeout-minutes: 60
@@ -75,7 +75,7 @@ jobs:
# fi
cargo-check-all-benches:
- needs: [set-image, changes]
+ needs: [ set-image, changes ]
if: ${{ needs.changes.outputs.rust }}
runs-on: arc-runners-polkadot-sdk-beefy
timeout-minutes: 60
diff --git a/.gitlab/pipeline/test.yml b/.gitlab/pipeline/test.yml
index 0103c6b76a2d..319c95ad6112 100644
--- a/.gitlab/pipeline/test.yml
+++ b/.gitlab/pipeline/test.yml
@@ -110,8 +110,6 @@ test-linux-stable-codecov:
codecovcli -v do-upload -f target/coverage/result/report-${CI_NODE_INDEX}.lcov --disable-search -t ${CODECOV_TOKEN} -r paritytech/polkadot-sdk --commit-sha ${CI_COMMIT_SHA} --fail-on-error --git-service github;
fi
- #
-
test-linux-stable:
stage: test
extends:
diff --git a/Cargo.lock b/Cargo.lock
index cd4c772945a1..ad1601a3d0dc 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2910,6 +2910,7 @@ dependencies = [
"pallet-message-queue",
"pallet-treasury",
"pallet-utility",
+ "pallet-whitelist",
"pallet-xcm",
"parachains-common",
"parity-scale-codec",
@@ -4257,12 +4258,8 @@ dependencies = [
name = "cumulus-primitives-aura"
version = "0.7.0"
dependencies = [
- "parity-scale-codec",
- "polkadot-core-primitives",
- "polkadot-primitives",
"sp-api",
"sp-consensus-aura",
- "sp-runtime",
]
[[package]]
@@ -4290,8 +4287,6 @@ dependencies = [
"scale-info",
"sp-core",
"sp-inherents",
- "sp-runtime",
- "sp-state-machine",
"sp-trie",
]
@@ -4345,8 +4340,6 @@ dependencies = [
"pallet-asset-conversion",
"parity-scale-codec",
"polkadot-runtime-common",
- "polkadot-runtime-parachains",
- "sp-io",
"sp-runtime",
"staging-xcm",
"staging-xcm-builder",
@@ -6781,9 +6774,9 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46"
[[package]]
name = "hkdf"
-version = "0.12.3"
+version = "0.12.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437"
+checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7"
dependencies = [
"hmac 0.12.1",
]
@@ -7913,9 +7906,9 @@ dependencies = [
[[package]]
name = "libp2p-identity"
-version = "0.2.8"
+version = "0.2.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "999ec70441b2fb35355076726a6bc466c932e9bdc66f6a11c6c0aa17c7ab9be0"
+checksum = "55cca1eb2bc1fd29f099f3daaab7effd01e1a54b7c577d0ed082521034d912e8"
dependencies = [
"bs58 0.5.1",
"ed25519-dalek",
@@ -8739,19 +8732,6 @@ version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
-[[package]]
-name = "minimal-template"
-version = "0.0.0"
-dependencies = [
- "docify",
- "minimal-template-node",
- "minimal-template-runtime",
- "pallet-minimal-template",
- "polkadot-sdk-docs",
- "polkadot-sdk-frame",
- "simple-mermaid 0.1.1",
-]
-
[[package]]
name = "minimal-template-node"
version = "0.0.0"
@@ -9886,7 +9866,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -10093,6 +10072,7 @@ version = "28.0.0"
dependencies = [
"array-bytes",
"binary-merkle-tree",
+ "frame-benchmarking",
"frame-support",
"frame-system",
"log",
@@ -10500,6 +10480,7 @@ dependencies = [
"frame-election-provider-support",
"frame-support",
"frame-system",
+ "log",
"pallet-balances",
"pallet-nomination-pools",
"pallet-staking",
@@ -10632,6 +10613,23 @@ dependencies = [
"substrate-test-utils",
]
+[[package]]
+name = "pallet-example-authorization-tx-extension"
+version = "4.0.0-dev"
+dependencies = [
+ "docify",
+ "frame-benchmarking",
+ "frame-support",
+ "frame-system",
+ "log",
+ "parity-scale-codec",
+ "scale-info",
+ "sp-core",
+ "sp-io",
+ "sp-keyring",
+ "sp-runtime",
+]
+
[[package]]
name = "pallet-example-basic"
version = "27.0.0"
@@ -10757,6 +10755,7 @@ version = "4.0.0-dev"
dependencies = [
"pallet-default-config-example",
"pallet-dev-mode",
+ "pallet-example-authorization-tx-extension",
"pallet-example-basic",
"pallet-example-frame-crate",
"pallet-example-kitchensink",
@@ -12646,6 +12645,7 @@ dependencies = [
"pallet-balances",
"pallet-identity",
"pallet-message-queue",
+ "pallet-xcm",
"parachains-common",
"parity-scale-codec",
"polkadot-runtime-common",
@@ -13448,23 +13448,17 @@ name = "polkadot-node-core-prospective-parachains"
version = "6.0.0"
dependencies = [
"assert_matches",
- "bitvec",
"fatality",
"futures",
- "parity-scale-codec",
- "polkadot-node-primitives",
"polkadot-node-subsystem",
"polkadot-node-subsystem-test-helpers",
- "polkadot-node-subsystem-types",
"polkadot-node-subsystem-util",
"polkadot-primitives",
"polkadot-primitives-test-helpers",
+ "rand",
"rstest",
- "sc-keystore",
- "sp-application-crypto",
"sp-core",
- "sp-keyring",
- "sp-keystore",
+ "sp-tracing 16.0.0",
"thiserror",
"tracing-gum",
]
@@ -13579,6 +13573,7 @@ dependencies = [
"sp-externalities 0.25.0",
"sp-io",
"sp-tracing 16.0.0",
+ "tempfile",
"thiserror",
"tracing-gum",
]
@@ -13593,8 +13588,10 @@ dependencies = [
"nix 0.28.0",
"parity-scale-codec",
"polkadot-node-core-pvf-common",
+ "polkadot-node-primitives",
"polkadot-parachain-primitives",
"polkadot-primitives",
+ "sp-maybe-compressed-blob",
"tracing-gum",
]
@@ -13609,6 +13606,7 @@ dependencies = [
"nix 0.28.0",
"parity-scale-codec",
"polkadot-node-core-pvf-common",
+ "polkadot-node-primitives",
"polkadot-primitives",
"rayon",
"rococo-runtime",
@@ -14577,6 +14575,7 @@ dependencies = [
"pallet-balances",
"pallet-broker",
"pallet-collective",
+ "pallet-contracts",
"pallet-default-config-example",
"pallet-democracy",
"pallet-example-offchain-worker",
@@ -18845,9 +18844,9 @@ checksum = "f97841a747eef040fcd2e7b3b9a220a7205926e60488e673d9e4926d27772ce5"
[[package]]
name = "serde"
-version = "1.0.204"
+version = "1.0.206"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12"
+checksum = "5b3e4cd94123dd520a128bcd11e34d9e9e423e7e3e50425cb1b4b1e3549d0284"
dependencies = [
"serde_derive",
]
@@ -18872,9 +18871,9 @@ dependencies = [
[[package]]
name = "serde_derive"
-version = "1.0.204"
+version = "1.0.206"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222"
+checksum = "fabfb6138d2383ea8208cf98ccf69cdfb1aff4088460681d84189aa259762f97"
dependencies = [
"proc-macro2 1.0.82",
"quote 1.0.36",
@@ -18903,9 +18902,9 @@ dependencies = [
[[package]]
name = "serde_json"
-version = "1.0.121"
+version = "1.0.124"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4ab380d7d9f22ef3f21ad3e6c1ebe8e4fc7a2000ccba2e4d71fc96f15b2cb609"
+checksum = "66ad62847a56b3dba58cc891acd13884b9c61138d330c0d7b6181713d4fce38d"
dependencies = [
"indexmap 2.2.3",
"itoa",
@@ -20052,6 +20051,7 @@ dependencies = [
"sp-keystore",
"sp-mmr-primitives",
"sp-runtime",
+ "sp-weights",
"strum 0.26.2",
"w3f-bls",
]
@@ -22552,9 +22552,9 @@ dependencies = [
[[package]]
name = "trie-db"
-version = "0.29.0"
+version = "0.29.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "65ed83be775d85ebb0e272914fff6462c39b3ddd6dc67b5c1c41271aad280c69"
+checksum = "0c992b4f40c234a074d48a757efeabb1a6be88af84c0c23f7ca158950cb0ae7f"
dependencies = [
"hash-db",
"log",
@@ -23005,11 +23005,12 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
[[package]]
name = "wasm-bindgen"
-version = "0.2.92"
+version = "0.2.93"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8"
+checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5"
dependencies = [
"cfg-if",
+ "once_cell",
"serde",
"serde_json",
"wasm-bindgen-macro",
@@ -23017,9 +23018,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-backend"
-version = "0.2.92"
+version = "0.2.93"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da"
+checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b"
dependencies = [
"bumpalo",
"log",
@@ -23044,9 +23045,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro"
-version = "0.2.92"
+version = "0.2.93"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726"
+checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf"
dependencies = [
"quote 1.0.36",
"wasm-bindgen-macro-support",
@@ -23054,9 +23055,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro-support"
-version = "0.2.92"
+version = "0.2.93"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
+checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836"
dependencies = [
"proc-macro2 1.0.82",
"quote 1.0.36",
@@ -23067,9 +23068,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-shared"
-version = "0.2.92"
+version = "0.2.93"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96"
+checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484"
[[package]]
name = "wasm-bindgen-test"
diff --git a/Cargo.toml b/Cargo.toml
index 95199eda899c..dd66ea7e8079 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -346,6 +346,7 @@ members = [
"substrate/frame/election-provider-support/solution-type/fuzzer",
"substrate/frame/elections-phragmen",
"substrate/frame/examples",
+ "substrate/frame/examples/authorization-tx-extension",
"substrate/frame/examples/basic",
"substrate/frame/examples/default-config",
"substrate/frame/examples/dev-mode",
@@ -522,7 +523,6 @@ members = [
"substrate/utils/prometheus",
"substrate/utils/substrate-bip39",
"substrate/utils/wasm-builder",
- "templates/minimal",
"templates/minimal/node",
"templates/minimal/pallets/template",
"templates/minimal/runtime",
@@ -820,7 +820,7 @@ lazy_static = { version = "1.4.0" }
libc = { version = "0.2.155" }
libfuzzer-sys = { version = "0.4" }
libp2p = { version = "0.52.4" }
-libp2p-identity = { version = "0.2.3" }
+libp2p-identity = { version = "0.2.9" }
libsecp256k1 = { version = "0.7.0", default-features = false }
linked-hash-map = { version = "0.5.4" }
linked_hash_set = { version = "0.1.4" }
@@ -907,6 +907,7 @@ pallet-dev-mode = { path = "substrate/frame/examples/dev-mode", default-features
pallet-election-provider-multi-phase = { path = "substrate/frame/election-provider-multi-phase", default-features = false }
pallet-election-provider-support-benchmarking = { path = "substrate/frame/election-provider-support/benchmarking", default-features = false }
pallet-elections-phragmen = { path = "substrate/frame/elections-phragmen", default-features = false }
+pallet-example-authorization-tx-extension = { path = "substrate/frame/examples/authorization-tx-extension", default-features = false }
pallet-example-basic = { path = "substrate/frame/examples/basic", default-features = false }
pallet-example-frame-crate = { path = "substrate/frame/examples/frame-crate", default-features = false }
pallet-example-kitchensink = { path = "substrate/frame/examples/kitchensink", default-features = false }
@@ -1173,10 +1174,10 @@ secp256k1 = { version = "0.28.0", default-features = false }
secrecy = { version = "0.8.0", default-features = false }
seedling-runtime = { path = "cumulus/parachains/runtimes/starters/seedling" }
separator = { version = "0.4.1" }
-serde = { version = "1.0.204", default-features = false }
+serde = { version = "1.0.206", default-features = false }
serde-big-array = { version = "0.3.2" }
serde_derive = { version = "1.0.117" }
-serde_json = { version = "1.0.121", default-features = false }
+serde_json = { version = "1.0.124", default-features = false }
serde_yaml = { version = "0.9" }
serial_test = { version = "2.0.0" }
sha1 = { version = "0.10.6" }
@@ -1320,7 +1321,7 @@ tracing-log = { version = "0.2.0" }
tracing-subscriber = { version = "0.3.18" }
tracking-allocator = { path = "polkadot/node/tracking-allocator", default-features = false, package = "staging-tracking-allocator" }
trie-bench = { version = "0.39.0" }
-trie-db = { version = "0.29.0", default-features = false }
+trie-db = { version = "0.29.1", default-features = false }
trie-root = { version = "0.18.0", default-features = false }
trie-standardmap = { version = "0.16.0" }
trybuild = { version = "1.0.89" }
diff --git a/bridges/bin/runtime-common/src/extensions/check_obsolete_extension.rs b/bridges/bin/runtime-common/src/extensions/check_obsolete_extension.rs
index 97744da5ad8c..ce1037167d87 100644
--- a/bridges/bin/runtime-common/src/extensions/check_obsolete_extension.rs
+++ b/bridges/bin/runtime-common/src/extensions/check_obsolete_extension.rs
@@ -344,9 +344,9 @@ macro_rules! generate_bridge_reject_obsolete_headers_and_messages {
post_info: &sp_runtime::traits::PostDispatchInfoOf<$call>,
len: usize,
result: &sp_runtime::DispatchResult,
- ) -> Result