Je sais, je sais … je suis en retard ! Désolé, la semaine a été un petit peu rude !
En tout cas, voici mes notes sur la dernière vidéo d’Imil. Nous continuons et finissons le portage sous NetBSD de l’appli Archey4 en python. Au programme, du patch, du lint … et du partage d’aborescence !
Oups …
Dans ce que nous avons fait la dernière fois, une petite erreur s’est glissée. En effet, le nommage des archives zip sous Github n’est pas basé sur le nom de l’appli, mais sur le numéro de version utilisé pour le tag :
Comme on peut le voir ci-dessus, pkgsrc recherche archey4-4.14.4.zip alors que sur github, l’adresse du zip est :
Pas de souci, nous allons procéder à quelques modifications :
Cette fois-ci, puisque pkgsrc utilise des variables spéciales pour le site GITHUB, nous construisons GITHUB_TAG de façon à ce que ce soit la bonne archive qui soit téléchargée. Il nous faut également adapter notre chemin WRKSRC, puisque nos source ne sont plus au même endroit.
Notre Makefile final ressemble donc à ceci :
Il nous reste à le tester, après avoir remis à jour le distinfo et le PLIST :
Notre Makefile est fin prêt !!!!!
Terminons le portage de notre appli
Comme nous l’avions vu la dernière fois, si le package semble bien s’installer il ne fonctionne pas encore sous NetBSD. Il va falloir
en modifier le code et écrire des patchs. Lors de la vidéo, Imil s’est contenté - pour des raisons de temps - de commenter les parties du
code qui posaient problème. Je ne vais pas détailler ici quelles parties ont été commentées, mais plutôt vous rappeler la façon donc on crée un patch avec pkgsrc.
Imaginons que nous voulions modifier le fichier temperature.py. On utilise l’outil pkg-vi, que nous avions vu précédemment :
Lorsque nous sauvegardons et fermons le fichier, le diff est automatiquement généré. (J’adore littéralement cet outil !)
Il nous reste alors à fabriquer le patch :
Un répertoire se crée dans notre package, du nom de “patches”. Il contient les patches générés.
Il nous faut maintenant ajouter le hash de nos patchs à notre fichier distinfo. Encore une fois, une commande suffit :
Simple non ? Il ne reste plus qu’à recompiler, tester … Mais ça vous savez déjà faire !
Et mon package ? Tu l’aimes mon package ?
Si le boulot est bien fait, il ne reste plus qu’à le publier. Mais comme nous sommes des gens soucieux de bien faire, nous allons tout de même vérifier la qualité de notre travail !
Pour ce faire, il existe un outil, “pkglint” qui permet de valider son package :
Houlà ! Heureusement que cet outil de validation de la qualité du package existe ! En effet, j’ai oublié de renseigner le fichier DESCR, qui doit contenir une description du package ! J’ai également utilisé des espaces au lieu de tabs dans mon Makefile.
Je suis donc les conseils donnés, et relance le test :
Ca y est ! Il est beau notre package !!!!!
Partager son arborescence pkgsrc entre plusieurs machines
En début de vidéo, Imil nous a présenté un usecase de pkgsrc que je trouve très intéressant. Imaginons que mon arborescence pkgsrc se trouve en userspace, et que je veuille la partager entre différentes machines.
Je peux via NFS, sshfs, ou autre, faire un montage de mon arborescence dans le répertoire de mon choix. C’est simple comme un mount ! Par contre, je ne veux partager que l’arborescence des paquets, pas le repertoire work. (Cela pourrait poser problème si mes architectures sont différentes par exemple).
On peut régler ce problème avec le fichier mk.conf qui, je vous le rappelle, permet de paramérer pkgsrc :
La variable WRKOBJDIR, comme vous l’aurez sûrement deviné, permet de spécifier le repertoire de base dans lequel les paquets seront compilés.
DISTDIR, quand à elle, contient l’endroit où seront téléchargés les fichiers lors d’un “make fetch”, par exemple.
Pour les curieux, l’ensemble des variables utiles est documenté ici.
Conclusion
Notre package est maintenant prêt, mais surtout nous avons pu voir comment pkgsrc supportait et gérait les applis python. Nous verrons vite la suite de tout ça ( euh … cet aprem en fait ! je suis en retaaaaaard ), mais Imil nous parlait d’aller voir du côté de Go !