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