Projet

Général

Profil

EoleDebianVersioning24 » Historique » Version 4

Daniel Dehennin, 25/07/2012 14:59
Retravaillage de la page

1 1 Daniel Dehennin
h1. Numérotation pour EOLE 2.4
2 1 Daniel Dehennin
3 1 Daniel Dehennin
h2. Introduction
4 1 Daniel Dehennin
5 1 Daniel Dehennin
La mise en place du nouveau système de build permet de choisir la façon dont les paquets sont numérotés.
6 1 Daniel Dehennin
7 4 Daniel Dehennin
h2. Numérotation indépendante des paquets
8 4 Daniel Dehennin
9 4 Daniel Dehennin
La branche @master@ contenant le code d’une application externe sera taguée avec le numéro de version de l’application.
10 4 Daniel Dehennin
11 4 Daniel Dehennin
Par exemple, pour project:tiramisu version @0.1@:
12 4 Daniel Dehennin
13 4 Daniel Dehennin
<pre>
14 4 Daniel Dehennin
# First upstream
15 4 Daniel Dehennin
user:~/src/eole/tiramisu (master)$ git tag -s -m "First development release" release/0.1
16 4 Daniel Dehennin
user:~/src/eole/tiramisu (master)$ git push origin release/0.1
17 4 Daniel Dehennin
18 4 Daniel Dehennin
# First Package
19 4 Daniel Dehennin
user:~/src/eole/tiramisu (master)$ git checkout -b dist/ubuntu/precise/master
20 4 Daniel Dehennin
user:~/src/eole/tiramisu (dist/ubuntu/precise/master)$ <ADD PACKAGING UNDER debian/>
21 4 Daniel Dehennin
user:~/src/eole/tiramisu (dist/ubuntu/precise/master)$ git commit -m "Fist package"
22 4 Daniel Dehennin
23 4 Daniel Dehennin
# New upstream
24 4 Daniel Dehennin
user:~/src/eole/tiramisu (dist/ubuntu/precise/master)$ git checkout master
25 4 Daniel Dehennin
user:~/src/eole/tiramisu (master)$ $EDITOR <some file>
26 4 Daniel Dehennin
user:~/src/eole/tiramisu (master)$ git add <some file>
27 4 Daniel Dehennin
user:~/src/eole/tiramisu (master)$ git commit -m "Update some file"
28 4 Daniel Dehennin
user:~/src/eole/tiramisu (master)$ git tag -s -m "New development version" release/0.2
29 4 Daniel Dehennin
user:~/src/eole/tiramisu (master)$ git push origin release/0.2
30 4 Daniel Dehennin
31 4 Daniel Dehennin
# New package
32 4 Daniel Dehennin
user:~/src/eole/tiramisu (master)$ git checkout -b dist/ubuntu/precise/master
33 4 Daniel Dehennin
user:~/src/eole/tiramisu (dist/ubuntu/precise/master)$ git merge -m "New upstream release" release/0.2
34 4 Daniel Dehennin
</pre>
35 4 Daniel Dehennin
36 4 Daniel Dehennin
Cela produira des paquets numérotés:
37 4 Daniel Dehennin
38 4 Daniel Dehennin
* @0.1-1@: premier paquet de la première version
39 4 Daniel Dehennin
* @0.1-2@: second paquet de la première version qui ne corrige que du packaging ou intègre  des patches pour @upstream@ dans @debian/patches/@
40 4 Daniel Dehennin
* @0.2-1@: premier paquet de la seconde version
41 4 Daniel Dehennin
* @0.2-2@: second paquet de la seconde version qui ne corrige que du packaging ou intègre  des patches pour @upstream@ dans @debian/patches/@
42 4 Daniel Dehennin
43 2 Daniel Dehennin
h2. Numérotation par version de distribution EOLE
44 1 Daniel Dehennin
45 4 Daniel Dehennin
Les paquets sont numérotés en fonction de la distribution EOLE, par exemple, pour EOLE 2.4 : @2.4-<version>@
46 2 Daniel Dehennin
47 1 Daniel Dehennin
<pre>
48 2 Daniel Dehennin
user:~/src/project (master)~$ git describe --abbrev=0 --match=release/*
49 2 Daniel Dehennin
release/2.4
50 2 Daniel Dehennin
# La branche 2.4 passe en mode support afin de commencer la 2.5
51 1 Daniel Dehennin
user:~/src/project (master)~$ git branch 2.4 master
52 2 Daniel Dehennin
53 2 Daniel Dehennin
# On commence la version 2.5, cela nécessite au minimum un commit qui n’est pas sur la branche 2.4
54 2 Daniel Dehennin
user:~/src/project (master)~$ <UN NOUVEAU COMMIT SUR MASTER>
55 2 Daniel Dehennin
user:~/src/project (master)~$ git tag -s -m "Naissance de EOLE 2.5" release/2.5
56 2 Daniel Dehennin
57 2 Daniel Dehennin
# On vérifie
58 1 Daniel Dehennin
user:~/src/project (master)~$ git describe --abbrev=0 --match=release/*
59 1 Daniel Dehennin
release/2.5
60 1 Daniel Dehennin
user:~/src/project (master)~$ git checkout 2.4
61 1 Daniel Dehennin
user:~/src/project (2.4)~$ git describe --abbrev=0 --match=release/*
62 1 Daniel Dehennin
release/2.4
63 1 Daniel Dehennin
</pre>
64 2 Daniel Dehennin
65 4 Daniel Dehennin
Cette numérotation est celle utilisé pour la version 2.3 (qui était imposé à tous les paquets) :
66 4 Daniel Dehennin
* On ne versionne pas la branche master, sauf une fois lors de la mise en place d’une nouvelle distribution ;
67 4 Daniel Dehennin
* Les paquets Debian doivent être au format *@3.0 (natif)@* ;
68 4 Daniel Dehennin
* Lorsque deux distributions sont maintenues en parallèle, on n’utilise que du cherry-picking entre les branches : l’utilisation de la commande @merge@, dans le mauvais sens, apporterait un nouveau tag et donc une nouvelle numérotation :
69 1 Daniel Dehennin
<pre>
70 1 Daniel Dehennin
user:~/src/project (master)~$ git describe --abbrev=0 --match=release/*
71 2 Daniel Dehennin
release/2.4
72 1 Daniel Dehennin
user:~/src/project (master)~$ git branch 2.4 master
73 4 Daniel Dehennin
user:~/src/project (master)~$ <UN NOUVEAU COMMIT SUR MASTER>
74 1 Daniel Dehennin
user:~/src/project (master)~$ git tag -s -m "Naissance de EOLE 2.5" release/2.5
75 1 Daniel Dehennin
user:~/src/project (master)~$ git describe --abbrev=0 --match=release/*
76 1 Daniel Dehennin
release/2.5
77 1 Daniel Dehennin
user:~/src/project (master)~$ git checkout 2.4
78 1 Daniel Dehennin
user:~/src/project (2.4)~$ git describe --abbrev=0 --match=release/*
79 1 Daniel Dehennin
release/2.4
80 1 Daniel Dehennin
user:~/src/project (2.4)~$ git merge master
81 1 Daniel Dehennin
user:~/src/project (2.4)~$ git describe --abbrev=0 --match=release/*
82 2 Daniel Dehennin
release/2.5
83 2 Daniel Dehennin
</pre>
84 2 Daniel Dehennin
85 2 Daniel Dehennin
Cette méthode de numérotation pourrait permettre de numéroter les paquets en fonction des "release redmine":http://dev-eole.ac-dijon.fr/projects/modules-eole/roadmap, il suffirait de créer un nouveau tag sur la branche master avec la version EOLE:
86 2 Daniel Dehennin
87 2 Daniel Dehennin
<pre>
88 2 Daniel Dehennin
user:~/src/project (master)~$ git describe --abbrev=0 --match=release/*
89 2 Daniel Dehennin
release/2.5
90 3 Daniel Dehennin
91 3 Daniel Dehennin
# On commence une nouvelle RC
92 1 Daniel Dehennin
user:~/src/project (master)~$ git checkout -b rc/2.5.1
93 3 Daniel Dehennin
94 3 Daniel Dehennin
# On corrige tous les bugs
95 3 Daniel Dehennin
user:~/src/project (rc/2.5.1)~$ $EDITOR source_file
96 3 Daniel Dehennin
user:~/src/project (rc/2.5.1)~$ git add source_file
97 3 Daniel Dehennin
user:~/src/project (rc/2.5.1)~$ git commit
98 3 Daniel Dehennin
[...]
99 1 Daniel Dehennin
100 1 Daniel Dehennin
# On tag la nouvelle version
101 1 Daniel Dehennin
user:~/src/project (rc/2.5.1)~$ git tag -s -m "Naissance de EOLE 2.5.1" release/2.5.1
102 1 Daniel Dehennin
103 1 Daniel Dehennin
# On intègre à la branche master
104 1 Daniel Dehennin
user:~/src/project (rc/2.5.1)~$ git checkout master
105 1 Daniel Dehennin
user:~/src/project (master)~$ git merge release/2.5.1
106 1 Daniel Dehennin
</pre>
107 1 Daniel Dehennin
108 4 Daniel Dehennin
Cela est configurable par [[EoleDebianPackaging24#Il-est-possible-de-modifier-les-sources-dans-le-packaging-ou-il-n’y-a-pas-de-sources-upstream|branche de packaging]].
109 1 Daniel Dehennin
110 4 Daniel Dehennin
h2. Extraction des versions depuis les tags.
111 1 Daniel Dehennin
112 4 Daniel Dehennin
Il est possible de configurer le format des tags upstream afin d’en extraire un numéro de version, la configuration par défaut de l’utilisateur « @buildd@ » qui consrtuit les paquets source est la suivante :
113 1 Daniel Dehennin
114 1 Daniel Dehennin
<pre>
115 4 Daniel Dehennin
# ~/.gbp.conf
116 4 Daniel Dehennin
# Configuration file for git-buildpackage and friends
117 1 Daniel Dehennin
118 4 Daniel Dehennin
[DEFAULT]
119 4 Daniel Dehennin
# Where I track upstream
120 4 Daniel Dehennin
upstream-branch = master
121 1 Daniel Dehennin
122 4 Daniel Dehennin
# Branch I use to build package
123 4 Daniel Dehennin
debian-branch = debian/build
124 1 Daniel Dehennin
125 4 Daniel Dehennin
# the default tag formats used:
126 4 Daniel Dehennin
upstream-tag = release/%(version)s
127 4 Daniel Dehennin
debian-tag = debian/%(version)s
128 4 Daniel Dehennin
129 4 Daniel Dehennin
# Look for a tag matching the upstream version when creating an orig.tar.gz tarball
130 4 Daniel Dehennin
upstream-tree = tag
131 4 Daniel Dehennin
132 4 Daniel Dehennin
# Build only source package
133 4 Daniel Dehennin
builder = dpkg-buildpackage -nc -d -sa -S -kbuildd@listeseole.ac-dijon.fr
134 4 Daniel Dehennin
135 4 Daniel Dehennin
# Upload to reprepro which spool binary builds to rebuildd
136 4 Daniel Dehennin
postbuild = dput eole $GBP_CHANGES_FILE
137 3 Daniel Dehennin
</pre>
138 3 Daniel Dehennin
139 4 Daniel Dehennin
Il est possible d’écraser ces "paramètres":http://honk.sigxcpu.org/projects/git-buildpackage/manual-html/gbp.man.gbp.conf.html par branche de packaging en créant un fichier @debian/gbp.conf@.
140 1 Daniel Dehennin
141 4 Daniel Dehennin
Par exemple, dans le cadre de paquet [[EoleDebianPackaging24#Il-est-possible-de-modifier-les-sources-dans-le-packaging-ou-il-n’y-a-pas-de-sources-upstream|natif]], on peut vouloir forcer l’extraction du fichier @orig.tar.gz@ depuis la branche de packaging :
142 4 Daniel Dehennin
143 4 Daniel Dehennin
<pre>
144 4 Daniel Dehennin
# Per debian package configuration
145 4 Daniel Dehennin
# It is just used to override defaults upstream tag format
146 4 Daniel Dehennin
147 4 Daniel Dehennin
[DEFAULT]
148 4 Daniel Dehennin
# specific tag format
149 4 Daniel Dehennin
upstream-tag = upstream/%(version)s
150 4 Daniel Dehennin
151 4 Daniel Dehennin
# Extract orig.tar.gz from a branch
152 4 Daniel Dehennin
upstream-tree = branch
153 4 Daniel Dehennin
154 4 Daniel Dehennin
# Force the use of the same branch
155 4 Daniel Dehennin
# The orig.tar.gz will contain the packaging which is valid only for native package
156 4 Daniel Dehennin
upstream-branch = mycustom-build-branch
157 4 Daniel Dehennin
debian-branch = mycustom-build-branch
158 4 Daniel Dehennin
</pre>