Select Git revision
-
Cédric Moreau authoredCédric Moreau authored
upgrade-substrate.md 2.08 KiB
Upgrade Substrate
We need to keep up to date with Substrate. Here is an empirical guide.
Let's say for the example that we want to upgrade from v0.9.26
to v0.9.32
.
Upgrade Substrate fork
- Checkout the latest Substrate Polkadot branch
polkadot-v0.9.xy
in our Substrate - Create a new branch
duniter-substrate-v0.9.xy
- Cherry-pick
3ad5e1a1fdac5398d4911272a34e1f16c1bdd8f0
,87ef489034ca2b15c4f30da387e06b1f6716d9a2
andc36ab4f32454318a47777b24b6533c44121fc10b
- Run
cargo check
to check the cherry-picking
Upgrade Subxt fork
- Checkout the currently used branch in our Subxt fork, e.g.
duniter-substrate-v0.9.26
- Create a new branch
duniter-substrate-v0.9.32
- Fetch the upstream repository
- Rebase on an upstream stable branch matching the wanted version
Upgrade Duniter
- Replace
duniter-substrate-v0.9.26
withduniter-substrate-v0.9.32
inCargo.toml
- Update the
rust-toolchain
file according to Polkadot release notes- Tip: To save storage space on your machine, do
rm target -r
after changing the rust toolchain version and before re-building the project with the new version.
- Tip: To save storage space on your machine, do
- While needed, iterate
cargo check
,cargo update
and upgrading dependencies to match substrate's dependencies - Fix errors in Duniter code
- You may need to check how Polkadot is doing by searching in their repo. Luckily, the project structure and Substrate patterns are close enough to ours.
- Some errors may happen due to two semver-incompatible versions of a same crate being used. To check this, use
cargo tree -i <crate>
. Update the dependency accordingly, then docargo update
.
- As always, don't forget to
clippy
once you're done with the errors. - Test benchmarking:
cargo run --features runtime-benchmarks -- benchmark overhead --chain=dev --execution=wasm --wasm-execution=interpreted-i-know-what-i-do --weight-path=. --warmup=10 --repeat=100