[distcc] distcc 0.13 released
Martin Pool
mbp at samba.org
Tue Nov 12 07:58:00 GMT 2002
A new version of distcc has been released, with many changes intended
to improve robustness and make it work more reliably in more systems
and build environments. Thankyou to all those who contributed
patches, suggestions, or reports.
distcc-0.13 "Armistice" 2002-11-11
FEATURES:
* New --no-detach option to cause the server not to detach from its
parent. It still forks normally when a connection is accepted. This
may be useful with daemontools or other frameworks that prefer the
daemon not to detach. (Martin Pool)
* Log messages on the server of severity "warning" or higher are captured
and sent back to the client. (Martin Pool)
* If the local preprocessor fails, do not re-run the job locally because
it would presumably fail in the same way. (Martin Pool)
* By default, the client only sends "warning" or higher messages to
stderr, so that nothing extra is logged unless there is possibly a
failure in distcc itself. With a DISTCC_LOG file, "notices" and higher
are logged. (Martin Pool)
* Better messages when a compiler exits or crashes. (Martin Pool)
* If the compiler because of a signal, return 128+SIGNAL, per Unix
convention. (Martin Pool)
* Compilers and preprocessors are now run in their own process groups, and
terminated if the daemon is killed. (Martin Pool)
* When the daemon parent is terminated, it does not kill all its children.
Instead, they're allowed to finish whatever they're working on, and then
exit. This allows for more graceful shutdown. (Martin Pool)
* More specific exit codes for some error cases. Don't panic. (Martin
Pool)
* Include popt library and --with-included-popt configure option to aid
installation on systems that don't have it. By default it is statically
linked in only if the build machine does not have a suitable library and
header. (Martin Pool)
REMOVALS:
* Remove support for feeding the compiler from a fifo. The gain from
using fifos does not seem to justify the maintenance burden. (Martin Pool)
- This makes the behaviour more consistent, because some platforms
(Cygwin) or filesystems (NFS, strangely) can't use fifos. It removes
a code path and a slightly complex autodetection.
- Using fifos makes some potential scheduling improvements hard: the
server can't make good decisions about how many tasks to run, because
each one will only use a fraction of the CPU. The client cannot
serialize file transmission, which would probably be desirable.
- Using fifos makes reliably handling compiler failures slightly
harder: the compiler may crash or exit at any time, which will in
turn cause the server to hang if it later tries to open or write to
the fifo. In previous versions, distcc tried to handle this by
catching SIGCHLD when the child terminated, and aborting the
operation, but I am not sure that the method is completely reliable.
BUG FIXES:
* Detached daemon now ignores hangup signal. (Martin Pool)
* When the parent is terminated, don't kill its process group. Allow
children to finish in their own time. (Martin Pool)
* Detect the case where cpp claims to have succeeded, but did not actually
produce any output. (Martin Pool)
* Do not use atexit() to clean up temporary files, because this can cause
havoc if it's ever called from a child process that forked but failed to
exec. (Martin Pool)
* Handle "gcc -S foo.c -o -", which ought to write assembly to stdout.
(Alexandre Oliva)
* Fix bug in handling IO errors (e.g. dropped connection) in the server.
(Martin Pool)
* If we fail to cork a socket, continue anyhow. (Martin Pool)
* Make error handling for IO more consistent. (Martin Pool)
* Follow Unix convention of returning 128+SIGNAL if the compiler exits
with a signal. (Martin Pool)
TESTING:
* Add tests for parsing slot limit from host specification. (Martin Pool)
* Daemon tests collect dead servers faster, so the tests run a bit
faster. (Martin Pool)
* Nicer handling of ^C while running tests: print "INTERRUPT" and
terminate the whole test. (Martin Pool)
* Add new tests for scanning command lines with an implied compiler name.
(Martin Pool)
* When the parent is terminated, don't kill its process group. Allow
children to finish in their own time. (Martin Pool)
* Detect the case where cpp claims to have succeeded, but did not actually
produce any output. (Martin Pool)
* Add test case for #error directive. (Martin Pool)
* Add test case for preprocessing non-C text, as is done by (for example)
xrdb. (Martin Pool)
* Add test case for invocations like "distcc -c test1.c test2.c". (Martin Pool)
* Add test for handling of a compiler missing from the server. (Martin Pool)
* Allow distcc's version to be set to something like "0.13cvs-nofifo".
(Martin Pool)
* Add test for handling of a compiler missing from the server. (Martin
Pool)
* Improved ComfyChair testing framework. (Tim Potter, Martin Pool)
PORTABILITY:
* Includes example init.d script for SuSE 7.x and 8.0. Not installed by
default. (Brandon Forehand)
DOCUMENTATION:
* Document use with Gentoo Linux. (Dean Bailey, Ernesto, Martin Pool)
INTERNAL:
* Get rid of recursive Make and fix various small Makefile bugs. (Martin
Pool)
* Add $(TARGET_ROOT) variable for "make install", for use in building
binary packages. (Martin Pool, Nick Moffitt)
* wait4() on Solaris can't handle a pid of -1, which means "any child" on
Linux and BSD. Use pid of 0 instead to collect any children from the
same process group. (Kevin Bailey)
* Client does not abruptly drop network connection on compiler failure but
rather reads the 0-byte object file token. (Martin Pool)
* Rework logger library to allow multiple logger callbacks to be active at
once. This is used for the server, which can write to its own log files
and also send a copy of messages to a buffer to be sent to the client.
(Martin Pool)
--
Martin
More information about the distcc
mailing list