summaryrefslogtreecommitdiff
path: root/INSTALL
diff options
context:
space:
mode:
authorCraig Silverstein <csilvers@khanacademy.org>2008-04-09 23:19:11 +0000
committerCraig Silverstein <csilvers@khanacademy.org>2008-04-09 23:19:11 +0000
commitaf3ed3cd171768a8002ffc27f7a27dde25b8f4d0 (patch)
treeeb756ac23e6a835f48689b542b98ae5dc69da267 /INSTALL
parente11cf84b89b5050fcee90d134572c6f41486183c (diff)
downloaddistcc-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--INSTALL192
1 files changed, 187 insertions, 5 deletions
diff --git a/INSTALL b/INSTALL
index 800e3c3..d2f53a3 100644
--- a/INSTALL
+++ b/INSTALL
@@ -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.