Projet

Général

Profil

PreparationEnvole4 » Historique » Version 11

Daniel Dehennin, 07/02/2015 00:42
Ajout d’un TODO

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