DragonFly BSD
DragonFly bugs List (threaded) for 2004-10
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

Re: buildworld fails with distcc, buildkernel works fine though

From: Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxx>
Date: Thu, 14 Oct 2004 13:32:01 -0700 (PDT)

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

					Matthew Dillon 

[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]