---
name: "distcc-pump"
section: "1"
platform: "linux"
package: "distcc-pump"
version: "3.4+really3.4-12"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/distcc-pump"
---

# distcc-pump(1)

accelerate remote compilation with distcc

## NAME

distcc-pump - accelerate remote compilation with distcc

## SYNOPSIS

**distcc-pump** *BUILD-COMMAND \[ARGS\]*  ...

eval \` **distcc-pump** --startup \`; *BUILD-COMMAND \[ARGS\]*  ... ; **distcc-pump** --shutdown

## DESCRIPTION

**distcc-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)](/distcc/1.md)** man page, in particular the **HOW PUMP-MODE WORKS** section and the **RESTRICTIONS ON PUMP MODE** section.

The simplest usage is the form

**distcc-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 "distcc-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 **distcc-pump** is to explicitly invoke "distcc-pump --startup" to start the include server and "distcc-pump --shutdown" to stop the include server. The "distcc-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 "distcc-pump --startup" and "distcc-pump --shutdown". The caller of "distcc-pump --startup" is responsible for setting those environment variables before invoking "distcc" or "distcc-pump --shutdown".

For example:

eval \`distcc-pump --startup\`\
 make -j80\
 distcc-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 " **distcc-pump** *COMMAND \[ARG\]* ... " form, or as " **distcc-pump --startup** ", the **distcc-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)](/distcc/1.md)** or **distcc-pump --shutdown** to access it.

- **--shutdown**

  Shuts down an include server started up by **distcc-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)](/distcc/1.md)** 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/1.md).**

- **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

**distcc-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 distcc-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

**distcc-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)](/distcc/1.md), [**distccd**(1)](/distccd/1.md), [**include\_server**(1)](/include_server/1.md), [**gcc**(1)](/gcc/1.md), and [**make**(1)](/make/1.md)
