Skip to content
Snippets Groups Projects

Upgrade substrate to polkadot-v0.9.32

Merged Pascal Engélibert requested to merge tuxmain-substrate-v0.9.32 into master
2 unresolved threads

Closes #96 (closed)

Update from polkadot v0.9.26 to v0.9.32. Add an upgrade guide in docs.

This leaves the weight files in a dirty state (so they compile, but the weights may not be accurate). They should be regenerated by benchmarking. There is also a TODO for fixing a regression about try-runtime.

Edited by Pascal Engélibert

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • changed milestone to %runtime-500

  • added 1 commit

    • 919a6ac4 - chore: upgrade substrate to polkadot-v0.9.32

    Compare with previous version

  • added 1 commit

    • afa41319 - chore: upgrade substrate to polkadot-v0.9.32

    Compare with previous version

  • Pascal Engélibert changed the description

    changed the description

  • added 1 commit

    • 4d30291a - chore: upgrade substrate to polkadot-v0.9.32

    Compare with previous version

  • added 10 commits

    Compare with previous version

  • added 1 commit

    • a4e70834 - chore: upgrade substrate to polkadot-v0.9.32

    Compare with previous version

  • added 1 commit

    • 37468b34 - chore: upgrade substrate to polkadot-v0.9.32

    Compare with previous version

  • added 2 commits

    • 44c22c2a - 1 commit from branch master
    • ee0fdded - chore: upgrade substrate to polkadot-v0.9.32

    Compare with previous version

  • added 1 commit

    • d93f8082 - ci: update cucumber features list

    Compare with previous version

  • Pascal Engélibert marked this merge request as ready

    marked this merge request as ready

  • requested review from @HugoTrentesaux

  • @HugoTrentesaux Ça y est, enfin !

    Il reste deux TODO pour try-runtime, mais si personne ne sait s'en servir pour l'instant ce n'est peut-être pas grave. (si on en a besoin et que quelqu'un sait, cette personne pourra le réparer)

    Il est possible de coller un peu plus à la structure de Polkadot, mais ne sachant pas ce qui était différent dès le début ou depuis la mise à jour correspondante de Polkadot, j'ai évité de changer ce qui n'était pas nécessaire. Ça pourrait cependant être utile pour plus de propreté, flexibilité et pour faciliter les prochaines mises à jour.

    Je n'ai pas séparé en 15000 commits parce que ça prendrait des heures (et c'était impossible à faire proprement au fur et à mesure). Par contre je peux séparer les changements "bêtes" (simples renommages) de ceux qui contiennent des choix de style ou autre espèce d'importance, si ça peut faciliter la revue.

    Edited by Pascal Engélibert
    • Resolved by Hugo Trentesaux

      Super !! Ça avait l'air un peu rébarbatif.

      J'ai fait une branche hugo-review-tuxmain-substrate-v0.9.32 pour relire, j'ai marqué quelques commentaires dedans, avec notamment quelques questions :

      • sais-tu à quoi correspond patch.crates-io ? j'ai pas trop compris
      • pourquoi les #[allow(unused_imports)] dans node/src/service/client.rs ? est-ce qu'il ne vaudrait pas mieux retirer les imports ?
      • qu'est-ce qui a changé avec le BenchmarkCallSigner est-ce qu'il y aurait un peu de documentation à écrire à ce sujet par exemple ?
      • les changements Origin → RuntimeOrigin et Event → RuntimeEvent c'est juste un renommage côté substrate ? rien de plus ?
      • dans runtime/common/src/apis.rs tu as retiré list_benchmark, est-ce qu'il y a un autre mécanisme pour les lister ? est-ce qu'il faut les ajouter quelque part quand on les écrit ? est-ce qu'il y a quelque chose à documenter du côté de l'écriture de benchmarks ?
      • dans runtime/common/src/weights/pallet_scheduler.rs je suppose que c'est juste un refacto côté substrate ? c'est bien parce que ce qu'il y avait avant était imbitable ><
      • à quoi correspond set_proof_size ? je l'ai vu ajouté dans les runtimes, est-ce qu'il y a quelque chose à documenter ?

      et quelques choses à faire ensuite dans d'autres MR

      • improve ci to avoid duplicating the list of cucumber tests to run
      • manage try-runtime
      • check comments and commented lines in main Cargo.toml file
      • extract the consts of the code like url for support (forum.duniter.org) in a separate file for readability

      Qu'est-ce que tu as compris de la structure de Polkadot dont on s'éloigne ? Je suis complètement à l'aveugle là dessus, mais en effet, ça pourrait faciliter le compréhension de plus coller au style polkadot.

      Pas de problème à garder peu de commits, les changements ne sont pas trop déroutants. Le contexte "MR 121 mise à jour substrate" me paraît suffisamment explicite, même pour les petites corrections de faute de frappes.

      Edited by Hugo Trentesaux
  • Maintainer

    Thanks a lot for this work!

    A new dependency is required to build the docker image: protobuf-compiler. This should be added after cmake in the Dockerfile.

    The related error message is:

      thread 'main' panicked at 'Could not find `protoc` installation and this build crate cannot proceed without
          this knowledge. If `protoc` is installed and this crate had trouble finding
          it, you can set the `PROTOC` environment variable with the specific path to your
          installed `protoc` binary.If you're on debian, try `apt-get install protobuf-compiler` or download it from https://github.com/protocolbuffers/protobuf/releases
  • added 1 commit

    • bdca04cb - docker: add protobuf-compiler

    Compare with previous version

  • Hugo Trentesaux resolved all threads

    resolved all threads

  • Hugo Trentesaux approved this merge request

    approved this merge request

    • Nouvelle question qui me vient après : pourquoi as-tu implémenté le trait BenchmarkCallSigner uniquement dans le cas de la gdev ? (#[cfg(feature = "gdev")])

    • Comme de toute façon on ne teste pas encore les autres runtimes je ne les ai pas touchés. (je n'ai même pas essayé de les compiler) Ils ont dû accumuler par ailleurs du retard donc pour lancer gtest il vaudra peut-être mieux le reprendre entièrement depuis gdev.

      Edited by Pascal Engélibert
    • Please register or sign in to reply
    • Et aussi, quand tu déstructures le tuple en SignedExtra, il y a pallet_oneshot_account::CheckNonce<Runtime>, à l’emplacement de frame_system::CheckNonce<Runtime>. Je sais absolument pas ce dont ça parle, mais j'ai remarqué cette différence en comparant les runtimes.

    • C'est parce que consume_oneshot_account gère différemment le nonce, donc il y a un CheckNonce différent juste pour ça.

    • Please register or sign in to reply
  • changed milestone to %runtime-401

Please register or sign in to reply
Loading