[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