[distcc] Proposed Enhancements/Changes

Fergus Henderson fergus at google.com
Fri Jul 25 15:42:52 GMT 2008

On Fri, Jul 25, 2008 at 9:39 AM, KELEMEN Peter <Peter.Kelemen at cern.ch>

> > - the need for the right .ssh config files (distcc could be
> > modified to create them automatically if you don't have them)
> This implies local storage for the users' .ssh files on
> each distcc node... something we would like to avoid.  The
> administration of these files will soon become nightmarish as the
> number of nodes/users grows.

Hmm, fair point.

> What do you mean by "build platform" in the context?
> Our users are building for various target platforms.  For example,
> RHEL4 is a target platform.  In reality, a "platform" means
> a certain combination of kernel/glibc/gcc which we aggressively
> try to keep down to the minimum (by luring users into a locked-in
> combo, say, by providing excess capacity for that platform).
> > How would a distccd server determine which build platforms it
> > supports?
> We're not sure yet, hence the dialog.  Ideally, the clients are
> zeroconf, so, for example, we would like to prevent RHEL4 clients
> submitting jobs to RHEL5 servers without the user having to
> specify anything.

Actually it should be fine for RHEL4 clients to submit jobs to RHEL5
servers, if their jobs are compiled using a cross-compiler to RHEL4.

So the way that we handle this issue at Google is to always use
cross-compiler names, so that the name of the compiler determines the
platform.  The commands.allow.sh file is set up so that /usr/bin/gcc is not
one of the allowed commands; instead only unambigous command names that
include the target platform name are allowed.

You can pass the cross-compiler name to lsdistcc via the "-p" option, and
then lsdistcc will only return hosts that support that particular target

So it might be possible to achieve some of what you want with existing

However, that said, using cross-compiler names is not always convenient, and
the zeroconf mechanism has administrative advantages compared with lsdistcc,
so I'm certainly not opposed to improving zeroconf support to better support
build platforms.

One problem with using cross-compiler names is that cross-compiler names
used by standard gcc distributions, e.g. "/usr/bin/i486-linux-gnu-gcc-4.0",
are not sufficient to distinguish different glibc versions, and so may not
be sufficient to distinguish RHEL4 and RHEL5.  At Google we install
cross-compilers to path names that are sufficient to distinguish different
libc versions, but that's not going to be convenient for most people.

Fergus Henderson <fergus at google.com>
-------------- next part --------------
HTML attachment scrubbed and removed

More information about the distcc mailing list