Projet

Général

Profil

EoleDebianPackaging24 » Historique » Version 15

Benjamin Bohard, 25/07/2012 09:06
corrections orthographiques

1 1 Daniel Dehennin
{{toc}}
2 1 Daniel Dehennin
3 1 Daniel Dehennin
h1. Debian packaging pour EOLE 2.4
4 1 Daniel Dehennin
5 1 Daniel Dehennin
h2. Introduction
6 1 Daniel Dehennin
7 1 Daniel Dehennin
Nous ne décrirons pas ici comment créer un paquet debian, mais
8 1 Daniel Dehennin
quelques règles utiles lors de la création d’un paquet debian pour
9 1 Daniel Dehennin
EOLE.
10 1 Daniel Dehennin
11 1 Daniel Dehennin
La principale cible de cette documentation est le packaging pour Ubuntu Precise Pangolin.
12 1 Daniel Dehennin
13 12 Daniel Dehennin
h2. debian/changelog
14 12 Daniel Dehennin
15 12 Daniel Dehennin
La grande nouveauté du système de build pour EOLE 2.4 est l’absence de fichier @debian/changelog@ dans la branche de packaging.
16 12 Daniel Dehennin
17 15 Benjamin Bohard
Ce dernier n’est créé et mis à jour que par le système de build lui-même et n’est jamais directement accessible aux développeurs/packageurs.
18 12 Daniel Dehennin
19 12 Daniel Dehennin
Cela impose quelques restrictions (qui n’en sont pas vraiment ;-)) :
20 12 Daniel Dehennin
21 12 Daniel Dehennin
# Le premier paquet généré ne peut pas connaître son numéro de version par @debian/changelog@, il faut donc utiliser les mécanismes de "git-buildpackage":http://honk.sigxcpu.org/projects/git-buildpackage/manual-html/gbp.man.git.dch.html et se reposer sur l’utilisation de "tag":http://gitimmersion.fr/lab_13.html pour déclarer les versions @upstream@
22 12 Daniel Dehennin
# Tout packaging de nouvelle modification de code source @upstream@ nécessite un tag
23 12 Daniel Dehennin
24 15 Benjamin Bohard
Le moyen mnémotechnique pour s’en souvenir est de connaître la forme d’un "numéro de paquet Debian":http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Version:
25 12 Daniel Dehennin
26 12 Daniel Dehennin
<pre>
27 12 Daniel Dehennin
<UPSTREAM VERSION>-<DEBIAN PACKAGE RELEASE>
28 12 Daniel Dehennin
</pre>
29 12 Daniel Dehennin
30 12 Daniel Dehennin
* Toute modification du code nécessite une modification de la partie *@<UPSTREAM VERSION>@* ;
31 12 Daniel Dehennin
* Toute modification sur la branche de packaging qui n’implique aucun @merge@ de la branche @upstream@ (@master@ chez EOLE), modifie la partie *@<DEBIAN PACKAGE RELEASE>@*.
32 12 Daniel Dehennin
33 12 Daniel Dehennin
En français on pourrait le décrire par: on publie la version *@<DEBIAN PACKAGE RELEASE>@* du paquet debian de la version *@<UPSTREAM VERSION>@* du logiciel.
34 12 Daniel Dehennin
35 5 Daniel Dehennin
h2. debian/control
36 1 Daniel Dehennin
37 1 Daniel Dehennin
<pre>
38 1 Daniel Dehennin
Source: <package>
39 9 Daniel Dehennin
Section: <(admin|web|metapackages|...)>
40 1 Daniel Dehennin
Priority: optional
41 1 Daniel Dehennin
Maintainer: Équipe Eole <eole@ac-dijon.fr>
42 1 Daniel Dehennin
Build-Depends: debhelper (>= 9)
43 1 Daniel Dehennin
Standards-Version: 3.9.3
44 2 Daniel Dehennin
Homepage: http://eole.orion.education.fr/diff/
45 2 Daniel Dehennin
Vcs-Git: http://dev-eole.ac-dijon.fr/git/<package>
46 2 Daniel Dehennin
Vcs-Browser: http://dev-eole.ac-dijon.fr/projects/<package>/repository
47 1 Daniel Dehennin
48 1 Daniel Dehennin
Package: <package>
49 1 Daniel Dehennin
Architecture: all
50 1 Daniel Dehennin
Depends: ${misc:Depends}
51 1 Daniel Dehennin
Description: <MAX 72 CHARS>
52 1 Daniel Dehennin
 <DESCRIPTION>
53 1 Daniel Dehennin
 .
54 3 Benjamin Bohard
 <PARAGRAPHE SEPARATED BY DOT>
