pump
Section: User Commands (1)
Updated: 9 June 2008
Page Index
NAME
pump - accelerate remote compilation with distcc
SYNOPSIS
pump
BUILD-COMMAND [ARGS]
...
eval `
pump
--startup `;
BUILD-COMMAND [ARGS]
...
;
pump
--shutdown
DESCRIPTION
pump
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.
For a detailed description of pump mode, including most notably some
important restrictions,
see the
distcc(1)
man page, in particular the
HOW PUMP-MODE WORKS
section
and the
RESTRICTIONS ON PUMP MODE
section.
The simplest usage is the form
-
pump
COMMAND [ARG]
...
This will start an include server for distcc's "pump" mode;
optionally run
lsdistcc
to compute the distcc host list;
set some auxiliary environment variables;
change PATH to use the distcc client in the same directory as the "pump"
script;
execute
COMMAND
with the specified
ARG(s)
;
and then shut down the include server.
The
COMMAND
is typically a parallel build command, such as
"make -j80", that will do many concurrent invocations of distcc.
An alternative way of invoking
pump
is to explicitly invoke "pump --startup"
to start the include server and "pump --shutdown" to stop the include server.
The "pump --startup" 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 "distcc" client and the include
server, and to communicate between "pump --startup" and "pump --shutdown".
The caller of "pump --startup" is responsible for setting those environment
variables before invoking "distcc" or "pump --shutdown".
For example:
-
eval `pump --startup`
make -j80
pump --shutdown
Note that distcc's pump-mode assumes that sources files will not be
modified during
the lifetime of the include server, so modifying source files during a build
may cause inconsistent results.
INVOKING LSDISTCC
When invoked in either the simple "
pump
COMMAND [ARG]
... " form,
or as "
pump --startup
", the
pump
script will invoke
lsdistcc
whenever DISTCC_POTENTIAL_HOSTS is set and DISTCC_HOSTS isn't.
It will pass the value of DISTCC_POTENTIAL_HOSTS to
lsdistcc
and use the output of
lsdistcc
to set DISTCC_HOSTS.
OPTIONS
- --help
-
Displays summary instructions.
- --startup
-
Starts an include server, and outputs the environment variable settings
needed for
distcc(1)
or
pump --shutdown
to access it.
- --shutdown
-
Shuts down an include server started up by
pump --startup.
ENVIRONMENT VARIABLES
The following environment variables are all optional.
- DISTCC_LOCATION
-
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.
- DISTCC_MAX_DISCREPANCY
-
see the
distcc(1)
man page.
- DISTCC_POTENTIAL_HOSTS
-
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 "Host Specifications"
section of
distcc(1).
- DISTCC_HOSTS
-
This variable is passed through to distcc but only if
DISTCC_POTENTIAL_HOSTS is not set.
- LSDISTCC_ARGS
-
Extra arguments to pass to lsdistcc. See
lsdistcc --help
for more details.
- INCLUDE_SERVER_ARGS
-
Extra arguments to pass to the include server.
- PYTHONOPTIMIZE
-
If set to "", then Python optimization is disabled.
EXAMPLE
pump make -j20
BUGS
If you think you have found a distcc bug, please see the file
reporting-bugs.txt
in the documentation directory for information on how to report it.
AUTHORS
The pump script and distcc's pump mode were written by Nils Klarlund,
Manos Renieris, Fergus Henderson, and Craig Silverstein. Please report
bugs to <
distcc@lists.samba.org>.
LICENCE
pump
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.
SEE ALSO
distcc(1),
distccd(1),
include_server(1),
gcc(1), and
make(1)