summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfergus.henderson <fergushenderson@users.noreply.github.com>2011-10-24 23:26:20 +0000
committerfergus.henderson <fergushenderson@users.noreply.github.com>2011-10-24 23:26:20 +0000
commit7e048d9e159fff2e6d11117880377c14a73c88ad (patch)
tree457c5da7810014cada613f4e2048539c1c4ad39f
parent869bd169cd8953f357f4df3f246b98237ee5f345 (diff)
downloaddistcc-git-7e048d9e159fff2e6d11117880377c14a73c88ad.tar.gz
Regenerate the checked-in HTML for the man pages.
The HTML files were generated automatically using sudo apt-get install troffcvt make man-html But I have also changed the man source files to ensure that the generated output still looks nice. The changes were mainly replacing blank lines with ".PP", but there were a few other tweaks needed too. Tested by viewing the output on both Chrome and Safari, and using "man" and (equivalently) "nroff -man" and examining the changes. Reviewed by Craig Silverstein.
-rw-r--r--doc/web/man/distcc_1.html233
-rw-r--r--doc/web/man/distccd_1.html44
-rw-r--r--doc/web/man/distccmon_text_1.html2
-rw-r--r--doc/web/man/include_server_1.html96
-rw-r--r--doc/web/man/pump_1.html6
-rw-r--r--man/distcc.145
-rw-r--r--man/include_server.164
7 files changed, 326 insertions, 164 deletions
diff --git a/doc/web/man/distcc_1.html b/doc/web/man/distcc_1.html
index 94cedaa..fa3ff5a 100644
--- a/doc/web/man/distcc_1.html
+++ b/doc/web/man/distcc_1.html
@@ -27,45 +27,49 @@ Table of Contents
<LI>
<A HREF=#TOC_5> QUICKSTART FOR DISTCC-PUMP MODE</A>
<LI>
-<A HREF=#TOC_6> HOW PLAIN (NON-PUMP) DISTCC WORKS</A>
+<A HREF=#TOC_6> QUICKSTART FOR DISTCC-GSSAPI MODE</A>
<LI>
-<A HREF=#TOC_7> HOW DISTCC-PUMP MODE WORKS</A>
+<A HREF=#TOC_7> HOW PLAIN (NON-PUMP) DISTCC WORKS</A>
<LI>
-<A HREF=#TOC_8> RESTRICTIONS FOR PUMP MODE</A>
+<A HREF=#TOC_8> HOW DISTCC-PUMP MODE WORKS</A>
<LI>
-<A HREF=#TOC_9> OPTION SUMMARY</A>
+<A HREF=#TOC_9> RESTRICTIONS FOR PUMP MODE</A>
<LI>
-<A HREF=#TOC_10> INSTALLING DISTCC</A>
+<A HREF=#TOC_10> HOW DISTCC-GSSAPI MODE WORKS</A>
<LI>
-<A HREF=#TOC_11> MASQUERADING</A>
+<A HREF=#TOC_11> OPTION SUMMARY</A>
<LI>
-<A HREF=#TOC_12> USING DISTCC WITH CCACHE</A>
+<A HREF=#TOC_12> INSTALLING DISTCC</A>
<LI>
-<A HREF=#TOC_13> HOST SPECIFICATIONS</A>
+<A HREF=#TOC_13> MASQUERADING</A>
<LI>
-<A HREF=#TOC_14> COMPRESSION</A>
+<A HREF=#TOC_14> USING DISTCC WITH CCACHE</A>
<LI>
-<A HREF=#TOC_15> SEARCH PATHS</A>
+<A HREF=#TOC_15> HOST SPECIFICATIONS</A>
<LI>
-<A HREF=#TOC_16> TIMEOUTS</A>
+<A HREF=#TOC_16> COMPRESSION</A>
<LI>
-<A HREF=#TOC_17> DIAGNOSTICS</A>
+<A HREF=#TOC_17> SEARCH PATHS</A>
<LI>
-<A HREF=#TOC_18> EXIT CODES</A>
+<A HREF=#TOC_18> TIMEOUTS</A>
<LI>
-<A HREF=#TOC_19> FILES</A>
+<A HREF=#TOC_19> DIAGNOSTICS</A>
<LI>
-<A HREF=#TOC_20> ENVIRONMENT VARIABLES</A>
+<A HREF=#TOC_20> EXIT CODES</A>
<LI>
-<A HREF=#TOC_21> CROSS COMPILING</A>
+<A HREF=#TOC_21> FILES</A>
<LI>
-<A HREF=#TOC_22> BUGS</A>
+<A HREF=#TOC_22> ENVIRONMENT VARIABLES</A>
<LI>
-<A HREF=#TOC_23> AUTHOR</A>
+<A HREF=#TOC_23> CROSS COMPILING</A>
<LI>
-<A HREF=#TOC_24> LICENCE</A>
+<A HREF=#TOC_24> BUGS</A>
<LI>
-<A HREF=#TOC_25> SEE ALSO</A>
+<A HREF=#TOC_25> AUTHOR</A>
+<LI>
+<A HREF=#TOC_26> LICENCE</A>
+<LI>
+<A HREF=#TOC_27> SEE ALSO</A>
</UL>
<!-- TOC END -->
<BR>
@@ -204,23 +208,35 @@ QUICKSTART FOR DISTCC-PUMP MODE</A>
Proceed as above, but in Step 3, specify that the remote hosts
are to carry the burden of preprocessing and that the files sent
over the network should be compressed:<BR>
-<P>
<UL>
$ export DISTCC_HOSTS='--randomize localhost red,cpp,lzo green,cpp,lzo
blue,cpp,lzo'<BR>
</UL>
-<P>
The <B> --randomize</B> option enforces a uniform usage of compile
servers. While you will get some benefit from distcc's pump mode
with only a few servers, you get increasing benefit with more
server CPUs (up to the hundreds!). Wrap your build inside the
pump command, here assuming 10 servers:<BR>
-<P>
<UL>
$ pump make -j20 CC=distcc<BR>
</UL>
<H2>
<A NAME=TOC_6>
+QUICKSTART FOR DISTCC-GSSAPI MODE</A>
+</H2>
+Proceed as per the <B> QUICKSTART</B> but in Step 3, specify that
+the remote hosts are to mutually authenticate with the client:<BR>
+<UL>
+$ export DISTCC_HOSTS='--randomize localhost red,auth green,auth
+blue,auth'<BR>
+</UL>
+If distccd runs under a specific principal name then execute the
+following command prior to step 4:<BR>
+<UL>
+export DISTCC_PRINICIPAL=&lt;name&gt;<BR>
+</UL>
+<H2>
+<A NAME=TOC_7>
HOW PLAIN (NON-PUMP) DISTCC WORKS</A>
</H2>
distcc only ever runs the compiler and assembler remotely. With
@@ -241,9 +257,8 @@ of the work can be distributed.<BR>
<P>
distcc examines its command line to determine which of these phases
are being invoked, and whether the job can be distributed.<BR>
-<P>
<H2>
-<A NAME=TOC_7>
+<A NAME=TOC_8>
HOW DISTCC-PUMP MODE WORKS</A>
</H2>
In pump mode, distcc runs the preprocessor remotely too. To do
@@ -285,13 +300,11 @@ of plain distcc.<BR>
Because distcc in pump mode is able to push out files up to about
ten times faster, build speed may increase 3X or more for large
builds compared to plain distcc mode.<BR>
-<P>
<H2>
-<A NAME=TOC_8>
+<A NAME=TOC_9>
RESTRICTIONS FOR PUMP MODE</A>
</H2>
<BR>
-<P>
Using pump mode requires both client and servers to use release
3.0 or later of distcc and distccd (respectively).<BR>
<P>
@@ -322,38 +335,50 @@ path restricted to directories of the compiler installation.<BR>
<P>
See the <B>include_server</B>(1) manual for more information on
symptoms and causes of violations of distcc-pump mode assumptions.<BR>
-<P>
<H2>
-<A NAME=TOC_9>
+<A NAME=TOC_10>
+HOW DISTCC-GSSAPI MODE WORKS</A>
+</H2>
+<BR>
+In this mode distcc will use the GSS-API framework to access the
+currently configured security mechanism and perform mutual authentication
+with the daemon.<BR>
+<H2>
+<A NAME=TOC_11>
OPTION SUMMARY</A>
</H2>
Most options passed to distcc are interpreted as compiler options.
The following options are understood by distcc itself. If any
of these options are specified, distcc will not invoke the compiler.<BR>
-<P>
<DL>
<DT>
<B>--help</B>
</DT>
<DD>
Displays summary instructions.<BR>
-<P>
</DD>
+</DL>
+<P>
+<DL>
<DT>
<B>--version</B>
</DT>
<DD>
Displays the distcc client version.<BR>
-<P>
</DD>
+</DL>
+<P>
+<DL>
<DT>
<B>--show-hosts</B>
</DT>
<DD>
Displays the host list that distcc would use. See the Host Specifications
section.<BR>
-<P>
</DD>
+</DL>
+<P>
+<DL>
<DT>
<B>--scan-includes</B>
</DT>
@@ -364,32 +389,48 @@ machine, as computed by the include server. This is a conservative
compiler. This option only works in pump mode. See the &quot;How
Distcc-pump Mode Works&quot; section for details on how this is
computed.<BR>
-<P>
-The list output by <B>distcc --scan-includes</B> will contain
-one entry per line. Each line contains a category followed by
-a path. The category is one of FILE, SYMLINK, DIRECTORY, or SYSTEMDIR:<BR>
-<P>
</DD>
</DL>
<UL>
+The list output by <B>distcc --scan-includes</B> will contain
+one entry per line. Each line contains a category followed by
+a path. The category is one of FILE, SYMLINK, DIRECTORY, or SYSTEMDIR:<BR>
+<DL>
+<DT>
+<BR>
+</DT>
+<DD>
<B>FILE</B> indicates a source file or header file that would
be sent to the distcc server host.<BR>
-<P>
+</DD>
+<DT>
+<BR>
+</DT>
+<DD>
<B>SYMLINK</B> indicates a symbolic link that would be sent to
the distcc server host.<BR>
-<P>
+</DD>
+<DT>
+<BR>
+</DT>
+<DD>
<B>DIRECTORY</B> indicates a directory that may be needed in order
to compile the source file. For example, a directory &quot;foo&quot;
may be needed because of an include of the form #include &quot;foo/../bar.h&quot;.
Such directories would be created on the distcc server host.<BR>
-<P>
+</DD>
+<DT>
+<BR>
+</DT>
+<DD>
<B>SYSTEMDIR</B> indicates a system include directory, i.e. a
directory which is on the compiler's default include path, such
as &quot;/usr/include&quot;; such directories are assumed to be
present on the distcc server host, and so would not be sent to
the distcc server host.<BR>
+</DD>
+</DL>
</UL>
-<P>
<DL>
<DT>
<B>-j</B>
@@ -402,8 +443,19 @@ number of hosts in the host list, unless the /LIMIT option was
used in the host list. See the Host Specifications section.<BR>
</DD>
</DL>
+<P>
+<DL>
+<DT>
+<B>--show-principal</B>
+</DT>
+<DD>
+Displays the name of the distccd security principal extracted
+from the environment. <B> This option is only available if distcc
+was compiled with</B> <B> the --with-auth configure option.</B><BR>
+</DD>
+</DL>
<H2>
-<A NAME=TOC_10>
+<A NAME=TOC_12>
INSTALLING DISTCC</A>
</H2>
There are three different ways to call distcc, to suit different
@@ -435,7 +487,7 @@ If you're not using a masquerade directory, you'll need to either
change CC and/or CXX, or modify the makefile(s) to call distcc
explicitly.<BR>
<H2>
-<A NAME=TOC_11>
+<A NAME=TOC_13>
MASQUERADING</A>
</H2>
The basic idea is to create a &quot;masquerade directory&quot;
@@ -488,9 +540,8 @@ distcc /usr/bin/gcc &quot;$@&quot;<BR>
In this way, we are not dependent on distcc having to locate the
real gcc by investigating the PATH variable. Instead, the compiler
location is explicitly provided.<BR>
-<P>
<H2>
-<A NAME=TOC_12>
+<A NAME=TOC_14>
USING DISTCC WITH CCACHE</A>
</H2>
ccache is a program that speeds software builds by caching the
@@ -502,7 +553,6 @@ work together.<BR>
The most reliable method is to set<BR>
<DL>
<DT>
-<P>
<BR>
</DT>
<DD>
@@ -517,7 +567,6 @@ ccache can then be run using either a masquerade directory <I>
or</I> by setting<BR>
<DL>
<DT>
-<P>
<BR>
</DT>
<DD>
@@ -529,10 +578,9 @@ As of version 2.2, ccache does not cache compilation from preprocessed
source and so will never get a cache hit if it is run from distccd
or distcc. It must be run only on the client side and before
distcc to be any use.<BR>
-<P>
distcc's pump mode is not compatible with ccache.<BR>
<H2>
-<A NAME=TOC_13>
+<A NAME=TOC_15>
HOST SPECIFICATIONS</A>
</H2>
A &quot;host list&quot; tells distcc which machines to use for
@@ -607,9 +655,9 @@ The syntax is<BR>
SSH_HOST = [USER]@HOSTID[/LIMIT][:COMMAND][OPTIONS]<BR>
TCP_HOST = HOSTID[:PORT][/LIMIT][OPTIONS]<BR>
OLDSTYLE_TCP_HOST = HOSTID[/LIMIT][:PORT][OPTIONS]<BR>
- HOSTID = HOSTNAME | IPV4<BR>
+ HOSTID = HOSTNAME | IPV4 | IPV6<BR>
OPTIONS = ,OPTION[OPTIONS]<BR>
- OPTION = lzo | cpp<BR>
+ OPTION = lzo | cpp | auth<BR>
GLOBAL_OPTION = --randomize<BR>
ZEROCONF = +zeroconf<BR>
<P>
@@ -626,6 +674,13 @@ a daemon on the local machine for testing, then give the machine's
IP address or real hostname. (This will be slower.)<BR>
</DD>
<DT>
+<B>IPV6</B>
+</DT>
+<DD>
+A literal IPv6 address enclosed in square brackets, such as <B>
+[::1]</B><BR>
+</DD>
+<DT>
<B>IPV4</B>
</DT>
<DD>
@@ -692,6 +747,12 @@ must be wrapped in the pump script in order to start the include
server.<BR>
</DD>
<DT>
+<B>,auth</B>
+</DT>
+<DD>
+Enables GSSAPI-based mutual authentication for this host.<BR>
+</DD>
+<DT>
<B>--randomize</B>
</DT>
<DD>
@@ -728,7 +789,7 @@ a hash/pound sign (<B>#</B>) and run to the end of the line.<BR>
If a host in the list is not reachable distcc will emit a warning
and ignore that host for about one minute.<BR>
<H2>
-<A NAME=TOC_14>
+<A NAME=TOC_16>
COMPRESSION</A>
</H2>
The <B> lzo</B> host option specifies that LZO compression should
@@ -748,7 +809,7 @@ server always responds with compressed replies to compressed requests.<BR>
<P>
Pump mode requires the servers to have the lzo host option on.<BR>
<H2>
-<A NAME=TOC_15>
+<A NAME=TOC_17>
SEARCH PATHS</A>
</H2>
<BR>
@@ -767,7 +828,7 @@ directory, only the base name of the compiler is used. The client's
PATH is used only to run the preprocessor and has no effect on
the server's path.<BR>
<H2>
-<A NAME=TOC_16>
+<A NAME=TOC_18>
TIMEOUTS</A>
</H2>
<BR>
@@ -780,7 +841,7 @@ timeout expires, the job will be re-run locally.<BR>
<P>
The timeouts are not configurable at present.<BR>
<H2>
-<A NAME=TOC_17>
+<A NAME=TOC_19>
DIAGNOSTICS</A>
</H2>
Error messages or warnings from local or remote compilers are
@@ -792,7 +853,7 @@ environment variable on the client, and the <B> --verbose</B>
option on the server. For troubleshooting, examine both the client
and server error messages.<BR>
<H2>
-<A NAME=TOC_18>
+<A NAME=TOC_20>
EXIT CODES</A>
</H2>
The exit code of distcc is normally that of the compiler: zero
@@ -920,9 +981,15 @@ No hosts defined and fallbacks disabled.<BR>
<DD>
Timeout.<BR>
</DD>
+<DT>
+119
+</DT>
+<DD>
+GSS-API - Catchall error code for GSS-API related errors.<BR>
+</DD>
</DL>
<H2>
-<A NAME=TOC_19>
+<A NAME=TOC_21>
FILES</A>
</H2>
If $DISTCC_HOSTS is not set, distcc reads a host list from either
@@ -933,7 +1000,7 @@ at compile time. The file locations are shown in the output from
distcc creates a number of temporary and lock files underneath
the temporary directory.<BR>
<H2>
-<A NAME=TOC_20>
+<A NAME=TOC_22>
ENVIRONMENT VARIABLES</A>
</H2>
distcc's behaviour is controlled by a number of environment variables.
@@ -971,6 +1038,16 @@ compilations will simply fail. Note that this does not affect
jobs which must always be local such as linking.<BR>
</DD>
<DT>
+<B>DISTCC_IO_TIMEOUT</B>
+</DT>
+<DD>
+Specifies how long (in seconds) distcc will wait before deciding
+a distributed job has timed out. If a distributed job is expected
+to takes a long time, consider increasing this value so the job
+does not time out and fallback to a local compile. By default
+set to 300 seconds.<BR>
+</DD>
+<DT>
<B>DISTCC_SAVE_TEMPS</B>
</DT>
<DD>
@@ -997,6 +1074,13 @@ a similar command line. The command is not split into words and
is not executed through the shell.<BR>
</DD>
<DT>
+<B>DISTCC_SKIP_LOCAL_RETRY</B>
+</DT>
+<DD>
+If set, when a remote compile fails, distcc will no longer try
+to recompile that file locally.<BR>
+</DD>
+<DT>
<B>DISTCC_DIR</B>
</DT>
<DD>
@@ -1030,14 +1114,32 @@ file changed between the failing remote compilation and the succeeding
local compilation.<BR>
</DD>
<DT>
+<B>DISTCC_MAX_DISCREPANCY</B>
+</DT>
+<DD>
+The maximum number of remote compilation failures allowed in pump
+mode before distcc switches to plain distcc mode. By default set
+to 1.<BR>
+</DD>
+<DT>
<B>DCC_EMAILLOG_WHOM_TO_BLAME</B>
</DT>
<DD>
The email address for discrepancy email; the default is &quot;distcc-pump-errors&quot;.<BR>
</DD>
+<DT>
+<B>DISTCC_PRINCIPAL</B>
+</DT>
+<DD>
+If set, specifies the name of the principal that distccd runs
+under, and is used to authenticate the server to the client. <B>
+This environment variable is only used if distcc was compiled
+with</B> <B> the --with-auth configure option and the ,auth per
+host option is specified.</B><BR>
+</DD>
</DL>
<H2>
-<A NAME=TOC_21>
+<A NAME=TOC_23>
CROSS COMPILING</A>
</H2>
Cross compilation means building programs to run on a machine
@@ -1070,7 +1172,7 @@ native, <I> gcc-VERSION</I> and <I> gcc</I> .<BR>
The compiler must be installed under the same name on the client
and on every volunteer machine.<BR>
<H2>
-<A NAME=TOC_22>
+<A NAME=TOC_24>
BUGS</A>
</H2>
If you think you have found a distcc bug, please see the file
@@ -1145,10 +1247,9 @@ to plain mode.<BR>
In distcc-pump mode, certain assumptions are made that source
and header files do not change during the build. See discussion
in section DISTCC DISCREPANCY SYMPTOMS of <B>include_server</B>(1().<BR>
-<P>
Other known bugs may be documented on <I> http://code.google.com/p/distcc/</I><BR>
<H2>
-<A NAME=TOC_23>
+<A NAME=TOC_25>
AUTHOR</A>
</H2>
distcc was written by Martin Pool &lt;mbp@sourcefrog.net&gt;,
@@ -1157,7 +1258,7 @@ Frerich Raabe, Dimitri Papadopoulos and others noted in the NEWS
file. Please report bugs to &lt;distcc@lists.samba.org&gt;.
See <B>pump</B>(1) for the authors of pump mode.<BR>
<H2>
-<A NAME=TOC_24>
+<A NAME=TOC_26>
LICENCE</A>
</H2>
You are free to use distcc. distcc (including this manual) may
@@ -1166,7 +1267,7 @@ GNU General Public Licence version 2 or later. distcc comes with
absolutely no warrany. A copy of the GPL is included in the file
COPYING.<BR>
<H2>
-<A NAME=TOC_25>
+<A NAME=TOC_27>
SEE ALSO</A>
</H2>
<B>distccd</B>(1), <B>pump</B>(1), <B>include_server</B>(1), <B>gcc</B>(1),
diff --git a/doc/web/man/distccd_1.html b/doc/web/man/distccd_1.html
index 81ddcc4..4fbaee7 100644
--- a/doc/web/man/distccd_1.html
+++ b/doc/web/man/distccd_1.html
@@ -347,6 +347,40 @@ the distcc clients can just use &quot;+zeroconf&quot; in their
distcc host lists. <B> This option is only available if distccd
was compiled with</B> <B> Avahi support enabled.</B><BR>
</DD>
+<DT>
+<B>--auth</B>
+</DT>
+<DD>
+Peform GSS-API based mutual authentication. <B> This option is
+only available if distccd was compiled with</B> <B> the --with-auth
+configure option.</B><BR>
+</DD>
+<DT>
+<B>--show-principal</B>
+</DT>
+<DD>
+Displays the name of the distccd security principal extracted
+from the environment. <B> This option is only available if distccd
+was compiled with</B> <B> the --with-auth configure option.</B><BR>
+</DD>
+<DT>
+<B>--blacklist=FILE</B>
+</DT>
+<DD>
+Instruct distccd to reject connections from users whose principal
+names are listed in FILE. <B> This option is only available if
+distccd was compiled with</B> <B> the --with-auth configure option
+and if distccd is run with the</B> <B> --auth option.</B><BR>
+</DD>
+<DT>
+<B>--whitelist=FILE</B>
+</DT>
+<DD>
+Instruct distccd to accept connections only from users whose principal
+names are listed in FILE. <B> This option is only available if
+distccd was compiled with</B> <B> the --with-auth configure option
+and if distccd is run with the</B> <B> --auth option.</B><BR>
+</DD>
</DL>
<H2>
<A NAME=TOC_9>
@@ -436,6 +470,16 @@ to on.<BR>
Directory for temporary files such as preprocessor output. By
default /tmp/ is used.<BR>
</DD>
+<DT>
+<B>DISTCCD_PRINCIPAL</B>
+</DT>
+<DD>
+If set, specifies the name of the principal that distccd runs
+under, and is used to authenticate with the client. <B> This environment
+variable is only used if distccd was compiled with</B> <B> the
+--with-auth configure option and if distccd is run with the --auth
+option.</B><BR>
+</DD>
</DL>
<H2>
<A NAME=TOC_12>
diff --git a/doc/web/man/distccmon_text_1.html b/doc/web/man/distccmon_text_1.html
index c15c159..98981d7 100644
--- a/doc/web/man/distccmon_text_1.html
+++ b/doc/web/man/distccmon_text_1.html
@@ -123,7 +123,6 @@ EXAMPLES</A>
To display currently active jobs (updated every second):<BR>
<DL>
<DT>
-<P>
<BR>
</DT>
<DD>
@@ -134,7 +133,6 @@ distccmon-text 1<BR>
To display the status once:<BR>
<DL>
<DT>
-<P>
<BR>
</DT>
<DD>
diff --git a/doc/web/man/include_server_1.html b/doc/web/man/include_server_1.html
index 39f5696..ada1883 100644
--- a/doc/web/man/include_server_1.html
+++ b/doc/web/man/include_server_1.html
@@ -86,14 +86,14 @@ The distcc client will pass these files on to a compilation server,
where they will be uncompressed and mounted temporarily.<BR>
<P>
If the include server is not able to process the request, then
-it returns the empty list to the distcc client. There are two
-kinds of failures that relate to the include server. The include
-server may fail to compute the includes or fail in other ways,
-see section <B>INCLUDE SERVER SYMPTOMS</B>. Also, the compilation
-on the remove server may fail due to inadequacy of the calculated
-include closure, but then succeed when locally retried, see section
-<B>DISTCC DISCREPANCY SYMPTOMS</B>.<BR>
-<P>
+it returns the empty list to the distcc client.<BR>
+<P>
+There are two kinds of failures that relate to the include server.
+The include server may fail to compute the includes or fail in
+other ways, see section <B>INCLUDE SERVER SYMPTOMS</B>. Also,
+the compilation on the remove server may fail due to inadequacy
+of the calculated include closure, but then succeed when locally
+retried, see section <B>DISTCC DISCREPANCY SYMPTOMS</B>.<BR>
<H2>
<A NAME=TOC_4>
OPTION SUMMARY</A>
@@ -182,14 +182,22 @@ includes. Thus, this flag is useful for preventing such fallbacks
when the absolute includes are a false alarm, either because the
absolute include is discarded during preprocessing or because
the absolutely included file exists on the compilation servers.<BR>
-<P>
+</DD>
+<DT>
+<BR>
+</DT>
+<DD>
More precisely, with --unsafe_absolute_includes absolute includes
are ignored for the purposes of gathering the include closure.
Using this option may lead to incorrect results because (1) the
header may actually be included on the compilation server and
it may not be the same as on the client, (2) the include directives
of the header are not further analyzed.<BR>
-<P>
+</DD>
+<DT>
+<BR>
+</DT>
+<DD>
The option is useful for compiling code that has such hardcoded
absolute locations of header files inside conditional directives
(e.g. &quot;#ifdef&quot;) that render the includes irrelevant.
@@ -219,7 +227,6 @@ files as calculated by CPP to a .d_exact file.<BR>
</DT>
<DD>
Use CPP instead, do not omit system headers files.<BR>
-<P>
</DD>
</DL>
<H2>
@@ -227,8 +234,6 @@ Use CPP instead, do not omit system headers files.<BR>
INCLUDE SERVER SYMPTOMS AND ISSUES</A>
</H2>
<BR>
-<P>
-<P>
The most likely messages and warnings to come from the include
processor are listed below.<BR>
<P>
@@ -242,8 +247,10 @@ To determine the default system header directories, the include
server runs the compiler once for each language needed during
its session. This message indicates that the compiler specified
to distcc is not present on the client.<BR>
-<P>
</DD>
+</DL>
+<P>
+<DL>
<DT>
<B>Preprocessing locally. Include server not covering: Bailing
out because include server spent more than ...s user time handling
@@ -253,8 +260,10 @@ request</B>
In uncommon situations, the include server fails to analyze very
complicated macro expressions. The distcc client will use plain
distcc mode.<BR>
-<P>
</DD>
+</DL>
+<P>
+<DL>
<DT>
<B>Warning: Filepath must be relative but isn't</B>
</DT>
@@ -265,12 +274,19 @@ no guarantee that this header on the compilation server machine
will be the same as that on the client. The include server gives
up analyzing the include closure. The distcc client cannot use
pump-mode.<BR>
-<P>
+</DD>
+<DT>
+<BR>
+</DT>
+<DD>
To overcome this problem in a not always reliable way, set the
environment variable INCLUDE_SERVER_ARGS='--unsafe_absolute_includes'
when invoking the pump script to pass the --unsafe_absolute_includes
option to the include server.<BR>
</DD>
+</DL>
+<P>
+<DL>
<DT>
<B>Warning: Absolute filepath ... was IGNORED</B>
</DT>
@@ -280,6 +296,9 @@ under the same circumstances as when &quot;Filepath must be relative
but isn't&quot; is issued, but in this case the include will provide
an answer to the distcc client.<BR>
</DD>
+</DL>
+<P>
+<DL>
<DT>
<B>Warning: Path '/PATH/FILE' changed/came into existence/no longer
exists</B>
@@ -292,8 +311,10 @@ analysis invalid. This message can usually be ignored; it does
signify a somewhat precarious use of files by the build system.
It is recommended to fix the build system so that files are not
rewritten.<BR>
-<P>
</DD>
+</DL>
+<P>
+<DL>
<DT>
<B>Warning: For translation unit ..., lookup of file ... resolved
to ... whose realpath is ...</B>
@@ -301,8 +322,6 @@ to ... whose realpath is ...</B>
<DD>
This warning occurs with --path_observation_re when a new realpath
matching a source or header file is observed.<BR>
-<P>
-<P>
</DD>
</DL>
<H2>
@@ -310,8 +329,6 @@ matching a source or header file is observed.<BR>
DISTCC DISCREPANCY SYMPTOMS</A>
</H2>
<BR>
-<P>
-<P>
The interactions between the build system, distcc, and the include
server is somewhat complex. When a distcc commands receives a
failing compilation from the remote server it retries the compilation
@@ -347,7 +364,7 @@ the local compilation.<BR>
<P>
The fallback behavior for distcc-pump mode to local compilation
can be disabled by setting the environment variable DISTCC_FALLBACK
-to 1, which makes the distcc command fail as soon as the remote
+to 0, which makes the distcc command fail as soon as the remote
compilation has failed. This setting is very useful for debugging
why the remote compilation went wrong, because now the output
from the server will be printed.<BR>
@@ -360,8 +377,10 @@ Next we discuss the possible causes of discrepancies.<BR>
</DT>
<DD>
This yields inconsistent results of course.<BR>
-<P>
</DD>
+</DL>
+<P>
+<DL>
<DT>
<B>A source or header file changed during the build.</B>
</DT>
@@ -371,18 +390,19 @@ happens for 'include/linux/compile.h' and 'include/asm/asm-offsets.h'.
This condition is fixed by letting the include server know that
it must reset its caches when a stat of any of the files changes.
Practically, this is done by gathering the files in a colon-separated
-list and then setting the INCLUDE_SERVER_ARGS command as in:<BR>
-<P>
-include_server_args=&quot;--stat_reset_triggers=include/linux/compile.h:include/asm/asm-offsets.h&quot;<BR>
-<P>
+list and then setting the INCLUDE_SERVER_ARGS environment variable
+when invoking the pump script, so that it passes the <B> --stat_reset_triggers</B>
+option; for example,<BR>
+INCLUDE_SERVER_ARGS=&quot;--stat_reset_triggers=include/linux/compile.h:include/asm/asm-offsets.h&quot;<BR>
</DD>
+</DL>
+<P>
+<DL>
<DT>
<B>A header file is potentially included, but does not exist,
and is then later included.</B>
</DT>
<DD>
-<BR>
-<P>
This occurs when some header foo.h includes another header file
trick.h, but the trick.h file has not yet been generated and the
inclusion is actually ignored because of preprocessing directives.
@@ -394,8 +414,10 @@ believe that the file still does not exist. The solution to this
problem is to make the build system generate trick.h before the
first time any header file is included that makes a syntactic
reference to trick.h<BR>
-<P>
</DD>
+</DL>
+<P>
+<DL>
<DT>
<B>The include server was started with --unsafe_absolute_includes</B>.<B>
</DT>
@@ -406,15 +428,15 @@ often protected by conditional directives that evaluate so that
are actually used on only specific and often uncommon platforms.
If you are not compiling for such a platform, then it may be correct
to use --unsafe_absolute_include</B>.<BR>
-<P>
</DD>
+</DL>
+<P>
+<DL>
<DT>
<B>The include server has calculated the wrong includes.</B>
</DT>
<DD>
We do not know of such a situation.<BR>
-<P>
-<P>
</DD>
</DL>
<H2>
@@ -424,13 +446,11 @@ EXIT CODES</A>
The exit code of include_server.py is usually 0. That the include
server has been started properly is communicated through the existence
of the pid_file.<BR>
-<P>
<H2>
<A NAME=TOC_8>
ENVIRONMENT VARIABLES</A>
</H2>
<BR>
-<P>
<B>DISTCC_EMAILLOG_WHOM_TO_BLAME</B> The email address to use
for include server automated emails. The default is 'distcc-pump-errors'
(which is an email address that probably will not exist in your
@@ -438,8 +458,6 @@ domain).<BR>
<P>
Additionally, the invocation of the compiler may use additional
environment variables.<BR>
-<P>
-<P>
<H2>
<A NAME=TOC_9>
BUGS</A>
@@ -448,14 +466,12 @@ If you think you have found a distcc bug, please see the file
<I>reporting-bugs.txt</I> in the documentation directory for information
on how to report it.<BR>
<P>
-<P>
In distcc-pump mode, the include server is unable to handle certain
very complicated computed includes as found in parts of the Boost
library. The include server will time out and distcc will revert
to plain mode.<BR>
<P>
Other known bugs may be documented on <I> http://code.google.com/p/distcc/</I><BR>
-<P>
<H2>
<A NAME=TOC_10>
AUTHOR</A>
@@ -463,7 +479,6 @@ AUTHOR</A>
The include server was written by Nils Klarlund, with assistance
from Fergus Henderson, Manos Renieris, and Craig Silverstein.
Please report bugs to &lt;distcc@lists.samba.org&gt;.<BR>
-<P>
<H2>
<A NAME=TOC_11>
LICENCE</A>
@@ -473,7 +488,6 @@ be copied, modified or distributed only under the terms of the
GNU General Public Licence version 2 or later. distcc comes with
absolutely no warrany. A copy of the GPL is included in the file
COPYING.<BR>
-<P>
<H2>
<A NAME=TOC_12>
SEE ALSO</A>
diff --git a/doc/web/man/pump_1.html b/doc/web/man/pump_1.html
index 34eb341..dbc11d1 100644
--- a/doc/web/man/pump_1.html
+++ b/doc/web/man/pump_1.html
@@ -157,6 +157,12 @@ Python executables and distcc itself will be retrieved from the
parent directory of the location.<BR>
</DD>
<DT>
+<B>DISTCC_MAX_DISCREPANCY</B>
+</DT>
+<DD>
+see the <B>distcc(1)</B> man page.<BR>
+</DD>
+<DT>
<B>DISTCC_POTENTIAL_HOSTS</B>
</DT>
<DD>
diff --git a/man/distcc.1 b/man/distcc.1
index 556133d..8f6223c 100644
--- a/man/distcc.1
+++ b/man/distcc.1
@@ -66,7 +66,7 @@ CPUs but subject to client limitations. This setting allows for maximal
interleaving of tasks being blocked waiting for disk or network IO. Note that
distcc can also work with other build control tools, such as SCons, where similar
concurrency settings must be adjusted.
-
+.PP
The
.B -j
setting, especially for large values of
@@ -86,7 +86,7 @@ values than 16 may be used without overloading a single-CPU
client due to preprocessing. Such large values may speed up parts of the build
that do not involve C compilations, but they may not be useful to distcc
efficiency in plain mode.
-
+.PP
In contrast, using pump mode and say 40 servers, a setting of
.B -j80
or larger may be appropriate even for single-CPU clients.
@@ -180,11 +180,11 @@ preprocessor must have access to all the files that it would have accessed if
had been running locally. In pump mode, therefore, distcc gathers all of the
recursively included headers, except the ones that are default system headers,
and sends them along with the source file to the compilation server.
-
+.PP
In distcc-pump mode, the server unpacks the set of all source files in a
temporary directory, which contains a directory tree that mirrors the part of
the file system that is relevant to preprocessing, including symbolic links.
-
+.PP
The compiler is then run from the path in the temporary directory that
corresponds to the current working directory on the client. To find and
transmit the many hundreds of files that are often part of a single compilation,
@@ -192,13 +192,13 @@ pump mode uses an incremental include analysis algorithm. The include server is
a Python program that implements this algorithm. The pump command starts the
include server so that throughout the build it can answer include queries by
distcc commands.
-
+.PP
The include server uses static analysis of the macro language to deal
with conditional compilation and computed includes. It uses the
property that when a given header file has already been analyzed for
includes, it is not necessary to do so again if all the include
options (-I's) are unchanged (along with other conditions).
-
+.PP
For large builds, header files are included, on average, hundreds of
times each. With distcc-pump mode each such file is analyzed only a
few times, perhaps just once, instead of being preprocessed hundreds
@@ -206,7 +206,7 @@ of times. Also, each source or header file is now compressed only
once, because the include server memoizes the compressed files. As a
result, the time used for preparing compilations may drop by up to an
order of magnitude over the preprocessing of plain distcc.
-
+.PP
Because distcc in pump mode is able to push out files up to about ten
times faster, build speed may increase 3X or more for large builds
compared to plain distcc mode.
@@ -215,7 +215,7 @@ compared to plain distcc mode.
Using pump mode requires both client and servers to use release 3.0 or
later of distcc and distccd (respectively).
-
+.PP
The incremental include analysis of distc-pump mode rests on
the fundamental assumption that source and header files do not change
during the build process. A few complex build systems, such as that
@@ -224,7 +224,7 @@ overcome such issues, and other corner cases such as absolute
filepaths in includes, see the
.BR include_server(1)
man page.
-
+.PP
Another important assumption is that the include configuration of all machines
must be identical. Thus the headers under the default system path must be the
same on all servers and all clients. If a standard GNU compiler installation
@@ -232,16 +232,16 @@ is used, then this requirement applies to all libraries whose header files are
installed under /usr/include or /usr/local/include/. Note that installing
software packages often lead to additional headers files being placed in
subdirectories of either.
-
+.PP
If this assumption does not hold, then it is possible to break builds with
distcc-pump mode, or worse, to get wrong results without warning. Presently
this condition is not verified, and it is on our TODO list to address this
issue.
-
+.PP
An easy way to guarantee that the include configurations are identical is to use
a cross-compiler that defines a default system search path restricted to
directories of the compiler installation.
-
+.PP
See the \fBinclude_server\fR(1) manual for more information on symptoms and
causes of violations of distcc-pump mode assumptions.
@@ -260,16 +260,16 @@ compiler.
.TP
.B --help
Displays summary instructions.
-
+.PP
.TP
.B --version
Displays the distcc client version.
-
+.PP
.TP
.B --show-hosts
Displays the host list that distcc would use.
See the Host Specifications section.
-
+.PP
.TP
.B --scan-includes
Displays the list of files that distcc would send to the
@@ -277,33 +277,32 @@ remote machine, as computed by the include server. This is a conservative
(over-)approximation of the files that would be read by the C compiler.
This option only works in pump mode. See the "How Distcc-pump Mode Works"
section for details on how this is computed.
-
+.RS
+.P
The list output by \fBdistcc --scan-includes\fR will
contain one entry per line. Each line contains a category followed by a path.
The category is one of FILE, SYMLINK, DIRECTORY, or SYSTEMDIR:
-
-.RS
+.IP
.B FILE
indicates a source file or header file that would
be sent to the distcc server host.
-
+.IP
.B SYMLINK
indicates a symbolic link that would be sent to
the distcc server host.
-
+.IP
.B DIRECTORY
indicates a directory that may be needed in order to
compile the source file. For example, a directory "foo" may be needed
because of an include of the form #include "foo/../bar.h".
Such directories would be created on the distcc server host.
-
+.IP
.B SYSTEMDIR
indicates a system include directory, i.e. a directory
which is on the compiler's default include path, such as "/usr/include";
such directories are assumed to be present on the distcc server host,
and so would not be sent to the distcc server host.
.RE
-
.TP
.B -j
Displays distcc's concurrency level, as calculated from the host list;
@@ -312,7 +311,7 @@ to all servers.
By default this will be four times the number of hosts in the host list,
unless the /LIMIT option was used in the host list.
See the Host Specifications section.
-
+.PP
.TP
.B --show-principal
Displays the name of the distccd security principal extracted from the
diff --git a/man/include_server.1 b/man/include_server.1
index 5685b9e..f462f89 100644
--- a/man/include_server.1
+++ b/man/include_server.1
@@ -36,7 +36,7 @@ mounted temporarily.
.PP
If the include server is not able to process the request, then it returns the
empty list to the distcc client.
-.P
+.PP
There are two kinds of failures that relate to the include server. The include
server may fail to compute the includes or fail in other ways, see section
\fBINCLUDE SERVER SYMPTOMS\fR. Also, the compilation on the remove server may
@@ -94,13 +94,13 @@ preprocessing if it detects any absolute includes. Thus, this flag is useful
for preventing such fallbacks when the absolute includes are a false alarm,
either because the absolute include is discarded during preprocessing or because
the absolutely included file exists on the compilation servers.
-
+.IP
More precisely, with --unsafe_absolute_includes absolute includes are ignored
for the purposes of gathering the include closure. Using this option may lead
to incorrect results because (1) the header may actually be included on the
compilation server and it may not be the same as on the client, (2) the include
directives of the header are not further analyzed.
-
+.IP
The option is useful for compiling code that has such hardcoded absolute
locations of header files inside conditional directives (e.g. "#ifdef") that
render the includes irrelevant. More precisely, these includes must be
@@ -126,18 +126,18 @@ Use CPP instead, do not omit system headers files.
The most likely messages and warnings to come from the include processor are
listed below.
-
+.PP
.TP
.B "Preprocessing locally. Include server not covering: Couldn't determine default system include directories"
To determine the default system header directories, the include server runs the
compiler once for each language needed during its session. This message
indicates that the compiler specified to distcc is not present on the client.
-
+.PP
.TP
.B Preprocessing locally. Include server not covering: Bailing out because include server spent more than ...s user time handling request
In uncommon situations, the include server fails to analyze very complicated
macro expressions. The distcc client will use plain distcc mode.
-
+.PP
.TP
.B Warning: Filepath must be relative but isn't
The include server does not accept absolute filepaths, such as
@@ -145,15 +145,17 @@ The include server does not accept absolute filepaths, such as
this header on the compilation server machine will be the same as that on the
client. The include server gives up analyzing the include closure. The distcc
client cannot use pump-mode.
-
+.IP
To overcome this problem in a not always reliable way, set the environment
variable INCLUDE_SERVER_ARGS='--unsafe_absolute_includes' when invoking the pump
script to pass the --unsafe_absolute_includes option to the include server.
+.PP
.TP
.B Warning: Absolute filepath ... was IGNORED
The --unsafe_absolute_includes is in use. This situation happens under the same
circumstances as when "Filepath must be relative but isn't" is issued, but in
this case the include will provide an answer to the distcc client.
+.PP
.TP
.B Warning: Path '/PATH/FILE' changed/came into existence/no longer exists
These warnings are issued when using stat reset triggers. Because /PATH/FILE
@@ -162,12 +164,11 @@ the lack of it) renders the include analysis invalid. This message can usually
be ignored; it does signify a somewhat precarious use of files by the build
system. It is recommended to fix the build system so that files are not
rewritten.
-
+.PP
.TP
.B Warning: For translation unit ..., lookup of file ... resolved to ... whose realpath is ...
This warning occurs with --path_observation_re when a new realpath matching
a source or header file is observed.
-
.SH "DISTCC DISCREPANCY SYMPTOMS"
@@ -177,45 +178,45 @@ somewhat complex. When a distcc commands receives a failing compilation from the
remote server it retries the compilation locally. This section discusses the
causes of discrepancies between remote and local compilation. These are flagged
by the demotion message:
-
-.B __________Warning: ... pump-mode compilation(s) failed on server,
+.PP
+.B __________Warning: ... pump-mode compilation(s) failed on server,
.B but succeeded locally.
.br
-.B __________Distcc-pump was demoted to plain mode.
-.B See the Distcc Discrepancy Symptoms section in the include_server(1) man
+.B __________Distcc-pump was demoted to plain mode.
+.B See the Distcc Discrepancy Symptoms section in the include_server(1) man
.B page.
-
+.PP
The pump script issues this message at the end of the build. This means that for
at least one distcc invocation a local compilation succeeded after the remote
compilation failed. Each distcc invocation for which such a discrepancy occurred
in turn also issues a message such as:
-
-.B Warning: remote compilation of '...' failed,
+.PP
+.B Warning: remote compilation of '...' failed,
.B retried locally and got a different result.
-
+.PP
The demotion makes subsequent distcc invocations use plain distcc mode. Thus
preprocessing will take place on the local machine for the remainder of the
build. This technique prevents very slow builds where all compilations end up
on the local machine after failing remotely.
-
+.PP
Of course, if the local compilations fails after the remote failures, then the
distcc invocation exits with the non-zero status of the local compilation. The
error messages printed are also those of the local compilation.
-
+.PP
The fallback behavior for distcc-pump mode to local compilation can be disabled
by setting the environment variable DISTCC_FALLBACK to 0, which makes the distcc
command fail as soon as the remote compilation has failed. This setting is very
useful for debugging why the remote compilation went wrong, because now the
output from the server will be printed.
-
+.PP
Next we discuss the possible causes of discrepancies.
-
+.PP
.TP
-.B The user changed a source or header file during the build.
+.B The user changed a source or header file during the build.
This yields inconsistent results of course.
-
+.PP
.TP
-.B A source or header file changed during the build.
+.B A source or header file changed during the build.
The build system rewrites a file. For Linux kernel 2.6, this happens
for 'include/linux/compile.h' and 'include/asm/asm-offsets.h'. This condition is
fixed by letting the include server know that it must reset its caches when a
@@ -227,10 +228,9 @@ the
option; for example,
INCLUDE_SERVER_ARGS="--stat_reset_triggers=include/linux/compile.h:include/asm/asm-offsets.h"
-
+.PP
.TP
.B A header file is potentially included, but does not exist, and is then later included.
-
This occurs when some header foo.h includes another header file trick.h, but the
trick.h file has not yet been generated and the inclusion is actually ignored
because of preprocessing directives. The include server will probe for the
@@ -238,9 +238,9 @@ existence of trick.h, because it overapproximates all possible ways directives
actually evaluate. The file trick.h is determined not to exist. If it is later
generated, and then really included, then the include server will falsely
believe that the file still does not exist. The solution to this problem is to
-make the build system generate trick.h before the first time any header file
+make the build system generate trick.h before the first time any header file
is included that makes a syntactic reference to trick.h
-
+.PP
.TP
.B The include server was started with \fB--unsafe_absolute_includes\fR.
This is a problem if there are header files locally that do not exist remotely
@@ -248,9 +248,9 @@ and that are actually used. Such includes are often protected by conditional
directives that evaluate so that are actually used on only specific and often
uncommon platforms. If you are not compiling for such a platform, then it may be
correct to use \fB--unsafe_absolute_include\fR.
-
+.PP
.TP
-.B The include server has calculated the wrong includes.
+.B The include server has calculated the wrong includes.
We do not know of such a situation.
@@ -264,7 +264,7 @@ been started properly is communicated through the existence of the pid_file.
The email address to use for include server automated emails. The default
is 'distcc-pump-errors' (which is an email address that probably will not
exist in your domain).
-
+.PP
Additionally, the invocation of the compiler may use additional environment
variables.
@@ -279,7 +279,7 @@ In distcc-pump mode, the include server is unable to handle certain very
complicated computed includes as found in parts of the Boost library. The
include server will time out and distcc will revert to plain mode.
.PP
-Other known bugs may be documented on
+Other known bugs may be documented on
.I http://code.google.com/p/distcc/
.SH "AUTHOR"