Projet

Général

Profil

GitPackaging » Historique » Version 26

Daniel Dehennin, 07/02/2012 14:46
Plan pour les différentes étapes d’un paquet

1 6 Daniel Dehennin
{{toc}}
2 6 Daniel Dehennin
3 26 Daniel Dehennin
h1. Séparation du code et du packaging
4 17 Daniel Dehennin
5 17 Daniel Dehennin
Cela facilite le travail de tout le monde, aussi bien des développeurs que des packageurs.
6 1 Daniel Dehennin
7 1 Daniel Dehennin
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":http://fr.wikipedia.org/wiki/Liste_des_versions_d%27Ubuntu#Ubuntu_12.04_LTS_.28Precise_Pangolin.29
8 17 Daniel Dehennin
9 26 Daniel Dehennin
Le principe de base est le suivant :
10 26 Daniel Dehennin
* 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":http://fr.wikipedia.org/wiki/Deb, sont et doivent être modifiés dans la branche @dist/<VENDOR>/<DISTRIBUTION>/master@
11 26 Daniel Dehennin
* 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.
12 1 Daniel Dehennin
13 26 Daniel Dehennin
Le workflow de base est le suivant:
14 26 Daniel Dehennin
# Je code dans une branche personnelle, par exemple @dad/mise-au-propre-du-makefile@
15 26 Daniel Dehennin
# Je teste, cela va de soi ;-)
16 26 Daniel Dehennin
# Je [[GitBonnesPratiques#Publication-du-développement|publie dans la branche publique]]
17 26 Daniel Dehennin
# J’intègre ces modifications à la branche de packaging afin de compiler un nouveau paquet
18 1 Daniel Dehennin
19 26 Daniel Dehennin
h2. Le développement dans @master@
20 1 Daniel Dehennin
21 26 Daniel Dehennin
Les développeurs gèrent cette branche [[GitBonnesPratiques|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.
22 1 Daniel Dehennin
23 26 Daniel Dehennin
h2. Le packaging dans @dist/<VENDOR>/<DISTRIBUTION>/master@
24 26 Daniel Dehennin
25 26 Daniel Dehennin
Le packaging se compose de deux partie :
26 26 Daniel Dehennin
# Le code dit « upstream »
27 26 Daniel Dehennin
# Le code permettant de « faire le paquet », c’est à dire le contenu du répertoire @debian/@ pour les "paquets deb":http://fr.wikipedia.org/wiki/Deb.
28 26 Daniel Dehennin
29 26 Daniel Dehennin
h3. Un paquet deb, pour la première fois
30 26 Daniel Dehennin
31 26 Daniel Dehennin
*TODO: description de dh_make*
32 26 Daniel Dehennin
33 26 Daniel Dehennin
h3. Modification du packaging
34 26 Daniel Dehennin
35 26 Daniel Dehennin
La modification du packaging ne requiert pas grand chose par rapport à la création d’un nouveau paquet:
36 26 Daniel Dehennin
# On se place dans la branche de packaging voulu
37 26 Daniel Dehennin
# On modifie les fichiers dans le répertoire @debian/@ en fonction des besoins
38 26 Daniel Dehennin
# On publie ces modifications
39 26 Daniel Dehennin
# On compile un paquet, ou pas
40 26 Daniel Dehennin
41 26 Daniel Dehennin
h3. Nouveau paquet, sans modification du packaging
42 26 Daniel Dehennin
43 20 Daniel Dehennin
Afin de faire un paquet, il faut intégrer la branche de développement souhaitée, par exemple:
44 20 Daniel Dehennin
45 20 Daniel Dehennin
# On passe sur la branche de packaging :
46 20 Daniel Dehennin
  <pre>buildd@build:~/src/eole-debsums(master)$ git checkout dist/ubuntu/lucid/master</pre>
47 1 Daniel Dehennin
# On intègre les modifications faites par les autres (et eolepack) :
48 1 Daniel Dehennin
  <pre>buildd@build:~/src/eole-debsums(dist/ubuntu/lucid/master)$ git pull</pre>
49 20 Daniel Dehennin
# On intègre nos modifications :
50 21 Daniel Dehennin
  <pre>buildd@build:~/src/eole-debsums(dist/ubuntu/lucid/master)$ git merge master</pre>
51 20 Daniel Dehennin
# On envoi sur le dépôt central pour eolepack :
52 20 Daniel Dehennin
  <pre>buildd@build:~/src/eole-debsums(dist/ubuntu/lucid/master)$ git push</pre>
53 20 Daniel Dehennin
# On se replace sur la branche de développement pour nos futures modifications
54 18 Daniel Dehennin
  <pre>buildd@build:~/src/eole-debsums(dist/ubuntu/lucid/master)$ git checkout master</pre>
55 26 Daniel Dehennin
# On compile un nouveau paquet, ou pas
56 17 Daniel Dehennin
57 26 Daniel Dehennin
NB: La branche par défaut dans eolepack est modifiée pour être @dist/ubuntu/lucid/master@.
58 24 Daniel Dehennin
59 23 Daniel Dehennin
h4. Aide à la console (aka helper bash)
60 23 Daniel Dehennin
61 22 Daniel Dehennin
Un petit script @bash@ (attachment: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:
62 22 Daniel Dehennin
63 1 Daniel Dehennin
<pre>
64 22 Daniel Dehennin
buildd@build:~/src/eole-debsums(master)$ git package lucid
65 1 Daniel Dehennin
Do you want to merge 'master' into 'dist/ubuntu/lucid/master'?: y
66 25 Daniel Dehennin
Checkout 'lucid' master distribution branch 'dist/ubuntu/lucid/master': Switched to branch 'dist/ubuntu/lucid/master'
67 25 Daniel Dehennin
Pull from default remote: Already up-to-date.
68 25 Daniel Dehennin
Merge developpement from 'master': Already up-to-date.
69 25 Daniel Dehennin
Switch back to your developpement branch 'master'... Switched to branch 'master'
70 22 Daniel Dehennin
Push is not automatically done to avoid publishing possible errors.
71 22 Daniel Dehennin
buildd@build:~/src/eole-debsums(master)$ 
72 22 Daniel Dehennin
</pre>
73 22 Daniel Dehennin
74 26 Daniel Dehennin
h1. Environnement de compilation personnel
75 2 Daniel Dehennin
76 2 Daniel Dehennin
Il existe plusieurs outils afin de mettre en place des environnements de compilation personnels.
77 15 Daniel Dehennin
78 2 Daniel Dehennin
L’outil utilisé dans le projet "Debian":http://www.debian.org se nomme "sbuild":http://wiki.debian.org/sbuild.
79 1 Daniel Dehennin
80 17 Daniel Dehennin
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.
81 2 Daniel Dehennin
82 1 Daniel Dehennin
Cela permet de lancer des compilations en parallèles au besoin.
83 2 Daniel Dehennin
84 17 Daniel Dehennin
Deux méthodes sont utilisables pour la mise en place des snapshots :
85 14 Daniel Dehennin
86 14 Daniel Dehennin
* [[eole:GitPackagingSbuildLVM|avec LVM]]
87 1 Daniel Dehennin
* [[eole:GitPackagingSbuildBtrfs|avec le système de fichier btrfs]]
88 14 Daniel Dehennin
89 14 Daniel Dehennin
90 17 Daniel Dehennin
Lorsque les schroots sont en place et sbuild configuré, la compilation d’un paquet peut se dérouler comme suit :
91 14 Daniel Dehennin
92 14 Daniel Dehennin
<pre>
93 3 Daniel Dehennin
buildd@build:~/src$ sudo apt-get install git-core git-buildpackage fakeroot build-essential debhelper cdbs
94 16 Daniel Dehennin
buildd@build:~/src$ git clone http://dev-eole.ac-dijon.fr/git/eole-debsums
95 16 Daniel Dehennin
buildd@build:~/src$ cd eole-debsums
96 16 Daniel Dehennin
buildd@build:~/src/eole-debsums$ git checkout -b dist/ubuntu/lucid/build origin/dist/ubuntu/lucid/master
97 16 Daniel Dehennin
buildd@build:~/src/eole-debsums$ git buildpackage --git-builder="sbuild -A -d eole-2.3-dev" --git-cleaner=/bin/true
98 16 Daniel Dehennin
</pre>
99 16 Daniel Dehennin
100 16 Daniel Dehennin
Ou si on souhaite minimiser les paquets à installer:
101 16 Daniel Dehennin
102 16 Daniel Dehennin
<pre>
103 16 Daniel Dehennin
buildd@build:~/src$ sudo apt-get install git-core git-buildpackage dpkg-dev
104 16 Daniel Dehennin
buildd@build:~/src$ git clone http://dev-eole.ac-dijon.fr/git/eole-debsums
105 16 Daniel Dehennin
buildd@build:~/src$ cd eole-debsums
106 16 Daniel Dehennin
buildd@build:~/src/eole-debsums$ git checkout -b dist/ubuntu/lucid/build origin/dist/ubuntu/lucid/master
107 16 Daniel Dehennin
buildd@build:~/src/eole-debsums$ git buildpackage --git-builder="dpkg-buildpackage -nc -d -S" --git-cleaner=/bin/true
108 16 Daniel Dehennin
buildd@build:~/src/eole-debsums$ sbuild -A -d eole-2.3-dev ../eole-debsums_20111207-eole1.dsc
109 16 Daniel Dehennin
</pre>
110 16 Daniel Dehennin
111 13 Daniel Dehennin
h1. Webographie
112 7 Daniel Dehennin
113 11 Daniel Dehennin
* "PackagingGuide/Python":https://wiki.ubuntu.com/PackagingGuide/Python