Having just installed Gentoo on my wife's new box, it has become of paramount importance that compiling happens as quickly as possible
So I've made the attempt to install
distcc, a distributed C compiler, on both our fast machines.
Everything went smoothly on the Gentoo end, but installing on Mandrake proved to be somewhat trickier. Gentoo would attempt to send work to distccd on Mandrake, but it would sit and churn without doing anything, seemingly. 'top' showed distccd taking up most of the CPU, and it turns out that it was doing nothing but producing copious quantities of error messages in /var/log/syslog and/or /var/log/daemons/info, of the following variety:
Nov 27 21:42:27 malcolm distccd[15568]: (dcc_make_tmpnam) failed to create /root/tmp/distcc_1e3b5d20.stderr: Permission denied
Nov 27 21:42:27 malcolm distccd[15568]: (dcc_make_tmpnam) failed to create /root/tmp/distcc_1e3b7b81.stderr: Permission denied
Nov 27 21:42:27 malcolm distccd[15568]: (dcc_make_tmpnam) failed to create /root/tmp/distcc_1e3b99e2.stderr: Permission denied
I have no idea why distccd was trying to create stuff in root's home directory, but many attempts at figuring out why were unsuccessful. On Mandrake, it appears that distccd wants to be run from xinetd, which, perversely, uses the configuration file /etc/xinetd.d/distcc:
Code:
service distcc
{
socket_type = stream
protocol = tcp
wait = no
user = distcc
server = /usr/bin/distccd
server_args = --verbose --inetd
# per_source = 8
log_type = FILE /var/log/distccd
disable = no
log_on_success = PID HOST USERID EXIT DURATION
log_on_failure = USERID ATTEMPT
}
Documentation on just how in the hell this file works seems to be sorely lacking; the manual pages for distcc and distccd barely do more than mention xinetd, let alone tell you how to configure it properly. A few stray errors about ports already being in use eventually cleared up on their own, so that didn't help much. Switching from user 'nobody' to user 'distcc' didn't seem to matter either, since neither has permission to write to /root/tmp.
Anyway, to make a long story short,
take out the --verbose option. Removing this allowed distccd to work correctly and stop producing 600MB logfiles. Something else is currently causing the Gentoo box to hang on compilation, but at least this small problem is nailed, I think (and at least it's getting past the 'configure' phase, which is where it stalled before).
Hope this helps another poor soul!