Projet

Général

Profil

PreparationEnvole4 » Historique » Version 14

Arnaud FORNEROT, 10/02/2015 14:30

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