55 1 Daniel Dehennin
56 1 Daniel Dehennin
Package: <package>-doc
57 1 Daniel Dehennin
Architecture: all
58 1 Daniel Dehennin
Description: <MAX 72 CHARS>
59 1 Daniel Dehennin
 <DESCRIPTION>
60 1 Daniel Dehennin
 .
61 4 Benjamin Bohard
 <PARAGRAPHE SEPARATED BY DOT>
62 1 Daniel Dehennin
63 1 Daniel Dehennin
Package: <package>-tests
64 1 Daniel Dehennin
Architecture: all
65 1 Daniel Dehennin
Depends: <package>
66 1 Daniel Dehennin
Description: <MAX 72 CHARS>
67 1 Daniel Dehennin
 <DESCRIPTION>
68 1 Daniel Dehennin
 .
69 4 Benjamin Bohard
 <PARAGRAPHE SEPARATED BY DOT>
70 1 Daniel Dehennin
</pre>
71 1 Daniel Dehennin
72 1 Daniel Dehennin
h3. Paquets sources et binaires python
73 1 Daniel Dehennin
74 1 Daniel Dehennin
Il faut ajouter :
75 1 Daniel Dehennin
76 1 Daniel Dehennin
* @Build-Depends@ du paquet source: @python-all-dev@ 
77 1 Daniel Dehennin
* @Depends@ du/des paquet(s) binaire(s): @${python:Depends}@
78 1 Daniel Dehennin
79 5 Daniel Dehennin
h2. debian/rules
80 1 Daniel Dehennin
81 1 Daniel Dehennin
h3. Pour tous
82 1 Daniel Dehennin
83 1 Daniel Dehennin
<pre>
84 1 Daniel Dehennin
#!/usr/bin/make -f
85 1 Daniel Dehennin
# -*- makefile -*-
86 1 Daniel Dehennin
# Sample debian/rules that uses debhelper.
87 1 Daniel Dehennin
# This file was originally written by Joey Hess and Craig Small.
88 1 Daniel Dehennin
# As a special exception, when this file is copied by dh-make into a
89 1 Daniel Dehennin
# dh-make output file, you may use that output file without restriction.
90 1 Daniel Dehennin
# This special exception was added by Craig Small in version 0.37 of dh-make.
91 1 Daniel Dehennin
92 1 Daniel Dehennin
# Uncomment this to turn on verbose mode.
93 1 Daniel Dehennin
#export DH_VERBOSE=1
94 1 Daniel Dehennin
95 1 Daniel Dehennin
%:
96 1 Daniel Dehennin
	dh $@
97 1 Daniel Dehennin
</pre>
98 1 Daniel Dehennin
99 1 Daniel Dehennin
h3. Pour paquet python
100 1 Daniel Dehennin
101 1 Daniel Dehennin
<pre>
102 1 Daniel Dehennin
#!/usr/bin/make -f
103 1 Daniel Dehennin
# -*- makefile -*-
104 1 Daniel Dehennin
# Sample debian/rules that uses debhelper.
105 1 Daniel Dehennin
# This file was originally written by Joey Hess and Craig Small.
106 1 Daniel Dehennin
# As a special exception, when this file is copied by dh-make into a
107 1 Daniel Dehennin
# dh-make output file, you may use that output file without restriction.
108 1 Daniel Dehennin
# This special exception was added by Craig Small in version 0.37 of dh-make.
109 1 Daniel Dehennin
110 1 Daniel Dehennin
# Uncomment this to turn on verbose mode.
111 1 Daniel Dehennin
#export DH_VERBOSE=1
112 1 Daniel Dehennin
113 1 Daniel Dehennin
%:
114 5 Daniel Dehennin
	dh $@ --with python2
