summaryrefslogtreecommitdiff
path: root/doc/web/man/pump_1.html
blob: 34eb341eb6559215ab018ebde76d01ffe282659b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
<HTML>
<!-- this file was generated by troffcvt and tc2html -->
<HEAD>
<TITLE>
pump manual page 
</TITLE>
</HEAD>
<BODY>
<H1>
pump manual page<BR>
</H1>
<P>
<H2>
Table of Contents
</H2>
<!-- INSERT TOC HERE, MAYBE -->
<!-- TOC BEGIN -->
<UL>
<LI>
<A HREF=#TOC_1> NAME</A>
<LI>
<A HREF=#TOC_2> SYNOPSIS</A>
<LI>
<A HREF=#TOC_3> DESCRIPTION</A>
<LI>
<A HREF=#TOC_4> INVOKING LSDISTCC</A>
<LI>
<A HREF=#TOC_5> OPTIONS</A>
<LI>
<A HREF=#TOC_6> ENVIRONMENT VARIABLES</A>
<LI>
<A HREF=#TOC_7> EXAMPLE</A>
<LI>
<A HREF=#TOC_8> BUGS</A>
<LI>
<A HREF=#TOC_9> AUTHORS</A>
<LI>
<A HREF=#TOC_10> LICENCE</A>
<LI>
<A HREF=#TOC_11> SEE ALSO</A>
</UL>
<!-- TOC END -->
<BR>
<H2>
<A NAME=TOC_1>
NAME</A>
</H2>
pump - accelerate remote compilation with distcc<BR>
<H2>
<A NAME=TOC_2>
SYNOPSIS</A>
</H2>
<B>pump</B> <I> BUILD-COMMAND [ARGS]</I>  ...<B><BR>
<P>
</B>eval ' <B> pump</B> --startup '; <I> BUILD-COMMAND [ARGS]</I>
... ; <B> pump</B> --shutdown<B><BR>
<H2>
<A NAME=TOC_3>
</B>DESCRIPTION</A>
</H2>
<B>pump</B> is part of distcc. It is used for distcc's pump mode.
Distcc's pump mode accelerates remote compilation with distcc
by also distributing preprocessing to the servers.<BR>
<P>
For a detailed description of pump mode, including most notably
some <B> important restrictions,</B> see the <B>distcc(1)</B>
man page, in particular the <B> HOW PUMP-MODE WORKS</B> section
and the <B> RESTRICTIONS ON PUMP MODE</B> section.<BR>
<P>
The simplest usage is the form<BR>
<UL>
<B>pump</B> <I> COMMAND [ARG]</I>  ...<BR>
</UL>
This will start an include server for distcc's &quot;pump&quot;
mode; optionally run <B> lsdistcc</B> to compute the distcc host
list; set some auxiliary environment variables; change PATH to
use the distcc client in the same directory as the &quot;pump&quot;
script; execute <I> COMMAND</I> with the specified <I> ARG(s)</I>
; and then shut down the include server. The <I> COMMAND</I> is
typically a parallel build command, such as &quot;make -j80&quot;,
that will do many concurrent invocations of distcc.<BR>
<P>
An alternative way of invoking <B> pump</B> is to explicitly invoke
&quot;pump --startup&quot; to start the include server and &quot;pump
--shutdown&quot; to stop the include server. The &quot;pump --startup&quot;
command will start up the include server, and will print out some
environment variable settings.  These environment variables are
used to communicate between the pump-mode &quot;distcc&quot; client
and the include server, and to communicate between &quot;pump
--startup&quot; and &quot;pump --shutdown&quot;. The caller of
&quot;pump --startup&quot; is responsible for setting those environment
variables before invoking &quot;distcc&quot; or &quot;pump --shutdown&quot;.<BR>
<P>
For example:<BR>
<UL>
eval 'pump --startup'<BR>
make -j80<BR>
pump --shutdown<BR>
</UL>
<P>
Note that distcc's pump-mode assumes that sources files will not
be<BR>
modified during the lifetime of the include server, so modifying
source files during a build may cause inconsistent results.<BR>
<H2>
<A NAME=TOC_4>
INVOKING LSDISTCC</A>
</H2>
When invoked in either the simple &quot; <B> pump</B> <I> COMMAND
[ARG]</I> ... &quot; form, or as &quot; <B> pump --startup</B>
&quot;, the <B> pump</B> script will invoke <B> lsdistcc</B> 
whenever DISTCC_POTENTIAL_HOSTS is set and DISTCC_HOSTS isn't.
It will pass the value of DISTCC_POTENTIAL_HOSTS to <B> lsdistcc</B>
and use the output of <B> lsdistcc</B> to set DISTCC_HOSTS.<BR>
<H2>
<A NAME=TOC_5>
OPTIONS</A>
</H2>
<BR>
<DL>
<DT>
<B>--help</B>
</DT>
<DD>
Displays summary instructions.<BR>
</DD>
<DT>
<B>--startup</B>
</DT>
<DD>
Starts an include server, and outputs the environment variable
settings needed for <B>distcc(1)</B> or <B> pump --shutdown</B>
to access it.<BR>
</DD>
<DT>
<B>--shutdown</B>
</DT>
<DD>
Shuts down an include server started up by <B> pump --startup.</B><BR>
</DD>
</DL>
<H2>
<A NAME=TOC_6>
ENVIRONMENT VARIABLES</A>
</H2>
The following environment variables are all optional.<BR>
<DL>
<DT>
<B>DISTCC_LOCATION</B>
</DT>
<DD>
The location of the distcc bin directory, which is normally inferred
from the link-resolved dirname of argv[0]. If this location is
in fact the bin directory inside an installation (as will be the
case when the pump script in the installation executes), then
Python executables and distcc itself will be retrieved from the
parent directory of the location.<BR>
</DD>
<DT>
<B>DISTCC_POTENTIAL_HOSTS</B>
</DT>
<DD>
The distcc servers that will be queried by lsdistcc in order to
produce a value for DISTCC_HOSTS. This value may be unset or null.
In such cases, lsdistcc will not be invoked, and distcc will use
DISTCC_HOSTS or the distcc hosts configuration file, as described
in the &quot;Host Specifications&quot; section of <B>distcc(1).</B><BR>
</DD>
<DT>
<B>DISTCC_HOSTS</B>
</DT>
<DD>
This variable is passed through to distcc but only if DISTCC_POTENTIAL_HOSTS
is not set.<BR>
</DD>
<DT>
<B>LSDISTCC_ARGS</B>
</DT>
<DD>
Extra arguments to pass to lsdistcc.  See <B> lsdistcc --help</B>
for more details.<BR>
</DD>
<DT>
<B>INCLUDE_SERVER_ARGS
</DT>
<DD>
Extra arguments to pass to the include server.<BR>
</DD>
<DT>
</B><B>PYTHONOPTIMIZE
</DT>
<DD>
If set to &quot;&quot;, then Python optimization is disabled.<BR>
</DD>
</DL>
<H2>
<A NAME=TOC_7>
</B>EXAMPLE</A>
</H2>
<B>pump make -j20</B><BR>
<H2>
<A NAME=TOC_8>
BUGS</A>
</H2>
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>
<H2>
<A NAME=TOC_9>
AUTHORS</A>
</H2>
The pump script and distcc's pump mode were written by Nils Klarlund,
Manos Renieris, Fergus Henderson, and Craig Silverstein. Please
report bugs to &lt;distcc@lists.samba.org&gt;.<BR>
<H2>
<A NAME=TOC_10>
LICENCE</A>
</H2>
<B>pump</B> is part of distcc. You are free to use distcc.  distcc
(including this manual) may be copied, modified or distributed
only under the terms of the GNU General Public Licence version
2 or later.  distcc comes with absolutely no warranty.  A copy
of the GPL is included in the file COPYING.<BR>
<H2>
<A NAME=TOC_11>
SEE ALSO</A>
</H2>
<B>distcc</B>(1), <B>distccd</B>(1), <B>include_server</B>(1),
<B>gcc</B>(1), and <B>make</B>(1)<BR>
</BODY>
</HTML>