OLDNEWS   [plain text]

distcc-0.15  "petrified forest"  2002-12-12


    * Change default port from 4200 to IANA-assigned standard for distcc
      service "3632".  Compatibility with old installations can be retained by
      explicitly setting --port=4200 on the server, or using "HOST:PORT" on
      the client.

    * Fake-root directory for "make install" is now set by DESTDIR, not
      TARGET_ROOT.  (Alexandre Oliva.)


    * Run the preprocessor with output sent to stdout and redirected to a
      file, rather than by using the -o option.  This should fix some
      compilers that can't handle "-E -o".  It may improve gcc behaviour with
      -MD, but because gcc behaviour has changed over time it may not be a
      complete fix.  

      For gcc 3.2 it is recommended that -MF be used to explicitly set the
      dependency output filename.


    * Add test case for transmission of a zero-byte file. 

    * Add badly-behaved compiler drop-in for use in testing.


    * Use the correct autoconf macros to detect whether install(1) is
      available and working, and if not, fall back to using the included
      install-sh script.  This should fix "make install" on Solaris.  (Mike

    * Fix waitpid() takes three options.  Required for Irix.  (Michael Santy)

    * Fix autoconf detection of resolv.h on Solaris.  (Dimitri Papadopoulos)


    * Describe information to include in a bug report.

    * Remove "Results" chapter from manual: there are now many more detailed
      results on the web site, and this information is better suited to
      storage there, because it will be updated on a different cycle.
      End-users don't really need to have it in their reference.

    * Remove "MOC Compatibility" section from manual because at the moment
      there is nothing to say.

    * Add a new section about the complexities of gcc -MD. 

    * Remove "Bugs" section from the manual, and put it into a new TOOD file
      instead.  Keep information about reporting bugs and using the test
      suite, but put it in a different section.

distcc-0.14  "no agonizing hanging weights"  2002-11-13


    * Take lock on localhost only when compiling locally, not for all
      compilations.  This removes the accidental limit of only 4 overall jobs.
      (Martin Pool)

    * Fix Makefile bug that caused HTML documentation to be missing from the
      distribution tarball.  (Frerich Raabe, Martin Pool)

    * Make PreprocessPlainText_Case run in appropriate subdirectory.  (Martin


    * Test for wait4 and wait3, which are missing on IRIX.  (Mike Santy,
      Martin Pool)


    * Include example init.d script.  (Jason Thomas)
distcc-0.13  "Armistice"  2002-11-11


    * 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

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


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


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


    * 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

    * Improved ComfyChair testing framework.  (Tim Potter, Martin Pool)


    * Includes example init.d script for SuSE 7.x and 8.0.  Not installed by
      default.  (Brandon Forehand)


    * Document use with Gentoo Linux.  (Dean Bailey, Ernesto, Martin Pool)


    * Get rid of recursive Make and fix various small Makefile bugs.  (Martin

    * 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)
distcc-0.12  "Klein, kosten- und schnörkellos"  2002-10-07


    * Handle "gcc -S foo.c -o -", which ought to write assembly to stdout.
      (Alexandre Oliva)


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


    * Add tests for "-o -".  (Martin Pool)
distcc-0.11  "Nuclear Bedtime Story"  2002-09-25


    * More helpful message explaining that popt is needed if it is missing at
      build time.  (Martin Pool)
    * Better stripping of options from remote command lines.  (Martin Pool)

    * Handle the new -MM, -MG, -MP, -MF, -MT, -MQ options for gcc 3.x.
      (Stephan Kulow, Martin Pool)


    * Whenever a command by either the client or the server, it counts towards
      the load on that machine.  This covers undistributed commands, cpp, and
      compilation.  This should avoid the bias in earlier versions towards
      overloading the client.  (Martin Pool)


    * IO errors should not cause the process to terminate straight away,
      because they are properly handled and we may have important cleanup to
      do.  (Martin Pool)

    * Fix error handling in code for executing compilers.  (Martin Pool)

    * Fix leakage of file descriptors when trying to acquire a lock.  (Martin

    * Do not object to running as group 0, because on BSD this is "wheel" and
      many non-privileged users are in it.  (Frerich Raabe, Martin Pool)

    * Fix (non-exploitable) buffer overrun bug.  (Dave Zarzycki)


    * Fixes to build on Linux libc5.  (Richard Zidlicky, Martin Pool)


    * Keep $TMPDIR separate for each test case.  (Martin Pool)

    * testdistcc.py now optionally takes arguments saying which tests to run.
      (Martin Pool)

    * Test permissions on output files are correct.  (Martin Pool)

    * Add more test cases for implicit compiler name handling.  Extend
      h_scanargs to exercise this.  (Martin Pool)

    * More tests for argument stripping.  (Martin Pool)
distcc-0.10  "shiny fast red thing"  2002-09-12


    * Allow distcc to be directly used with the same syntax as a compiler:
      "distcc -c hello.c".  At the moment, always calls "cc".  (Martin Pool)

    * If distribution fails, show the name of the server that we were trying
      to use.  (Martin Pool)

    * Strip -D, -I, -L, -M* options before passing the command line across the
      network, for clarity (and perhaps a tiny performance improvement.)
      Also, this allows new clients which support -MD to be used with old
      servers that can't handle it.  (Martin Pool)


    * Correctly handle "gcc -c -S hello.c", which should only assemble, not
      compile.  (Alexandre Oliva)

    * If the volunteer compiler exits without reading all of its input, return
      the compiler's own exit code across the network, rather than
      EXIT_DISTCC_FAILED.  (Martin Pool)

    * Attempt to fix a race where the compiler process could exit without
      opening its input before we started writing to the FIFO.  In that case,
      the daemon would hang forever waiting for the compiler to arrive.  In
      the new code, SIGCHLD causes a longjmp to break out of trying to feed
      the compiler.  (Martin Pool)

    * If .o file is 0 bytes or not created on the server, do not create it on
      the client either.  (Martin Pool)

    * Fix bug that caused compilation to fail if an old compiler output file
      existed.  (Martin Pool)

    * Try to make sure to uncork client socket before closing if cpp fails, to
      work around Linux 2.2 bug that causes the socket to jam in FIN_WAIT1.
      See <http://marc.theaimsgroup.com/?l=linux-netdev&r=1&b=200209&w=2>.
      (Martin Pool)

    * Invocations of gcc that use -MD or -MMD can be distributed, although -M
      cannot be.  Both client and server must be updated to make this work.
      (Martin Pool)

    * It turns out that .s and .S files in fact cannot be assembled remotely,
      because they might use the gas '.include' pseudo op, which is resolved
      by the assembler and would end up reading something from the volunteer's
      disk.  (Richard Zidlicky, Martin Pool)

    * Solaris portability fixes.  (Dimitri PAPADOPOULOS-ORFANOS)


    * Test handling of -c and -S.  (Martin Pool)

    * Test handling of a file that causes a preprocessor error.  (Martin Pool)

    * Test compiler that succeeds without reading input.  (Martin Pool)

    * Test many simple compilations, in case there is an infrequent error.
      (Martin Pool) 

    * Test many concurrent compilations.  (Martin Pool)

    * Test using -D on the compiler command line.  (Martin Pool)

    * Tests for .s and .S files.  (Martin Pool)
distcc-0.9  "samui desu ne?"  2002-09-03


    * Add new environment variable for client and server, DISTCC_TCP_CORK.
      Defaults to on, intended mostly for performance comparison or
      debugging.  (Martin Pool)


    * Properly support platforms with 32-bit pids, such as Cygwin.  (Aaron
      Lehmann, Martin Pool)

    * On FreeBSD, the sa_family_t type is defined in <sys/socket.h>  (Dennis


    * Fix bugs related to leftover fifos in the temporary directory causing
      occasional server hangs.  (Martin Pool)

    * Stop the compiler from inheriting file descriptors connected to the
      network.  This was causing the client to hang if the server abnormally
      terminated while the compiler was reading from a fifo.  (Martin Pool)

    * Handle the case of sendfile() transmitting only part of the supplied
      data, similarly to a short write on a socket.  This doesn't often
      happen, but can occur if a ptrace debugger attaches while sendfile is
      running.  (Martin Pool)

    * When run with --daemon and not --no-fork, the parent does not detach
      until the pid file has been created.  This removes a slight race window
      that sometimes confused the test scripts.  (Martin Pool)

    * Message for completion of local cpp now gives the correct hostname.
      (Martin Pool)

    * Do not try to collect daemon children if --no-fork was specified.
      (Martin Pool)

    * Set SIGPIPE handler back to default before starting compiler tasks.
      (Martin Pool)

    * If a network error is detected while feeding input to the compiler, then
      it is terminated with a SIGHUP.  (Martin Pool)

    * If transmission to the server fails, close the socket sooner rather than
      later so as not to make the server process wait around unnecessarily.
      (Martin Pool)

    * Better handling of the case where the compiler command exits without
      reading its input.  (Martin Pool)

    * Make sure compilation children are always properly collected, even if
      transmission failed.  (Martin Pool)


    * Write token/parameters using a single write() call.  May be very
      slightly more efficient in CPU and perhaps packets.  (Martin Pool)


    * Display test names while they're running so that long tests are easier
      to follow.  (Martin Pool)

    * When cleaning up after running the dameon, make sure it's really dead
      before proceeding, so that tests don't trip over each other.  (Martin

    * New test of compilation of a largish (~4MB) C file to a ~5MB object
      file.  (Martin Pool)
distcc-0.8  "cat and girl"  2002-08-15


    * If for any reason a job can't be distributed, it is run locally rather
      than failing.  This includes servers which are not running or
      unreachable, servers which crash, bad host specifications, etc.  (Martin

    * --help for distcc explains more about host specifications.  (Martin


    * Correctly handle compilation of C++ code under ccache, by properly
      recognizing the .ii extension.  (Stephen White, Chris Halls)

    * Boolean environment variables (e.g. DISTCC_SAVE_TEMPS, DISTCC_VERBOSE)
      are now consistently required to be literally "1" to count as true.
      (Martin Pool)


    * Document that $DISTCC_HOSTS can now specify ports.  (Martin Pool)

    * Document --no-fifo and --log-stderr.  (Martin Pool)
distcc-0.7  "Pipeline Authority"  2002-08-05


   * Can now either use fifos for feeding the compiler or not.  This can be
     controlled by --no-fifo to the server.  By default, it tries a fifo and
     falls back to using regular temporarily files if that fails, as it will
     on Cygwin or an NFS-mounted /tmp.  (Martin Pool)

   * --log-stderr option, intended mainly for debugging or testing.  (Martin

   * DISTCC_HOSTS can now specify non-default port numbers using "host:port"
     syntax.  (Martin Pool)


   * Built documentation (HTML, PS, PDF, Info) is now shipped in the
     distributed tarball, so that you can more easily install it on a machine
     lacking the Linuxdoc SGML tools.  You still need them to modify and
     rebuild the documentation, of course.  (Martin Pool)


   * Log pid even if running with --no-fork.  Remove pid file on exit.
     (Martin Pool)

    * Try fcntl locks in addition to lockf and flock; apparently this helps
      portability to Cygwin.  (Martin Pool, Marco Alanen)

    * Port to Cygwin.  (Martin Pool, Marco Alanen)

    * Partial port to Solaris.  (Dimitri PAPADOPOULOS-ORFANOS, Martin Pool)


    * Further internal improvements to test suite.  (Martin Pool)

    * Test suite should now run whether or not there is a daemon listening on
      localhost, because it uses a non-standard port for testing.  (Martin
distcc-0.6  "reptilian agenda"  (12 July 2002)
   * Daemon now refuses to run as root, because this is just too ridiculously
     insecure.  (Martin Pool)

   * Output shows CPU time taken by distcc and programs that it runs.  (Martin

   * distcc will now distribute jobs which use -s to compile but not assemble.
     Previously they were always run locally, but there's no strong reason why
     they must be.  Unfortunately you need to upgrade both the client and
     server for this to work, because old servers will refuse to run gcc with
     -s.  (Martin Pool)


   * -M<anything> option implies that cpp must be run locally, because it will
      want to write dependency information to a file.  (Martin Pool)

   * Add --daemon and --inetd options, so that you can properly start a remote
     daemon with a single-line ssh command.  (Martin Pool)

   * Fix bugs related to collecting child processes.  (Probably not very
     user-visible.)  (Martin Pool)

   * Fixed some Makefile-related bugs causing "make install" breakage and
     similar things.  (Martin Pool)

   * If the system supports sendfile, but the particular filesystem we're on
     (e.g. tmpfs) doesn't, then fall back to using read/write.  (Eivind Magnus
     Hvidevold, Martin Pool)

   * Change to argument analyzer to placate Valgrind.  Possibly this was a
     memory corruption bug, but I can't see it.  I think Valgrind was just too
     picky.  (Martin Pool)


   * Build on FreeBSD, though you do need GNU make.  (Lauri Watts, Martin


   * Better description of how to do cross-compilation.  (Martin Pool)


   * Improved Python test suite.  (Martin Pool)


   * Get rid of automake; just use plain autoconf 2.53.  (Martin Pool)

   * If $DISTCC_SAVE_TEMPS is set to "1", then files are not actually deleted
      -- good for debugging.  (Martin Pool)
distcc-0.5  "Unacceptable Behaviour"  (27 June 2002)


   * Use more specific return codes when the remote compiler fails:
     EXIT_COMPILER_CRASHED for a signal, or the return code from the
     compiler if it exited non-0.


    * Fix bug in h_hosts that caused us to write off the end of the
      real argv[], rather than a copy.  Thanks to Julian Seward.
      (Martin Pool)


    * Cope on compilers without varargs macros.  (Petter Reinholdtsen, Martin

    * Build on Solaris.  (Petter Reinholdtsen, Martin Pool)

    * FreeBSD fixes.  (Claes Wallin, Frerich Raabe, Michael
      Nottebrock, Martin Pool)


    * Manpages are correctly distributed and installed.  (Petter Reinholdtsen)


    * Test suite now runs a server on localhost and tests against it,
      and shuts it down on completion.  (Martin Pool)

    * More test cases.  (Martin Pool)
distcc-0.4  "Wisdom Like Silence"  (9 June 2002)


   * Assembly and assembly-with-preprocessor files can now be
     assembled remotely.  (Martin Pool)

   * Client now emits no messages unless there is a warning or error,
     or $DISTCC_VERBOSE is specified.  This improves operation with
     ccache.  (Martin Pool)

   * Client and server both respect $TMPDIR if set.  (Martin Pool)

   * Standalone server puts itself in the background and detaches from
     controlling tty.  (Martin Pool)

   * Server has --port option.  Currently useless, since there's no
     corresponding option on the client.  (Martin Pool)

   * Server has --pid-file option.  (Martin Pool)

   * Server now allows multiple concurrent compile tasks, forking per
     connection.  (Martin Pool)


    * gcc invocations with -fprofile-arcs or -ftest-coverage that
      would emit coverage information to a local file are always run
      locally.  (Martin Pool)

    * Handle lines like "gcc -c -c hello.c".  (Martin Pool)


    * Various enhancements to the user manual.  (Martin Pool)


    * Add a partial test suite based on PyUnit.  Python 2 is now
      required to run the test suite, though not to just build or run
      distcc.  (Martin Pool)
distcc-0.3  "The Anticipation of a New Lover's Arrival"  (28 May 2002)


    * Support C++ compilation (including with ccache) by correctly
      detecting prefixes.  (Ian Reinhart Geiser, Martin Pool)

    * Use a FIFO to feed preprocessed source from the daemon into the
      compiler, so that compilation can be overlapped with network
      transit.  (Martin Pool)


    * Only fiddle with the compiler's stdin/out/err when running on
      the server, not on the client.  This should make cpp from stdin
      work.  (Reported by Ian Reinhart Geiser from KDE) (Martin Pool)

    * Prevent server crashing on aborted connectiong by using EPIPE
      rather than SIGPIPE in daemon as well as client.  (Martin Pool,
      Ben Elliston.)


    * Builds on GNU/Linux, FreeBSD, and others if you're lucky.
      (Martin Pool, Frerich Raabe, Luke Gorrie)


    * Convert to using GNU automake and autoconf, so that distcc can
      better handle portability, distribution and testing.  (Martin
      Pool, Frerich Raabe, Ian Reinhart Geiser)

    * Start adding some "make check" tests. (Martin Pool)
distcc-0.2 (17 May 2002)


    * First public release

    * Correctly and usefully builds various large programs