Projet

Général

Profil

GitPackaging » Historique » Version 28

« Précédent - Version 28/45 (diff) - Suivant » - Version actuelle
Daniel Dehennin, 07/02/2012 14:57
On fait l’alias global


Séparation du code et du packaging

Cela facilite le travail de tout le monde, aussi bien des développeurs que des packageurs.

De plus, il est ainsi plus facile de fournir le même code pour plusieurs distributions différentes, cela sera utile notamment lors du portage des applications sur Precise Pangolin

Le principe de base est le suivant :
  • Tout ce qui est du ressort du packaging, c’est à dire tous les fichiers présents dans le répertoire debian/ pour les paquets deb, sont et doivent être modifiés dans la branche dist/<VENDOR>/<DISTRIBUTION>/master
  • Tout le reste, c’est à dire le code, par exemple les dictionnaires, templates, scripts, agents zéphir, sont dans la branche publique adéquat, c’est a dire master pour le code en développement, 2.2 pour le code spécifique à la version 2.2 d’EOLE.
Le workflow de base est le suivant:
  1. Je code dans une branche personnelle, par exemple dad/mise-au-propre-du-makefile
  2. Je teste, cela va de soi ;-)
  3. Je publie dans la branche publique
  4. J’intègre ces modifications à la branche de packaging afin de compiler un nouveau paquet

Le développement dans master

Les développeurs gèrent cette branche comme bon leur semble, ils ne seront pas gênés par le packaging, en particulier les changements sur debian/changelog à chaque compilation de paquet.

Le packaging dans dist/<VENDOR>/<DISTRIBUTION>/master

Le packaging se compose de deux partie :
  1. Le code dit « upstream »
  2. Le code permettant de « faire le paquet », c’est à dire le contenu du répertoire debian/ pour les paquets deb.

Un paquet deb, pour la première fois

TODO: description de dh_make

Modification du packaging

La modification du packaging ne requiert pas grand chose par rapport à la création d’un nouveau paquet:
  1. On se place dans la branche de packaging voulu
  2. On modifie les fichiers dans le répertoire debian/ en fonction des besoins
  3. On publie ces modifications
  4. On compile un paquet, ou pas

Nouveau paquet, sans modification du packaging

Afin de faire un paquet, il faut intégrer la branche de développement souhaitée, par exemple:

  1. On passe sur la branche de packaging :
    buildd@build:~/src/eole-debsums(master)$ git checkout dist/ubuntu/lucid/master
  2. On intègre les modifications faites par les autres (et eolepack) :
    buildd@build:~/src/eole-debsums(dist/ubuntu/lucid/master)$ git pull
  3. On intègre nos modifications :
    buildd@build:~/src/eole-debsums(dist/ubuntu/lucid/master)$ git merge master
  4. On envoi sur le dépôt central pour eolepack :
    buildd@build:~/src/eole-debsums(dist/ubuntu/lucid/master)$ git push
  5. On se replace sur la branche de développement pour nos futures modifications
    buildd@build:~/src/eole-debsums(dist/ubuntu/lucid/master)$ git checkout master
  6. On compile un nouveau paquet, ou pas

NB: La branche par défaut dans eolepack est modifiée pour être dist/ubuntu/lucid/master.

Aide à la console (aka helper bash)

Un petit script bash (git-package) peut-être utilisé afin d’automatiser la procédure, il suffit de le mettre dans un répertoire du PATH, comme /usr/local/bin et il sera pris automatiquement en compte par git:

buildd@build:~/src/eole-debsums(master)$ git package lucid
Do you want to merge 'master' into 'dist/ubuntu/lucid/master'?: y
Checkout 'lucid' master distribution branch 'dist/ubuntu/lucid/master': Switched to branch 'dist/ubuntu/lucid/master'
Pull from default remote: Already up-to-date.
Merge developpement from 'master': Already up-to-date.
Switch back to your developpement branch 'master'... Switched to branch 'master'
Push is not automatically done to avoid publishing possible errors.
buildd@build:~/src/eole-debsums(master)$ 

Et comme c’est connu que les informaticiens sont fainéants (enfin seulement les bons ;-)), il est possible de saisir encore moins de caractères en se faisant un alias dans git (pas nécessaire de le faire dans le shell):

buildd@build:~/src/eole-debsums(master)$ git config --global alias.lucid 'package lucid'

Ensuite, il n’y a plus qu’a l’utiliser:

buildd@build:~/src/eole-debsums(master)$ git lucid
Do you want to merge 'master' into 'dist/ubuntu/lucid/master'?: y
Checkout 'lucid' master distribution branch 'dist/ubuntu/lucid/master': Switched to branch 'dist/ubuntu/lucid/master'
Pull from default remote: Already up-to-date.
Merge developpement from 'master': Already up-to-date.
Switch back to your developpement branch 'master'... Switched to branch 'master'
Push is not automatically done to avoid publishing possible errors.
buildd@build:~/src/eole-debsums(master)$ 

Environnement de compilation personnel

Il existe plusieurs outils afin de mettre en place des environnements de compilation personnels.

L’outil utilisé dans le projet Debian se nomme sbuild.

Ce système peut se reposer sur un système de snapshot : on installe un système de base, propre, et la compilation se fait dans un snapshot temporaire de ce système.

Cela permet de lancer des compilations en parallèles au besoin.

Deux méthodes sont utilisables pour la mise en place des snapshots :

Lorsque les schroots sont en place et sbuild configuré, la compilation d’un paquet peut se dérouler comme suit :

buildd@build:~/src$ sudo apt-get install git-core git-buildpackage fakeroot build-essential debhelper cdbs
buildd@build:~/src$ git clone http://dev-eole.ac-dijon.fr/git/eole-debsums
buildd@build:~/src$ cd eole-debsums
buildd@build:~/src/eole-debsums$ git checkout -b dist/ubuntu/lucid/build origin/dist/ubuntu/lucid/master
buildd@build:~/src/eole-debsums$ git buildpackage --git-builder="sbuild -A -d eole-2.3-dev" --git-cleaner=/bin/true

Ou si on souhaite minimiser les paquets à installer:

buildd@build:~/src$ sudo apt-get install git-core git-buildpackage dpkg-dev
buildd@build:~/src$ git clone http://dev-eole.ac-dijon.fr/git/eole-debsums
buildd@build:~/src$ cd eole-debsums
buildd@build:~/src/eole-debsums$ git checkout -b dist/ubuntu/lucid/build origin/dist/ubuntu/lucid/master
buildd@build:~/src/eole-debsums$ git buildpackage --git-builder="dpkg-buildpackage -nc -d -S" --git-cleaner=/bin/true
buildd@build:~/src/eole-debsums$ sbuild -A -d eole-2.3-dev ../eole-debsums_20111207-eole1.dsc

Webographie

git-package - Fusion du développement dans une branche de packaging (4,25 ko) Daniel Dehennin, 14/03/2012 15:35