Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 22/03/2018, à 21:07

moths-art

Créer des paquets debian pour le langage Rust

Bonjour,

Ayant gagné un peu d'expérience sur le packaging et sur le langage Rust, j'ai cherché à empaqueter des softs développés dans ce langage.

Après avoir essuyé pas mal de plâtres avant d'arriver à mes fins, je vous propose un résumé.
Je n'affirmerais sans doute pas que c'est parfait ou "la solution" mais ça a le mérite d'exister.
Je suis bien évidement entousiaste à toute forme de participation!

Dans un premier temps, je me suis orienté vers cargo deb

Ce dernier présente 2 inconvénients :

1. ça oblige à renseigner Cargo.toml avec des infos spécifiques au paquet debian. (ne plait pas aux puristes qui aime séparer code et packaging)
2. ça crée automatiquement un .deb et pas les fichiers sources (voir https://github.com/mmstick/cargo-deb/issues/40 pour plus d'infos)

Le 2ème point étant vraiment rédibitoire, je décide de fouiller le web sur d'autres solutions.
Je trouve quelqu'un qui a réussi le tour de force :

https://launchpad.net/~x4121/+archive/u … ter=artful

Je récupe les sources et regarde ça config pour en ressortir les grands axes.
Je découvre, bien évidement après coup qu'il a tout écrit ici : https://github.com/x4121/ripgrep-ubuntu … /README.md.

Après différents essais erreurs et le sentiment de solitude qui va avec, je trouve enfin la bonne méthodologie.

Je découvre qu'il utilise cargo build avec l'option --frozen.
Cet option permet, si je comprend bien d'éviter toutes requètes réseau afin de chercher les dépendances nécessaires sur https://crates.io/.
Quel intérêt me direz-vous ?
S'assurez que les librairies dont dépendent notre applicatif n'ont pas changé entre temps.

Pour celà, il faut disposer d'un utilitaire : cargo vendor
Ce dernier va rassembler l'ensemble des librairies à un moment x et les mettre pré-compilés dans un sous-dossier.
Ces librairies seront par la suite incorporés à l'archive source.
Du coup, on ne se basera plus que sur ces librairies et non celles on-line.

Créer des sources en vue de les envoyer sur un PPA :

$ cargo vendor debian/vendor
$ cd debian && tar zcf vendor.tar.gz vendor && rm -Rf vendor && cd ..
$ dpkg-buildpackage -S -us -uc
$ cd ..
$ debsign monfichier.changes
$ dput ppa:monpppa monfichier.changes

Pour éviter le maximum de soucis de compilation lié à des versions anciennes de Rustc, je conseil de mettre son fichier changelog sur Bionic.
Dans un second temps, il vous sera toujours possible de copier les binaires compilés pour qu'ils soient disponibles pour des versions d'Ubuntu plus anciennes.
(J'ai passé un temps incroyable la-dessus)

Créer un .deb :

$ cargo vendor debian/vendor
$ cd debian && tar zcf vendor.tar.gz vendor && rm -Rf vendor && cd ..
$ dpkg-buildpackage -us -uc

Voilà. Je vais de ce pas packager mes softs en Rust et si je trouve le temps et l'envie, packager des softs Rust populaire.
J'espère aussi que ça va en aider d'autres...

Pour les exemples : https://launchpad.net/~jerem-ferry/+archive/ubuntu/rust
et le source : https://github.com/mothsART/whatschanging

Dernière modification par moths-art (Le 27/05/2018, à 13:45)

Hors ligne

#2 Le 24/03/2018, à 08:12

nam1962

Re : Créer des paquets debian pour le langage Rust

Je suis ton fil smile


[ Modéré ]

Hors ligne

#3 Le 24/03/2018, à 08:42

FrancisFDZ

Re : Créer des paquets debian pour le langage Rust

[HS]

nam1962 a écrit :

Je suis ton fil smile

... Et moi je suis ton père ... lol
(Excusez moi, j'ai pas pu résister)
[/HS]


-- On peut avoir des raisons de se plaindre et n'avoir pas raison de se plaindre --
[Victor Hugo]

Hors ligne

#4 Le 24/03/2018, à 08:46

michel_04

Re : Créer des paquets debian pour le langage Rust

Bonjour,

FrancisFDZ a écrit :

[HS]

nam1962 a écrit :

Je suis ton fil smile

... Et moi je suis ton père ... lol
(Excusez moi, j'ai pas pu résister)
[/HS]

Génial.

Édit :
@ moths-art
Toutes mes excuses.

A+

Dernière modification par michel_04 (Le 24/03/2018, à 09:20)

Hors ligne

#5 Le 24/03/2018, à 08:51

xubu1957

Re : Créer des paquets debian pour le langage Rust

Bonjour,

[HS]                   
Il est où, le sain d'esprit ? tongue

  [/HS]


Conseils pour les nouveaux demandeurs et pas qu'eux
Important : Pensez à passer vos sujets en [Résolu] lorsque ceux-ci le sont, au début du titre en cliquant sur Modifier sous le premier message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.                   Membre de Linux-Azur

Hors ligne

#6 Le 24/03/2018, à 12:48

moths-art

Re : Créer des paquets debian pour le langage Rust

merci aux ambianceurs du forum, j'ai bien ri.

Pour mettre un peu de grain à moudre, j'ambitionne d'empaqueter d'autres softs.
Ma préoccupation première est mon jeu de puissance 4 (https://mothsart.github.io/puissance4.html) mais je pense me faire la main sur d'autres softs.
Sans doute, en priorité Exa :  https://the.exa.website (une version amélioré de la commande ls)
Mais je rempli une liste d'autres trucs sympa : https://mothsart.github.io/applis-rust.html

Hors ligne

#7 Le 25/03/2018, à 14:41

moths-art

Re : Créer des paquets debian pour le langage Rust

Comme annoncé, j'ai packagé Exa en version 0.8.0 : https://launchpad.net/~jerem-ferry/+archive/ubuntu/rust
Ca c'est bien évidement pas passé comme je le pensais :
- obligé de supprimer le makefile du projet et de faire l'equivalent dans le fichier rules et exa.install. (pas réellement terminé : manque l'autocomplete et le man file)
- la version i386 ne compilait pas : une dépendance (datetime) avait un soucis de cast d'entier 64 en 32 bits : j'ai dût recherché la version corrective et éditer le fichier Cargo.toml en conséquence.

Les sources de mes éditions sont dispo sur github : https://github.com/mothsART/exa avec la branche dédié : v0.8

Je me suis constitué une vm pour voir si tout ce passait bien et effectuer les tests nécessaires.

Il manque la partie "autocomplete" (bash, zsh et fish) et man qui me demandera un peu plus de tests.

En attendant, enjoy !

Hors ligne

#8 Le 27/03/2018, à 19:14

moths-art

Re : Créer des paquets debian pour le langage Rust

Je viens de mettre à jour le paquet d'Exa : il y a désormais l'accès au man et la prise en charge Bash, Zsh et Fish !

Hors ligne

#9 Le 24/04/2018, à 11:08

moths-art

Re : Créer des paquets debian pour le langage Rust

J'ai empaqueter un petit jeu réseau de Puissance 4 de mon cru.
Pour en savoir plus : https://forum.ubuntu-fr.org/viewtopic.p … #p21906902

Hors ligne

#10 Le 27/05/2018, à 21:41

moths-art

Re : Créer des paquets debian pour le langage Rust

Une petite annonce pour dire que j'ai packagé fd (dispo dans le même ppa) : le digne remplaçant de find ! Un tuto : https://linoxide.com/linux-how-to/fd-al … d-command/
Les paquets sont tous désormais disponible pour Xenial, Artful, Bionic et Cosmic !

Dernière modification par moths-art (Le 27/05/2018, à 21:42)

Hors ligne

#11 Le 28/05/2018, à 06:40

nam1962

Re : Créer des paquets debian pour le langage Rust

Bête question : et les avoir en flatpak ?


[ Modéré ]

Hors ligne

#12 Le 28/05/2018, à 18:56

moths-art

Re : Créer des paquets debian pour le langage Rust

name1962 a écrit :

Bête question : et les avoir en flatpak ?

Et une fois que j'ai fait en flatpak, je packagerais pour snap, puis un container docker puis faut penser à archlinux et pourquoi pas mac et windows ?
Mais je ne t'interdis pas de le faire wink

Sérieusement, faire des paquets debian (et les maintenir) me prend suffisamment de temps. Du temps que je ne prend pas pour dev par exemple.

Mon but est de mettre à dispo des softs qui me semble intéressants.

Hors ligne

#13 Le 28/05/2018, à 19:38

nam1962

Re : Créer des paquets debian pour le langage Rust

Ben je suis sur une Manjaro là, alors pour le moment je ne profite pas trop wink


[ Modéré ]

Hors ligne

#14 Le 28/05/2018, à 20:10

moths-art

Re : Créer des paquets debian pour le langage Rust

Oui mais t'es sur Ubuntu-fr....
Y'a sûr ripgrep et exa dans AUR... Pour les paquets que je dev, je pense un jour m'y mettre pour arch and cie car j'ai des postes sous cette archi.

Dernière modification par moths-art (Le 04/06/2018, à 20:56)

Hors ligne

#15 Le 01/06/2018, à 22:32

moths-art

Re : Créer des paquets debian pour le langage Rust

Je viens de packager un petit utilitaire en ligne de commande qui minimise les fichier svg : svgcleaner.
C'est un concurrent direct de svgo qui lui est dev en javascript.
Sur mes tests :  (fichier svg de 1.2Mo), svgo est bien meilleur => 286.1 Ko après minification.
Svgcleaner c'est 404.3ko.
Ce qui est intéressant, c'est qu'ils n'utilisent pas les mêmes algos et les 2 réunis : 284ko.

Mais Svgcleaner ce démarque surtout sur la rapidité :

time svgo organes.svg organes.svgo.svg

Done in 14781 ms!
1145.494 KiB - 75.6% = 279.413 KiB

/usr/local/bin/svgo organes.svg organes.svgo.svg  9,51s user 0,20s system 59% cpu 16,213 total
time svgcleaner organes.svg organes.svgcleaner.svg
Your image is 65.54% smaller now.
svgcleaner organes.svg organes.svgcleaner.svg  0,25s user 0,01s system 41% cpu 0,631 total

Environ 40 fois plus rapide (et ça doit encore plus significatif sur des serveurs avec plus de 4 threads) pour moins de conso CPU (j'ai pas regardé la conso de la ram mais il doit pas y avoir photo non plus)  ça laisse rêveur.

Dernière modification par moths-art (Le 01/06/2018, à 22:33)

Hors ligne

#16 Le 04/06/2018, à 22:36

moths-art

Re : Créer des paquets debian pour le langage Rust

Je continue dans la lignée des petits utilitaires pratiques :

Basic-http-server : permet de lancer un mini-serveur web de test : pratique quand on entretien des sites statiques !
C'est l'équivalent de python -m http.server

Pareil, les chiffres sont sans appels :

time python -m http.server
Serving HTTP on 0.0.0.0 port 8000 ...
python -m http.server  0,22s user 0,02s system 4% cpu 4,976 total

time basic-http-server 
listening on 127.0.0.1:4000
basic-http-server  0,01s user 0,02s system 1% cpu 2,491 total

22 fois plus rapide et 4 fois moins gourmand en CPU.

Dernière modification par moths-art (Le 04/06/2018, à 22:36)

Hors ligne

#17 Le 04/08/2018, à 16:03

moths-art

Re : Créer des paquets debian pour le langage Rust

Je viens de découvrir et de packager avec bonheur :

bat : un remplaçant de cat proposant la coloration syntaxique et l'intégration de Git.

hyperfine : un remplaçant de time

Je reliste tout ça sur mon site : https://mothsart.github.io/applis-rust.html

Hors ligne