INSTALL revision 107484
1First, read the README file.  If you're still happy...
2
3First you need to obtain and install the CVS executables.  If you got
4a distribution which contains executables, consult the installation
5instructions for that distribution.  If you got source code, do not
6panic.  On many platforms building CVS from source code is a
7straightforward process requiring no programming knowledge.  See the
8section BUILDING FROM SOURCE CODE at the end of this file, which
9includes a list of platforms which have been tested.
10
11-------------------------------------------------------------------------------
12
131) 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
242) 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
523) 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
614) 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
725) 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
826) You may wish to customize the various administrative files, in particular
83   modules.  See the Cederqvist manual for details.
84
857) Read the NEWS file to see what's new.
86
878) Hack away.
88
89-------------------------------------------------------------------------------
90
91BUILDING FROM SOURCE CODE
92
93Tested platforms
94
95CVS has been tested on the following platforms.  The most recent
96version of CVS reported to have been tested is indicated, but more
97recent versions of CVS probably will work too.  Please send updates to
98this list to bug-cvs@gnu.org (doing so in the form of a diff
99to this file, or at least exact suggested text, is encouraged).
100"tested" means, at a minimum, that CVS compiles and appears to work on
101simple (manual) testing.  In many cases it also means "make check"
102and/or "make remotecheck" passes, but we don't try to list the
103platforms for which that is true.
104
105Alpha:
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)
115Cray:
116	J90 (CVS 970215 snapshot)
117	T3E (CVS 970215 snapshot)
118HPPA:
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	NextSTEP 3.3 (1.7)
127i386 family:
128	Solaris 2.4 using gcc (about 1.4A2)
129	Solaris 2.6 (1.9)
130	UnixWare v1.1.1 using gcc (about 1.4A2)
131	Unixware 2.1 (1.8.86)
132	Unixware 7 (1.9.29)
133	ISC 4.0.1 (1.8.87)
134	Linux (kernel 1.2.x) (1.8.86)
135	Linux (kernel 2.0.x, RedHat 4.2) (1.10)
136	Linux (kernel 2.0.x, RedHat 5.x) (1.10)
137	Linux (kernel 2.2.x, RedHat 6.x) (1.10.8)
138	Linux (kernel 2.2.x, RedHat 7.x) (1.11)
139	BSDI 4.0 (1.10.7)
140	FreeBSD 2.1.5-stable (1.8.87)
141	NextSTEP 3.3 (1.7)
142	SCO Unix 3.2.4.2, gcc 2.7.2 (1.8.87) (footnote 4)
143	SCO OpenServer 5.0.5 (1.10.2)
144	Sequent DYNIX/ptx4.0 (1.10 or so) (remove -linet)
145	Sequent Dynix/PTX 4.1.4 (1.9.20 or so + patches)
146	Lynx 2.3.0 080695 (1.6.86) (footnote 9)
147	Windows NT 3.51 (1.8.86 client; 1.8.3 local)
148	Windows NT 3.51 service pack 4 (1.9)
149	Windows NT 3.51 service pack 5 (1.9) -- DOES NOT WORK (footnote 11)
150	Windows NT 4.0 (1.9 client and local)
151	Windows NT 4.0 (1.11 client and local - build & test, but no test suite)
152	Windows 95 (1.9 client and local)
153	QNX (1.9.1 + patches for strippath() and va_list)
154	OS/2 Version 3 using IBM C/C++ Tools 2.01 (1.8.86 + patches, client)
155	OS/2 Version 3 using EMX 0.9c (1.9.22, client)
156	OS/2 Version 3 using Watcom version ? (? - has this been tested?)
157m68k:
158	Sun 3 running SunOS 4.1.1_U1 w/ bundled K&R /usr/5bin/cc (1.8.86+)
159	NextSTEP 3.3p1 (1.8.87)
160	Lynx 2.3.0 062695 (1.6.86) (footnote 9)
161	NetBSD/mac68k (1.9.28)
162m88k:
163	Data General AViiON running dgux 5.4R2.10 (1.5)
164	Data General AViiON running dgux 5.4R3.10 (1.7.1)
165	Harris Nighthawk 5800 running CX/UX 7.1 (1.5) (footnote 6)
166MIPS:
167	DECstation running Ultrix 4.2a (1.4.90)
168	DECstation running Ultrix 4.3 (1.10)
169	SGI running Irix 4.0.5H using gcc and cc (about 1.4A2) (footnote 2)
170	SGI running Irix 5.3 (1.10)
171	SGI running Irix 6.2 using SGI MIPSpro 6.2 and beta 7.2 compilers (1.9)
172	SGI running Irix-6.2 (1.9.8)
173	SGI running IRIX 6.4 (1.10)
174	SGI running IRIX 6.5 (1.10.7)
175	Siemens-Nixdorf RM600 running SINIX-Y (1.6)
176PowerPC or RS/6000:
177	IBM RS/6000 running AIX 3.1 using gcc and cc (1.6.86)
178	IBM RS/6000 running AIX 3.2.5 (1.8)
179	IBM RS/6000 running AIX 4.1 (1.9)
180	IBM RS/6000 running AIX 4.3 (1.10.7)
181	Lynx 2.3.1 120495 (1.6.86) (footnote 9)
182	Lynx 2.5 (1.9) (footnote 10)
183	MkLinux DR3 GENERIC #6 (1.10.5.1) (presumably LinuxPPC too)
184SPARC:
185	Sun SPARC running SunOS 4.1.x (1.10)
186	Sun SPARCstation 10 running Solaris 2.3 using gcc and cc (about 1.4A2)
187	Sun SPARCstation running Solaris 2.4 using gcc and cc (about 1.5.91)
188	Sun SPARC running Solaris 2.5 (1.8.87)
189	Sun SPARC running Solaris 2.5.1 using gcc 2.7.2.2 (1.9.14)
190	Sun SPARC running Solaris 2.6 (1.10.7)
191	Sun UltraSPARC running Solaris 2.6 using gcc 2.8.1 (1.10)
192	NextSTEP 3.3 (1.7)
193	Sun SPARC running Linux 2.0.17, gcc 2.7.2 (1.8.87)
194VAX:
195	VAX running VMS 6.2 (1.9+patches, client-only)
196	  (see README.VMS for information on necessary hacks).
197
198(footnote 2)
199	Some Irix 4.0 systems may core dump in malloc while running
200	CVS.  We believe this is a bug in the Irix malloc.  You can
201	workaround this bug by linking with "-lmalloc" if necessary.
202	(about 1.4A2).
203
204(footnote 4) Comment out the include of sys/time.h in src/server.c. (1.4.93)
205	You also may have to make sure TIME_WITH_SYS_TIME is undef'ed.
206
207(footnote 6) Build in ucb universe with COFF compiler tools.  Put
208	/usr/local/bin first in PATH while doing a configure, make
209	and install of GNU diffutils-2.7, rcs-5.7, then cvs-1.5.
210
211(footnote 7) Manoj Srivastava <srivasta@pilgrim.umass.edu> reports
212        success with this configure command:
213  CC=cc CFLAGS='-O2 -Olimit 2000 -std1' ./configure --verbose alpha-dec-osf
214
215(footnote 8) Manoj Srivastava <srivasta@pilgrim.umass.edu> reports
216        success with this configure command:
217  CC=cc CFLAGS='+O2 -Aa -D_HPUX_SOURCE' ./configure --verbose hppa1.1-hp-hpux
218
219(footnote 9) 
220    Had to configure with ./configure --host=<arch>-lynx.
221
222    In src/cvs.h, protected the waitpid prototype with ifdef _POSIX_SOURCE.
223    (I might try building with gcc -mposix -D_POSIX_SOURCE.)
224
225    LynxOS has <dirent.h>, but you don't want to use it.
226    You want to use <sys/dir.h> instead.
227    So after running configure I had to undef HAVE_DIRENT_H and
228    define HAVE_SYS_DIR_H.
229
230(footnote 10)
231    Had to compile with "make LIBS=-lbsd" (to get gethostbyname
232    and getservbyname).
233
234(footnote 11)
235    when I do a `cvs init' I get this message:
236      ci: 'RCS/loginfo,v' is not a regular file
237      ci:  RCS/loginfo,v: Invalid argument
238      cvs [init aborted]: failed to checkin n:/safe/CVSROOT/loginfo
239
240-------------------------------------------------------------------------------
241
242Building from source code under Unix:
243
2441)  Some combinations of Automake and Autoconf versions may break the CVS build
245    if file timestamps aren't set correctly, so you may wish to run
246    noautomake.sh to set the timestamps and avoid attempting to run the
247    autotools on your system, especially if you are building from source
248    checked out from CVS:
249
250	$ ./noautomake.sh --noautoconf
251
252    The CVS Makefiles and configure script were built using Automake 1.6.3 and
253    Autoconf 2.53, respectively.  Other combinations of autotool versions may
254    or may not work.
255
2562)  Run "configure":
257
258	$ ./configure
259
260    You can specify an alternate destination to override the default with
261    the --prefix option:
262
263	$ ./configure --prefix=/usr/local/gnu
264
265    or some path that is more appropriate for your site.  The default prefix
266    value is "/usr/local", with binaries in sub-directory "bin", manual
267    pages in sub-directory "man", and libraries in sub-directory "lib".
268
269    A normal build of CVS will create an executable which supports
270    local, server, or client CVS (if you don't know the difference,
271    it is described in the Repository chapter of doc/cvs.texinfo).  If
272    you do not intend to use client or server CVS, you may want to
273    prevent these features from being included in the executable you
274    build. You can do this with the --disable-client and
275    --disable-server options:
276
277	$ ./configure --disable-client --disable-server
278
279    Typically this can reduce the size of the executable by around 30%.
280
281    If you are building CVS with the server enabled, you can disable
282    server flow control using the --disable-server-flow-control
283    If you are working with a large remote repository and a 'cvs
284    checkout' is swamping your network and memory, enable flow control.
285    You will end up with even less probability of a consistent checkout
286    (see Concurrency in cvs.texinfo), but CVS doesn't try to guarantee
287    that anyway.  The master server process will monitor how far it is
288    getting behind, if it reaches the high water mark, it will signal
289    the child process to stop generating data when convenient (ie: no
290    locks are held, currently at the beginning of a new directory).
291    Once the buffer has drained sufficiently to reach the low water
292    mark, it will be signalled to start again.  You may override the
293    default hi/low watermarks here too by passing
294    '<lowwater>,<highwater>', in bytes, as an argument to
295    --enable-server-flow-control.  The low water mark defaults to one
296    megabyte and the high water mark defaults to two megabytes.
297
298	$ ./configure --enable-server-flow-control=1M,2M
299
300    The --with-tmpdir argument to configure may be used to set a
301    specific directory for use as a default temporary directory.  If not
302    set, configure will pick the first directory it finds which it has
303    read, write, and execute permissions to from $TMPDIR, $TMP, $TEMP,
304    /tmp, and /var/tmp, in that order.  Failing that, it will use /tmp.
305
306    The --with-umask argument to configure can be used to change
307    the default umask used by the CVS server executable.
308
309    Unlike previous versions of CVS, you do not need to install RCS
310    or GNU diff.  
311
312    If you are using gcc and are planning to modify CVS, you may want to
313    configure with -Wall; see the file HACKING for details.
314
315    If you have Kerberos 4 installed, you can specify the location of
316    the header files and libraries using the --with-krb4=DIR option.
317    DIR should be a directory with subdirectories include and lib
318    holding the Kerberos 4 header files and libraries, respectively.
319    The default value is /usr/kerberos.
320
321    If you want to enable support for encryption over Kerberos, use
322    the --enable-encryption option.  This option is disabled by
323    default.
324
325    If you want to disable automatic dependency tracking in the makefiles,
326    use the '--disable-dependency-tracking' option:
327
328	$ ./configure --disable-dependency-tracking
329
330    This avoids problems on some platforms.  See the note at the end of this
331    file on BSD.
332
333    Try './configure --help' for further information on its usage.
334
335    NOTE ON CVS's USE OF NDBM:
336
337	By default, CVS uses some built-in ndbm emulation code to allow
338	CVS to work in a heterogeneous environment.  However, if you have
339	a very large modules database, this may not work well.  You will
340	need to edit src/options.h to turn off the MY_NDBM #define and
341	re-run configure.  If you do this, the following comments apply.
342	If not, you may safely skip these comments.
343
344	If you configure CVS to use the real ndbm(3) libraries and
345	you do not have them installed in a "normal" place, you will
346	probably want to get the GNU version of ndbm (gdbm) and install
347	that before running the CVS configure script.  Be aware that the
348	GDBM 1.5 release does NOT install the <ndbm.h> header file included
349	with the release automatically.  You may have to install it by hand.
350
351	If you configure CVS to use the ndbm(3) libraries, you cannot
352	compile CVS with GNU cc (gcc) on Sun-4 SPARC systems.  However, gcc
353	2.0 may have fixed this limitation if -fpcc-struct-return is
354	defined.  When using gcc on other systems to compile CVS, you *may*
355	need to specify the -fpcc-struct-return option to gcc (you will
356	*know* you have to if "cvs checkout" core dumps in some ndbm
357	function).  You can do this as follows:
358
359	    $ CC='gcc -fpcc-struct-return' ./configure
360
361	for sh, bash, and ksh users and:
362
363	    % setenv CC 'gcc -fpcc-struct-return'
364	    % ./configure
365
366	for csh and tcsh users.
367
368    END OF NOTE FOR NDBM GUNK.
369
3703)  Edit src/options.h.  The defaults should be reasonable, and in fact
371    if you are lazy you can safely skip this step.
372
3734)  Try to build it:
374
375	$ make
376
377    This will (hopefully) make the needed CVS binaries within the
378    "src" directory.  If something fails for your system, and you want
379    to submit a bug report, you may wish to include your
380    "config.status" file, your host type, operating system and
381    compiler information, make output, and anything else you think
382    will be helpful.
383
3844a)  Run the regression tests (optional).
385
386    You may also wish to validate the correctness of the new binary by
387    running the regression tests.  If they succeed, that is nice to
388    know.  However, if they fail, it doesn't tell you much.  Often it
389    will just be a problem with running the tests on your machine,
390    rather than a problem with CVS.  Unless you will have the time to
391    determine which of the two it is in case of failure, you might
392    want to save yourself the time and just not run the tests.
393
394    If you want to run the tests, see the file TESTS for more information.
395
3965)  Install the binaries/documentation:
397
398	$ make install
399
400    Depending on your installation's configuration, you may need to be
401    root to do this.
402
403-------------------------------------------------------------------------------
404
405Detailed information about your interaction with "configure":
406
407The "configure" script and its interaction with its options and the
408environment is described here.  For more detailed documentation about
409"configure", please run `./configure --help' or refer to the GNU Autoconf
410documentation.
411
412Supported options are:
413
414	--srcdir=DIR		Useful for compiling on many different
415				machines sharing one source tree.
416	--prefix=DIR		The root of where to install the
417				various pieces of CVS (/usr/local).
418	--exec_prefix=DIR	If you want executables in a
419				host-dependent place and shared
420				things in a host-independent place.
421
422The following environment variables override configure's default
423behaviour:
424
425	CC			If not set, tries to use gcc first,
426				then cc.  Also tries to use "-g -O"
427				as options, backing down to -g
428				alone if that doesn't work.
429	INSTALL			If not set, tries to use "install", then
430				"./install-sh" as a final choice.
431	RANLIB			If not set, tries to determine if "ranlib"
432				is available, choosing "echo" if it doesn't
433				appear to be.
434	YACC			If not set, tries to determine if "bison"
435				is available, choosing "yacc" if it doesn't
436				appear to be.
437
438-------------------------------------------------------------------------------
439
440Building from source code under Windows NT/95/98/2000:
441
442You may find interesting information in windows-NT/README.
443
4441) Using Microsoft Visual C++ 5.x, open the project `cvsnt.dsp',
445   in the top directory of the CVS distribution.  If you have an older
446   version of Visual C++, take a look at windows-NT/README.
4472) Choose "Build cvs.exe" from the "Project" menu.
4483) MSVC will place the executable file cvs.exe in WinRel, or whatever
449   your target directory is.
450
451* From the top level directory, with MSVC++ 6.0 installed, something like the
452following also works:
453
454	C:\> vcvars32
455	C:\> nmake /f cvsnt.mak CFG="cvsnt - Win32 Debug"
456
457* You might also try http://cvsgui.org & http://www.cvsnt.org
458
459-------------------------------------------------------------------------------
460
461Building from source code under other platforms:
462
463For OS/2, see os2/README and emx/README.
464
465For VMS, see README.VMS
466
467Mac OS X: Builds fine, just like UNIX.
468
469For older versions of Mac OS, you might try http://cvsgui.org .
470
471For a Java client, see jCVS (which is a separate package from CVS
472itself, but which might be preferable to the Macintosh port mentioned
473above, for example).
474
475                                  **** ****
476
477Builds are breaking on some systems (notably,
478BSD/OS thor.sdrc.com 4.0.1 BSDI BSD/OS 4.0.1 Kernel #3: Thu Mar  9 11:29:16 EST 2000
479) due to Automake's dependency tracking code.  The work around for this is to
480comile without it by passing the '--disable-dependency-tracking' option to
481configure:
482
483	$ ./configure --disable-dependency-tracking
484
485This will allow a compile but make will no longer be tracking header
486dependencies.  This means that if you make any changes to header files you may
487have to run 'make clean' before running a 'make' to get everything to compile.
488
489-------------------------------------------------------------------------------
490