root/traduc/branches/bv803/manuel/cvs.sgml

Revision 23, 28.8 kB (checked in by gleu, 3 years ago)

Mise à jour (version 8.0.4... release n'est toujours pas terminé).

Line 
1 <!--
2 $Header: /var/lib/cvs/pgsql-fr/sgml/cvs.sgml,v 1.6 2005/03/25 21:49:17 guillaume Exp $
3 -->
4
5 <appendix id="cvs">
6  <appendixinfo>
7   <authorgroup>
8    <author>
9     <firstname>Marc</firstname>
10     <surname>Fournier</surname>
11    </author>
12    <author>
13     <firstname>Tom</firstname>
14     <surname>Lane</surname>
15    </author>
16    <author>
17     <firstname>Thomas</firstname>
18     <surname>Lockhart</surname>
19    </author>
20   </authorgroup>
21   <date>1999-05-20</date>
22  </appendixinfo>
23
24  <title>Dépôt <productname>CVS</productname></title>
25
26  <para>
27   Le code source de <productname>PostgreSQL</productname> est stocké et géré en
28   utilisant le système de gestion de codes <productname>CVS</productname>.
29  </para>
30
31  <para>
32   Au moins deux méthodes,
33   CVS anonyme et <productname>CVSup</productname>,
34   permettent d'extraire de <productname>CVS</productname> l'arborescence du
35   code source du serveur <productname>PostgreSQL</productname> vers votre
36   serveur local.
37  </para>
38
39  <sect1 id="anoncvs">
40   <title>Obtenir les sources via <productname>CVS</productname> anonyme</title>
41
42   <para>
43     Si vous voulez mettre régulièrement à jour vos sources, vous pouvez les
44     prendre de notre serveur <productname>CVS</productname>, puis utiliser
45     <productname>CVS</productname> pour récupérer les mises à jour de temps
46     en temps.
47   </para>
48
49   <procedure>
50    <title>CVS anonyme</title>
51
52    <step>
53     <para>
54      Vous aurez besoin d'une copie locale de <productname>CVS</productname>
55      (Concurrent Version Control System), que vous pouvez obtenir depuis
56      <ulink url="http://www.nongnu.org/cvs/">http://www.nongnu.org/cvs/</ulink>
57      (le site officiel avec la dernière version) ou depuis n'importe quel site
58      d'archive GNU (souvent peu à jour). Nous recommandons la version 1.10 ou
59      la version la plus récente. Beaucoup de systèmes ont une version
60      récente de <application>cvs</application> installé par défaut.
61     </para>
62    </step>
63
64    <step>
65     <para>
66      Connectez-vous une première fois au serveur
67      <productname>CVS</productname>&nbsp;:
68
69      <programlisting>
70 cvs -d :pserver:anoncvs@anoncvs.postgresql.org:/projects/cvsroot login
71      </programlisting>
72
73      Un mot de passe vous est demandé. Vous pouvez entrer ce que vous voulez,
74      sauf une chaîne vide.
75     </para>
76
77     <para>
78      Vous n'avez besoin de faire ceci qu'une seule fois car le mot de passe
79      est sauvegardé dans le fichier <literal>.cvspass</literal> de votre répertoire
80      personnel.
81     </para>
82    </step>
83
84    <step>
85     <para>
86      Récupérez les sources de <productname>PostgreSQL</productname>&nbsp;:
87      <programlisting>
88 cvs -z3 -d :pserver:anoncvs@anoncvs.postgresql.org:/projects/cvsroot co -P pgsql
89      </programlisting>
90
91      Ceci installe les sources de <productname>PostgreSQL</productname> dans un
92      sous-répertoire <filename>pgsql</filename> de votre répertoire courant.
93
94      <note>
95       <para>
96        Si vous avez une connexion rapide à Internet, vous n'avez peut-être pas
97        besoin de l'option <option>-z3</option>, qui demande à
98        <productname>CVS</productname> de compresser les données à transférer avec gzip.
99        À la vitesse d'un modem, cela permet un gain de temps substantiel.
100       </para>
101      </note>
102     </para>
103
104     <para>
105      Cette extraction initiale est un peu plus lente que de simplement télécharger
106      un fichier <filename>tar.gz</filename>; attendez vous à ce qu'elle prenne
107      40 minutes environ si vous avez un modem à 28,8&nbsp;Kbps. L'avantage de
108      <productname>CVS</productname> n'apparaîtra que plus tard, lorsque vous voudrez
109      mettre à jour les fichiers.
110     </para>
111    </step>
112
113    <step>
114     <para>
115      Lorsque vous voulez mettre à jour vos sources <productname>CVS</productname>
116      avec la dernière version, faites <command>cd</command> dans le sous-répertoire
117     <filename>pgsql</filename> et lancez la commande
118      <programlisting>
119 $ cvs -z3 update -d -P
120      </programlisting>
121
122      Ceci ne récupère que les modifications qui ont eu lieu depuis la dernière
123      fois que vous avez fait une mise à jour. La mise à jour ne dure généralement
124      que quelques minutes, même avec un simple modem.
125     </para>
126    </step>
127
128    <step>
129     <para>
130      Vous pouvez économiser quelques saisies en vous faisant un fichier
131      <filename>.cvsrc</filename> dans votre répertoire personnel ($HOME) en lui
132      ajoutant&nbsp;:
133      <programlisting>
134 cvs -z3
135 update -d -P
136      </programlisting>
137
138      Ceci ajoute l'option <option>-z3</option> à toutes les commandes cvs, et les options
139      <option>-d</option> et <option>-P</option> aux mises à jour par cvs. Vous n'avez plus
140      qu'à lancer
141      <programlisting>
142 $ cvs update
143      </programlisting>
144
145      pour mettre à jour vos fichiers.
146     </para>
147    </step>
148   </procedure>
149
150   <caution>
151    <para>
152     Certaines versions anciennes de <productname>CVS</productname> ont un
153     problème qui fait que tous les fichiers extraits ont des droits en
154     écriture pour tout le monde. Si vous vous apercevez que cela vous
155     arrive, vous pouvez faire quelque chose comme&nbsp;:
156     <programlisting>
157 $ chmod -R go-w pgsql
158     </programlisting>
159     pour remettre les droits d'aplomb.
160     Ce problème a été corrigé dans la version 1.9.28 de
161     <productname>CVS</productname>.
162    </para>
163   </caution>
164
165   <para>
166    <productname>CVS</productname> peut faire de nombreuses autres
167    choses, comme retrouver des versions antérieures des sources de
168    <productname>PostgreSQL</productname> plutôt que les dernières
169    versions de développement.
170    Pour plus d'informations, consultez le manuel de
171    <productname>CVS</productname> ou bien lisez la documentation en
172    ligne à
173    <ulink url="http://www.nongnu.org/cvs/">http://www.nongnu.org/cvs/</ulink>.
174   </para>
175  </sect1>
176
177  <sect1 id="cvs-tree">
178   <title>Organisation de l'arbre <productname>CVS</productname></title>
179
180   <para>
181    <note>
182     <title>Auteur</title>
183     <para>
184      Écrit par Marc G. Fournier (<email>scrappy@hub.org</email>)
185      le 05/11/1998.
186     </para>
187    </note>
188   </para>
189
190   <para>
191    La commande <command>cvs checkout</command> a un paramètre, <option>-r</option>,
192    qui permet d'obtenir une révision particulière d'un module. Ce
193    paramètre permet par exemple de retrouver les fichiers source de la
194    version 6_4 du module 'tc' à tout moment dans le futur.
195
196    <programlisting>
197 $ cvs checkout -r REL6_4 tc
198    </programlisting>
199    C'est en particulier utile si quelqu'un pense qu'il y a un problème
200    dans cette version, mais que vous ne trouvez pas d'erreur dans
201    la version courante.
202
203    <tip>
204     <para>
205      Vous pouvez aussi extraire un module tel qu'il était à une date
206      donnée en utilisant l'option <option>-D</option>.
207     </para>
208    </tip>
209   </para>
210
211   <para>
212    Lorsque vous marquez plus d'un fichier avec une marque
213    particulière, vous pouvez vous représenter la marque comme
214    <quote>une courbe tracée dans la matrice des noms de fichiers et
215    des numéros de révision</quote>. Supposons que nous ayons 5 fichiers avec
216    les révisions suivantes&nbsp;:
217
218    <programlisting>
219              fichier1 fichier2 fichier3 fichier4 fichier5
220
221              1.1      1.1      1.1      1.1  /---1.1*    &lt;-*-  MARQUE
222              1.2*-    1.2      1.2    --1.2*-
223              1.3  \-- 1.3*-    1.3   /  1.3
224              1.4           \   1.4  /   1.4
225                             \--1.5*-    1.5
226                                1.6
227    </programlisting>
228
229    alors la marque <literal>MARQUE</literal> référence
230    fichier1-1.2, fichier2-1.3, etc.
231
232    <note>
233     <para>
234      Pour créer une branche de version, à part l'option <literal>-b</literal>
235      ajoutée sur la ligne de commande, c'est la même chose.</para>
236     </note>
237   </para>
238
239   <para>
240    Ainsi, pour créer la version 6.4, j'ai fait&nbsp;:
241
242    <programlisting>
243 $ cd pgsql
244 $ cvs tag -b REL6_4
245    </programlisting>
246    ce qui créera la marque et la branche pour l'arbre de la version.
247   </para>
248
249   <para>
250    Pour ceux qui ont un accès <productname>CVS</productname>, il est
251    simple de créer des répertoires séparés pour chaque version.
252    D'abord, créez deux répertoires, VERSION et COURANT, afin de ne
253    pas les mélanger. Puis&nbsp;:
254
255    <programlisting>
256 cd RELEASE
257 cvs checkout -P -r REL6_4 pgsql
258 cd ../CURRENT
259 cvs checkout -P pgsql
260    </programlisting>
261
262    Cela crée deux arbres de répertoires, <filename>VERSION/pgsql</filename> et
263    <filename>COURANT/pgsql</filename>. À partir de ce moment,
264    <productname>CVS</productname> gardera trace de quel arbre de
265    référence est dans quel répertoire, et permettra des mises à jour
266    indépendantes de chaque arbre.
267   </para>
268
269   <para>
270    Si vous ne travaillez <emphasis>que</emphasis> sur l'arbre
271    <literal>CURRENT</literal>, faites tout ce qui est indiqué jusqu'à
272    ce que nous ayons commencé à marquer les branches de versions.
273   </para>
274
275   <para>
276    Après avoir fait l'extraction initiale d'une branche
277
278    <programlisting>
279 $ cvs checkout -r REL6_4
280    </programlisting>
281
282    tout ce que vous faites dans ce répertoire est limité à cette branche.
283    Si vous appliquez une correction à cette structure de répertoires
284    et faites un
285
286    <programlisting>
287 cvs commit
288    </programlisting>
289
290    dans ce répertoire, la correction est appliquée à cette branche et
291    <emphasis>seulement</emphasis> à cette branche.
292   </para>
293  </sect1>
294
295  <sect1 id="cvsup">
296   <title>Obtenir les sources via <productname>CVSup</productname></title>
297
298   <para>
299    Une alternative au CVS anonyme pour obtenir l'arbre source de
300    <productname>PostgreSQL</productname> est
301    <productname>CVSup</productname>.
302    <productname>CVSup</productname> a été développé par John Polstra
303    (<email>jdp@polstra.com</email>) pour distribuer des arbres de
304    référence CVS et d'autres arborescences de fichiers pour le
305    <ulink url="http://www.freebsd.org">projet FreeBSD</ulink>.
306   </para>
307
308   <para>
309    Un des avantages majeurs de <productname>CVSup</productname> est
310    qu'il peut répliquer fiablement la <emphasis>totalité</emphasis>
311    du référentiel CVS sur votre système local, ce qui permet un accès
312    rapide aux opérations CVS comme <option>log</option> ou
313    <option>diff</option>.
314    Autre avantage, la synchronisation efficace avec le serveur
315    <productname>PostgreSQL</productname> grâce à un protocole de flux
316    de transfert qui ne transmet que les différences depuis la
317    dernière mise à jour.
318   </para>
319
320   <sect2>
321    <title>Préparer un système client <productname>CVSup</productname></title>
322
323    <para>
324     Deux groupes de répertoires sont nécessaires à
325     <productname>CVSup</productname>&nbsp;: un répertoire contenant le
326     référentiel <productname>CVS</productname> local (ou simplement
327     un groupe de répertoires si vous ne récupérez qu'un extrait plutôt
328     que le référentiel complet&nbsp;; voir plus loin) et une zone dans
329     laquelle <productname>CVSup</productname> enregistre ses propres
330     données. Ces deux groupes de répertoires peuvent coexister dans la
331     même arborescence.
332    </para>
333
334    <para>
335     Décidez où vous souhaitez garder votre copie locale du référentiel
336     <productname>CVS</productname>. Sur un de nos systèmes, nous
337     avons récemment créé un référentiel dans
338     <filename>/home/cvs/</filename>, mais nous avions jusque là utilisé
339     <filename>/opt/postgres/cvs/</filename> comme arbre de développement
340     pour <productname>PostgreSQL</productname>. Si vous souhaitez
341     placer votre référentiel dans <filename>/home/cvs/</filename>,
342     alors ajoutez
343
344     <programlisting>
345 setenv CVSROOT /home/cvs
346     </programlisting>
347
348     dans votre fichier <filename>.cshrc</filename>, ou une ligne
349     similaire dans votre <filename>.bashrc</filename> ou dans votre
350     <filename>.profile</filename>, en fonction de votre interpréteur
351     de commandes (shell).
352    </para>
353
354    <para>
355     La zone de référentiel de <application>cvs</application> doit
356     être initialisée. Une fois que <envar>CVSROOT</envar> est
357     initialisée, il suffit de faire&nbsp;:
358
359     <programlisting>
360 $ cvs init
361     </programlisting>
362
363     après quoi vous devriez au moins voir un répertoire
364     <filename>CVSROOT</filename> en listant le répertoire
365     <envar>CVSROOT</envar>&nbsp;:
366
367     <programlisting>
368 $ ls $CVSROOT
369 CVSROOT/
370     </programlisting>
371    </para>
372   </sect2>
373
374   <sect2>
375    <title>Utiliser un client <productname>CVSup</productname></title>
376
377    <para>
378     Vérifiez que <application>cvsup</application> est dans votre
379     chemin. Sur la plupart des systèmes, cela se fait en tapant
380
381     <programlisting>
382 which cvsup
383     </programlisting>
384
385     Puis, lancez simplement
386     <application>cvsup</application> en faisant&nbsp;:
387
388     <programlisting>
389 $ cvsup -L 2 <replaceable class="parameter">postgres.cvsup</replaceable>
390     </programlisting>
391
392     où <option>-L 2</option> active certains messages de statut pour
393     vous permettre de suivre le progrès pour la mise à jour et
394     <replaceable class="parameter">postgres.cvsup</replaceable> est
395     la chemin et le nom que vous avez donné à votre fichier de
396     configuration <productname>CVSup</productname>.
397    </para>
398
399    <para>
400     Voici un fichier de configuration <productname>CVSup</productname>
401     modifié pour une installation spécifique, et maintient un
402     référentiel <productname>CVS</productname> local complet.
403
404     <programlisting>
405 # Ce fichier représente le fichier de distribution CVSup standard
406 # pour le projet de SGBDRO <productname>PostgreSQL</>
407 # Modifié par lockart@fourpalms.org 1997-08-28
408 # - Pointe vers mon arborescence de référence locale
409 # - Extrait le référentiel CVS complet, pas seulement la
410 #   dernière version
411 #
412 #Valeurs par défaut qui s'appliquent à toutes les collections
413 *default host=cvsup.postgresql.org
414 *default compress
415 *default release=cvs
416 *default delete use-rel-suffix
417 # Activez la ligne suivante pour récupérer la dernière version
418 #*default tag=.
419 # Activez la ligne suivante récupérer ce qui est précisé en dessus ou
420 # par défaut à la date précisée en dessous
421 #*default date=97.08.29.00.00.00
422
423 # répertoire de base où CVSup stocke ses fichiers 'marque page'
424 # créera un sous répertoire sup/
425 #*default base=/opt/postgres # /usr/local/pgsql
426 *default base=/home/cvs
427
428 # répertoire préfixe où CVSup stocke les distributions.
429 *default prefix=/home/cvs
430
431 # Distribution complète, avec tout ce qui est en dessous
432 pgsql
433
434 # distributions partielles
435 # pgsql-doc
436 # pgsql-perl5
437 # pgsql-src
438
439    </programlisting>
440    </para>
441
442    <para>
443     Si vous indiquez <option>repository</> au lieu de <option>pgsql</> dans la
444     configuration précédente, vous obtiendrez une copie complète du dépôt sur
445     cvsup.postgresql.org, incluant son répertoire <filename>CVSROOT</filename>.
446     Si vous faites cela, vous voudrez probablement exclure ces fichiers du
447     répertoire que vous voulez modifier localement, en utilisant un fichier
448     nommé refuse. Par exemple, pour la configuration précédente, vous auriez
449     pu placer ceci dans <filename>/home/cvs/sup/repository/refuse</>&nbsp;:
450 <programlisting>
451 CVSROOT/config*
452 CVSROOT/commitinfo*
453 CVSROOT/loginfo*
454 </programlisting>
455     Voir les pages man de <productname>CVSup</> pour savoir comment utiliser
456     les fichiers refuse.
457 </para>
458
459    <para>
460     Ce qui suit est une suggestion de fichier de configuration
461     <productname>CVSup</productname> issu du
462     <ulink url="ftp://ftp.postgresql.org/pub/CVSup/README.cvsup">
463     site ftp de <productname>PostgreSQL</></ulink>, qui
464     ne récupère que la version courante&nbsp;:
465
466     <programlisting>
467 # Ce fichier représente la distribution CVSup standard pour le
468 # projet de SGBDRO <productname>PostgreSQL</>.
469 #
470 # Valeurs par défaut qui d'appliquent à toutes les collections.
471 *default host=cvsup.postgresql.org
472 *default compress
473 *default release=cvs
474 *default delete use-rel-suffix
475 *default tag=.
476
477 # répertoire de base où CVSup stocke ses fichiers 'marque page'
478 *default base=<replaceable class="parameter">/usr/local/pgsql</replaceable>
479
480 # répertoire préfixe où CVSup stocke les distributions.
481 *default prefix=<replaceable class="parameter">/usr/local/pgsql</replaceable>
482
483 # Distribution complète, avec tout ce qui est en dessous
484 pgsql
485
486 # distributions partielles
487 # pgsql-doc
488 # pgsql-perl5
489 # pgsql-src
490
491     </programlisting>
492    </para>
493   </sect2>
494
495   <sect2>
496    <title>Installer <productname>CVSup</productname></title>
497
498    <para>
499     <productname>CVSup</productname> est disponible sous forme de
500     fichiers source, de binaires pré-compilés ou de RPM Linux.
501     Il est beaucoup plus simple d'utiliser les binaires plutôt que de
502     compiler les sources, principalement parce que cela nécessite
503     le compilateur Modula-3, qui est très puissant mais volumineux.
504    </para>
505
506    <procedure>
507     <title>Installation de <productname>CVSup</productname> à partir des fichier binaires</title>
508
509     <para>
510      Vous pouvez utiliser les binaires pré-compilés si vous avez une
511      plate-forme pour laquelle les binaires sont postés sur le
512      <ulink url="ftp://ftp.postgresql.org/pub">site ftp de <productname>PostgreSQL</productname></ulink>,
513      vous pouvez ou si avez FreeBSD, pour lequel
514      <productname>CVSup</productname> est disponible comme
515      <quote>portage</quote>.
516
517      <note>
518       <para>
519        <productname>CVSup</productname> a été initialement développé
520        pour distribuer l'arbre des sources de
521        <productname>FreeBSD</productname>. Il est disponible comme
522        <quote>portage</quote>, et pour ceux qui ont FreeBSD, si cela
523        n'explique pas suffisamment comment obtenir et installer CVSup,
524        merci d'ajouter une procédure ici.
525        </para>
526      </note>
527     </para>
528
529     <para>
530      Au moment de l'écriture de ce chapitre, des binaires sont
531      disponibles pour&nbsp;:
532      Alpha/Tru64, ix86/xBSD,
533      HPPA/HP-UX 10.20, MIPS/IRIX,
534      ix86/linux-libc5, ix86/linux-glibc,
535      Sparc/Solaris et Sparc/SunOS.
536     </para>
537
538     <step>
539      <para>
540       Récupérez l'archive tar des binaires
541       <application>cvsup</application>
542       (<application>cvsupd</application> n'est pas nécessaire pour
543        être un client) approprié pour votre plate-forme.
544      </para>
545
546      <substeps>
547       <step performance="optional">
548        <para>
549         Si vous avez FreeBSD, installez le portage
550         <productname>CVSup</productname>.
551        </para>
552       </step>
553
554       <step performance="optional">
555        <para>
556         Si vous avez une autre plate-forme, vérifiez et télécharger le
557         binaire approprié
558         <ulink url="ftp://ftp.postgresql.org/pub">du site ftp <productname>PostgreSQL</productname></ulink>.
559        </para>
560       </step>
561      </substeps>
562     </step>
563
564     <step>
565      <para>
566       Vérifiez dans l'archive tar les contenus et la structure
567       de répertoires. Pour le tar Linux au moins, le binaire statique
568       et la page de manuel sont inclues sans répertoires.
569     </para>
570
571      <substeps>
572       <step>
573        <para>
574         Si le binaire est au plus haut niveau du fichier tar, alors
575         il suffit d'extraire le fichier tar dans le répertoire cible&nbsp;:
576
577         <programlisting>
578 $ cd /usr/local/bin
579 $ tar zxvf /usr/local/src/cvsup-16.0-linux-i386.tar.gz
580 $ mv cvsup.1 ../doc/man/man1/
581         </programlisting>
582        </para>
583       </step>
584
585       <step>
586        <para>
587         S'il y a une structure de répertoires dans le fichier tar,
588         alors extrayez le dans /usr/local/src et déplacez les binaires
589         dans le répertoire approprié, comme indiqué ci-dessus.
590       </para>
591       </step>
592      </substeps>
593     </step>
594
595     <step>
596      <para>
597       Assurez-vous que les nouveaux binaires sont dans votre chemin.
598
599       <programlisting>
600 $ rehash
601 $ which cvsup
602 $ set path=(<replaceable>chemin de cvsup</replaceable> $path)
603 $ which cvsup
604 /usr/local/bin/cvsup
605       </programlisting>
606      </para>
607     </step>
608    </procedure>
609   </sect2>
610
611   <sect2>
612    <title>Installation à partir des sources</title>
613
614    <para>
615     Installer <productname>CVSup</productname> n'est pas entièrement
616     trivial, principalement parce que la plupart des systèmes auront
617     besoin du compilateur Modula-3.
618
619     Ce compilateur est disponible sous forme de
620     <productname>RPM</productname> Linux, de paquetage FreeBSD ou de
621     code source.
622
623     <note>
624      <para>
625       Une installation de Modula-3 avec les sources prend environ
626       200&nbsp;Mo d'espace disque, qui redescendent ensuite à environ 50&nbsp;Mo
627       lorsque les sources sont supprimées.</para>
628     </note>
629    </para>
630
631    <procedure>
632     <title>Installation sur Linux</title>
633
634     <step>
635      <para>
636       Installer Modula-3.
637      </para>
638
639      <substeps>
640       <step>
641        <para>
642         Récupérer la distribution de <productname>Modula-3</productname>
643         à <ulink url="http://m3.polymtl.ca/m3">Polytechnique Montréal</ulink>,
644         qui maintient activement le code initialement développé par le
645         <ulink
646             url="http://www.research.digital.com/SRC/modula-3/html/home.html">centre
647             de recherches système de DEC</ulink>.
648             La distribution <productname>PM3</productname> sous forme de
649             <productname>RPM</productname> fait environ 30&nbsp;Mo compressée.
650             Au moment de l'écriture de ce document, la version 1.1.10-1
651             s'installe sans problème sur RH-5.2, alors que la version
652             1.1.11-1 est apparemment prévue pour une autre version
653             (RH-6.0?) et ne fonctionne pas sous RH-5.2.
654
655         <tip>
656          <para>
657           Cette distribution rpm spécifique a de <emphasis>nombreux</emphasis>
658           fichiers <productname>RPM</productname>, si bien que vous
659           voudrez sans doute les mettre dans un répertoire séparé.
660          </para>
661         </tip>
662        </para>
663       </step>
664
665       <step>
666        <para>
667         Installer les rpms Modula-3&nbsp;:
668
669         <programlisting>
670 # rpm -Uvh pm3*.rpm
671         </programlisting>
672        </para>
673       </step>
674      </substeps>
675     </step>
676
677     <step>
678      <para>
679      Décompresser la distribution CVSup&nbsp;:
680
681       <programlisting>
682 # cd /usr/local/src
683 # tar zxf cvsup-16.0.tar.gz
684       </programlisting>
685      </para>
686     </step>
687
688     <step>
689      <para>
690       Compiler la distribution cvsup, en supprimant l'interface
691       graphique pour éviter d'utiliser les bibliothèques X11.
692  
693       <programlisting>
694 # make M3FLAGS="-DNOGUI"
695       </programlisting>
696
697       et si vous voulez construire un binaire statique pour l'utiliser
698       sur des systèmes qui n'ont pas Modula-3 installé, essayez&nbsp;:
699
700       <programlisting>
701 # make M3FLAGS="-DNOGUI -DSTATIC"
702       </programlisting>
703      </para>
704     </step>
705
706     <step>
707      <para>
708       Installer la librairie construite précédemment&nbsp;:
709
710       <programlisting>
711 # make M3FLAGS="-DNOGUI -DSTATIC" install
712       </programlisting>
713      </para>
714     </step>
715    </procedure>
716   </sect2>
717  </sect1>
718 </appendix>
719
720 <!--
721 > It became clear that I had a problem with my m3 installation; some
722 > X11 libraries were not being found correctly.
723
724 By the way, you can build the client without the GUI by doing this
725 in the "client" subdirectory:
726
727     m3build -DNOGUI
728
729 If you build it that way, then it doesn't need the X11 libraries and
730 it's quite a bit smaller.  The GUI is fun to watch, but it's not
731 very useful.  I originally implemented it because it made debogueging
732 the multi-threaded client program much easier.
733
734 To build a statically-linked client, edit <filename>client/src/m3makefile</filename>
735 to add <literal>build_standalone()</literal>
736  just before the <literal>program()</literal> entry near
737 the end of the file:
738
739 <programlisting>
740 build_standalone()
741 program(cvsup)
742 </programlisting>
743
744 Then, if cvsup has already been built, remove the machine-specific build directory
745 (e.g. <filename>LINUXELF/</filename>) and rebuild:
746
747 <programlisting>
748 rm -rf LINUXELF
749 m3build -DNOGUI -v
750 cp -p LINUXELF/cvsup /usr/local/bin
751 </programlisting>
752
753 > Anyway, with the reinstall and the two-line patch above (and that
754 > one include-file _POSIX_SOURCE workaround from the previous try),
755 > things built cleanly.
756
757 Good!
758
759 > Now I just need a server somewhere to test.
760
761 If you want to try it out, there are public servers for the FreeBSD
762 source repository at cvsup.freebsd.org and cvsup2.freebsd.org.
763 Here's a suggested supfile:
764
765 *default host=cvsup.freebsd.org compress
766 *default release=cvs
767 *default base=/home/jdp/cvsup-test      # FIX THIS
768 *default delete use-rel-suffix
769 # *default tag=.
770 src-bin
771
772 This will fetch you the source repository for the programs that get
773 installed into "/bin".  I chose it because it's one of the smaller
774 pieces of the system.  Make an empty directory someplace for
775 testing, and change the "FIX THIS" line to specify that directory
776 after the "base=".
777
778 If you are on a T1 or better, you should probably delete the
779 "compress" keyword in the first line.
780
781 As shown, it will get the repository (RCS) files.  If you uncomment
782 the line containing "tag=." then it will instead check out the
783 latest version of each file.  There's a bunch more information about
784 what you can do in
785 <ulink url="http://www.freebsd.org/handbook/cvsup.html">the CVSup Handbook</ulink>.
786
787 There is one other thing I want to send you, but not tonight.  I
788 discovered the hard way that you need a malloc package that is
789 thread-safe with respect to the Modula-3 threads package.  The
790 Modula-3 runtime takes care to do the proper mutual exclusion around
791 all calls it makes to malloc.  But if you call certain functions in
792 the native C library which in turn call malloc, then the mutual
793 exclusion gets bypassed.  This can lead to rare but baffling core
794 dumps.
795
796 For FreeBSD, I solved this by adding a thread-safe malloc package
797 into the Modula-3 runtime.  The package is quite portable, and I'm
798 sure it will work well for Linux with very few changes (probably
799 none at all).  I want to send it to you along with instructions
800 for making it a part of the "libm3core" library.  It's very simple,
801 but I've run out of steam for tonight. :-)  Once you have this
802 malloc in place, the CVSup system should be rock solid.  We have
803 servers that have been up for weeks and have served many thousands
804 of clients without any observed problems.
805
806 > We hope to have the PostgreSQL tree using CVSup within a month or
807 > so, and hope to retire sup in September...
808
809 Great!  I'll do my best to help make sure you don't regret it.
810
811 John
812
813 Tom,
814
815 I'm appending the sources for the thread safe version of malloc that
816 I told you about.  I believe that it will simply compile and work
817 under Linux, but I've never had an opportunity to test it there.
818 I urge you to put it into your Modula-3 system; otherwise, you
819 are guaranteed to get occasional mysterious core dumps from cvsupd.
820
821 As a first step, I'd suggest simply trying to compile it under
822 Linux, like this:
823
824     cc -O -c malloc.c
825
826 You shouldn't get any errors or warnings.  If you do, contact me
827 before you waste any more time on it.
828
829 Assuming it compiles OK, copy malloc.c into this directory of your
830 Modula-3 source tree:
831
832     m3/m3core/src/runtime/LINUXELF
833
834 In that same directory, edit "m3makefile" and add this line to the
835 end of the file:
836
837     c_source       ("malloc")
838
839 Then chdir up into "m3/m3core" of the Modula-3 tree and type
840 "m3build".  (I'm assuming you already have a working Modula-3
841 installation.)  After that finishes, become root and type "m3ship"
842 to install it.
843
844 That's all there is to it.  If you built cvsup and cvsupd to use
845 shared libraries, you don't even need to re-link them.  They'll pick
846 up the change automatically from the updated shared library.
847
848 Let me know if you run into any problems with it.
849
850 By the way, this is a very good malloc in its own right.  It's worth
851 using even aside from the thread safety of it.
852
853 Regards,
854 John
855
856 I've deposited a statically built cvsup client executable (and man pages
857 and test configuration) in
858
859   /pub/incoming/cvsup-15.1-client-linux.tar.gz
860
861 This was built and linked on Linux/v2.0.30, RH/v4.2, gnulib/v5.3.12 and
862 includes the thread-safe malloc provided by John Polstra. I'll forward
863 to you the malloc code and an additional installation e-mail from John.
864
865 The Modula-3 installation takes a good bit of room (~50MB?) and the
866 build environment is unique to Modula-3, but suprisingly enough it
867 pretty much works.
868
869 The cvsup Makefiles do not work on my machine (they are not portable
870 yet) but each major package (there are 4) can be built without needing
871 the makefiles with two commands each. Not difficult at all. John gives
872 some hints in his e-mail on how to build a static executable, and on how
873 to shrink the size of the executable by leaving out the GUI support.
874 Again, easy to do.
875
876 My client test case, picking up a sub-tree of the FreeBSD distribution,
877 worked flawlessly. I haven't tried running a server.
878
879 Thanks to John for getting me going.
880
881                         - Tom
882
883
884 For the thread-safe malloc, do the following:
885 1) install Modula-3
886 2) add the enclosed file "malloc.c" to m3/m3core/src/runtime/LINUXELF
887 3) edit the last line of m3makefile in the same directory to add
888      c_source       ("malloc")
889 4) do an "m3build" and an m3ship from the appropriate directory.
890
891 >From what John said, the malloc problem can be noticable for the
892 server-side running cvsupd. Clients may not need it.
893
894 Unfortunately I seem to have lost John's original good instructions for
895 this, so am doing this from memory. May need to ask John to give
896 instructions again...
897
898                         - Tom
899
900 -->
901
902
903 <!-- Keep this comment at the end of the file
904 Local variables:
905 mode:sgml
906 sgml-omittag:nil
907 sgml-shorttag:t
908 sgml-minimize-attributes:nil
909 sgml-always-quote-attributes:t
910 sgml-indent-step:1
911 sgml-indent-data:t
912 sgml-parent-document:nil
913 sgml-default-dtd-file:"./reference.ced"
914 sgml-exposed-tags:nil
915 sgml-local-catalogs:("/usr/lib/sgml/catalog")
916 sgml-local-ecat-files:nil
917 End:
918 -->
Note: See TracBrowser for help on using the browser.