Projet

Général

Profil

PreparationEnvole4 » Historique » Version 15

Igor GODI, 12/02/2015 11:01

1 4 Daniel Dehennin
{{toc}}
2 4 Daniel Dehennin
3 11 Daniel Dehennin
h1. TODO
4 11 Daniel Dehennin
5 11 Daniel Dehennin
* Séparer cette documentation en partie ;
6 11 Daniel Dehennin
* Faire une page « point d’entrée » qui pointerait sur deux sous-pages pour les deux cas de figure
7 12 Daniel Dehennin
* Séparer cette page en 4 parties
8 12 Daniel Dehennin
** Préambule commun [[PreparationEnvole4#Installation-de-git-package-par-clonage|Installation de git-package par clonage]]
9 12 Daniel Dehennin
** [[PreparationEnvole4#Migrer-un-projet-EOLE-23-vers-Envole-4|Migrer un projet EOLE 2.3 vers Envole 4]]
10 12 Daniel Dehennin
** [[PreparationEnvole4#Migrer-un-projet-EOLE-24-vers-Envole-4|Migrer un projet EOLE 2.4 vers Envole 4]]
11 12 Daniel Dehennin
** Fin commune
12 12 Daniel Dehennin
*** [[PreparationEnvole4#Préparer-létiquette-de-version-amont-upstream-en-anglais|Préparer l’étiquette de version amont (« upstream » en anglais)]]
13 12 Daniel Dehennin
*** [[PreparationEnvole4#Compiler-un-paquet-Envole|Compiler un paquet Envole]]
14 12 Daniel Dehennin
*** [[PreparationEnvole4#Tester-un-paquet-expérimental|Tester un paquet expérimental]]
15 12 Daniel Dehennin
*** [[PreparationEnvole4#Installer-un-paquet-non-expérimental|Installer un paquet non expérimental]]
16 12 Daniel Dehennin
*** [[PreparationEnvole4#Adaptation-de-lempaquetage|Adaptation de l’empaquetage]]
17 11 Daniel Dehennin
18 1 Arnaud FORNEROT
h1. Preparation Envole 4
19 1 Arnaud FORNEROT
20 10 Daniel Dehennin
*@ATTENTION@* : Les lignes de commandes suivantes sont faites pour fonctionner facilement au copier/coller, cela ne dispense pas de les lire afin d’essayer de comprendre ce qu’elles font.
21 1 Arnaud FORNEROT
22 10 Daniel Dehennin
*@ATTENTION@* : Les commandes de création "d’étiquettes":http://git-scm.com/book/fr/Les-bases-de-Git-Étiquetage (ou _tag_ en anglais) utilisent les signatures "GnuPG":https://fr.wikipedia.org/wiki/GnuPG.
23 10 Daniel Dehennin
Vous devez par conséquent avoir une clef associée à votre adresse de messagerie électronique configurée dans GIT.
24 10 Daniel Dehennin
Vous pouvez utiliser la documentation "OpenPGP Best Practices":https://help.riseup.net/en/security/message-security/openpgp/gpg-best-practices (en anglais)
25 15 Igor GODI
La documentation suivante sur abuledu est en Français et plus abordable : http://docs.abuledu.org/abuledu/mainteneur/creer_une_cle_gpg
26 15 Igor GODI
27 1 Arnaud FORNEROT
<pre>
28 10 Daniel Dehennin
user@work:~$ git config user.email
29 10 Daniel Dehennin
moi@example.net
30 10 Daniel Dehennin
31 10 Daniel Dehennin
user@work:~$ gpg --list-secret-keys $(git config user.email)
32 10 Daniel Dehennin
sec   3072D/0xbiduletrucmachinchose 2012-01-11 [expire : 2022-01-08]
33 10 Daniel Dehennin
 Empreinte de la clef = TRUC BIDU LECH OSE MACH  1CHO UETT ETTR UCMU CH02
34 10 Daniel Dehennin
uid                            Moi Développeur <moi.developpeur@example.net>
35 1 Arnaud FORNEROT
</pre>
36 1 Arnaud FORNEROT
37 10 Daniel Dehennin
Nous stockons des valeurs dans des variables afin de faciliter les manipulations.
38 3 Arnaud FORNEROT
39 10 Daniel Dehennin
* Répertoire où sont stocker les dépôts GIT de l’utilisateur
40 3 Arnaud FORNEROT
<pre>
41 10 Daniel Dehennin
user@work:~$ H_SRC="${HOME}/src"
42 10 Daniel Dehennin
user@work:~$ mkdir -p "${H_SRC}"
43 1 Arnaud FORNEROT
</pre>
44 10 Daniel Dehennin
* Numéro de version du projet Enole
45 1 Arnaud FORNEROT
<pre>
46 10 Daniel Dehennin
user@work:~$ ENVOLE_VERSION=4
47 1 Arnaud FORNEROT
</pre>
48 1 Arnaud FORNEROT
49 1 Arnaud FORNEROT
50 1 Arnaud FORNEROT
51 1 Arnaud FORNEROT
52 10 Daniel Dehennin
53 10 Daniel Dehennin
h2. Installation de project:git-package par clonage
54 10 Daniel Dehennin
55 10 Daniel Dehennin
Les demandes de compilation des paquets se font entièrement par GIT.
56 10 Daniel Dehennin
57 10 Daniel Dehennin
Vous pouvez les faires à la main en créant des "étiquettes":http://git-scm.com/book/fr/Les-bases-de-Git-Étiquetage mais la commande project:git-package permet de simplifier le travail.
58 10 Daniel Dehennin
59 10 Daniel Dehennin
L’installation de l’outil project:git-package par un clone GIT permet de le mettre à jour par un simple _git pull_.
60 10 Daniel Dehennin
61 10 Daniel Dehennin
62 10 Daniel Dehennin
63 10 Daniel Dehennin
h3. Désinstaller le paquet deb s’il est présent
64 10 Daniel Dehennin
65 10 Daniel Dehennin
* Vérifier la présence du paquet
66 1 Arnaud FORNEROT
<pre>
67 10 Daniel Dehennin
user@work:~$ dpkg -l git-package
68 1 Arnaud FORNEROT
</pre>
69 10 Daniel Dehennin
* Le désinstaller s’il est présent.
70 10 Daniel Dehennin
<pre>
71 10 Daniel Dehennin
user@work:~$ sudo apt-get remove git-pakage
72 10 Daniel Dehennin
</pre>
73 1 Arnaud FORNEROT
74 1 Arnaud FORNEROT
75 1 Arnaud FORNEROT
76 10 Daniel Dehennin
h3. Installer project:git-package
77 1 Arnaud FORNEROT
78 10 Daniel Dehennin
*@ATTENTION@* : Utiliser le bon chemin vers le repertoire de stockage du clone de project:git-package
79 1 Arnaud FORNEROT
80 10 Daniel Dehennin
Suivre la documentation [[git-package:|d’installation et configuration]].
81 10 Daniel Dehennin
82 10 Daniel Dehennin
83 10 Daniel Dehennin
84 10 Daniel Dehennin
h3. Paramétrage de project:git-package
85 10 Daniel Dehennin
86 10 Daniel Dehennin
Vous pouvez configurer la liste des distributions qui seront utilisées par le "complètement automatique Bash":https://fr.wikipedia.org/wiki/Compl%C3%A8tement_automatique#Interpr.C3.A9teurs_de_commandes :
87 1 Arnaud FORNEROT
<pre>
88 10 Daniel Dehennin
user@work:~$ git config --global --add package.distribution envole-4/experimental
89 10 Daniel Dehennin
user@work:~$ git config --global --add package.distribution envole-4/unstable
90 10 Daniel Dehennin
user@work:~$ git config --global --add package.distribution eole-2.4/experimental
91 10 Daniel Dehennin
user@work:~$ git config --global --add package.distribution eole-2.4/unstable
92 1 Arnaud FORNEROT
</pre>
93 1 Arnaud FORNEROT
94 10 Daniel Dehennin
En sachant que la commande de compilation utilisera la premiere distribution dans le cas où l'option *@-d|--distrib@* de project:git-package n'est pas spécifiée.
95 10 Daniel Dehennin
96 10 Daniel Dehennin
Pour connaître la distribution par défaut :
97 10 Daniel Dehennin
98 1 Arnaud FORNEROT
<pre>
99 10 Daniel Dehennin
user@work:~$ git config package.distribution || echo eole-2.4/experimental | head -n 1
100 1 Arnaud FORNEROT
</pre>
101 1 Arnaud FORNEROT
102 1 Arnaud FORNEROT
103 1 Arnaud FORNEROT
104 1 Arnaud FORNEROT
105 10 Daniel Dehennin
h2. Migrer un projet EOLE 2.3 vers Envole 4
106 1 Arnaud FORNEROT
107 10 Daniel Dehennin
* Demander à EOLE l'activation du projet pour l’infrastructure de compilation EOLE
108 10 Daniel Dehennin
* Se positionner sur la branche d’empaquetage EOLE 2.3
109 10 Daniel Dehennin
<pre>
110 10 Daniel Dehennin
user@work:~src/etherpad (master=)$ git checkout dist/ubuntu/lucid/master
111 1 Arnaud FORNEROT
112 10 Daniel Dehennin
user@work:~src/etherpad (dist/ubuntu/lucid/master<)$ git pull
113 10 Daniel Dehennin
user@work:~src/etherpad (dist/ubuntu/lucid/master=)$ 
114 10 Daniel Dehennin
</pre>
115 3 Arnaud FORNEROT
116 2 Arnaud FORNEROT
117 10 Daniel Dehennin
118 10 Daniel Dehennin
h3. Créer une étiquette de la dernière compilation de paquet EOLE 2.3
119 10 Daniel Dehennin
120 10 Daniel Dehennin
Cela permet de déclarer le dernier paquet à l’infrastructure de compilation EOLE.
121 10 Daniel Dehennin
122 10 Daniel Dehennin
Le fichier *@debian/changelog@* est mis à jour automatiquement depuis les logs GIT en ce basant sur le paquet précédent, il est donc important d’avoir des messages de commit [[eole:GitBonnesPratiques#De-lécriture-des-ChangeLog|qui ont du sens]].
123 10 Daniel Dehennin
124 10 Daniel Dehennin
125 10 Daniel Dehennin
h4. Déterminer l’étiquette du dernier paquet EOLE 2.3
126 10 Daniel Dehennin
127 10 Daniel Dehennin
* Déterminer le dernier commit de compilation EOLE 2.3
128 1 Arnaud FORNEROT
<pre>
129 10 Daniel Dehennin
user@work:~src/etherpad (dist/ubuntu/lucid/master=)$ git rev-list --oneline --no-merges -F --grep '## Nouveau paquet' --max-count 1 dist/ubuntu/lucid/master
130 10 Daniel Dehennin
b6f847f8859db1c77355f51300052bb95d4f202b ## Nouveau paquet compilé par afornerot : eole-etherpad (1.4.1-eole3~20.gbpfb4d64) eole-2.3-proposed depuis dist/ubuntu/lucid/master
131 10 Daniel Dehennin
132 10 Daniel Dehennin
user@work:~src/etherpad (dist/ubuntu/lucid/master=)$ LAST_23_PKG_COMMIT=$(git rev-list --no-merges -F --grep '## Nouveau paquet' --max-count 1 dist/ubuntu/lucid/master)
133 10 Daniel Dehennin
134 10 Daniel Dehennin
user@work:~src/etherpad (dist/ubuntu/lucid/master=)$ LAST_23_PKG_MESSAGE=$(git log --no-walk --oneline ${LAST_23_PKG_COMMIT})
135 1 Arnaud FORNEROT
</pre>
136 10 Daniel Dehennin
* Extraire la version du paquet EOLE 2.3
137 10 Daniel Dehennin
<pre>
138 10 Daniel Dehennin
user@work:~src/etherpad (dist/ubuntu/lucid/master=)$ echo ${LAST_23_PKG_MESSAGE} | sed -E -e 's,[^(]+\(([^)]+).*,\1,'
139 10 Daniel Dehennin
1.4.1-eole3~20.gbpfb4d64
140 1 Arnaud FORNEROT
141 10 Daniel Dehennin
user@work:~src/etherpad (dist/ubuntu/lucid/master=)$ VERSION_23=$(echo ${LAST_23_PKG_MESSAGE} | sed -E -e 's,[^(]+\(([^)]+).*,\1,')
142 10 Daniel Dehennin
</pre>
143 10 Daniel Dehennin
* Définir l’étiquette du dernier paquet EOLE 2.3 (les "tildes":https://fr.wiktionary.org/wiki/tilde#Nom_commun (*@~@*) sont remplacés par des tirets bas (*@_@*))
144 1 Arnaud FORNEROT
<pre>
145 10 Daniel Dehennin
user@work:~src/etherpad (dist/ubuntu/lucid/master=)$ echo "pkg/envole/envole-4/${VERSION_23}" | sed -e 's,~,_,g'
146 10 Daniel Dehennin
pkg/envole/envole-4/1.4.1-eole3_20.gbpfb4d64
147 10 Daniel Dehennin
148 10 Daniel Dehennin
user@work:~src/etherpad (dist/ubuntu/lucid/master=)$ TAG_23=$(echo "pkg/envole/envole-4/${VERSION_23}" | sed -e 's,~,_,g')
149 1 Arnaud FORNEROT
</pre>
150 1 Arnaud FORNEROT
151 1 Arnaud FORNEROT
152 10 Daniel Dehennin
h4. Créer l’étiquette pour la dernière compilation EOLE 2.3
153 1 Arnaud FORNEROT
154 10 Daniel Dehennin
* Créer l’étiquette
155 1 Arnaud FORNEROT
<pre>
156 10 Daniel Dehennin
user@work:~src/etherpad (dist/ubuntu/lucid/master=)$ git tag -s -m "Debian package version ${VERSION_23}" "${TAG_23}" ${LAST_23_PKG_COMMIT}
157 1 Arnaud FORNEROT
</pre>
158 10 Daniel Dehennin
* Vérifier le contenu de l’étiquette
159 10 Daniel Dehennin
<pre>
160 10 Daniel Dehennin
user@work:~src/etherpad (dist/ubuntu/lucid/master=)$ git show ${TAG_23}
161 10 Daniel Dehennin
</pre>
162 3 Arnaud FORNEROT
163 1 Arnaud FORNEROT
164 10 Daniel Dehennin
h4. Publier l’étiquette pour la dernière compilation EOLE 2.3
165 1 Arnaud FORNEROT
166 10 Daniel Dehennin
<pre>
167 10 Daniel Dehennin
user@work:~src/etherpad (dist/ubuntu/lucid/master=)$ git push $(git config branch.master.remote) ${TAG_23}
168 10 Daniel Dehennin
</pre>
169 3 Arnaud FORNEROT
170 2 Arnaud FORNEROT
171 10 Daniel Dehennin
172 10 Daniel Dehennin
h3. Dupliquer la branche de compilation EOLE 2.3 en branche de compilation Envole 4
173 10 Daniel Dehennin
174 1 Arnaud FORNEROT
<pre>
175 10 Daniel Dehennin
user@work:~src/etherpad (dist/ubuntu/lucid/master=)$ git checkout -b dist/envole/${ENVOLE_VERSION}/master dist/ubuntu/lucid/master
176 10 Daniel Dehennin
177 10 Daniel Dehennin
user@work:~src/etherpad (dist/envole/4/master)$ git push -u $(git config branch.master.remote) dist/envole/${ENVOLE_VERSION}/master
178 10 Daniel Dehennin
user@work:~src/etherpad (dist/envole/4/master=)$ 
179 1 Arnaud FORNEROT
</pre>
180 2 Arnaud FORNEROT
181 1 Arnaud FORNEROT
182 1 Arnaud FORNEROT
183 10 Daniel Dehennin
h3. Supprimer le fichier debian/changelog 
184 10 Daniel Dehennin
185 10 Daniel Dehennin
Le fichier *@debian/changelog@* est [[eole:EoleDebianPackaging24#debianchangelog|géré automatiquement par l’infrastructure de compilation]] :
186 10 Daniel Dehennin
187 1 Arnaud FORNEROT
<pre>
188 10 Daniel Dehennin
user@work:~src/etherpad (dist/envole/4/master=)$ git rm debian/changelog 
189 10 Daniel Dehennin
user@work:~src/etherpad (dist/envole/4/master+)$ git commit -m "Suppression du debian/changelog
190 10 Daniel Dehennin
191 10 Daniel Dehennin
Le fichier debian/changelog est géré automatiquement par
192 10 Daniel Dehennin
l’infrastructure de compilation EOLE."
193 10 Daniel Dehennin
194 10 Daniel Dehennin
user@work:~src/etherpad (dist/envole/4/master>)$
195 10 Daniel Dehennin
</pre>
196 10 Daniel Dehennin
197 10 Daniel Dehennin
198 10 Daniel Dehennin
199 10 Daniel Dehennin
h3. Créer le fichier debian/gbp.conf
200 10 Daniel Dehennin
201 10 Daniel Dehennin
Ce fichier permet à l’infrastructure de compilation EOLE de suivre les modifications sur le fichier *@debian/changelog@*
202 10 Daniel Dehennin
203 10 Daniel Dehennin
<pre>
204 10 Daniel Dehennin
user@work:~src/etherpad (dist/envole/4/master>)$ cat >| debian/gbp.conf <<EOF
205 1 Arnaud FORNEROT
# Set per distribution debian tag
206 1 Arnaud FORNEROT
[DEFAULT]
207 1 Arnaud FORNEROT
debian-tag = debian/envole/4/%(version)s
208 1 Arnaud FORNEROT
EOF
209 8 Daniel Dehennin
210 10 Daniel Dehennin
user@work:~src/etherpad (dist/envole/4/master%>)$ git add debian/gbp.conf
211 10 Daniel Dehennin
user@work:~src/etherpad (dist/envole/4/master+>)$ 
212 1 Arnaud FORNEROT
</pre>
213 1 Arnaud FORNEROT
214 1 Arnaud FORNEROT
215 1 Arnaud FORNEROT
216 10 Daniel Dehennin
h3. Passer le projet en paquet natif
217 1 Arnaud FORNEROT
218 10 Daniel Dehennin
Pour la gestion des [[eole:EoleDebianPackaging24#debiansourceformat|numéros de version]] de paquet:
219 10 Daniel Dehennin
220 8 Daniel Dehennin
<pre>
221 10 Daniel Dehennin
user@work:~src/etherpad (dist/envole/4/master+>)$ mkdir -p debian/source
222 10 Daniel Dehennin
user@work:~src/etherpad (dist/envole/4/master+>)$ cat >| debian/source/format <<EOF
223 1 Arnaud FORNEROT
3.0 (native)
224 1 Arnaud FORNEROT
EOF
225 1 Arnaud FORNEROT
226 10 Daniel Dehennin
user@work:~src/etherpad (dist/envole/4/master*+>)$ git add debian/source/format
227 10 Daniel Dehennin
user@work:~src/etherpad (dist/envole/4/master+>)$ 
228 1 Arnaud FORNEROT
</pre>
229 8 Daniel Dehennin
230 8 Daniel Dehennin
231 1 Arnaud FORNEROT
232 10 Daniel Dehennin
h3. Valider les changements d’empaquetage
233 1 Arnaud FORNEROT
234 1 Arnaud FORNEROT
<pre>
235 10 Daniel Dehennin
user@work:~src/etherpad (dist/envole/4/master+>)$ git commit -m "Configuration pour l’infrastructure de compilation EOLE
236 8 Daniel Dehennin
237 10 Daniel Dehennin
* debian/changelog: Suppression, il est géré automatiquement par
238 10 Daniel Dehennin
  l’infrastructure de compilation EOLE
239 1 Arnaud FORNEROT
240 10 Daniel Dehennin
* debian/gbp.conf: Définition du format des étiquettes de compilation
241 10 Daniel Dehennin
  pour Envole.
242 8 Daniel Dehennin
243 10 Daniel Dehennin
* debian/source/format: Utilisation du format « 3.0 (native) »"
244 1 Arnaud FORNEROT
245 10 Daniel Dehennin
user@work:~src/etherpad (dist/envole/4/master>)$ git push -u $(git branch.master.remote) dist/envole/4/master
246 10 Daniel Dehennin
user@work:~src/etherpad (dist/envole/4/master=)$ 
247 1 Arnaud FORNEROT
</pre>
248 1 Arnaud FORNEROT
249 10 Daniel Dehennin
h2. Migrer un projet EOLE 2.4 vers Envole 4
250 10 Daniel Dehennin
251 8 Daniel Dehennin
[[MigrationAppliEnvole4#État-des-lieux-application-par-application|La plupart des préparatifs ont déjà été fait]].
252 1 Arnaud FORNEROT
253 1 Arnaud FORNEROT
Il faut migrer certains éléments pour l’utilisation des "dépôts Envole":http://eole.ac-dijon.fr/envole.
254 1 Arnaud FORNEROT
255 8 Daniel Dehennin
*@ATTENTION@* : Assurez-vous que les branches soient bien à jour par rapport aux dépôts sur *@dev-eole.ac-dijon.fr@*.
256 8 Daniel Dehennin
257 1 Arnaud FORNEROT
258 10 Daniel Dehennin
259 10 Daniel Dehennin
h3. Dupliquer la branche de compilation EOLE 2.3 en branche de compilation Envole 4
260 10 Daniel Dehennin
261 1 Arnaud FORNEROT
<pre>
262 10 Daniel Dehennin
user@work:~/src/wordpress (master)$ git checkout -b dist/envole/4/master dist/ubuntu/precise/master
263 8 Daniel Dehennin
264 10 Daniel Dehennin
user@work:~/src/wordpress (dist/envole/4/master)$ git push -u $(git config branch.master.remote) dist/envole/4/master
265 10 Daniel Dehennin
user@work:~/src/wordpress (dist/envole/4/master=)$ 
266 1 Arnaud FORNEROT
</pre>
267 8 Daniel Dehennin
268 8 Daniel Dehennin
269 8 Daniel Dehennin
270 10 Daniel Dehennin
h3. Renommer l’étiquette de la dernière compilation EOLE 2.4
271 1 Arnaud FORNEROT
272 10 Daniel Dehennin
Les "étiquettes":http://git-scm.com/book/fr/Les-bases-de-Git-Étiquetage de la forme *@pkg/*@* sont positionnées sur la branche d’empaquetage afin de pouvoir suivre les demandes de compilation.
273 10 Daniel Dehennin
274 10 Daniel Dehennin
275 10 Daniel Dehennin
h4. Déterminer l’étiquette de la dernière compilation EOLE 2.4
276 1 Arnaud FORNEROT
277 10 Daniel Dehennin
<pre>
278 8 Daniel Dehennin
user@work:~/src/wordpress (dist/envole/4/master=)$ git describe --abbrev=0 dist/ubuntu/precise/master
279 13 Daniel Dehennin
pkg/eole/eole-2.4/3.6.1-eole3-1
280 1 Arnaud FORNEROT
281 1 Arnaud FORNEROT
user@work:~/src/wordpress (dist/envole/4/master=)$ EOLE_TAG=$(git describe --abbrev=0 dist/ubuntu/precise/master)
282 1 Arnaud FORNEROT
</pre>
283 1 Arnaud FORNEROT
284 13 Daniel Dehennin
h4. Extraire la version
285 1 Arnaud FORNEROT
286 13 Daniel Dehennin
<pre>
287 13 Daniel Dehennin
user@work:~/src/wordpress (dist/envole/4/master=)$ echo ${EOLE_TAG##*/}
288 13 Daniel Dehennin
3.6.1-eole3-1
289 13 Daniel Dehennin
290 13 Daniel Dehennin
user@work:~/src/wordpress (dist/envole/4/master=)$ VERSION=${EOLE_TAG##*/}
291 13 Daniel Dehennin
</pre>
292 13 Daniel Dehennin
293 10 Daniel Dehennin
h4. Vérifier le message de l’étiquette
294 1 Arnaud FORNEROT
295 10 Daniel Dehennin
Nous allons réutiliser le message de l’étiquette de la dernière compilation EOLE 2.4, la première ligne non vide doit contenir la chaîne *@New package version@* :
296 10 Daniel Dehennin
297 1 Arnaud FORNEROT
<pre>
298 10 Daniel Dehennin
user@work:~/src/wordpress (dist/envole/4/master=)$ git show -s --format="format:" ${EOLE_TAG} | perl -lane 'print if (/New package version/ .. /^-+BEGIN/) =~ /^\d+$/'
299 10 Daniel Dehennin
Lionel MORIN: New package version 3.6.1-eole3-1 for eole-2.4-unstable.
300 10 Daniel Dehennin
[...]
301 1 Arnaud FORNEROT
302 10 Daniel Dehennin
user@work:~/src/wordpress (dist/envole/4/master=)$ EOLE_MESSAGE=$(git show -s --format="format:" ${EOLE_TAG} | perl -lane 'print if (/New package version/ .. /^-+BEGIN/) =~ /^\d+$/')
303 1 Arnaud FORNEROT
</pre>
304 1 Arnaud FORNEROT
305 8 Daniel Dehennin
306 10 Daniel Dehennin
h4. Dupliquer l’étiquette de la dernière compilation EOLE 2.4 en première étiquette de compilation Envole
307 10 Daniel Dehennin
308 10 Daniel Dehennin
* Créer l’"étiquette":http://git-scm.com/book/fr/Les-bases-de-Git-Étiquetage
309 1 Arnaud FORNEROT
<pre>
310 10 Daniel Dehennin
user@work:~/src/wordpress (dist/envole/4/master=)$ git tag -s -m "${EOLE_MESSAGE}" pkg/envole/envole-4/${VERSION} ${EOLE_TAG}^{}
311 1 Arnaud FORNEROT
</pre>
312 10 Daniel Dehennin
* Vérifier le message de l’"étiquette":http://git-scm.com/book/fr/Les-bases-de-Git-Étiquetage
313 1 Arnaud FORNEROT
<pre>
314 10 Daniel Dehennin
user@work:~/src/wordpress (dist/envole/4/master=)$ git show pkg/envole/envole-4/${VERSION}
315 8 Daniel Dehennin
</pre>
316 8 Daniel Dehennin
317 8 Daniel Dehennin
318 10 Daniel Dehennin
h4. Pousser la nouvelle étiquette 
319 10 Daniel Dehennin
320 1 Arnaud FORNEROT
<pre>
321 10 Daniel Dehennin
user@work:~/src/wordpress (dist/envole/4/master=)$ git push $(git config branch.master.remote) pkg/envole/envole-4/${VERSION}
322 1 Arnaud FORNEROT
</pre>
323 1 Arnaud FORNEROT
324 1 Arnaud FORNEROT
325 1 Arnaud FORNEROT
326 10 Daniel Dehennin
h3. Renommé l’étiquette du dernier paquet EOLE 2.4
327 1 Arnaud FORNEROT
328 10 Daniel Dehennin
Une étiquette de la forme *@debian/*@* est créé par l’infrastructure de compilation de paquet afin de gérer automatiquement le fichier *@debian/changelog@*.
329 10 Daniel Dehennin
330 10 Daniel Dehennin
331 10 Daniel Dehennin
h4. Déterminer l’étiquette du dernier paquet EOLE 2.4
332 10 Daniel Dehennin
333 1 Arnaud FORNEROT
<pre>
334 10 Daniel Dehennin
user@work:~/src/wordpress (dist/envole/4/master=)$ awk -F'=' '/^debian-tag/ {print $2}' debian/gbp.conf | sed -e "s,%(version)s,${VERSION},"
335 1 Arnaud FORNEROT
 debian/eole/2.4/3.6.1-eole3-1
336 1 Arnaud FORNEROT
337 10 Daniel Dehennin
user@work:~/src/wordpress (dist/envole/4/master=)$ EOLE_DEB_TAG=$(echo $(awk -F'=' '/^debian-tag/ {print $2}' debian/gbp.conf | sed -e "s,%(version)s,${VERSION},"))
338 1 Arnaud FORNEROT
</pre>
339 1 Arnaud FORNEROT
340 1 Arnaud FORNEROT
341 10 Daniel Dehennin
h4. Récupérer l’étiquette du dernier paquet EOLE 2.4
342 1 Arnaud FORNEROT
343 10 Daniel Dehennin
Les "étiquettes":http://git-scm.com/book/fr/Les-bases-de-Git-Étiquetage de la forme *@debian/*@* ne pointe sur aucune branche, ils ne sont utilisés que par l’infrastructure de compilation de paquet et ne sont donc que sur les dépôts *@dev-eole.ac-dijon.fr@*.
344 6 Daniel Dehennin
345 10 Daniel Dehennin
Pour récupérer la dernière "étiquette":http://git-scm.com/book/fr/Les-bases-de-Git-Étiquetage de paquet :
346 10 Daniel Dehennin
347 8 Daniel Dehennin
<pre>
348 10 Daniel Dehennin
user@work:~/src/wordpress (dist/envole/4/master=)$ git fetch $(git config branch.master.remote) refs/tags/${EOLE_DEB_TAG}:refs/tags/${EOLE_DEB_TAG}
349 1 Arnaud FORNEROT
</pre>
350 1 Arnaud FORNEROT
351 1 Arnaud FORNEROT
352 10 Daniel Dehennin
h4. Vérifier le message de l’étiquette
353 10 Daniel Dehennin
354 8 Daniel Dehennin
<pre>
355 10 Daniel Dehennin
user@work:~/src/wordpress (dist/envole/4/master=)$ git show -s --format="format:" ${EOLE_DEB_TAG} | perl -lane 'print if (/Debian release/ .. /^-+BEGIN/) =~ /^\d+$/'
356 1 Arnaud FORNEROT
eole-wordpress Debian release 3.6.1-eole3-1
357 1 Arnaud FORNEROT
358 10 Daniel Dehennin
user@work:~/src/wordpress (dist/envole/4/master=)$ DEB_MESSAGE=$(git show -s --format="format:" ${EOLE_DEB_TAG} | perl -lane 'print if (/Debian release/ .. /^-+BEGIN/) =~ /^\d+$/')
359 1 Arnaud FORNEROT
</pre>
360 1 Arnaud FORNEROT
361 1 Arnaud FORNEROT
362 10 Daniel Dehennin
h4. Dupliquer l’étiquette du dernier paquet EOLE 2.4 en première étiquette de paquet Envole
363 1 Arnaud FORNEROT
364 1 Arnaud FORNEROT
<pre>
365 10 Daniel Dehennin
user@work:~/src/wordpress (dist/envole/4/master=)$ git tag -s -m "${DEB_MESSAGE}" debian/envole/4/${VERSION} ${EOLE_DEB_TAG}^{}
366 1 Arnaud FORNEROT
</pre>
367 1 Arnaud FORNEROT
368 1 Arnaud FORNEROT
On vérifie le message
369 1 Arnaud FORNEROT
370 1 Arnaud FORNEROT
<pre>
371 10 Daniel Dehennin
user@work:~/src/wordpress (dist/envole/4/master)$ git show debian/envole/4/${VERSION}
372 1 Arnaud FORNEROT
</pre>
373 1 Arnaud FORNEROT
374 1 Arnaud FORNEROT
375 10 Daniel Dehennin
h4. Pousser la nouvelle étiquette
376 1 Arnaud FORNEROT
377 1 Arnaud FORNEROT
<pre>
378 10 Daniel Dehennin
user@work:~/src/wordpress (dist/envole/4/master=)$ git push $(git config branch.master.remote) debian/envole/4/${VERSION}
379 1 Arnaud FORNEROT
</pre>
380 8 Daniel Dehennin
381 8 Daniel Dehennin
382 10 Daniel Dehennin
383 10 Daniel Dehennin
h3. Passer le projet en paquet natif
384 10 Daniel Dehennin
385 10 Daniel Dehennin
Pour la gestion des [[eole:EoleDebianPackaging24#debiansourceformat|numéros de version]] de paquet:
386 10 Daniel Dehennin
387 10 Daniel Dehennin
<pre>
388 10 Daniel Dehennin
user@work:~src/wordpress (dist/envole/4/master=)$ mkdir -p debian/source
389 10 Daniel Dehennin
user@work:~src/wordpress (dist/envole/4/master=)$ cat >| debian/source/format <<EOF
390 10 Daniel Dehennin
3.0 (native)
391 10 Daniel Dehennin
EOF
392 10 Daniel Dehennin
393 10 Daniel Dehennin
user@work:~src/etherpad (dist/envole/4/master*=)$ git add debian/source/format
394 10 Daniel Dehennin
user@work:~src/etherpad (dist/envole/4/master+=)$ 
395 10 Daniel Dehennin
</pre>
396 10 Daniel Dehennin
397 10 Daniel Dehennin
398 10 Daniel Dehennin
399 1 Arnaud FORNEROT
h3. Modifier la configuration git-buildpackage
400 1 Arnaud FORNEROT
401 10 Daniel Dehennin
Il faut modifier modifier le fichier de configuration *@debian/gbp.conf@* afin de modifier le format des "étiquettes":http://git-scm.com/book/fr/Les-bases-de-Git-Étiquetage de suivi des compilations:
402 1 Arnaud FORNEROT
403 1 Arnaud FORNEROT
<pre>
404 10 Daniel Dehennin
user@work:~/src/wordpress (dist/envole/4/master+=)$ sed -i -e 's,^debian-tag.*,debian-tag = debian/envole/4/%(version)s,' debian/gbp.conf
405 10 Daniel Dehennin
user@work:~/src/wordpress (dist/envole/4/master*+=)$ git add debian/gbp.conf
406 10 Daniel Dehennin
user@work:~/src/wordpress (dist/envole/4/master+=)$ git commit -m "Configuration pour l’infrastructure de compilation EOLE
407 10 Daniel Dehennin
408 10 Daniel Dehennin
* debian/gbp.conf: Définition du format des étiquettes de compilation
409 1 Arnaud FORNEROT
  pour Envole."
410 1 Arnaud FORNEROT
411 1 Arnaud FORNEROT
user@work:~/src/wordpress (dist/envole/4/master>)$ 
412 8 Daniel Dehennin
</pre>
413 8 Daniel Dehennin
414 10 Daniel Dehennin
h2. Préparer l’étiquette de version amont (« upstream » en anglais)
415 8 Daniel Dehennin
416 10 Daniel Dehennin
L’infrastructure de compilation EOLE utilise les "étiquettes":http://git-scm.com/book/fr/Les-bases-de-Git-Étiquetage *@release/*@* pour connaître la version _amont_ et en dériver la verion du paquet.
417 10 Daniel Dehennin
418 10 Daniel Dehennin
Nous prenons l’exemple du paquet project:wordpress mais la procédure est identique pour tous les paquets Envole :
419 10 Daniel Dehennin
420 1 Arnaud FORNEROT
<pre>
421 10 Daniel Dehennin
user@work:~src/wordpress (dist/envole/4/master=)$ git checkout master
422 10 Daniel Dehennin
user@work:~src/wordpress (master=)$ git tag -s -m "New Envole release 4.0" release/4.0 master
423 1 Arnaud FORNEROT
</pre>
424 1 Arnaud FORNEROT
425 14 Arnaud FORNEROT
h1. Compiler un paquet Envole
426 10 Daniel Dehennin
427 10 Daniel Dehennin
Lorsque vous modifier l’empaquetage, il est nécessaire de compiler en premier sur un [[eole:GitPackagingSbuildLVM|environnement de compilation personnel]].
428 10 Daniel Dehennin
429 10 Daniel Dehennin
Vous pouvez avoir une machine virtuelle à disposition
430 10 Daniel Dehennin
431 10 Daniel Dehennin
432 10 Daniel Dehennin
433 10 Daniel Dehennin
h3. Compiler un paquet expérimental
434 10 Daniel Dehennin
435 10 Daniel Dehennin
Si vous avez configuré project:git-package comme [[#Paramétrage-de-git-package|indiqué plus haut]], vous pouvez vous passer de l’option *@-d|--distrib@* pour compiler un paquet pour la distribution
436 10 Daniel Dehennin
*@envole-2.4-experimental@* :
437 10 Daniel Dehennin
438 1 Arnaud FORNEROT
<pre>
439 10 Daniel Dehennin
user@work:~src/wordpress (master=)$ git package --build dist/envole/4/master
440 8 Daniel Dehennin
</pre>
441 1 Arnaud FORNEROT
442 10 Daniel Dehennin
*@NOTE@* : Le dernier argument *@dist/envole/4/master@* est la "référence GIT":http://git-scm.com/book/fr/v1/Les-tripes-de-Git-R%C3%A9f%C3%A9rences-Git, c’est à dire un identifiant de commit (le SHA1),
443 10 Daniel Dehennin
 un nom d’"étiquette":http://git-scm.com/book/fr/Les-bases-de-Git-Étiquetage ou de branche
444 1 Arnaud FORNEROT
445 10 Daniel Dehennin
*@ASTUCE@* : le "complètement automatique Bash":https://fr.wikipedia.org/wiki/Compl%C3%A8tement_automatique#Interpr.C3.A9teurs_de_commandes et l’outil project:git-package permet de ne spécifier que le minimum nécessaire afin de trouver la branche d’empaquetage
446 10 Daniel Dehennin
<pre>
447 10 Daniel Dehennin
user@work:~src/wordpress (master=)$ git package --build envole/4<TABULATION>
448 10 Daniel Dehennin
</pre>
449 8 Daniel Dehennin
450 10 Daniel Dehennin
ou
451 8 Daniel Dehennin
452 8 Daniel Dehennin
<pre>
453 10 Daniel Dehennin
user@work:~src/wordpress (master=)$ git package --build envole/4<ENTER>
454 6 Daniel Dehennin
</pre>
455 6 Daniel Dehennin
456 10 Daniel Dehennin
457 10 Daniel Dehennin
458 10 Daniel Dehennin
h3. Compiler un paquet de développement
459 10 Daniel Dehennin
460 10 Daniel Dehennin
Il s’agit de la même procédure mais en spécifiant la distribution *@envole-4/unstable@* par l’option *@-d|--distrib@* de project:git-package :
461 8 Daniel Dehennin
462 10 Daniel Dehennin
<pre>
463 10 Daniel Dehennin
user@work:~src/wordpress (master=)$ git package --build --distrib envole-4/unstable envole/4
464 1 Arnaud FORNEROT
</pre>
465 10 Daniel Dehennin
466 12 Daniel Dehennin
h2. Tester un paquet expérimental
467 10 Daniel Dehennin
468 1 Arnaud FORNEROT
*@ATTENTION@* : Disponible sur un serveur EOLE à partir de la version 2.4.1 avec le paquet project:eole-web
469 10 Daniel Dehennin
470 12 Daniel Dehennin
Aucun paquet de la distribution *@envole-4-experimental@* ne s’installe automatiquement lors des mises à jour.
471 1 Arnaud FORNEROT
472 12 Daniel Dehennin
Il faut installer manuellement les paquets en spécifiant le numéro de version exacte que l’on souhaite utiliser.
473 12 Daniel Dehennin
474 12 Daniel Dehennin
475 12 Daniel Dehennin
476 10 Daniel Dehennin
h3. Configurer les dépôts de paquets
477 10 Daniel Dehennin
478 10 Daniel Dehennin
479 10 Daniel Dehennin
* Ajouter manuellement le dépôt Envole expérimental (il n’est pas configurable par _Query-Auto_ ou _Maj-Auto_ car il n’est utile que pour les développeurs)
480 3 Arnaud FORNEROT
<pre>
481 1 Arnaud FORNEROT
root@scribe:~# cat >| /etc/apt/sources.list.d/envole-4-experimental.list <<EOF
482 1 Arnaud FORNEROT
deb http://test-eole.ac-dijon.fr/envole envole-4-experimental main
483 10 Daniel Dehennin
EOF
484 3 Arnaud FORNEROT
</pre>
485 1 Arnaud FORNEROT
* Configurer les dépôts standards et prendre en compte le dépôt expérimental
486 10 Daniel Dehennin
<pre>
487 10 Daniel Dehennin
root@scribe:~# Query-Auto -V test-eole.ac-dijon.fr
488 10 Daniel Dehennin
</pre>
489 10 Daniel Dehennin
490 10 Daniel Dehennin
491 10 Daniel Dehennin
492 10 Daniel Dehennin
h3. Déterminer la version du paquet compilé
493 10 Daniel Dehennin
494 10 Daniel Dehennin
495 1 Arnaud FORNEROT
<pre>
496 10 Daniel Dehennin
root@scribe:~# apt-cache policy eole-wordpress
497 10 Daniel Dehennin
apt:
498 10 Daniel Dehennin
  Installé : 3.9.2-eole2~5.gbpb66498
499 10 Daniel Dehennin
  Candidat : 3.9.2-eole2~5.gbpb66498
500 10 Daniel Dehennin
 Table de version :
501 10 Daniel Dehennin
     4.0-1~1.gbpcc1457 0
502 10 Daniel Dehennin
         90 http://eole.ac-dijon.fr/envole envole-4-experimental/main amd64 Packages
503 10 Daniel Dehennin
     3.9.2-eole2~5.gbpb66498 0
504 10 Daniel Dehennin
        500 http://eoleng.ac-dijon.fr/eole eole-2.3-dev/main amd64 Packages
505 10 Daniel Dehennin
 *** 3.9.2-eole2~5.gbpb66498 0
506 10 Daniel Dehennin
        100 /var/lib/dpkg/status
507 1 Arnaud FORNEROT
</pre>
508 3 Arnaud FORNEROT
509 1 Arnaud FORNEROT
510 10 Daniel Dehennin
511 10 Daniel Dehennin
h3. Installer le paquet experimental
512 10 Daniel Dehennin
513 2 Arnaud FORNEROT
<pre>
514 10 Daniel Dehennin
root@scribe:~# apt-get install eole-worpress=4.0-1~1.gbpcc1457 wordpress-apps=4.0-1~1.gbpcc1457
515 1 Arnaud FORNEROT
</pre>
516 2 Arnaud FORNEROT
517 1 Arnaud FORNEROT
518 1 Arnaud FORNEROT
519 10 Daniel Dehennin
520 1 Arnaud FORNEROT
h2. Installer un paquet non expérimental
521 1 Arnaud FORNEROT
522 1 Arnaud FORNEROT
C'est comme d'habitude
523 1 Arnaud FORNEROT
<pre>
524 10 Daniel Dehennin
root@scribe:~# Query-Auto -D -V test-eole.ac-dijon.fr
525 10 Daniel Dehennin
root@scribe:~# apt-eole install eole-wordpress wordpress-apps
526 1 Arnaud FORNEROT
</pre>
527 1 Arnaud FORNEROT
528 1 Arnaud FORNEROT
529 1 Arnaud FORNEROT
530 10 Daniel Dehennin
531 10 Daniel Dehennin
h2. Adaptation de l’empaquetage
532 1 Arnaud FORNEROT
533 1 Arnaud FORNEROT
Suivre les recommandations du wiki suivant
534 1 Arnaud FORNEROT
https://dev-eole.ac-dijon.fr/projects/envole/wiki/MigrationAppliEnvole4