From addfb51bc4392ce3e7cc33913175b5665ac284f5 Mon Sep 17 00:00:00 2001 From: Sam Thursfield Date: Fri, 8 Feb 2013 15:29:01 +0000 Subject: Add new build-essential morph In YAML format! --- build-essential.morph | 214 ++++++++++++++++++++++++++++++++++++++++--- build-essential.morph.yaml | 223 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 423 insertions(+), 14 deletions(-) create mode 100644 build-essential.morph.yaml diff --git a/build-essential.morph b/build-essential.morph index 5a3fb2c..b44f51f 100644 --- a/build-essential.morph +++ b/build-essential.morph @@ -3,59 +3,245 @@ "description": "Toolchain stratum", "kind": "stratum", "chunks": [ + { + "name": "stage1-binutils", + "repo": "upstream:binutils-redhat", + "ref": "baserock/build-essential", + "build-mode": "bootstrap", + "build-depends": [], + "prefix": "/toolchain" + }, + { + "name": "stage1-gcc", + "repo": "upstream:gcc-tarball", + "ref": "baserock/build-essential", + "build-mode": "bootstrap", + "build-depends": [], + "prefix": "/toolchain" + }, + { + "name": "stage2-binutils", + "repo": "upstream:binutils-redhat", + "ref": "baserock/build-essential", + "build-mode": "bootstrap", + "build-depends": [ + "stage1-binutils", + "stage1-gcc" + ] + }, + { + "name": "stage2-busybox", + "repo": "upstream:busybox", + "ref": "baserock/build-essential", + "build-mode": "bootstrap", + "build-depends": [ + "stage1-binutils", + "stage1-gcc" + ] + }, + { + "name": "stage2-eglibc", + "repo": "upstream:eglibc2", + "ref": "baserock/2.15-build-essential", + "build-mode": "bootstrap", + "build-depends": [ + "stage1-binutils", + "stage1-gcc" + ] + }, + { + "name": "stage2-fhs-dirs", + "repo": "baserock:baserock/fhs-dirs", + "ref": "master", + "build-mode": "bootstrap", + "build-depends": [ + "stage1-binutils", + "stage1-gcc" + ] + }, + { + "name": "stage2-gawk", + "repo": "upstream:gawk", + "ref": "baserock/build-essential", + "build-mode": "bootstrap", + "build-depends": [ + "stage1-binutils", + "stage1-gcc" + ] + }, + { + "name": "stage2-gcc", + "repo": "upstream:gcc-tarball", + "ref": "baserock/build-essential", + "build-mode": "bootstrap", + "build-depends": [ + "stage1-binutils", + "stage1-gcc" + ] + }, + { + "name": "stage2-linux-api-headers", + "repo": "upstream:linux", + "ref": "baserock/build-essential", + "build-mode": "bootstrap", + "build-depends": [ + "stage1-binutils", + "stage1-gcc" + ] + }, + { + "name": "stage2-make", + "repo": "upstream:make", + "ref": "baserock/build-essential", + "build-mode": "bootstrap", + "build-depends": [ + "stage1-binutils", + "stage1-gcc" + ] + }, { "name": "binutils", "repo": "upstream:binutils-redhat", "ref": "baserock/build-essential", - "build-depends": [] + "build-mode": "staging", + "build-depends": [ + "stage2-binutils", + "stage2-busybox", + "stage2-eglibc", + "stage2-fhs-dirs", + "stage2-gawk", + "stage2-gcc", + "stage2-linux-api-headers", + "stage2-make" + ] }, { "name": "busybox", "repo": "upstream:busybox", "ref": "baserock/build-essential", - "build-depends": [] + "build-mode": "staging", + "build-depends": [ + "stage2-binutils", + "stage2-busybox", + "stage2-eglibc", + "stage2-fhs-dirs", + "stage2-gawk", + "stage2-gcc", + "stage2-linux-api-headers", + "stage2-make" + ] }, { "name": "eglibc", "repo": "upstream:eglibc2", "ref": "baserock/2.15-build-essential", - "build-depends": [] + "build-mode": "staging", + "build-depends": [ + "stage2-binutils", + "stage2-busybox", + "stage2-eglibc", + "stage2-fhs-dirs", + "stage2-gawk", + "stage2-gcc", + "stage2-linux-api-headers", + "stage2-make" + ] }, { "name": "fhs-dirs", "repo": "baserock:baserock/fhs-dirs", "ref": "master", - "build-depends": [] + "build-mode": "staging", + "build-depends": [ + "stage2-binutils", + "stage2-busybox", + "stage2-eglibc", + "stage2-fhs-dirs", + "stage2-gawk", + "stage2-gcc", + "stage2-linux-api-headers", + "stage2-make" + ] + }, + { + "name": "gawk", + "repo": "upstream:gawk", + "ref": "baserock/build-essential", + "build-mode": "staging", + "build-depends": [ + "stage2-binutils", + "stage2-busybox", + "stage2-eglibc", + "stage2-fhs-dirs", + "stage2-gawk", + "stage2-gcc", + "stage2-linux-api-headers", + "stage2-make" + ] }, { "name": "gcc", "repo": "upstream:gcc-tarball", "ref": "baserock/build-essential", - "build-depends": [] + "build-mode": "staging", + "build-depends": [ + "stage2-binutils", + "stage2-busybox", + "stage2-eglibc", + "stage2-fhs-dirs", + "stage2-gawk", + "stage2-gcc", + "stage2-linux-api-headers", + "stage2-make" + ] }, { "name": "linux-api-headers", "repo": "upstream:linux", "ref": "baserock/build-essential", - "build-depends": [] - }, - { - "name": "gawk", - "repo": "upstream:gawk", - "ref": "baserock/build-essential", - "build-depends": [] + "build-mode": "staging", + "build-depends": [ + "stage2-binutils", + "stage2-busybox", + "stage2-eglibc", + "stage2-fhs-dirs", + "stage2-gawk", + "stage2-gcc", + "stage2-linux-api-headers", + "stage2-make" + ] }, { "name": "make", "repo": "upstream:make", "ref": "baserock/build-essential", - "build-depends": [] + "build-mode": "staging", + "build-depends": [ + "stage2-binutils", + "stage2-busybox", + "stage2-eglibc", + "stage2-fhs-dirs", + "stage2-gawk", + "stage2-gcc", + "stage2-linux-api-headers", + "stage2-make" + ] }, { "name": "ccache", "repo": "upstream:ccache", "ref": "baserock/build-essential", - "build-depends": [] + "build-mode": "staging", + "build-depends": [ + "binutils", + "busybox", + "eglibc", + "fhs-dirs", + "gawk", + "gcc", + "linux-api-headers", + "make" + ] } ] } diff --git a/build-essential.morph.yaml b/build-essential.morph.yaml new file mode 100644 index 0000000..469347b --- /dev/null +++ b/build-essential.morph.yaml @@ -0,0 +1,223 @@ +name: build-essential +description: Toolchain stratum +kind: stratum + +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. + + - name: stage1-binutils + repo: upstream:binutils-redhat + ref: baserock/build-essential + build-mode: bootstrap + build-depends: [] + prefix: /toolchain + + - name: stage1-gcc + repo: upstream:gcc-tarball + ref: baserock/build-essential + build-mode: bootstrap + build-depends: [] + prefix: /toolchain + + # Stage 2: build the whole of build-essential, using the host's tools + # but the cross-compiler toolchain. + + - name: stage2-binutils + repo: upstream:binutils-redhat + ref: baserock/build-essential + build-mode: bootstrap + build-depends: + - stage1-binutils + - stage1-gcc + + - name: stage2-busybox + repo: upstream:busybox + ref: baserock/build-essential + build-mode: bootstrap + build-depends: + - stage1-binutils + - stage1-gcc + + - name: stage2-eglibc + repo: upstream:eglibc2 + ref: baserock/2.15-build-essential + build-mode: bootstrap + build-depends: + - stage1-binutils + - stage1-gcc + + - name: stage2-fhs-dirs + repo: baserock:baserock/fhs-dirs + ref: master + build-mode: bootstrap + build-depends: + - stage1-binutils + - stage1-gcc + + - name: stage2-gawk + repo: upstream:gawk + ref: baserock/build-essential + build-mode: bootstrap + build-depends: + - stage1-binutils + - stage1-gcc + + - name: stage2-gcc + repo: upstream:gcc-tarball + ref: baserock/build-essential + build-mode: bootstrap + build-depends: + - stage1-binutils + - stage1-gcc + + - name: stage2-linux-api-headers + repo: upstream:linux + ref: baserock/build-essential + build-mode: bootstrap + build-depends: + - stage1-binutils + - stage1-gcc + + - name: stage2-make + repo: upstream:make + ref: baserock/build-essential + build-mode: bootstrap + build-depends: + - stage1-binutils + - stage1-gcc + + # 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. + + - name: binutils + repo: upstream:binutils-redhat + ref: baserock/build-essential + build-mode: staging + build-depends: + - stage2-binutils + - stage2-busybox + - stage2-eglibc + - stage2-fhs-dirs + - stage2-gawk + - stage2-gcc + - stage2-linux-api-headers + - stage2-make + + - name: busybox + repo: upstream:busybox + ref: baserock/build-essential + build-mode: staging + build-depends: + - stage2-binutils + - stage2-busybox + - stage2-eglibc + - stage2-fhs-dirs + - stage2-gawk + - stage2-gcc + - stage2-linux-api-headers + - stage2-make + + - name: eglibc + repo: upstream:eglibc2 + ref: baserock/2.15-build-essential + build-mode: staging + build-depends: + - stage2-binutils + - stage2-busybox + - stage2-eglibc + - stage2-fhs-dirs + - stage2-gawk + - stage2-gcc + - stage2-linux-api-headers + - stage2-make + + - name: fhs-dirs + repo: baserock:baserock/fhs-dirs + ref: master + build-mode: staging + build-depends: + - stage2-binutils + - stage2-busybox + - stage2-eglibc + - stage2-fhs-dirs + - stage2-gawk + - stage2-gcc + - stage2-linux-api-headers + - stage2-make + + - name: gawk + repo: upstream:gawk + ref: baserock/build-essential + build-mode: staging + build-depends: + - stage2-binutils + - stage2-busybox + - stage2-eglibc + - stage2-fhs-dirs + - stage2-gawk + - stage2-gcc + - stage2-linux-api-headers + - stage2-make + + - name: gcc + repo: upstream:gcc-tarball + ref: baserock/build-essential + build-mode: staging + build-depends: + - stage2-binutils + - stage2-busybox + - stage2-eglibc + - stage2-fhs-dirs + - stage2-gawk + - stage2-gcc + - stage2-linux-api-headers + - stage2-make + + - name: linux-api-headers + repo: upstream:linux + ref: baserock/build-essential + build-mode: staging + build-depends: + - stage2-binutils + - stage2-busybox + - stage2-eglibc + - stage2-fhs-dirs + - stage2-gawk + - stage2-gcc + - stage2-linux-api-headers + - stage2-make + + - name: make + repo: upstream:make + ref: baserock/build-essential + build-mode: staging + build-depends: + - stage2-binutils + - stage2-busybox + - stage2-eglibc + - stage2-fhs-dirs + - stage2-gawk + - stage2-gcc + - stage2-linux-api-headers + - stage2-make + + # Extras that need to be in build-essential but don't need bootstrapping. + + - name: ccache + repo: upstream:ccache + ref: baserock/build-essential + build-mode: staging + build-depends: + - binutils + - busybox + - eglibc + - fhs-dirs + - gawk + - gcc + - linux-api-headers + - make -- cgit v1.2.1