1 First, read the README file. If you're still happy...
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.
11 -------------------------------------------------------------------------------
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
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
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:
32 CVSROOT=/src/master; export CVSROOT
34 For C shell users on unix place the following commands in the
35 user's ~/.cshrc, ~/.login, or /etc/chsrc file:
37 setenv CVSROOT /src/master
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.
44 set CVSROOT=:local:d:\src\master
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.
52 3) Create the master source repository. Again, the details are in
53 the "Setting up the repository" section of cvs.texinfo; the
58 In this and subsequent examples we use "$" to indicate the command
59 prompt; do not type the "$".
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:
65 $ cvs import -m "test distribution" ccvs CVS_DIST CVS-TEST
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).
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
79 This will make the directory "ccvs" in your current directory and
80 populate it with the appropriate files and directories.
82 6) You may wish to customize the various administrative files, in particular
83 modules. See the Cederqvist manual for details.
85 7) Read the NEWS file to see what's new.
89 -------------------------------------------------------------------------------
91 BUILDING FROM SOURCE CODE
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.
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)
116 J90 (CVS 970215 snapshot)
117 T3E (CVS 970215 snapshot)
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)
130 Solaris 2.4 using gcc (about 1.4A2)
132 UnixWare v1.1.1 using gcc (about 1.4A2)
133 Unixware 2.1 (1.8.86)
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)
142 FreeBSD 2.1.5-stable (1.8.87)
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?)
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)
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)
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)
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)
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)
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
201 VAX running VMS 6.2 (1.9+patches, client-only)
202 (see README.VMS for information on necessary hacks).
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.
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.
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.
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
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
226 Had to configure with ./configure --host=<arch>-lynx.
228 In src/cvs.h, protected the waitpid prototype with ifdef _POSIX_SOURCE.
229 (I might try building with gcc -mposix -D_POSIX_SOURCE.)
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.
237 Had to compile with "make LIBS=-lbsd" (to get gethostbyname
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
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.
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.
256 -------------------------------------------------------------------------------
258 Building from source code under Unix:
260 1) Some combinations of Automake and Autoconf versions may break the
261 CVS build if file timestamps aren't set correctly and people don't
262 have the same versions the developers do, so the rules to run them
263 automatically aren't included in the generated Makefiles unless you run
264 configure with --enable-maintainer-mode.
266 The CVS Makefiles and configure script were built using Automake 1.7.9 and
267 Autoconf 2.58, respectively.
269 There is a known bug in Autoconf 2.57 that will prevent the configure
270 scripts it generates from working on some platforms. Other combinations of
271 autotool versions may or may not work. If you get other versions to work,
272 please send a report to <bug-cvs@gnu.org>.
278 You can specify an alternate destination to override the default with
281 $ ./configure --prefix=/usr/local/gnu
283 or some path that is more appropriate for your site. The default prefix
284 value is "/usr/local", with binaries in sub-directory "bin", manual
285 pages in sub-directory "man", and libraries in sub-directory "lib".
287 A normal build of CVS will create an executable which supports
288 local, server, or client CVS (if you don't know the difference,
289 it is described in the Repository chapter of doc/cvs.texinfo). If
290 you do not intend to use client or server CVS, you may want to
291 prevent these features from being included in the executable you
292 build. You can do this with the --disable-client and
293 --disable-server options:
295 $ ./configure --disable-client --disable-server
297 Typically this can reduce the size of the executable by around 30%.
299 If you are building CVS with the server enabled, you can disable
300 server flow control using the --disable-server-flow-control
301 If you are working with a large remote repository and a 'cvs
302 checkout' is swamping your network and memory, enable flow control.
303 You will end up with even less probability of a consistent checkout
304 (see Concurrency in cvs.texinfo), but CVS doesn't try to guarantee
305 that anyway. The master server process will monitor how far it is
306 getting behind, if it reaches the high water mark, it will signal
307 the child process to stop generating data when convenient (ie: no
308 locks are held, currently at the beginning of a new directory).
309 Once the buffer has drained sufficiently to reach the low water
310 mark, it will be signalled to start again. You may override the
311 default hi/low watermarks here too by passing
312 '<lowwater>,<highwater>', in bytes, as an argument to
313 --enable-server-flow-control. The low water mark defaults to one
314 megabyte and the high water mark defaults to two megabytes.
316 $ ./configure --enable-server-flow-control=1M,2M
318 The --with-tmpdir argument to configure may be used to set a
319 specific directory for use as a default temporary directory. If not
320 set, configure will pick the first directory it finds which it has
321 read, write, and execute permissions to from $TMPDIR, $TMP, $TEMP,
322 /tmp, and /var/tmp, in that order. Failing that, it will use /tmp.
324 The --with-umask argument to configure can be used to change
325 the default umask used by the CVS server executable.
327 Unlike previous versions of CVS, you do not need to install RCS
330 If you are using gcc and are planning to modify CVS, you may want to
331 configure with -Wall; see the file HACKING for details.
333 If you have Kerberos 4 installed, you can specify the location of
334 the header files and libraries using the --with-krb4=DIR option.
335 DIR should be a directory with subdirectories include and lib
336 holding the Kerberos 4 header files and libraries, respectively.
337 The default value is /usr/kerberos.
339 If you want to enable support for encryption over Kerberos, use
340 the --enable-encryption option. This option is disabled by
343 If you want to disable automatic dependency tracking in the makefiles,
344 use the '--disable-dependency-tracking' option:
346 $ ./configure --disable-dependency-tracking
348 This avoids problems on some platforms. See the note at the end of this
351 Try './configure --help' for further information on its usage.
353 NOTE ON CVS's USE OF NDBM:
355 By default, CVS uses some built-in ndbm emulation code to allow
356 CVS to work in a heterogeneous environment. However, if you have
357 a very large modules database, this may not work well. You will
358 need to supply the --disable-cvs-ndbm option to configure to
359 accomplish this. If you do this, the following comments apply. If
360 not, you may safely skip these comments.
362 If you configure CVS to use the real ndbm(3) libraries and
363 you do not have them installed in a "normal" place, you will
364 probably want to get the GNU version of ndbm (gdbm) and install
365 that before running the CVS configure script. Be aware that the
366 GDBM 1.5 release does NOT install the <ndbm.h> header file included
367 with the release automatically. You may have to install it by hand.
369 If you configure CVS to use the ndbm(3) libraries, you cannot
370 compile CVS with GNU cc (gcc) on Sun-4 SPARC systems. However, gcc
371 2.0 may have fixed this limitation if -fpcc-struct-return is
372 defined. When using gcc on other systems to compile CVS, you *may*
373 need to specify the -fpcc-struct-return option to gcc (you will
374 *know* you have to if "cvs checkout" core dumps in some ndbm
375 function). You can do this as follows:
377 $ CC='gcc -fpcc-struct-return' ./configure
379 for sh, bash, and ksh users and:
381 % setenv CC 'gcc -fpcc-struct-return'
384 for csh and tcsh users.
386 END OF NOTE FOR NDBM GUNK.
392 This will (hopefully) make the needed CVS binaries within the
393 "src" directory. If something fails for your system, and you want
394 to submit a bug report, you may wish to include your
395 "config.status" file, your host type, operating system and
396 compiler information, make output, and anything else you think
399 3a) Run the regression tests (optional).
401 You may also wish to validate the correctness of the new binary by
402 running the regression tests. If they succeed, that is nice to
403 know. However, if they fail, it doesn't tell you much. Often it
404 will just be a problem with running the tests on your machine,
405 rather than a problem with CVS. Unless you will have the time to
406 determine which of the two it is in case of failure, you might
407 want to save yourself the time and just not run the tests.
409 If you want to run the tests, see the file TESTS for more information.
411 4) Install the binaries/documentation:
415 Depending on your installation's configuration, you may need to be
418 -------------------------------------------------------------------------------
420 Detailed information about your interaction with "configure":
422 The "configure" script and its interaction with its options and the
423 environment is described here. For more detailed documentation about
424 "configure", please run `./configure --help' or refer to the GNU Autoconf
427 Supported options are:
429 --srcdir=DIR Useful for compiling on many different
430 machines sharing one source tree.
431 --prefix=DIR The root of where to install the
432 various pieces of CVS (/usr/local).
433 --exec_prefix=DIR If you want executables in a
434 host-dependent place and shared
435 things in a host-independent place.
437 The following environment variables override configure's default
440 CC If not set, tries to use gcc first,
441 then cc. Also tries to use "-g -O"
442 as options, backing down to -g
443 alone if that doesn't work.
444 INSTALL If not set, tries to use "install", then
445 "./install-sh" as a final choice.
446 RANLIB If not set, tries to determine if "ranlib"
447 is available, choosing "echo" if it doesn't
449 YACC If not set, tries to determine if "bison"
450 is available, choosing "yacc" if it doesn't
453 -------------------------------------------------------------------------------
455 Building from source code under Windows NT/95/98/2000:
457 You may find interesting information in windows-NT/README.
459 * Using Microsoft Visual C++ 5.x (this is currently broken - someone with
460 MVC++ 5.x needs to regenerate the project files, but the builds using `nmake'
463 1) Using Microsoft Visual C++ 5.x, open the project `cvsnt.dsw',
464 in the top directory of the CVS distribution. If you have an older
465 version of Visual C++, take a look at windows-NT/README.
466 2) Choose "Build cvs.exe" from the "Project" menu.
467 3) MSVC will place the executable file cvs.exe in WinRel, or whatever
468 your target directory is.
470 * From the top level directory, with MSVC++ 6.0 installed, something like the
471 following also works:
474 C:\> nmake /f cvsnt.mak CFG="cvsnt - Win32 Debug"
476 * Using the Cygwin development environment <http://cygwin.com>, Windows clients
477 and servers can be built using the instructions for building on UNIX. For
478 deploying the CVS server on Windows NT, see the `cygrunsrv' executable that
481 * You might also try <http://wincvs.org> & <http://www.cvsnt.org>.
483 -------------------------------------------------------------------------------
485 Building from source code under other platforms:
487 For OS/2, see os2/README and emx/README.
489 For VMS, see README.VMS
491 Mac OS X: Builds fine, just like UNIX.
493 For older versions of Mac OS, you might try <http://wincvs.org>.
495 For a Java client, see jCVS (which is a separate package from CVS
496 itself, but which might be preferable to the Macintosh port mentioned
499 -------------------------------------------------------------------------------