Du Rust dans NodeJs graçe a Neon : le courant passe !

Une preuve de ce que j’avance tout de même :

image

Le même dossier mais avec une version antérieure fonctionnelle :

image

Ok je referai une build windows plus tard quand je bougerai car impossible de me servir du pc en même temps ça prend toutes les ressources …

En attendant tu peut déjà tester les releases linux, ça fonctione chez moi mais on sait jamais :

A noter que je n’ai pas encore coder la partie migration du fichier wotb donc il faut tester dans un dossier de données vide !

hop voila une release windows officielle de la branche 1.6, @cgeek peut la tester ? J’aimerais m’assurer que le souci ne vienne pas de mon environnement de build avant d’aller plus loin :slight_smile:

https://ifee.fr/pub/duniter-desktop-v1.6.23-windows-x64.exe

Là j’ai bien les fichier .js transpilés.

:laughing:

ok @cgeek quelle est la procédure pour créer une release de test de windows, je suis obligé de créer un tag spécifique ?
J’ai l’impression que le problème viens peut etre de la, je m’étais placé sur la branche 1302 et j’ai rentrer la commande :

release/scripts/build.sh make win v1.6.23

Mais ce n’est peut être pas comme cela qu’il faut faire ??

Moi je fais ça quand je veux tester une release Windows :

./release/scripts/build.sh make win
1 Like

Merci je pense que le problème venais de là, je refais une build demain :slight_smile:

Hop nouvelle tentative, j’espère que cette fois c’est la bonne :

https://ifee.fr/pub/duniter-desktop-20180502.1129.34-windows-x64.exe

EDIT : @cgeek les log sont t’il tracés dans un fichier ? parce que mon terminal ne remonte pas jusqu’au début, je n’ai que les 480 dernières lignes :confused:

Sur cette version je n’ai plus les fichiers transpilés.

Concernant les logs, je suppose qu’il te faut manuellement indiquer une sortie comme :

./release/scripts/build.sh make win > sortie.log
1 Like

ok merci j’ai lancer une build avec log avant de partir a l’apéro Ğ1 et je viens de regarder les log, j’ai compris le problème : j’ai oublié d’ajouter ~/.cargo/bin à la variable d’environnement PATH :laughing:

Du coup neon ne trouvais pas rustc a l’installation et donc npm fail et donc pas de transpilation.

Je viens d’ajouter cette ligne :

set PATH="C:\Users\vagrant\.cargo\bin";%PATH%

Je referai une build dans les prochains jours, cette fois ça devrait fonctionner nickel :slight_smile:

2 Likes

@cgeek ton intervention est nécessaire pour le problème suivant, Rust requiert à minima TLS 1.2 pour vérifier les certificats lors du téléchargement des dépendances, or la VM Windows que nous utilisons contient une version trop vielle de TLS :

default: > neon build
default: node-pre-gyp info ok 
default: neon info forcing rebuild for new build settings
default: neon info running cargo
default:     Updating registry `https://github.com/rust-lang/crates.io-index`
default: warning: spurious network error (2 tries remaining): unknown certificate check failure; class=Net (12); code=Certificate (-17)
default: warning: Certificate check failure might be caused by outdated TLS on older versions of Windows.
default: If you are using Windows 7, Windows Server 2008 R2 or Windows Server 2012,
default: please follow these instructions to enable more secure TLS:
default:     https://support.microsoft.com/en-us/help/3140245/
default: See https://github.com/rust-lang/cargo/issues/5066 for details.
default: warning: spurious network error (1 tries remaining): unknown certificate check failure; class=Net (12); code=Certificate (-17)
default: warning: Certificate check failure might be caused by outdated TLS on older versions of Windows.
default: If you are using Windows 7, Windows Server 2008 R2 or Windows Server 2012,
default: please follow these instructions to enable more secure TLS:
default:     https://support.microsoft.com/en-us/help/3140245/
default: See https://github.com/rust-lang/cargo/issues/5066 for details.
default: error: failed to fetch `https://github.com/rust-lang/crates.io-index`
default: Caused by:
default:   unknown certificate check failure; class=Net (12); code=Certificate (-17)
default: neon ERR! cargo build failed
default: Error: cargo build failed

La solution est indiquée, il faut mettre a jours Windows : https://support.microsoft.com/en-us/help/3140245/update-to-enable-tls-1-1-and-tls-1-2-as-a-default-secure-protocols-in

Ah oui mais non, je n’ai pas envie.

Pourquoi ? Ça pose quel problème ?

Ça prend du temps de le faire.

Pourquoi n’utilise tu pas directement une vagrant box faite par quelqu’un d’autre et a jours ?

Pourquoi n’utilises-tu pas cette box alors ? Il te suffit de modifier le fichier “windows/Vagrantfile” pour cela.

Genre changer la section sur la VM ciblée en :

config.vm.box = "DuniterWin7"
config.vm.box_url = "https://s3.eu-central-1.amazonaws.com/duniter/vagrant/duniter_win7.box"
config.vm.provision :shell, path: "build.bat", run: 'always'

Puis mettre l’URL de ton choix.

Ok je vais tester mais je voulais te demander d’abord je me disais que peut être il y avait une raison précise que j’ignore qui t’avais obliger a faire une box manuellement !

Ben je crois que j’ai fait une box hébergée par nous pour des raisons de sécurité : éviter qu’on nous injecte une box avec code malicieux.

Ceci dit on parle d’installer sur Windows, alors bon les mesures de sécurité …

1 Like

Oui de toute façon avec les backdoor de mercrosoft et autres saloperies espérer avoir un nœud safe sous windows c’est croire aux licornes, du coup je vais utiliser une VM pré-éxistante :slight_smile:

1 Like

Presque 2 ans plus tard, l’abandon du support de Windows ayant été acté, j’ai repris le projet de migrer wotb en Rust depuis quelques jours.

Je me suis donc replongé dans Neon, qui a beaucoup changé (en mieux) depuis 2 ans !

Notamment une très grosse nouveauté qui n’existait pas à l’époque: les classes.

Les classes Neon permettent de « transformer » un « objet » Rust en objet NodeJS, il est donc désormais possible de profiter d’un bindings safe :slight_smile:

Avant les classes, le binding Rust de wotb était obligé de passer par un tableau global d’instances wot (comme le binding C++ d’origine en fait), on y perdait donc l’un des intérêts principaux du Rust (la sûreté de la mémoire).

Neon a aussi beaucoup évolué par ailleurs (c’était un projet très jeune il y a 2 ans). A tel point que j’ai préféré repartir d’une feuille blanche pour le binding Rust<->NodeJs de wotb :slight_smile:

Je détaille cette nouvelle aventure dans un nouveau sujet dédié : Duniteroxyde (oxydation de Duniter) - étape 1 : wotb

5 Likes