115 1 Daniel Dehennin
</pre>
116 1 Daniel Dehennin
117 1 Daniel Dehennin
h2. debian/compat
118 1 Daniel Dehennin
119 1 Daniel Dehennin
<pre>
120 1 Daniel Dehennin
9
121 11 Daniel Dehennin
</pre>
122 7 Daniel Dehennin
123 8 Daniel Dehennin
h2. debian/source/format
124 10 Benjamin Bohard
125 15 Benjamin Bohard
La valeur de ce paramètre découle des réponses à ces trois questions :
126 1 Daniel Dehennin
127 1 Daniel Dehennin
# Qui a la responsabilité de l’incrémentation du numéro de version ;
128 1 Daniel Dehennin
# Est-il permis que la branche dite @upstream@ (chez EOLE, la branche @master@) soit vide ;
129 1 Daniel Dehennin
# Est-il possible qu’entre deux paquets debian, il y ait des modifications de fichiers en dehors du répertoire @debian/@ sans nouveau tag de version @upstream@.
130 1 Daniel Dehennin
131 12 Daniel Dehennin
h3. Il est interdit de modifier les sources dans le packaging
132 1 Daniel Dehennin
133 12 Daniel Dehennin
L’idée est de dire que le paquet debian ne peut pas contenir de modification du code source (tout ce qui est en dehors du répertoire @debian/@), sans qu’il y ait eu un nouveau numéro de version par les développeurs.
134 1 Daniel Dehennin
135 12 Daniel Dehennin
Dans notre cas, un tag nommé @release/%(version)s@, qui engendrera un paquet Debian avec des numéros de version comme suit :
136 1 Daniel Dehennin
137 1 Daniel Dehennin
* @%(version)s-1@ pour le premier build ;
138 14 Daniel Dehennin
* @%(version)s-2@ pour le second build qui ne doit corriger que des erreurs de packaging ou avoir un patch pour upstream dans @debian/patches@ ;
139 14 Daniel Dehennin
* @%(version)s-3@ pour le troisième build qui ne doit corriger que des erreurs de packaging ou avoir un patch pour upstream dans @debian/patches@ ;
140 1 Daniel Dehennin
141 1 Daniel Dehennin
<pre>
142 1 Daniel Dehennin
3.0 (quilt)
143 1 Daniel Dehennin
</pre>
144 1 Daniel Dehennin
145 15 Benjamin Bohard
h3. Il est possible de modifier les sources dans le packaging ou il n’y a pas de sources upstream
146 1 Daniel Dehennin
147 6 Benjamin Bohard
Les modifications de code source sont autorisées sur la branche de packaging sans nouveau tag upstream.
148 1 Daniel Dehennin
La branche upstream peut-être complètement vide (cas des métapaquets de dépendances @*-pkg@)
149 1 Daniel Dehennin
150 1 Daniel Dehennin
<pre>
151 1 Daniel Dehennin
3.0 (native)
152 1 Daniel Dehennin
</pre>
153 1 Daniel Dehennin
154 5 Daniel Dehennin
h2. debian/copyright
155 1 Daniel Dehennin
156 1 Daniel Dehennin
<pre>
157 1 Daniel Dehennin
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
158 1 Daniel Dehennin
Upstream-Name: <package
159 1 Daniel Dehennin
Source: <UPSTREAM URL>
160 1 Daniel Dehennin
161 1 Daniel Dehennin
Files: *
162 1 Daniel Dehennin
Copyright: <YEAR1>,<YEAR2>,<YEAR3> <UPSTREAM AUTHOR NAME> <UPSTREAM AUTHOR EMAIL>
163 1 Daniel Dehennin
Copyright: <YEAR1>,<YEAR2>,<YEAR3> <UPSTREAM AUTHOR NAME> <UPSTREAM AUTHOR EMAIL>
164 1 Daniel Dehennin
License: GPL-3+
165 1 Daniel Dehennin
166 1 Daniel Dehennin
Files: debian/*
167 1 Daniel Dehennin
Copyright: <YEAR1>,<YEAR2>,<YEAR3> Équipe EOLE <eole@ac-dijon.fr>
168 1 Daniel Dehennin
License: GPL-3+
169 1 Daniel Dehennin
170 1 Daniel Dehennin
License: GPL-3+
171 1 Daniel Dehennin
 This program is free software: you can redistribute it and/or modify
172 1 Daniel Dehennin
 it under the terms of the GNU General Public License as published by
173 1 Daniel Dehennin
 the Free Software Foundation, either version 3 of the License, or
174 1 Daniel Dehennin
 (at your option) any later version.
175 1 Daniel Dehennin
 .
176 1 Daniel Dehennin
 This package is distributed in the hope that it will be useful,
177 1 Daniel Dehennin
 but WITHOUT ANY WARRANTY; without even the implied warranty of
178 1 Daniel Dehennin
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
179 1 Daniel Dehennin
 GNU General Public License for more details.
180 1 Daniel Dehennin
 .
181 1 Daniel Dehennin
 You should have received a copy of the GNU General Public License
182 1 Daniel Dehennin
 along with this program. If not, see <http://www.gnu.org/licenses/>.
183 1 Daniel Dehennin
 .
184 1 Daniel Dehennin
 On Debian systems, the complete text of the GNU General
185 1 Daniel Dehennin
 Public License version 3 can be found in "/usr/share/common-licenses/GPL-3".
186 1 Daniel Dehennin
</pre>