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

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
        mkdir -p man
        for bin in bin/*; do \
            $(POD2MAN) $$bin >man/$$(basename $$bin).1; \
        done
 
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_clean 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 et le fichier debian/copyright.

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.

Note: debhelper devrait être employé avec le mode de compatibilité le plus récent, à savoir "7". Cette version est documentée dans debian/compat.

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/www/ (interface web slis-admin) sauf pour les répertoires ci dessous
  • www/libs: librairies PHP aussi bien pour l'interface que pour php-cli, installés dans /usr/share/php/Slis/
  • www/javascript: librairies javascript du module, installées dans /usr/share/javascript/Slis/
  • smarty: contenu installé dans /usr/share/interfacedu/smarty/templates/
  • bin: contenu installé dans /usr/bin/ ou /usr/sbin/ (scripts)
  • menu: contenu installé dans /usr/share/interfacedu/menu/ (menu interface web)
  • services: contenu installé dans /etc/interfacedu/services/ (services gérés par slis-admin)
  • po: fichiers de traduction
  • install: contenu installé dans /usr/share/interfacedu/install/
  • sql: contenu installé dans /usr/share/interfacedu/postgres/

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