diff options
author | Richard Ipsum <richard.ipsum@codethink.co.uk> | 2013-11-19 19:27:51 +0000 |
---|---|---|
committer | Richard Ipsum <richard.ipsum@codethink.co.uk> | 2013-11-19 19:27:51 +0000 |
commit | 779514557a2e94483eb7fc8709386ba8432fd20b (patch) | |
tree | 0c18db77fec7b48a873bfa84bf4e0b96a25def8f | |
parent | 504ef2ce00eda62c142c4d16598d7cd1122c76f3 (diff) | |
parent | 09f10277dd11cb4a98669b4f1af3391a0f4bae69 (diff) | |
download | definitions-779514557a2e94483eb7fc8709386ba8432fd20b.tar.gz |
Merge branch 'baserock/richardipsum/fix_comments'
-rw-r--r-- | build-essential.morph | 64 |
1 files changed, 31 insertions, 33 deletions
diff --git a/build-essential.morph b/build-essential.morph index c13572f3..01630931 100644 --- a/build-essential.morph +++ b/build-essential.morph @@ -1,12 +1,4 @@ chunks: - -# Stage 1: build a minimal cross compiler with the host's tools. -# -# Starting with a cross compiler ensures that (a) nothing from the host -# can leak into the build-essential artifacts, and (b) cross-compiling -# build-essential is fully tested and supported, since we always use the -# cross code paths. - - build-depends: [] build-mode: bootstrap name: stage1-binutils @@ -21,14 +13,6 @@ chunks: ref: baserock/build-essential repo: upstream:gcc-tarball -# Stage 2: cross-build the whole of build-essential, using the host's tools -# but the cross-compiler toolchain. -# -# Stage 2 GCC outputs code for the same 'bootstrap' machine as stage 1 GCC, -# but because stage 2 GCC is also built to *run* on the bootstrap machine -# it can only execute inside the stage 3 chroot (due to being built against -# a libc with a non-standard prefix). - - build-depends: - stage1-binutils - stage1-gcc @@ -118,20 +102,6 @@ chunks: ref: baserock/2.15-build-essential repo: upstream:eglibc2 -# Stage 3: build the whole of build-essential again, this time using a -# staging area containing only the output of stage 2. The result of this -# build is fully reproducible. -# -# We do a switch-a-roo between stage 2 and 3: stages 2 chunks are all built -# to run on a host *-bootstrap-* while stage 3 chunks are native-built for -# a *-baserock-* machine. This works, because the cross build was all for -# show (and cleanliness) and the binaries actually still run on the host. -# -# After build-essential is built we do another trick. See -# stage2-fhs-dirs.morph for details. Basically, /bin is a symlink to -# /tools/bin during stage 2 but in stage 3 it becomes a real directory -# again. - - build-depends: - stage2-binutils - stage2-busybox @@ -277,8 +247,6 @@ chunks: ref: baserock/build-essential repo: upstream:make -# Extras that need to be in build-essential but don't need bootstrapping. - - build-depends: - stage2-binutils - stage2-busybox @@ -296,6 +264,36 @@ chunks: prefix: /usr ref: baserock/build-essential repo: upstream:ccache -description: Toolchain stratum +description: | + Toolchain stratum + + Stage 1: build a minimal cross compiler with the host's tools. + + Starting with a cross compiler ensures that (a) nothing from the host + can leak into the build-essential artifacts, and (b) cross-compiling + build-essential is fully tested and supported, since we always use the + cross code paths. + + Stage 2: cross-build the whole of build-essential, using the host's tools + but the cross-compiler toolchain. + + Stage 2 GCC outputs code for the same 'bootstrap' machine as stage 1 GCC, + but because stage 2 GCC is also built to *run* on the bootstrap machine + it can only execute inside the stage 3 chroot (due to being built against + a libc with a non-standard prefix). + + Stage 3: build the whole of build-essential again, this time using a + staging area containing only the output of stage 2. The result of this + build is fully reproducible. + + We do a switch-a-roo between stage 2 and 3: stages 2 chunks are all built + to run on a host *-bootstrap-* while stage 3 chunks are native-built for + a *-baserock-* machine. This works, because the cross build was all for + show (and cleanliness) and the binaries actually still run on the host. + + After build-essential is built we do another trick. See + stage2-fhs-dirs.morph for details. Basically, /bin is a symlink to + /tools/bin during stage 2 but in stage 3 it becomes a real directory + again. kind: stratum name: build-essential |