Nous voici donc de retour pour le 5ème épisode de cette série consacrée à NetBSD, avec un second article relatif au packaging d’applications dans pkgsrc. Si vous avez suivi les aventures d’iMil ou de nico sur GCU, vous avez peut-être, comme moi, appris l’existence de Fabric, un outil d’automatisation de déploiement écrit en Python.
Le hasard faisant bien les choses - surtout quand on lui demande gentiment - iMil s'est fendu dans le précédent opus de notre revue préférée d'un article d'introduction sur l'utilisation dudit outil.
Curieux, j'ai eu envie de tester. Mais je n'avais aucune envie de semer le dawa dans mon ${PREFIX}, et je souhaitais surtout pouvoir désinstaller et réinstaller proprement Fabric de mon système. Il fallait donc packager proprement Fabric pour pkgsrc. C'est là tout le sujet de cet article.
1. Démarrage
Le démarrage est très classique, nous l'avons vu la dernière fois ( http://www.unixgarden.com/index.php/administration-systeme/netbsd-s01e04-construire-ses-paquets-pour-pkgsrc ). On exécutera donc la commande :
|
|
$ url2pkg http://code.fabfile.org/projects/fabric/files/Fabric-0.9.0.tar.gz |
pour créer la trame de notre package :
|
|
guigui@starbuck [~/work/netbsd-cvs/pkgsrc/mystuff/fabric] % ls DESCR Makefile PLIST distinfo |
Le fichier qui va consacrer toute notre attention est le Makefile :
|
|
# NetBSD$ # DISTNAME= Fabric-0.9.0 CATEGORIES= mystuff MASTER_SITES= http://code.fabfile.org/projects/fabric/files/ MAINTAINER= INSERT_YOUR_MAIL_ADDRESS_HERE HOMEPAGE= http://code.fabfile.org/projects/fabric/files/ |
|
|
COMMENT= TODO: Short description of the package #LICENSE= # TODO: (see mk/license.mk) PKG_DESTDIR_SUPPORT= user-destdir # url2pkg-marker (please do not remove this line.) .include "../../mk/bsd.pkg.mk" |
Il convient de le compléter, ainsi que le fichier de DESCRiption du package, qui ne peut pas rester vide. On peut ensuite lancer une première fois la compilation pour mesurer " l'étendue des dégâts ".
Note
Je sais, c'est pas la dernière version. Mais nous verrons la mise à jour vers la dernière version plus loin dans l'article.
2. Premiers ajustements...
... et premier dilemme.
Sous NetBSD, les paquets de modules Python sont préfixés de 5 caractères, de la forme, par exemple, py25- si l'application ou le module a été construit avec la version 2.5 de l'interpréteur Python. La première version du Makefile comportait donc la directive suivante :
|
|
PKGNAME=${PYPREFIX}-fabric-0.9.0 |
Le contenu de la variable PYPREFIX étant automatiquement remplacé par la version de l'interpréteur utilisée pour la compilation de l'application. Ceci ne s'applique toutefois pas pour les applications. J'ai donc finalement décidé de fixer le nom du package à la valeur fabric-0.9.0, grâce à la directive suivante :
|
|
PKGNAME= ${DISTNAME:S/F/f/} |
L'instruction S:/F/f/ est la syntaxe make ( http://netbsd.gw.com/cgi-bin/man-cgi?make++NetBSD-5.1 ) pour transformer le F majuscule en f minuscule.
On renseigne la ou les catégorie(s) (CATEGORIES) correspondant à notre outil (j'avais initialement choisi www, pour changer pour sysutils et net après réflexion), ainsi que le site (MASTER_SITES) à partir duquel on peut télécharger le code. On renseigne aussi le MAINTAINER (moi-même), la HOMEPAGE, un commentaire d'une ligne précisant ce que fait cet outil, ainsi que la licence. Les licences disponibles et utilisables dans pkgsrc sont regroupées dans le répertoire ${PKGSRCDIR}/mk/licenses.
Dans le cas de Fabric, la licence est assez simple :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
% cat work/Fabric-0.9.0/LICENSE Copyright (c) 2009, Christian Vest Hansen and Jeffrey E. Forcier All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
Licence facilement reconnaissable : il s'agit d'une licence BSD Ã 2 clauses. On renseignera donc la directive LICENSE ainsi :
À ce stade, le Makefile ressemble à ça :
|
|
# $NetBSD$ # DISTNAME= Fabric-0.9.0 PKGNAME= ${DISTNAME:S/F/f/} CATEGORIES= sysutils net MASTER_SITES= http://code.fabfile.org/projects/fabric/files/ MAINTAINER= gls@NetBSD.org HOMEPAGE= http://code.fabfile.org/projects/fabric/files/ COMMENT= Simple Pythonic remote deployment tool LICENSE= 2-clause-bsd |
|
|
PKG_DESTDIR_SUPPORT= user-destdir # url2pkg-marker (please do not remove this line.) .include "../../mk/bsd.pkg.mk" |