From 2b10a9677817377618e33d2b07ab7caefe316633 Mon Sep 17 00:00:00 2001 From: Richard Maw Date: Mon, 18 Aug 2014 17:05:22 +0000 Subject: Re-organise definitions with scripts/organise-morphologies.py --- strata/build-essential.morph | 334 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 334 insertions(+) create mode 100644 strata/build-essential.morph (limited to 'strata/build-essential.morph') diff --git a/strata/build-essential.morph b/strata/build-essential.morph new file mode 100644 index 00000000..3918a13e --- /dev/null +++ b/strata/build-essential.morph @@ -0,0 +1,334 @@ +name: build-essential +kind: 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. +products: +- artifact: build-essential-minimal + include: + - fhs-dirs-.* + - busybox-.* + - eglibc-nss +chunks: +- name: stage1-binutils + morph: strata/build-essential/stage1-binutils.morph + repo: upstream:binutils-redhat + ref: 987eb543a034cddc4eeb103f08f566f24a5f964a + unpetrify-ref: baserock/build-essential + build-depends: [] + build-mode: bootstrap + prefix: /tools +- name: stage1-gcc + morph: strata/build-essential/stage1-gcc.morph + repo: upstream:gcc-tarball + ref: 0a1a077d3466cd99a4ed5590db2146b3fec6fff1 + unpetrify-ref: baserock/build-essential + build-depends: + - stage1-binutils + build-mode: bootstrap + prefix: /tools +- name: stage2-linux-api-headers + morph: strata/build-essential/stage2-linux-api-headers.morph + repo: upstream:linux + ref: eff825d6e284eb0fb04b434429a3e3b2e10cabf8 + unpetrify-ref: baserock/build-essential + build-depends: + - stage1-binutils + - stage1-gcc + build-mode: bootstrap + prefix: /tools +- name: stage2-eglibc + morph: strata/build-essential/stage2-eglibc.morph + repo: upstream:eglibc2 + ref: 43ee5d250ad47d2bee8ec17954efb7f22d2b804c + unpetrify-ref: baserock/2.15-build-essential + build-depends: + - stage1-binutils + - stage1-gcc + - stage2-linux-api-headers + build-mode: bootstrap + prefix: /tools +- name: stage2-binutils + morph: strata/build-essential/stage2-binutils.morph + repo: upstream:binutils-redhat + ref: 987eb543a034cddc4eeb103f08f566f24a5f964a + unpetrify-ref: baserock/build-essential + build-depends: + - stage1-binutils + - stage1-gcc + - stage2-eglibc + build-mode: bootstrap + prefix: /tools +- name: stage2-gcc-fixed-headers + morph: strata/build-essential/stage2-gcc-fixed-headers.morph + repo: upstream:gcc-tarball + ref: 0a1a077d3466cd99a4ed5590db2146b3fec6fff1 + unpetrify-ref: baserock/build-essential + build-depends: + - stage1-binutils + - stage1-gcc + - stage2-eglibc + build-mode: bootstrap + prefix: /tools +- name: stage2-gcc + morph: strata/build-essential/stage2-gcc.morph + repo: upstream:gcc-tarball + ref: 0a1a077d3466cd99a4ed5590db2146b3fec6fff1 + unpetrify-ref: baserock/build-essential + build-depends: + - stage1-binutils + - stage1-gcc + - stage2-eglibc + - stage2-gcc-fixed-headers + build-mode: bootstrap + prefix: /tools +- name: stage2-busybox + morph: strata/build-essential/stage2-busybox.morph + repo: upstream:busybox + ref: eeb9014f28e3aa00673a0fad127e7420da4392db + unpetrify-ref: baserock/build-essential + build-depends: + - stage1-binutils + - stage1-gcc + - stage2-eglibc + build-mode: bootstrap + prefix: /tools +- name: stage2-fhs-dirs + morph: strata/build-essential/stage2-fhs-dirs.morph + repo: baserock:baserock/fhs-dirs + ref: 41bbb474cd4647ee715bc94c21c161d12a20deb4 + unpetrify-ref: master + build-depends: [] + build-mode: bootstrap + prefix: /tools +- name: stage2-gawk + morph: strata/build-essential/stage2-gawk.morph + repo: upstream:gawk + ref: 6a0eb04c3d2ac24d80d505b42a8f67799487d133 + unpetrify-ref: baserock/build-essential + build-depends: + - stage1-binutils + - stage1-gcc + - stage2-eglibc + build-mode: bootstrap + prefix: /tools +- name: stage2-make + morph: strata/build-essential/stage2-make.morph + repo: upstream:make + ref: 56968f58301e6e5157cf4c8b6deefbaff2955eba + unpetrify-ref: baserock/build-essential + build-depends: + - stage1-binutils + - stage1-gcc + - stage2-eglibc + build-mode: bootstrap + prefix: /tools +- name: stage2-reset-specs + morph: strata/build-essential/stage2-reset-specs.morph + repo: upstream:eglibc2 + ref: 43ee5d250ad47d2bee8ec17954efb7f22d2b804c + unpetrify-ref: baserock/2.15-build-essential + build-depends: + - stage1-binutils + - stage1-gcc + - stage2-linux-api-headers + - stage2-eglibc + build-mode: bootstrap + prefix: /tools +- name: fhs-dirs + morph: strata/build-essential/fhs-dirs.morph + repo: baserock:baserock/fhs-dirs + ref: 41bbb474cd4647ee715bc94c21c161d12a20deb4 + 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 +- name: linux-api-headers + morph: strata/build-essential/linux-api-headers.morph + repo: upstream:linux + ref: eff825d6e284eb0fb04b434429a3e3b2e10cabf8 + 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 +- name: eglibc + morph: strata/build-essential/eglibc.morph + repo: upstream:eglibc2 + ref: df0258044f321990eadd647e03095a48ad04c1a8 + 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 + - linux-api-headers + artifacts: + eglibc-gconv: build-essential-runtime + eglibc-libs: build-essential-minimal + eglibc-nss: build-essential-runtime +- name: zlib + morph: strata/build-essential/zlib.morph + repo: upstream:zlib + ref: db333af7e9b90a23fd7f9cd8dc128123b34bf698 + 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 + artifacts: + zlib-libs: build-essential-minimal +- name: binutils + morph: strata/build-essential/binutils.morph + repo: upstream:binutils-redhat + ref: 987eb543a034cddc4eeb103f08f566f24a5f964a + 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 +- name: busybox + morph: strata/build-essential/busybox.morph + repo: upstream:busybox + ref: bf06394ab87ff22662084c82c1821847c25b7f21 + 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 +- name: gawk + morph: strata/build-essential/gawk.morph + repo: upstream:gawk + ref: 6a0eb04c3d2ac24d80d505b42a8f67799487d133 + 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 +- name: gcc + morph: strata/build-essential/gcc.morph + repo: upstream:gcc-tarball + ref: b0254026149b13782eae26d38435a4c62a002cf0 + unpetrify-ref: baserock/build-essential-4.7 + 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 + artifacts: + gcc-libs: build-essential-minimal +- name: make + morph: strata/build-essential/make.morph + repo: upstream:make + ref: 56968f58301e6e5157cf4c8b6deefbaff2955eba + 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 +- name: ccache + morph: strata/build-essential/ccache.morph + repo: upstream:ccache + ref: 567631456f0899cdf0c382f898d38aadc8901d32 + 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 -- cgit v1.2.1