what are the interdependencies in the build process?
Robert P. J. Day
rpjday at mindspring.com
Sun Jan 4 09:41:59 PST 2004
as a newcomer to building an LFS system, i was interested in what it was
possible to "parallelize" in the build process, and i didn't see anything about
this in the FAQ. i'm interested not so much to speed up the process, but to
clarify which parts are *not* related to other steps, to understand where
there's a clear distinction between phases of the build process. (i'm
following the steps in the order they're presented in chapter 5.)
to start with, it's clear that we should build and install binutils first, since
that's critical for the very next step of building gcc pass 1.
but what about the next phase, gcc pass 1? while we can't *build* that
until the binutils phase is done and binutils are installed, is there any reason
that we can't at least start the configure process for gcc? in short, must
binutils be installed for us to just start the gcc configure step? that is, will
the gcc configure step fail before the binutils programs are installed? being
new at this, i'm not sure what kind of validation that configure step does.
regarding the next step -- installing the kernel headers -- is there any reason
this can't be done at any time until now? after all, this is just installing headers
that neither of the previous two steps seems to care about, so it seems you
could actually install them right off the bat -- in parallel with either of the
first two phases. is that correct?
when we get to configuring and building glibc for the first time, again, how
much could we have done by now? could we have at least done the configure?
clearly the actual "make" requires all of the previous steps to have finished,
but what about just starting the "configure" before now?
(this may be a naive question, but if i look at the configure for glibc, i see
that there are options like --prefix=, --with-headers=, and --with-binutils.
clearly, doing the "make" will require that there be finished products in those
directories, but does the configure step actually check for contents? if not,
then this configure step could have been done in parallel with the previous
regarding "locking in" glibc, it seems clear that that has to wait until the
initial version of "ld" is no longer needed, which seems to require the previous
glibc step to have finished completely.
after that, i just glanced at them but it seems that all of tcl, expect and dejagnu
could be configured, built and installed in parallel. (and, again, could these at
least have been configured long before now in anticipation of the eventual gcc
and glibc being in the right places?)
at this point, it's clear that all of the previous needs to be done for gcc pass 2,
so i'll stop here. thanks for any guidance.
More information about the lfs-support