GitPackaging » Historique » Version 28
Daniel Dehennin, 07/02/2012 14:57
On fait l’alias global
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 | 27 | Daniel Dehennin | 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): |
75 | 27 | Daniel Dehennin | <pre> |
76 | 28 | Daniel Dehennin | buildd@build:~/src/eole-debsums(master)$ git config --global alias.lucid 'package lucid' |
77 | 27 | Daniel Dehennin | </pre> |
78 | 27 | Daniel Dehennin | |
79 | 27 | Daniel Dehennin | Ensuite, il n’y a plus qu’a l’utiliser: |
80 | 27 | Daniel Dehennin | <pre> |
81 | 27 | Daniel Dehennin | buildd@build:~/src/eole-debsums(master)$ git lucid |
82 | 27 | Daniel Dehennin | Do you want to merge 'master' into 'dist/ubuntu/lucid/master'?: y |
83 | 27 | Daniel Dehennin | Checkout 'lucid' master distribution branch 'dist/ubuntu/lucid/master': Switched to branch 'dist/ubuntu/lucid/master' |
84 | 27 | Daniel Dehennin | Pull from default remote: Already up-to-date. |
85 | 27 | Daniel Dehennin | Merge developpement from 'master': Already up-to-date. |
86 | 27 | Daniel Dehennin | Switch back to your developpement branch 'master'... Switched to branch 'master' |
87 | 27 | Daniel Dehennin | Push is not automatically done to avoid publishing possible errors. |
88 | 27 | Daniel Dehennin | buildd@build:~/src/eole-debsums(master)$ |
89 | 27 | Daniel Dehennin | </pre> |
90 | 27 | Daniel Dehennin | |
91 | 26 | Daniel Dehennin | h1. Environnement de compilation personnel |
92 | 2 | Daniel Dehennin | |
93 | 2 | Daniel Dehennin | Il existe plusieurs outils afin de mettre en place des environnements de compilation personnels. |
94 | 15 | Daniel Dehennin | |
95 | 2 | Daniel Dehennin | L’outil utilisé dans le projet "Debian":http://www.debian.org se nomme "sbuild":http://wiki.debian.org/sbuild. |
96 | 1 | Daniel Dehennin | |
97 | 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. |
98 | 2 | Daniel Dehennin | |
99 | 1 | Daniel Dehennin | Cela permet de lancer des compilations en parallèles au besoin. |
100 | 2 | Daniel Dehennin | |
101 | 17 | Daniel Dehennin | Deux méthodes sont utilisables pour la mise en place des snapshots : |
102 | 14 | Daniel Dehennin | |
103 | 14 | Daniel Dehennin | * [[eole:GitPackagingSbuildLVM|avec LVM]] |
104 | 1 | Daniel Dehennin | * [[eole:GitPackagingSbuildBtrfs|avec le système de fichier btrfs]] |
105 | 14 | Daniel Dehennin | |
106 | 14 | Daniel Dehennin | |
107 | 17 | Daniel Dehennin | Lorsque les schroots sont en place et sbuild configuré, la compilation d’un paquet peut se dérouler comme suit : |
108 | 14 | Daniel Dehennin | |
109 | 14 | Daniel Dehennin | <pre> |
110 | 3 | Daniel Dehennin | buildd@build:~/src$ sudo apt-get install git-core git-buildpackage fakeroot build-essential debhelper cdbs |
111 | 16 | Daniel Dehennin | buildd@build:~/src$ git clone http://dev-eole.ac-dijon.fr/git/eole-debsums |
112 | 16 | Daniel Dehennin | buildd@build:~/src$ cd eole-debsums |
113 | 16 | Daniel Dehennin | buildd@build:~/src/eole-debsums$ git checkout -b dist/ubuntu/lucid/build origin/dist/ubuntu/lucid/master |
114 | 16 | Daniel Dehennin | buildd@build:~/src/eole-debsums$ git buildpackage --git-builder="sbuild -A -d eole-2.3-dev" --git-cleaner=/bin/true |
115 | 16 | Daniel Dehennin | </pre> |
116 | 16 | Daniel Dehennin | |
117 | 16 | Daniel Dehennin | Ou si on souhaite minimiser les paquets à installer: |
118 | 16 | Daniel Dehennin | |
119 | 16 | Daniel Dehennin | <pre> |
120 | 16 | Daniel Dehennin | buildd@build:~/src$ sudo apt-get install git-core git-buildpackage dpkg-dev |
121 | 16 | Daniel Dehennin | buildd@build:~/src$ git clone http://dev-eole.ac-dijon.fr/git/eole-debsums |
122 | 16 | Daniel Dehennin | buildd@build:~/src$ cd eole-debsums |
123 | 16 | Daniel Dehennin | buildd@build:~/src/eole-debsums$ git checkout -b dist/ubuntu/lucid/build origin/dist/ubuntu/lucid/master |
124 | 16 | Daniel Dehennin | buildd@build:~/src/eole-debsums$ git buildpackage --git-builder="dpkg-buildpackage -nc -d -S" --git-cleaner=/bin/true |
125 | 16 | Daniel Dehennin | buildd@build:~/src/eole-debsums$ sbuild -A -d eole-2.3-dev ../eole-debsums_20111207-eole1.dsc |
126 | 16 | Daniel Dehennin | </pre> |
127 | 16 | Daniel Dehennin | |
128 | 13 | Daniel Dehennin | h1. Webographie |
129 | 7 | Daniel Dehennin | |
130 | 11 | Daniel Dehennin | * "PackagingGuide/Python":https://wiki.ubuntu.com/PackagingGuide/Python |