Vous êtes sur le wiki de développement du projet SLIS

Ceci est une ancienne révision du document !


Pour la version 4.2 de SLIS le packaging est simplifié en se basant sur debhelper 7 et ses fichiers debian/rules minimalistes. Cela nécessite un backport de debhelper mais c'est prendre de l'avance sur son temps et les bénéfices en valent la peine.

Le paquet slis-coffee devrait être un bon exemple, vous pouvez vous en inspirer comme point de départ.

Makefile et debian/rules

De nombreux paquets utilisent à la fois un Makefile et les facilités de debhelper pour installer le contenu du paquet à générer. Pour éviter cette répartition aléatoire, je propose du supprimer les Makefile génériques qui ne font que des install et des cp pour n'utiliser que dh_install, les fichiers à installer doivent donc être listés dans debian/paquet.install. Si certaines opérations doivent être effectués en préalable (comme générer des pages de man avec pod2man), elles seront directement exécutées depuis debian/rules comme dans l'exemple ci-dessous :

rules
#!/usr/bin/make -f
 
%:
        dh $@
 
POD2MAN=pod2man --utf8 --center=slis-coffee --release="SLIS Project"
 
override_dh_auto_build:
        # If you have something to do in the build process, do it here
        $(MAKE) -C po all
        mkdir -p man
        $(POD2MAN) bin/cafetiere >man/cafetiere.1
        $(POD2MAN) bin/kawa >man/kawa.1
 
override_dh_auto_clean:
        # If you have something to do in the clean process, do it here
        $(MAKE) -C po clean
        rm -rf man
 
override_dh_auto_install:
        # If you have something to do in the install process, do it here
        $(MAKE) -C po install DESTDIR=$(CURDIR)/debian/slis-coffee

Les outils debhelper les plus utiles

dh_auto_clean: est appelé pour nettoyer le répertoire de compilation (make clean), dans notre cas cet appel n'a pas lieu, la cible override_dh_auto_install est employée à la place.

dh_auto_build: est appelé pour compiler les sources (make all), dans notre cas cet appel n'a pas lieu, la cible override_dh_auto_build est employée à la place.

dh_installdirs: il va créer les répertoires listés dans debian/paquet.dirs.

dh_auto_install: est appelé pour installer les fichiers (make install), dans notre cas cet appel n'a pas lieu, la cible override_dh_auto_install est employée à la place.

dh_install: il va installer les fichiers et répertoires listés dans debian/paquet.install.

dh_installdocs: il va installer (dans /usr/share/doc/paquet/) les fichiers de documentation listés dans debian/paquet.docs.

dh_installexamples: il va installer (dans /usr/share/doc/paquet/examples/) les fichiers exemples listés dans debian/paquet.examples.

dh_installman: il va installer les pages de manuels listées dans debian/paquet.manpages.

dh_installcron: il va installer les crontabs (debian/paquet.cron.d) et les scripts exécutés par cron (debian/paquet.cron.{daily,weekly,monthly,hourly}).

dh_installdebconf: il va installer les fichiers relatifs au support debconf ainsi que rajouter les dépendances nécessaire.

dh_installinit: il va installer le script de démarrage debian/paquet.init.d et rajouter les bouts de scripts dans le postinst et le preinst pour démarrer/arrêter le service.

dh_installlogrotate: il va installer un extrait de configuration logrotate pour assurer la rotation des logs.

dh_lintian: il va installer les overrides lintian debian/paquet.lintian-overrides.

dh_link: créer les liens symboliques décrits dans debian/paquet.links.

Il est important de noter que ces programmes sont appelés dans un ordre bien défini (on peut le voir dans un log de compilation du paquet); ils ont été énumérés dans l'ordre dans lequel ils sont usuellement employés. Tous ces programmes disposent d'une page de manuel expliquant leur comportement, n'hésitez pas à les consulter pour en savoir un peu plus.

Structure des répertoires

Pour assurer une certaine cohérence dans la structure des différents paquets slis, il est souhaitable d'employer les mêmes noms de répertoires :

  • www: contenu installé dans /usr/share/interfacedu/ (interface web slis-admin)
  • bin: contenu installé dans /usr/bin/ ou /usr/sbin/ (scripts)
  • menu: contenu installé dans /etc/interfacedu/interface/ (menu interface web)
  • services: contenu installé dans /etc/interfacedu/services/ (services gérés par slis-admin)
  • po: fichiers de traduction

QR Code
QR Code devel:packaging (generated for current page)