buildworld fails with distcc, buildkernel works fine though

Matthew Dillon dillon at apollo.backplane.com
Thu Oct 14 13:32:42 PDT 2004


:Can you explain what the need is for all that?  What's preventing you
:from writing a make file to do them all individually?  You build them
:individually for security updates anyway, right? I'm sorry, but I
:don't see where the need for all this complex /usr/obj stuff and
:building another compiler just for buildworld.  If you're not cross
:compiling where is the need?  It just doesn't make any sense.  If you
:could clear this up, I'd appreciate it.

    Basically it comes down to options and feature support in the compiler.
    Even fairly small compiler upgrades usually necessitate changes in the
    Makefiles and/or source code.  We have to be able to build the world on
    older systems (e.g.  a week old, a month old, a year old) whos compilers
    might not have the features or bug fixes that the current source code 
    base requires.  This is true even if you ignore all the cross-compiler
    environment stuff.  But even the cross compiler environment is important.
    We aren't going to rip it out because we know we are going to need it in
    the near future for, e.g. 64-bit cpu support.

    You might ask... well, it's all standard C, so what's the problem?  Well,
    yes, the utility programs are basically standard C.  But the C libraries
    are another matter.  libc has to use all sorts of compiler tricks for,
    e.g. interfacing to system calls.  The dynamic loader must be very aware
    of the compiler, and C++ programs tend to depend on the latest compiler's
    libg++ or equivalent library to provide low level internal support
    functions for the code generation output of the compiler.

    What this means is that buildworld must not only build the compiler it
    intends to install in the installworld, it must also build the compiler
    that will build the rest of the system.  The bootstrap programs and
    Makefiles have all sorts of conditionals in them to make them compile on
    much older compilers (all the way back to FreeBSD 4.x systems), but we
    don't want to have to conditionalize the entire source base to support
    older compilers, it would make too much of a mess.

					-Matt
					Matthew Dillon 
					<dillon at xxxxxxxxxxxxx>





More information about the Bugs mailing list