diff options
author | Craig Silverstein <csilvers@khanacademy.org> | 2008-04-09 23:19:11 +0000 |
---|---|---|
committer | Craig Silverstein <csilvers@khanacademy.org> | 2008-04-09 23:19:11 +0000 |
commit | af3ed3cd171768a8002ffc27f7a27dde25b8f4d0 (patch) | |
tree | eb756ac23e6a835f48689b542b98ae5dc69da267 /INSTALL | |
parent | e11cf84b89b5050fcee90d134572c6f41486183c (diff) | |
download | distcc-git-af3ed3cd171768a8002ffc27f7a27dde25b8f4d0.tar.gz |
Take these human-readable files and normalize their content and
location:
README Our blurp, tooting our horn
INSTALL The run_all_autoconf and friends incantations
COPYING GPL 2.0 license
distcc/README Martin's blurp
distcc/INSTALL Also: more on masquerading, host lists,
distcc/COPYING GPL 2.0 license
distcc/NEWS Recently updated
distcc/AUTHORS Martin Pool
distcc/README.packaging Various advice (version numbering etc)
distcc/TODO A very long list (not updated)
distcc/ChangeLog All changes under arch and under bzr
distcc/ChangeLog.old All changes from before arch.
Now all live in the top-level directory. This is the first step
towards our eventual goal of getting rid of the second-level distcc
and include_server directories, and just having everything under one
top-level directory. We're all part of the same project now!
Here's how I merged and updated content:
. README became README.pump. It was slightly edited for clarity. (I
also redid all the line-wrapping, which makes diff-ing
difficult. :-( ) distcc/README became README, with a small amount
of text added to describe 'pump' mode, and point to README.pump.
. distcc/NEWS became NEWS. pump functionality was added (a new
"distcc-3.0" entry). I also added all new features and bug-fixes
since we moved from arch to bzr. It looks like NEWS was
well-maintained before the move to bzr, so this might be pretty
complete. There may be some more pump-developed bugfixes we need to
add, though.
. I got rid of distcc/COPYING. Now COPYING is the only license in
this directory. This file was not changed. It remains the GPL 2.0
license.
. distcc/AUTHORS became AUTHORS. I changed Martin to maintainer
emeritus. I added the Google authors as authors of the "pump"
functionality, and current maintainers. I set the Google email
address to be distcc@googlegroups.com, which is a new group I've set
up to be the clearinghouse for distcc discussions.
. distcc/README.packaging became README.packaging. It was not
otherwise changed.
. distcc/TODO became TODO. It was not otherwise changed, except I
added that folks should look for FIXMEs in source files, not just
TODOs.
. I merged INSTALL and distcc/INSTALL (in that order). I rearranged
the text a little bit to remove redundancy (both talked about
running 'configure'), but did not make any contentful changes.
. I merged distcc/ChangeLog and distcc/ChangeLog.old to have a single
changelog again going all the way to 2002. Comments now separate
the various version control systems used. (svn is #4!) The single
ChangeLog file now lives in the top-level directory.
Diffstat (limited to 'INSTALL')
-rw-r--r-- | INSTALL | 192 |
1 files changed, 187 insertions, 5 deletions
@@ -1,15 +1,25 @@ +Installation instructions for distcc -*- indented-text -*- + +distcc is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2 of the License, or (at your +option) any later version. distcc comes with ABSOLUTELY NO WARRANTY, +for details see the licence. + +Please report any problems to distcc@googlegroups.com. + To build: the simple way is to just do - run_all_autoconf.sh # invokes autoconf and autoheader using - # version info in the file version.sh - configure # creates distcc/config.h and makefiles - make # build + ./run_all_autoconf.sh # invokes autoconf and autoheader using + # version info in the file version.sh + ./configure # creates distcc/config.h and makefiles + make # build but the recommended way is to build in a different directory tree than the source tree: - run_all_autoconf.sh + ./run_all_autoconf.sh mkdir obj cd obj ../configure @@ -37,3 +47,175 @@ To test installation using your own machine as a distcc compilation server: See the shell script pump in this directory. +Prerequisites +------------- + +To build distcc you need + + GNU Make + A C compiler + +You can optionally have + + libpopt + + If this is not found on your system, it will be statically linked in. + + Python >=2.4 + + To use the "pump" include server, or to run the test suite with + "make maintainer-check", or to run the benchmarks. + + linuxdoc SGML tools + + To rebuild the documentation from its SGML source. + + autoconf >=2.5 + + To rebuild the configure scripts if you edit configure.ac. + +To build the optional GNOME monitor (--with-gnome), you need the +GNOME2 development libraries, and in particular + + gtk+ >=2.0 + libgnome >=2.0 + libgnomeui >= 2.0 + libglade >= 2.0 + libpango + +The monitor can also be built without GNOME desktop integration +(--with-gtk), in which case you need only + + gtk+ >=2.0 + libglade >= 2.0 + + +Preliminaries +------------- + +distcc can be installed and used without requiring root access. +Adjust directories appropriately when installing. + + +Compiling distcc +---------------- + +Note that the default GNU "sysconfdir" is /usr/local/etc. You may +want to change this to /etc. + + $ ./configure --sysconfdir=/etc + +You can set an installation prefix if you want to put distcc in /opt: + + $ ./configure --prefix=/opt/distcc/ + +distcc needs to be installed on all client and server machines. + +If you would like a graphical client-side monitor to show running +jobs, you can choose either --with-gnome or --with-gtk. + +If you would like to try running distcc over IPv6, use +--enable-rfc2553. You must have a reasonably recent operating system +or this is likely to fail in complex ways. + + +Starting the daemon +------------------- + +This stage is only required if you want to run distcc over TCP +sockets, rather than SSH connections. TCP is faster but less secure +and should only be used on trusted networks. + +In TCP mode distccd can run either from inetd or as a standalone +daemon. Running standalone is recommended. + +To run standalone, run a command like this, either from the command +line or from the system startup scripts. + + distccd --daemon + +If the daemon is started from an rc script, then make sure that it +sees a PATH setting which can find any compilers installed in +nonstandard directories. + +You should create a "distcc" account on server machines so that distcc +can run with minimal privilege. It is not necessary for this account +to own any files or have a home directory. If this account doesn't +exist, distccd uses the "nobody" account. + +By default distccd writes messages to the "daemon" syslog, which +typically ends up in /var/log/messages or /var/log/daemon. + +You can set IP-based access control using the --allow and --listen +options, in either inetd or daemon mode: + + distccd --allow 10.4.20.0/24 + +distccd does not need to run on machines that will only act as +clients. + +See the manual for more information. + + +Set up the host list +-------------------- + +On the client machines, store a list of servers names in +~/.distcc/hosts. If you're using TCP connections, it should look like +this: + + localhost red green blue + +For SSH connections + + localhost @red @green @blue + +The hosts should be listed in descending order of speed. localhost +should normally be first, unless it is signficantly slower than +another machine. + +The host list also needs ",cpp,lzo" after each host if you're using +pump mode - see README.pump for details. + +See the manual for more information. + + +Create the masquerade directories +--------------------------------- + +The easiest way to use distcc is in "masquerade" mode, where it is +installed on the path to "catch" calls to the compiler and redirect +them over the network. Other options are discussed in the manual. + +For instance, you could create the directory named /usr/lib/distcc/bin +and populate it with links. + +# mkdir /usr/lib/distcc/bin +# cd /usr/lib/distcc/bin +# ln -s ../../../bin/distcc gcc +# ln -s ../../../bin/distcc cc +# ln -s ../../../bin/distcc g++ +# ln -s ../../../bin/distcc c++ + +Do this for all compiler names that you use. + +Then, to use distcc, a user just needs to put the directory +/usr/lib/distcc/bin early in the PATH and distcc will handle the rest. + + export PATH=/usr/lib/distcc/bin:$PATH + + +Use with ccache +--------------- + +The best way to use is to set up a similar masquerade directory for +ccache, and put it on the path before distcc. + +NOTE: Use of ccache is incompatible with use of distcc's "pump" mode. + + +Complete the survey +------------------- + +Once you have distcc working for your own application, please complete +and mail in the survey in survyey.txt. |