1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
|
<!DOCTYPE HTML PUBLIC "-//FreeBSD//DTD HTML 4.01 Transitional-Based Extension//EN" [
<!ENTITY base CDATA "../..">
<!ENTITY date "$FreeBSD: www/fr/gnome/docs/porting.sgml,v 1.5 2005/10/06 12:56:03 blackend Exp $">
<!ENTITY title "Projet GNOME pour FreeBSD : Comment créer un port">
<!ENTITY % navinclude.developers "INCLUDE">
]>
<!--
The FreeBSD French Documentation Project
Original revision: 1.18
Version francaise : Stephane Legrand <stephane@freebsd-fr.org>
-->
<html>
&header;
<table border="0">
<tr>
<td>
<p>Ce document considère que vous connaissez déjà comment le système des ports fonctionne
et par conséquent ne donne que les trucs et astuces spécifiques à GNOME. Des instructions
plus générales sont disponibles dans le
<a href="http://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/index.html">Manuel du Porteur d'Applications pour FreeBSD</a>.
</p>
<h2>Les macros Makefile pour GNOME</h2>
<p>Pour les ports qui <i>nécessitent</i> GNOME, vous devez définir les variables suivantes
dans le Makefile du port :</p>
<pre>
USE_GNOME= yes
USE_X_PREFIX= yes
</pre>
<p>Cela prendra en charge le préfix d'installation ainsi que les dépendances
indispensables pour GNOME. Si votre port peut utiliser GNOME, mais qu'il
n'est pas requis, vous pouvez définir les variables suivantes dans votre Makefile :</p>
<pre>
WANT_GNOME= yes
</pre>
<p>Si le système des ports détecte que GNOME est installé sur le système
alors les composants GNOME seront compilés. Autres macros utiles en rapport
avec GNOME qui peuvent être utilisées dans le Makefile :</p>
<!-- Begin GNOME-related Makefile macros -->
<ul>
<li><p><tt>USE_GLIB (WANT_GLIB)</tt> : L'application nécessite
(peut utiliser) Glib. Définir <tt>USE_GNOME</tt> ou <tt>USE_GTK</tt>
définit automatiquement cette option.</p></li>
<li><p><tt>USE_GTK (WANT_GTK)</tt> : L'application n'est pas forcément
compatible GNOME mais nécessite GTK+. Cela prendra en charge
ces dépendances. A noter que cette option ne <b>doit pas</b> être définie
si <tt>USE_GNOME</tt> est défini.</p></li>
<li><p><tt>USE_ESOUND (WANT_ESOUND)</tt> : L'application nécessite
(peut utiliser) esound. En temps normal, le support esound est ajouté en spécifiant
<tt>USE_GNOME</tt>.</p></li>
<li><p><tt>USE_IMLIB (WANT_IMLIB)</tt> : L'application nécessite
(peut utiliser) la librairie graphique Imlib. Il n'est pas nécessaire de l'indiquer
si <tt>USE_GNOME</tt> est défini.</p></li>
<li><p><tt>USE_GNOMELIBS (WANT_GNOMELIBS)</tt> : L'application
nécessite (peut utiliser) les librairies GNOME. Cela n'implique pas autant
de dépendances que <tt>USE_GNOME</tt> et doit être utilisé pour
les applications qui utilisent GNOME mais qui n'ont pas besoin du Centre de
Contrôle GNOME, de la librairie capplet ou d'un composant faisant partie
du noyau de GNOME.</p></li>
<li><p><tt>USE_GNOMECTRL (WANT_GNOMECTRL)</tt> : L'application
nécessite (peut utiliser) toutes les librairies GNOME et le Centre de Contrôle
GNOME mais n'utilise aucun composant du noyau de GNOME. Cette option est
habituellement utilisée pour les APIs.</p></li>
</ul>
<p>Si votre port peut en option utiliser GNOME, vous devez utiliser
<tt>WANT_GNOME= yes</tt> dans votre Makefile et vérifier si
<tt>HAVE_GNOME</tt> est positionné. Comme c'est une évaluation
conditionnelle, vous devez le placer entre <tt>bsd.port.pre.mk</tt>
et <tt>bsd.port.post.mk</tt>. Par exemple :</p>
<pre>
WANT_GNOME= yes
.include <bsd.port.pre.mk>
.if defined(HAVE_GNOME)
USE_GNOME= yes
CONFIGURE_ARGS+= --with-gnome
.else
CONFIGURE_ARGS+= --without-gnome
.endif
.include <bsd.port.post.mk>
</pre>
<p><tt>WANT_GNOME</tt> indique au système des ports
de vérifie l'existence de <tt>gnome-config</tt>. S'il
existe, <tt>HAVE_GNOME</tt> est positionné. Sinon, <tt>HAVE_GNOME</tt>
ne l'est pas. En positionnant <tt>USE_GNOME</tt> après la vérification sur
<tt>HAVE_GNOME</tt> le port enregistrera toutes les dépendances
liées à GNOME correctement.</p>
<p>Lors de la création des ports GNOME, rappelez-vous que de nombreuses applications
ont besoin de répertoires partagés dans <tt>${PREFIX}/share/gnome</tt>. Les ports
doivent être construits de telle manière que les fichiers placés dans ces
répertoires soient supprimés avant le paquetage qui a créé les
répertoires (i.e. le paquetage a une instruction <tt>@dirrm</tt>
appropriée dans le fichier pkg-plist). Pour GNOME, le port parent
principal est <tt>gnomecore</tt>. Si votre port inclu
<tt>USE_GNOME= yes</tt>, tout devrait être correct. Si vous n'êtes
pas certain d'avoir besoin d'autres paquetages, vous pouvez utiliser
le script <tt>${PORTSDIR}/Tools/scripts/gnomedepends.py</tt>
afin d'examiner le fichier pkg-plist de votre port :</p>
<pre>
# cd /usr/ports/x11/mygnomeport
# /usr/ports/Tools/scripts/gnomedepends.py
According to the contents of pkg-plist the port depends on the following GNOME
port(s):
/usr/ports/mail/gmail, for directories:
share/gnome/help
share/gnome/apps
share/gnome
/usr/ports/sysutils/gnomecontrolcenter, for directories:
share/gnome/apps/Settings
share/gnome/apps
/usr/ports/textproc/scrollkeeper, for directories:
share/gnome/omf
share/gnome
/usr/ports/x11/gnomecore, for directories:
share/gnome/apps/System
/usr/ports/x11/gnomelibs, for directories:
share/gnome/pixmaps
share/gnome/help
</pre>
<p>Pour voir la liste des paquetages indiqués comme nécessaire par votre port,
utilisez la commande <tt>make package-depends</tt>.</p>
<!-- End GNOME-related Makefile macros -->
<!-- Begine GNOME I18N -->
<h2>Internationalisation de GNOME</h2>
<p>GNOME s'appuie sur le port <tt>gettext</tt> pour
l'internationalisation (I18N). FreeBSD supporte actuellement deux
versions de <tt>gettext</tt> : la 0.10.35 et la 0.11.1. La plupart des ports
peuvent utiliser la 0.11.1. Cependant, si lors de la compilation de votre port, vous avez une
erreur avec les fichiers de traduction .po, vous pouvez avoir besoin d'utiliser
la version plus ancienne de <tt>gettext</tt>.</p>
<p>Pour utiliser cette version plus ancienne de <tt>gettext</tt>, ajoutez les lignes suivantes dans le
Makefile de votre port :</p>
<pre>
BUILD_DEPENDS= msgfmt-old:${PORTSDIR}/devel/gettext-old
CONFIGURE_ENV+= MSGFMT=${LOCALBASE}/bin/msgfmt-old \
XGETTEXT=${LOCALBASE}/bin/xgettext-old
</pre>
<p>Lors de l'installation des applications GNOME, assurez-vous que les fichiers
de traduction sont placés dans <tt>/usr/X11R6/share/locale</tt> et
non pas dans <tt>/usr/X11R6/share/gnome/locale</tt>. Pour ce faire, ajoutez les
lignes suivantes dans la section <tt>pre-patch:</tt> du Makefile de votre port :</p>
<pre>
pre-patch:
@find ${WRKSRC} -name "Makefile.in*" | xargs ${PERL} -pi -e \
's|\$\(datadir\)/gnome/|\$\(datadir\)/|g ; \
s|\$\(datadir\)/locale|\$\(prefix\)/share/locale|g'
</pre>
<p>Assurez-vous également que les fichiers de traduction sont installés avec l'extension .mo et
non pas avec l'extension .gmo. Pour cela, vous pouvez habituellement utiliser ce
<a href="../patches/patch-po::Makefile.in.in">patch</a>.</p>
<!-- End GNOME I18N -->
<!-- Begin GNOME libtool -->
<h2>Problèmes liés à Libtool</h2>
<p>La plupart si ce n'est toutes les applications GNOME dépendent de la libtool de GNU. Elles
utilisent également le système "configure" de GNU. Les dernières versions de libtool ont
un problème la macro <tt>USE_LIBTOOL</tt> de FreeBSD. L'utilisation de cette
macro est déconseillée. A la place, positionnez <tt>GNU_CONFIGURE= yes</tt>,
et utilisez ce <a href="../patches/patch-ltmain.sh">patch</a>.
Il empêche l'installation des fichiers .la, empêche la
compilation et l'installation des librairies statiques au format archive et
permet de s'assurer que l'option -pthread est passé à l'éditeur de lien.</p>
<!-- End GNOME libtool -->
<!-- Begin GNOME distfiles -->
<h2>Fichiers sources</h2>
<p>A mesure que GNOME 2.0 gagne en popularité, nous devons
faire le tri entre les fichiers sources de GNOME 2.0 et ceux de GNOME 1.0 ainsi
que faire notre possible pour conserver un classement correct des fichiers sources dans le répertoire "distfiles". Pour ce faire,
les ports de GNOME 1.0 qui téléchargent leurs fichiers sources depuis le serveur
<tt>${MASTER_SITE_GNOME}</tt> doivent ajouter la ligne suivante
au fichier Makefile :</p>
<pre>
DIST_SUBDIR= gnome
</pre>
<p>Les ports de GNOME 2.0 qui téléchargent leurs fichiers sources depuis le serveur
<tt>${MASTER_SITE_GNOME}</tt> doivent ajouter la ligne suivante
au fichier Makefile :</p>
<pre>
DIST_SUBDIR= gnome2
</pre>
<p>Plusieurs des fichiers sources GNOME sont disponibles aux formats tar gzip et tar bzip2.
Pour économiser du temps de téléchargement sur les lignes à faible débit,
utilisez les fichiers sources bzip2 à chaque fois que possible. Pour cela,
ajoutez la ligne suivante au fichier Makefile du port :</p>
<pre>
USE_BZIP2= yes
</pre>
<!-- End GNOME distfiles -->
<p>Si vous avez malgré tout besoin d'aide pour votre port, prenez exemple sur les
<a href="/ports/gnome.html">ports existant</a>.
La <a href="mailto:&email;@FreeBSD.org">liste de diffusion
freebsd-gnome</a> est également là pour vous aider.</p>
</td>
</tr>
</table>
&footer;
</body>
</html>
|