Duniter v1 : comment livrer duniter-core et duniter-gva?

J’aimerai avancer vers la production de versions correctives pour Duniter v1 (1.8 et 1.9).
Mais j’ai plusieurs soucis.

  • Duniter 1.9 dépend de /nodes/rust/duniter-core et /nodes/rust/modules/duniter-gva
    • La CI de test ne passe plus, à cause d’une simple erreur de compilation : duniter-gva pointe vers une ancienne version de duniter-core.
    • j’imagine qu’il faut figer une version de duniter-core ? Qui sait le faire ? @cgeek ?
  • Duniter 1.8 dépend uniquement de duniter-core, mais on aura le même soucis, non ?
    • par contre je ne vois pas où sont déclarées ces dépendances : le Cargo.toml est quasiement vide.

Dans le projet dubp, j’ai trouvé ca :

Je vais tester sur duniter-core (passage en 1.8.2), mais j’imagine qu’il faut des droits quelque part (genre sur crates.io) , sur un repo ?

cc @tuxmain @cgeek ?

EDIT : Effectivement cela ne fonctionne pas :

error: uncommitted changes detected, please resolve before release:
  .idea/ (WT_NEW)
   Upgrading duniter-core from 1.8.1 to 1.8.2
  Publishing duniter-core
    Updating crates.io index
error: all dependencies must have a version specified when publishing.
dependency `dubp-wot` does not specify a version
Note: The published dependency will use the version from crates.io,
the `path` specification will be removed from the dependency declaration.

Ça ne sert à rien de publier ça sur crates.io, pas besoin de s’embêter avec ça.

Il faudra demander à Élois qu’il nous passe les droits, pour virer les crates obsolètes et éventuellement publier celles pour lesquelles c’est pertinent.

1 Like

ok, mais du coup peux tu me dire ce qui cloche avec le CI : tests (#107457) · Jobs · nodes / rust / modules / duniter-gva · GitLab

Pourquoi va t il télécharger duniter-core 1.8.1 ?

EDIT : j’ai relancé la CI

La dépendance est indiquée par adresse du dépôt git alors il affiche la version qu’il trouve dans le Cargo.toml de la dépendance. Il ne passe pas par crates.io pour ces dépendances.

L’erreur doit venir de la présence de méthodes dans l’implémentation de DuniterModule qui ne sont pas dans la définition du trait. Si tu as ajouté ces méthodes dans un autre dépôt, il faut soit merger ce dépôt d’abord, soit ajouter des lignes patch dans le Cargo.toml pour changer temporairement l’adresse de la dépendance (on peut préciser la branche). Specifying Dependencies - The Cargo Book

Je ne comprends pas, désolé.

As tu ouverte le résultat de la CI ?
On y voit clairement :

Compiling duniter-core v1.8.1 (https://git.duniter.org/nodes/rust/duniter-core#eebd1685)

On y voit deux choses :

  • la version 1.8.1, qui n’est pourtant pas préciser dans le Cargo.toml. En revanche, je trouve quelque chose dans le fichier lock. Faut il le mettre à jour ? Comment ?
  • le hash du commit correspond à un vieux commit, qui n’a pas mes nouvelles méthodes

tout le reste (les erreurs) semble la conséquence de ce problème de checkout. Il faut le résoudre en premier lieu, sauf erreur.

Une idée ?

Cargo.lock conserve les versions des dépendances y compris transitives, ce qui permet de garder les mêmes versions des dépendances même si elles ne sont pas marquées dans Cargo.toml. Il n’est pas censé être édité à la main.

En effet j’avais oublié qu’il peut être nécessaire de faire cargo update pour le mettre à jour, sinon il va garder un vieux commit de duniter-core.

1 Like

ok, donc je fais un cargo update qui devrait modifier le lock, et je commit le lock

1 Like

Je suis toujours bloqué…

J’ai fait un cargo update du projet duniter-gva et pushé le Cargo.lock sur ma MR. Mais la pipeline est toujours en erreur : maintenant, la compilation ne trouve plus certaines dépendances (auxquelles je n’ai pas touchées !).
Je dois mal m’y prendre, également je vois que mon fichier lock à changé de format…
Je suis peut-etre sur une version trop récente de Rust ?

$ cargo version
cargo 1.70.0 (ec8a8a0ca 2023-04-25)

@tuxmain as tu moyen de tester de ton côté, et si besoin corriger ma MR ou me dire ce qui cloche ?

Chez moi (1.72.0) la version de async-bincode ne pose pas de problème mais il y a une erreur de compilation après. Je ne sais pas pourquoi ça ne marche pas dans le pipeline.

J’ai l’impression que la vers de Cargo de la pipeline est vieille, non ? D’après les logs : 1.51.0-x86_64-unknown-linux-gnu (default)

Comment gère t’on les différentes version de compilateur, en Rust ? Et pour les dépendances ?

En effet on pourrait essayer de passer à la release d’aujourd’hui. On gagnerait aussi en performance de compilation et d’exécution et en compatibilité. Ce doit être défini dans un fichier relatif à docker et/ou gitlab, mais si on n’a pas de chance il faut changer une image docker autre part et là je ne sais pas faire…

edit: il faudrait mettre à jour cette image docker sur dockerhub je pense : .gitlab-ci.yml · master · nodes / rust / modules / duniter-gva · GitLab

edit 2 : Docker

C’est buildé ici.

ok, on peux tenter.
Vers quelle version du coup ?

A priori la dernière stable est 1.70.0

rustup install stable
info: syncing channel updates for 'stable-x86_64-unknown-linux-gnu'

  stable-x86_64-unknown-linux-gnu unchanged - rustc 1.70.0 (90c541806 2023-05-31)

info: checking for self-update

Oui, on peut le voir sur github ou avec rustup check si la toolchain stable est installée.

ok j’ai checké et c’est bien la 1.70.0. J’ai pushé une modif du DockerFile, mais la CI failed : test_build_image (#107965) · Jobs · docker / rust / rust-x64-stable-ci · GitLab

Une idée ?

Je ne connais rien à docker, je vois juste les erreurs permission denied au début, qui ont dû causer les erreurs suivantes. @Pini peut-être ?

Ah oui effectivement… Reste à attendre @Pini, ou @poka ? @HugoTrentesaux ? Quelqu’un ? :slight_smile:

Bon je file pour ce soir. Tant pis :frowning:

J’ai poussé un correctif. Par contre, prenez le temps de comprendre comment fonctionne ce dépôt. Ça uploade l’image sur Docker Hub lorsqu’il y a un tag.
Par contre, je ne suis pas sûr si le bump de version, corresponds à la version de Rust.

failed :frowning: Pipeline · docker / rust / rust-x64-stable-ci · GitLab