Aujourd’hui, nous allons faire des packages d’application en Go avec pkgsrc. C’est un Imil un peu “fatigué” qui nous présente comment s’y prendre … enfin … s’il arrive à survivre à l’intro ! ^^’
Comme toujours, la vidéo est disponible ici et je vous conseille vivement de la voir.
Go dans pkgsrc
Pour parler de Go dans pkgsrc, on va commencer par parler de quelqu’un : benz. C’est à lui que l’on doit la gestion de Go dans pkgsrc !
Pour aller voir un petit peu comment ça marche, il suffit de jeter un petit coup d’oeil à l’arborescence de pkgsrc :
Comme vous pouvez le voir, on y trouve des fichiers mk qui permettent de faire facilement des packages go.
Et notamment, le fichier go-module.mk à inclure dans le Makefile de notre paquet !!
Pour les détails, vous pouvez aller voir sur le blog de Benny Ici.
Grâce à Benny, même s’il n’y a pas de support des modules dans le soft à packager, ce n’est pas grave : on peut le faire nous même. Génial non ? En effet, par défaut, quand on compile un outil en Go, le résultat est un binaire statique. Du coup, ça n’a pas beaucoup d’intérêt de faire modulaire ! En général, dans un projet Go, on va récupérer les modules dont on a besoin pour compiler, puis ça compile statiquement en un gros binaire. Tout cela se fait très simplement avec pkgsrc !
Let’s go ! Packageons un peu !
Le programme que nous allons packager aujourd’hui s’appelle go-md2man : Il permet de convertir du markdown en manpage. Une bonne habitude, avant de commencer, est toujours de vérifier si le package n’existe pas déjà !
AH. Le package existe déjà !
En temps normal, cela voudrait dire que nous ne devons pas le repackager. Il serait plus sain, si ce package ne va pas, de proposer à son auteur des contributions.
Cependant, ici, il s’agit d’apprendre. Nous allons donc le faire tout de même, puis comparer notre approche à celle de l’auteur de ce package !
On commence, comme à chaque fois, par utiliser url2pkg :
Voici le fichier Makefile que nous obtenons :
Sur la base de ce Makefile, nous faisons quelques modifications :
Comme vous pouvez le voir, c’est assez similaire à ce que nous avons fait les fois précédentes. Cependant, il y a une petite nouveauté à l’avant dernière ligne : nous avons inclus le fichier “go-module.mk” évoqué plus haut.
On peut maintenant récupérer les sources et mettre à jour le distinfo :
Pour la gestion des modules Go utilisés par md2man, pkgsrc va s’occuper de tout. Il suffit de créer la liste des modules nécessaires :
Maintenant que le fichier go-modules.mk est généré, il ne reste plus qu’à l’inclure dans notre Makefile :
Le reste de la démarche doit maintenant commencer à vous être familier. On met à jour le fichier DESCR, puis on utilise les commandes habituelles :
Et c’est une victoire \o/
On compare ?
Puisque md2man était déjà packagé dans l’arbre pkgsrc, nous allons pouvoir comparer notre travail et celui d’un packageur expérimenté.
Voici notre Makefile :
Et voici celui du package situé dans /usr/pkgsrc/textproc/go-md2man :
Il y a tout de même un gros gros air de ressemblance non ????
Conclusion
Voilà qui termine cet arc sur pkgsrc, et iMil nous propose déjà d’autres aventures mais j’avoue que je commence à beaucoup apprécier pkgsrc et sa logique. Parce que voilà : TOUT y est beau, logique et cohérent. Et ça, je kiffe.
Je continuerai bien sûr à retranscrire mes notes sur ses vidéos ici, alors je vous dis à très bientôt !