chunks: - build-depends: [] build-mode: bootstrap name: stage1-binutils prefix: /tools ref: c95c6c25ca35e70d2c21daf138daff8371a8c8d9 repo: upstream:binutils-redhat unpetrify-ref: baserock/build-essential - build-depends: - stage1-binutils build-mode: bootstrap name: stage1-gcc prefix: /tools ref: 86eee3c35c3f43b3769a5bd810a45228dcc54343 repo: upstream:gcc-tarball unpetrify-ref: baserock/build-essential - build-depends: - stage1-binutils - stage1-gcc build-mode: bootstrap name: stage2-linux-api-headers prefix: /tools ref: f9755c0c4d5274bbb4a34ca147690ec3bba02d94 repo: upstream:linux unpetrify-ref: baserock/build-essential - build-depends: - stage1-binutils - stage1-gcc - stage2-linux-api-headers build-mode: bootstrap name: stage2-eglibc prefix: /tools ref: e51d56cdcf2d9a4372c89a1e88ab78bf7c329df7 repo: upstream:eglibc2 unpetrify-ref: baserock/2.15-build-essential - build-depends: - stage1-binutils - stage1-gcc - stage2-eglibc build-mode: bootstrap name: stage2-binutils prefix: /tools ref: c95c6c25ca35e70d2c21daf138daff8371a8c8d9 repo: upstream:binutils-redhat unpetrify-ref: baserock/build-essential - build-depends: - stage1-binutils - stage1-gcc - stage2-eglibc build-mode: bootstrap name: stage2-gcc-fixed-headers prefix: /tools ref: 86eee3c35c3f43b3769a5bd810a45228dcc54343 repo: upstream:gcc-tarball unpetrify-ref: baserock/build-essential - build-depends: - stage1-binutils - stage1-gcc - stage2-eglibc - stage2-gcc-fixed-headers build-mode: bootstrap name: stage2-gcc prefix: /tools ref: 86eee3c35c3f43b3769a5bd810a45228dcc54343 repo: upstream:gcc-tarball unpetrify-ref: baserock/build-essential - build-depends: - stage1-binutils - stage1-gcc - stage2-eglibc build-mode: bootstrap name: stage2-busybox prefix: /tools ref: eeb9014f28e3aa00673a0fad127e7420da4392db repo: upstream:busybox unpetrify-ref: baserock/build-essential - build-depends: [] build-mode: bootstrap name: stage2-fhs-dirs prefix: /tools ref: 442e2a6453ec380bf9d64f6be50e57d54ddf93d3 repo: baserock:baserock/fhs-dirs unpetrify-ref: master - build-depends: - stage1-binutils - stage1-gcc - stage2-eglibc build-mode: bootstrap name: stage2-gawk prefix: /tools ref: 6a0eb04c3d2ac24d80d505b42a8f67799487d133 repo: upstream:gawk unpetrify-ref: baserock/build-essential - build-depends: - stage1-binutils - stage1-gcc - stage2-eglibc build-mode: bootstrap name: stage2-make prefix: /tools ref: 56968f58301e6e5157cf4c8b6deefbaff2955eba repo: upstream:make unpetrify-ref: baserock/build-essential - build-depends: - stage1-binutils - stage1-gcc - stage2-linux-api-headers - stage2-eglibc build-mode: bootstrap name: stage2-reset-specs prefix: /tools ref: e51d56cdcf2d9a4372c89a1e88ab78bf7c329df7 repo: upstream:eglibc2 unpetrify-ref: baserock/2.15-build-essential - build-depends: - stage2-binutils - stage2-busybox - stage2-eglibc - stage2-fhs-dirs - stage2-gawk - stage2-gcc - stage2-linux-api-headers - stage2-make - stage2-reset-specs build-mode: staging name: fhs-dirs prefix: /usr ref: 442e2a6453ec380bf9d64f6be50e57d54ddf93d3 repo: baserock:baserock/fhs-dirs unpetrify-ref: master - build-depends: - stage2-binutils - stage2-busybox - stage2-eglibc - stage2-fhs-dirs - stage2-gawk - stage2-gcc - stage2-linux-api-headers - stage2-make - stage2-reset-specs build-mode: staging name: linux-api-headers prefix: /usr ref: f9755c0c4d5274bbb4a34ca147690ec3bba02d94 repo: upstream:linux unpetrify-ref: baserock/build-essential - build-depends: - stage2-binutils - stage2-busybox - stage2-eglibc - stage2-fhs-dirs - stage2-gawk - stage2-gcc - stage2-linux-api-headers - stage2-make - stage2-reset-specs - linux-api-headers build-mode: staging name: eglibc prefix: /usr ref: e51d56cdcf2d9a4372c89a1e88ab78bf7c329df7 repo: upstream:eglibc2 unpetrify-ref: baserock/2.15-build-essential - build-depends: - stage2-binutils - stage2-busybox - stage2-eglibc - stage2-fhs-dirs - stage2-gawk - stage2-gcc - stage2-linux-api-headers - stage2-make - stage2-reset-specs - eglibc build-mode: staging name: zlib prefix: /usr ref: db3aed6856d7a23186844fdf93105cad2fcf2f2f repo: upstream:zlib unpetrify-ref: baserock/build-essential - build-depends: - stage2-binutils - stage2-busybox - stage2-eglibc - stage2-fhs-dirs - stage2-gawk - stage2-gcc - stage2-linux-api-headers - stage2-make - stage2-reset-specs - eglibc - zlib build-mode: staging name: binutils prefix: /usr ref: c95c6c25ca35e70d2c21daf138daff8371a8c8d9 repo: upstream:binutils-redhat unpetrify-ref: baserock/build-essential - build-depends: - stage2-binutils - stage2-busybox - stage2-eglibc - stage2-fhs-dirs - stage2-gawk - stage2-gcc - stage2-linux-api-headers - stage2-make - stage2-reset-specs - eglibc build-mode: staging name: busybox prefix: /usr ref: eeb9014f28e3aa00673a0fad127e7420da4392db repo: upstream:busybox unpetrify-ref: baserock/build-essential - build-depends: - stage2-binutils - stage2-busybox - stage2-eglibc - stage2-fhs-dirs - stage2-gawk - stage2-gcc - stage2-linux-api-headers - stage2-make - stage2-reset-specs - eglibc build-mode: staging name: gawk prefix: /usr ref: 6a0eb04c3d2ac24d80d505b42a8f67799487d133 repo: upstream:gawk unpetrify-ref: baserock/build-essential - build-depends: - stage2-binutils - stage2-busybox - stage2-eglibc - stage2-fhs-dirs - stage2-gawk - stage2-gcc - stage2-linux-api-headers - stage2-make - stage2-reset-specs - eglibc - zlib build-mode: staging name: gcc prefix: /usr ref: 86eee3c35c3f43b3769a5bd810a45228dcc54343 repo: upstream:gcc-tarball unpetrify-ref: baserock/build-essential - build-depends: - stage2-binutils - stage2-busybox - stage2-eglibc - stage2-fhs-dirs - stage2-gawk - stage2-gcc - stage2-linux-api-headers - stage2-make - stage2-reset-specs - eglibc build-mode: staging name: make prefix: /usr ref: 56968f58301e6e5157cf4c8b6deefbaff2955eba repo: upstream:make unpetrify-ref: baserock/build-essential - build-depends: - stage2-binutils - stage2-busybox - stage2-eglibc - stage2-fhs-dirs - stage2-gawk - stage2-gcc - stage2-linux-api-headers - stage2-make - stage2-reset-specs - eglibc - zlib build-mode: staging name: ccache prefix: /usr ref: 0827e0b0f9c401b3aac87bb66fdeb81d6bdd6139 repo: upstream:ccache unpetrify-ref: baserock/build-essential 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