Projet

Général

Profil

PreparationEnvole4 » Historique » Version 18

Igor GODI, 12/02/2015 11:19

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