Merge from vendor branch CVS:
[dragonfly.git] / contrib / cvs-1.12.11 / INSTALL
1 First, read the README file.  If you're still happy...
2
3 First you need to obtain and install the CVS executables.  If you got
4 a distribution which contains executables, consult the installation
5 instructions for that distribution.  If you got source code, do not
6 panic.  On many platforms building CVS from source code is a
7 straightforward process requiring no programming knowledge.  See the
8 section BUILDING FROM SOURCE CODE at the end of this file, which
9 includes a list of platforms which have been tested.
10
11 -------------------------------------------------------------------------------
12
13 1) Take a look at the CVS documentation, if desired.  For most
14    purposes you want doc/cvs.texinfo, also known as _Version Management
15    with CVS_ by Per Cederqvist et al.  Looking at it might be as simple
16    as "info cvs" but this will depend on your installation; see README
17    for more details.
18
19    See what CVS can do for you, and if it fits your environment (or can
20    possibly be made to fit your environment).  If things look good,
21    continue on.  Alternately, just give CVS a try first then figure out
22    what it is good for.
23
24 2) Set the CVSROOT environment variable to where you want to put your
25    source repository.  See the "Setting up the repository" section of
26    the Cederqvist manual for details, but the quick summary is just to
27    pick some directory.  We'll use /src/master as an example.  For
28    users of a POSIX shell (sh/bash/ksh) on unix, the following
29    commands can be placed in user's ~/.profile, ~/.bash_profile file;
30    or in the site-wide /etc/profile:
31
32        CVSROOT=/src/master; export CVSROOT
33
34    For C shell users on unix place the following commands in the
35    user's ~/.cshrc, ~/.login, or /etc/chsrc file:
36
37        setenv CVSROOT /src/master
38
39    For Windows users, supposing the repository will be in
40    d:\src\master, place the following line in c:\autoexec.bat.  On
41    Windows 95, autoexec.bat might not already exist.  In that case,
42    just create a new file containing the following line.
43
44        set CVSROOT=:local:d:\src\master
45
46    If these environment variables are not already set in your current
47    shell, set them now by typing the above line at the command prompt
48    (or source the login script you just edited).
49    The instructions for the remaining steps assume that you have set
50    the CVSROOT environment variable.
51
52 3) Create the master source repository.  Again, the details are in
53    the "Setting up the repository" section of cvs.texinfo; the
54    one-line summary is:
55
56        $ cvs init
57
58    In this and subsequent examples we use "$" to indicate the command
59    prompt; do not type the "$".
60
61 4) It might be a good idea to jump right in and put some sources or
62    documents directly under CVS control.  From within the top-level
63    directory of your source tree, run the following commands:
64
65        $ cvs import -m "test distribution" ccvs CVS_DIST CVS-TEST
66
67    (Those last three items are, respectively, a repository location, a
68    "vendor tag", and a "release tag".  You don't need to understand
69    them yet, but read the section "Starting new projects" in the
70    Cederqvist manual for details).
71
72 5) Having done step 4, one should be able to checkout a fresh copy of the
73    sources you just imported and hack away at the sources with the
74    following command:
75
76       $ cd
77       $ cvs checkout ccvs
78
79    This will make the directory "ccvs" in your current directory and
80    populate it with the appropriate files and directories.
81
82 6) You may wish to customize the various administrative files, in particular
83    modules.  See the Cederqvist manual for details.
84
85 7) Read the NEWS file to see what's new.
86
87 8) Hack away.
88
89 -------------------------------------------------------------------------------
90
91 BUILDING FROM SOURCE CODE
92
93 Tested platforms
94
95 CVS has been tested on the following platforms.  The most recent
96 version of CVS reported to have been tested is indicated, but more
97 recent versions of CVS probably will work too.  Please send updates to
98 this list to bug-cvs@gnu.org (doing so in the form of a diff
99 to this file, or at least exact suggested text, is encouraged).
100 "tested" means, at a minimum, that CVS compiles and appears to work on
101 simple (manual) testing.  In many cases it also means "make check"
102 and/or "make remotecheck" passes, but we don't try to list the
103 platforms for which that is true.
104
105 Alpha:
106         DEC Alpha running OSF/1 version 1.3 using cc (about 1.4A2)
107         DEC Alpha running OSF/1 version 2.0 (1.8)
108         DEC Alpha running OSF/1 version 2.1 (about 1.4A2)
109         DEC Alpha running OSF/1 version 3.0 (1.5.95) (footnote 7)
110         DEC Alpha running OSF/1 version 3.2 (1.9)
111         Alpha running alpha-dec-osf4.0 (1.10)
112         DEC Alpha running Digital UNIX v4.0C using gcc 2.7.2.2 (1.9.14)
113         DEC Alpha running VMS 6.2 (1.8.85 client-only)
114         Alpha running NetBSD 1.2E (1.10)
115 Cray:
116         J90 (CVS 970215 snapshot)
117         T3E (CVS 970215 snapshot)
118 HPPA:
119         HP 9000/710 running HP-UX 8.07A using gcc (about 1.4A2)
120         HPPA running HP-UX 9 (1.8)
121         HPPA 1.1 running HP-UX A.09.03 (1.5.95) (footnote 8)
122         HPPA 1.1 running HP-UX A.09.04 (1.7.1)
123         HPPA running HP-UX 9.05 (1.9)
124         HPPA running HP-UX 10.01 (1.7)
125         HPPA running HP-UX 10.20 (1.10.7)
126         HPPA running HP-UX 11.11 (1.11.13) (footnote 12)
127         HPPA 2.0 running HP-UX 10.20 (1.10.9) (footnote 13)
128         NextSTEP 3.3 (1.7)
129 i386 family:
130         Solaris 2.4 using gcc (about 1.4A2)
131         Solaris 2.6 (1.9)
132         UnixWare v1.1.1 using gcc (about 1.4A2)
133         Unixware 2.1 (1.8.86)
134         Unixware 7 (1.9.29)
135         ISC 4.0.1 (1.8.87)
136         Linux (kernel 1.2.x) (1.8.86)
137         Linux (kernel 2.0.x, RedHat 4.2) (1.10)
138         Linux (kernel 2.0.x, RedHat 5.x) (1.10)
139         Linux (kernel 2.2.x, RedHat 6.x) (1.10.8)
140         Linux (kernel 2.2.x, RedHat 7.x) (1.11)
141         BSDI 4.0 (1.10.7)
142         FreeBSD 2.1.5-stable (1.8.87)
143         NextSTEP 3.3 (1.7)
144         SCO Unix 3.2.4.2, gcc 2.7.2 (1.8.87) (footnote 4)
145         SCO OpenServer 5.0.5 (1.10.2)
146         Sequent DYNIX/ptx4.0 (1.10 or so) (remove -linet)
147         Sequent Dynix/PTX 4.1.4 (1.9.20 or so + patches)
148         Lynx 2.3.0 080695 (1.6.86) (footnote 9)
149         Windows NT 3.51 (1.8.86 client; 1.8.3 local)
150         Windows NT 3.51 service pack 4 (1.9)
151         Windows NT 3.51 service pack 5 (1.9) -- DOES NOT WORK (footnote 11)
152         Windows NT 4.0 (1.9 client and local)
153         Windows NT 4.0 (1.11 client and local - build & test, but no test suite)
154         Windows 95 (1.9 client and local)
155         QNX (1.9.1 + patches for strippath() and va_list)
156         OS/2 Version 3 using IBM C/C++ Tools 2.01 (1.8.86 + patches, client)
157         OS/2 Version 3 using EMX 0.9c (1.9.22, client)
158         OS/2 Version 3 using Watcom version ? (? - has this been tested?)
159 m68k:
160         Sun 3 running SunOS 4.1.1_U1 w/ bundled K&R /usr/5bin/cc (1.8.86+)
161         NextSTEP 3.3p1 (1.8.87)
162         Lynx 2.3.0 062695 (1.6.86) (footnote 9)
163         NetBSD/mac68k (1.9.28)
164 m88k:
165         Data General AViiON running dgux 5.4R2.10 (1.5)
166         Data General AViiON running dgux 5.4R3.10 (1.7.1)
167         Harris Nighthawk 5800 running CX/UX 7.1 (1.5) (footnote 6)
168 MIPS:
169         DECstation running Ultrix 4.2a (1.4.90)
170         DECstation running Ultrix 4.3 (1.10)
171         SGI running Irix 4.0.5H using gcc and cc (about 1.4A2) (footnote 2)
172         SGI running Irix 5.3 (1.10)
173         SGI running Irix 6.2 using SGI MIPSpro 6.2 and beta 7.2 compilers (1.9)
174         SGI running Irix-6.2 (1.9.8)
175         SGI running IRIX 6.4 (1.10)
176         SGI running IRIX 6.5 (1.10.7)
177         Siemens-Nixdorf RM600 running SINIX-Y (1.6)
178 PowerPC or RS/6000:
179         IBM RS/6000 running AIX 3.1 using gcc and cc (1.6.86)
180         IBM RS/6000 running AIX 3.2.5 (1.8)
181         IBM RS/6000 running AIX 4.1 (1.9)
182         IBM RS/6000 running AIX 4.3 (1.10.7)
183         Lynx 2.3.1 120495 (1.6.86) (footnote 9)
184         Lynx 2.5 (1.9) (footnote 10)
185         MkLinux DR3 GENERIC #6 (1.10.5.1) (presumably LinuxPPC too)
186         Mac OS X Darwin 6.6 Darwin Kernel Version 6.6 (1.11.1p1)
187         Mac OS X Darwin 5.5 Darwin Kernel Version 5.5 (1.11.6) (footnote 12)
188         Mac OS X Darwin 5.5 Darwin Kernel Version 5.5 (1.12.1) (footnote 12)
189 SPARC:
190         Sun SPARC running SunOS 4.1.x (1.10)
191         Sun SPARCstation 10 running Solaris 2.3 using gcc and cc (about 1.4A2)
192         Sun SPARCstation running Solaris 2.4 using gcc and cc (about 1.5.91)
193         Sun SPARC running Solaris 2.5 (1.8.87)
194         Sun SPARC running Solaris 2.5.1 using gcc 2.7.2.2 (1.9.14)
195         Sun SPARC running Solaris 2.6 (1.10.7)
196         Sun UltraSPARC running Solaris 2.6 using gcc 2.8.1 (1.10)
197         NextSTEP 3.3 (1.7)
198         Sun SPARC running Linux 2.0.17, gcc 2.7.2 (1.8.87)
199         Sun UltraSPARC running Solaris 2.8 using gcc 2.95.3
200 VAX:
201         VAX running VMS 6.2 (1.9+patches, client-only)
202           (see README.VMS for information on necessary hacks).
203
204 (footnote 2)
205         Some Irix 4.0 systems may core dump in malloc while running
206         CVS.  We believe this is a bug in the Irix malloc.  You can
207         workaround this bug by linking with "-lmalloc" if necessary.
208         (about 1.4A2).
209
210 (footnote 4) Comment out the include of sys/time.h in src/server.c. (1.4.93)
211         You also may have to make sure TIME_WITH_SYS_TIME is undef'ed.
212
213 (footnote 6) Build in ucb universe with COFF compiler tools.  Put
214         /usr/local/bin first in PATH while doing a configure, make
215         and install of GNU diffutils-2.7, rcs-5.7, then cvs-1.5.
216
217 (footnote 7) Manoj Srivastava <srivasta@pilgrim.umass.edu> reports
218         success with this configure command:
219   CC=cc CFLAGS='-O2 -Olimit 2000 -std1' ./configure --verbose alpha-dec-osf
220
221 (footnote 8) Manoj Srivastava <srivasta@pilgrim.umass.edu> reports
222         success with this configure command:
223   CC=cc CFLAGS='+O2 -Aa -D_HPUX_SOURCE' ./configure --verbose hppa1.1-hp-hpux
224
225 (footnote 9) 
226     Had to configure with ./configure --host=<arch>-lynx.
227
228     In src/cvs.h, protected the waitpid prototype with ifdef _POSIX_SOURCE.
229     (I might try building with gcc -mposix -D_POSIX_SOURCE.)
230
231     LynxOS has <dirent.h>, but you don't want to use it.
232     You want to use <sys/dir.h> instead.
233     So after running configure I had to undef HAVE_DIRENT_H and
234     define HAVE_SYS_DIR_H.
235
236 (footnote 10)
237     Had to compile with "make LIBS=-lbsd" (to get gethostbyname
238     and getservbyname).
239
240 (footnote 11)
241     when I do a `cvs init' I get this message:
242       ci: 'RCS/loginfo,v' is not a regular file
243       ci:  RCS/loginfo,v: Invalid argument
244       cvs [init aborted]: failed to checkin n:/safe/CVSROOT/loginfo
245
246 (footnote 12)
247     Need to `configure --without-gssapi' unless you have installed Kerberos 5
248     libraries on the system yourself.  For some reason Apple ships OS X with
249     the Kerberos 5 headers installed and not the libraries, which confuses the
250     current configure script.  Some HP, BSD, & Sun boxes have similar problems.
251
252 (footnote 13)
253     A build under HP PA-RISC 2.0 will probably not run under PA-RISC 1.1
254     unless "+DAportable" is added to the HP ANSI cc compiler flags.
255
256 -------------------------------------------------------------------------------
257
258 Building from source code under Unix:
259
260 1)  Run "configure":
261
262         $ ./configure
263
264     You can specify an alternate destination to override the default with
265     the --prefix option:
266
267         $ ./configure --prefix=/usr/local/gnu
268
269     or some path that is more appropriate for your site.  The default prefix
270     value is "/usr/local", with binaries in sub-directory "bin", manual
271     pages in sub-directory "man", and libraries in sub-directory "lib".
272
273     A normal build of CVS will create an executable which supports
274     local, server, or client CVS (if you don't know the difference,
275     it is described in the Repository chapter of doc/cvs.texinfo).  If
276     you do not intend to use client or server CVS, you may want to
277     prevent these features from being included in the executable you
278     build. You can do this with the --disable-client and
279     --disable-server options:
280
281         $ ./configure --disable-client --disable-server
282
283     Typically this can reduce the size of the executable by around 30%.
284
285     If you are building CVS with the server enabled, you can disable
286     server flow control using the --disable-server-flow-control
287     If you are working with a large remote repository and a 'cvs
288     checkout' is swamping your network and memory, enable flow control.
289     You will end up with even less probability of a consistent checkout
290     (see Concurrency in cvs.texinfo), but CVS doesn't try to guarantee
291     that anyway.  The master server process will monitor how far it is
292     getting behind, if it reaches the high water mark, it will signal
293     the child process to stop generating data when convenient (ie: no
294     locks are held, currently at the beginning of a new directory).
295     Once the buffer has drained sufficiently to reach the low water
296     mark, it will be signalled to start again.  You may override the
297     default hi/low watermarks here too by passing
298     '<lowwater>,<highwater>', in bytes, as an argument to
299     --enable-server-flow-control.  The low water mark defaults to one
300     megabyte and the high water mark defaults to two megabytes.
301
302         $ ./configure --enable-server-flow-control=1M,2M
303
304     The --with-tmpdir argument to configure may be used to set a
305     specific directory for use as a default temporary directory.  If not
306     set, configure will pick the first directory it finds which it has
307     read, write, and execute permissions to from $TMPDIR, $TMP, $TEMP,
308     /tmp, and /var/tmp, in that order.  Failing that, it will use /tmp.
309
310     The --with-umask argument to configure can be used to change
311     the default umask used by the CVS server executable.
312
313     Unlike previous versions of CVS, you do not need to install RCS
314     or GNU diff.  
315
316     If you are using gcc and are planning to modify CVS, you may want to
317     configure with -Wall; see the file HACKING for details.
318
319     If you have Kerberos 4 installed, you can specify the location of
320     the header files and libraries using the --with-krb4=DIR option.
321     DIR should be a directory with subdirectories include and lib
322     holding the Kerberos 4 header files and libraries, respectively.
323     The default value is /usr/kerberos.
324
325     If you want to enable support for encryption over Kerberos, use
326     the --enable-encryption option.  This option is disabled by
327     default.
328
329     If you want to disable automatic dependency tracking in the makefiles,
330     use the '--disable-dependency-tracking' option:
331
332         $ ./configure --disable-dependency-tracking
333
334     This avoids problems on some platforms.  See the note at the end of this
335     file on BSD.
336
337     Try './configure --help' for further information on its usage.
338
339     NOTE ON CVS's USE OF NDBM:
340
341         By default, CVS uses some built-in ndbm emulation code to allow
342         CVS to work in a heterogeneous environment.  However, if you have
343         a very large modules database, this may not work well.  You will
344         need to supply the --disable-cvs-ndbm option to configure to
345         accomplish this.  If you do this, the following comments apply.  If
346         not, you may safely skip these comments.
347
348         If you configure CVS to use the real ndbm(3) libraries and
349         you do not have them installed in a "normal" place, you will
350         probably want to get the GNU version of ndbm (gdbm) and install
351         that before running the CVS configure script.  Be aware that the
352         GDBM 1.5 release does NOT install the <ndbm.h> header file included
353         with the release automatically.  You may have to install it by hand.
354
355         If you configure CVS to use the ndbm(3) libraries, you cannot
356         compile CVS with GNU cc (gcc) on Sun-4 SPARC systems.  However, gcc
357         2.0 may have fixed this limitation if -fpcc-struct-return is
358         defined.  When using gcc on other systems to compile CVS, you *may*
359         need to specify the -fpcc-struct-return option to gcc (you will
360         *know* you have to if "cvs checkout" core dumps in some ndbm
361         function).  You can do this as follows:
362
363             $ CC='gcc -fpcc-struct-return' ./configure
364
365         for sh, bash, and ksh users and:
366
367             % setenv CC 'gcc -fpcc-struct-return'
368             % ./configure
369
370         for csh and tcsh users.
371
372     END OF NOTE FOR NDBM GUNK.
373
374 2)  Try to build it:
375
376         $ make
377
378     This will (hopefully) make the needed CVS binaries within the
379     "src" directory.  If something fails for your system, and you want
380     to submit a bug report, you may wish to include your
381     "config.status" file, your host type, operating system and
382     compiler information, make output, and anything else you think
383     will be helpful.
384
385 3)  Run the regression tests (optional).
386
387     You may also wish to validate the correctness of the new binary by
388     running the regression tests.  If they succeed, that is nice to
389     know.  However, if they fail, it doesn't tell you much.  Often it
390     will just be a problem with running the tests on your machine,
391     rather than a problem with CVS.  Unless you will have the time to
392     determine which of the two it is in case of failure, you might
393     want to save yourself the time and just not run the tests.
394
395     If you want to run the tests, see the file TESTS for more information.
396
397 4)  Install the binaries/documentation:
398
399         $ make install
400
401     Depending on your installation's configuration, you may need to be
402     root to do this.
403
404 -------------------------------------------------------------------------------
405
406 Detailed information about your interaction with "configure":
407
408 The "configure" script and its interaction with its options and the
409 environment is described here.  For more detailed documentation about
410 "configure", please run `./configure --help' or refer to the GNU Autoconf
411 documentation.
412
413 Supported options are:
414
415         --srcdir=DIR            Useful for compiling on many different
416                                 machines sharing one source tree.
417         --prefix=DIR            The root of where to install the
418                                 various pieces of CVS (/usr/local).
419         --exec_prefix=DIR       If you want executables in a
420                                 host-dependent place and shared
421                                 things in a host-independent place.
422
423 The following environment variables override configure's default
424 behaviour:
425
426         CC                      If not set, tries to use gcc first,
427                                 then cc.  Also tries to use "-g -O"
428                                 as options, backing down to -g
429                                 alone if that doesn't work.
430         INSTALL                 If not set, tries to use "install", then
431                                 "./install-sh" as a final choice.
432         RANLIB                  If not set, tries to determine if "ranlib"
433                                 is available, choosing "echo" if it doesn't
434                                 appear to be.
435         YACC                    If not set, tries to determine if "bison"
436                                 is available, choosing "yacc" if it doesn't
437                                 appear to be.
438
439 -------------------------------------------------------------------------------
440
441 Building from source code under Windows NT/95/98/2000:
442
443 You may find interesting information in windows-NT/README.
444
445 * Using Microsoft Visual C++ 5.x+.
446
447 1) Using Microsoft Visual C++ 5.x+, open the project `cvsnt.dsw',
448    in the top directory of the CVS distribution.  If you have an older
449    version of Visual C++, take a look at windows-NT/README.
450 2) Choose "Build cvs.exe" from the "Project" menu.
451 3) MSVC will place the executable file cvs.exe in WinRel, or whatever
452    your target directory is.
453
454 * From the top level directory, with MSVC++ 5.x+ installed, something like the
455 following also works:
456
457         C:\> vcvars32
458         C:\> nmake /f cvsnt.mak CFG="cvsnt - Win32 Debug"
459
460 * Using the Cygwin development environment <http://cygwin.com>, Windows clients
461   and servers can be built using the instructions for building on UNIX.  For
462   deploying the CVS server on Windows NT, see the `cygrunsrv' executable that
463   comes with Cygwin.
464
465 * You might also try <http://wincvs.org> & <http://www.cvsnt.org>.
466
467 -------------------------------------------------------------------------------
468
469 Building from source code under other platforms:
470
471 For OS/2, see os2/README and emx/README.
472
473 For VMS, see README.VMS
474
475 Mac OS X: Builds fine, just like UNIX.
476
477 For older versions of Mac OS, you might try <http://wincvs.org>.
478
479 For a Java client, see jCVS (which is a separate package from CVS
480 itself, but which might be preferable to the Macintosh port mentioned
481 above, for example).
482
483 -------------------------------------------------------------------------------