diff options
author | Richard Maw <richard.maw@codethink.co.uk> | 2013-07-02 09:49:07 +0000 |
---|---|---|
committer | Richard Maw <richard.maw@codethink.co.uk> | 2013-07-02 09:49:07 +0000 |
commit | 1ec02fcd9546769bf120e35416950080c2d6f490 (patch) | |
tree | a864bd38f9623260263df6ec816c7f527ee61807 /build-essential.morph | |
parent | bb1c5872b5e73bed652240daad982b90282314f9 (diff) | |
download | morphs-1ec02fcd9546769bf120e35416950080c2d6f490.tar.gz |
Replace JSON morphologies with YAML.
Diffstat (limited to 'build-essential.morph')
-rw-r--r-- | build-essential.morph | 584 |
1 files changed, 287 insertions, 297 deletions
diff --git a/build-essential.morph b/build-essential.morph index bd8859d..f4708e3 100644 --- a/build-essential.morph +++ b/build-essential.morph @@ -1,297 +1,287 @@ -{ - "name": "build-essential", - "description": "Toolchain stratum", - "kind": "stratum", - "chunks": [ - { - "name": "stage1-binutils", - "repo": "upstream:binutils-redhat", - "ref": "baserock/build-essential", - "build-mode": "bootstrap", - "prefix": "/tools", - "build-depends": [] - }, - { - "name": "stage1-gcc", - "repo": "upstream:gcc-tarball", - "ref": "baserock/build-essential", - "build-mode": "bootstrap", - "prefix": "/tools", - "build-depends": [ - "stage1-binutils" - ] - }, - { - "name": "stage2-linux-api-headers", - "repo": "upstream:linux", - "ref": "baserock/build-essential", - "build-mode": "bootstrap", - "prefix": "/tools", - "build-depends": [ - "stage1-binutils", - "stage1-gcc" - ] - }, - { - "name": "stage2-eglibc", - "repo": "upstream:eglibc2", - "ref": "baserock/2.15-build-essential", - "build-mode": "bootstrap", - "prefix": "/tools", - "build-depends": [ - "stage1-binutils", - "stage1-gcc", - "stage2-linux-api-headers" - ] - }, - { - "name": "stage2-binutils", - "repo": "upstream:binutils-redhat", - "ref": "baserock/build-essential", - "build-mode": "bootstrap", - "prefix": "/tools", - "build-depends": [ - "stage1-binutils", - "stage1-gcc", - "stage2-eglibc" - ] - }, - { - "name": "stage2-gcc", - "repo": "upstream:gcc-tarball", - "ref": "baserock/build-essential", - "build-mode": "bootstrap", - "prefix": "/tools", - "build-depends": [ - "stage1-binutils", - "stage1-gcc", - "stage2-eglibc" - ] - }, - { - "name": "stage2-busybox", - "repo": "upstream:busybox", - "ref": "baserock/build-essential", - "build-mode": "bootstrap", - "prefix": "/tools", - "build-depends": [ - "stage1-binutils", - "stage1-gcc", - "stage2-eglibc" - ] - }, - { - "name": "stage2-fhs-dirs", - "repo": "baserock:baserock/fhs-dirs", - "ref": "master", - "build-mode": "bootstrap", - "prefix": "/tools", - "build-depends": [] - }, - { - "name": "stage2-gawk", - "repo": "upstream:gawk", - "ref": "baserock/build-essential", - "build-mode": "bootstrap", - "prefix": "/tools", - "build-depends": [ - "stage1-binutils", - "stage1-gcc", - "stage2-eglibc" - ] - }, - { - "name": "stage2-make", - "repo": "upstream:make", - "ref": "baserock/build-essential", - "build-mode": "bootstrap", - "prefix": "/tools", - "build-depends": [ - "stage1-binutils", - "stage1-gcc", - "stage2-eglibc" - ] - }, - { - "name": "fhs-dirs", - "repo": "baserock:baserock/fhs-dirs", - "ref": "master", - "build-mode": "staging", - "prefix": "/usr", - "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", - "prefix": "/usr", - "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", - "prefix": "/usr", - "build-depends": [ - "stage2-binutils", - "stage2-busybox", - "stage2-eglibc", - "stage2-fhs-dirs", - "stage2-gawk", - "stage2-gcc", - "stage2-linux-api-headers", - "stage2-make", - "linux-api-headers" - ] - }, - { - "name": "zlib", - "repo": "upstream:zlib", - "ref": "baserock/build-essential", - "build-mode": "staging", - "prefix": "/usr", - "build-depends": [ - "stage2-binutils", - "stage2-busybox", - "stage2-eglibc", - "stage2-fhs-dirs", - "stage2-gawk", - "stage2-gcc", - "stage2-linux-api-headers", - "stage2-make", - "eglibc" - ] - }, - { - "name": "binutils", - "repo": "upstream:binutils-redhat", - "ref": "baserock/build-essential", - "build-mode": "staging", - "prefix": "/usr", - "build-depends": [ - "stage2-binutils", - "stage2-busybox", - "stage2-eglibc", - "stage2-fhs-dirs", - "stage2-gawk", - "stage2-gcc", - "stage2-linux-api-headers", - "stage2-make", - "eglibc", - "zlib" - ] - }, - { - "name": "busybox", - "repo": "upstream:busybox", - "ref": "baserock/build-essential", - "build-mode": "staging", - "prefix": "/usr", - "build-depends": [ - "stage2-binutils", - "stage2-busybox", - "stage2-eglibc", - "stage2-fhs-dirs", - "stage2-gawk", - "stage2-gcc", - "stage2-linux-api-headers", - "stage2-make", - "eglibc" - ] - }, - { - "name": "gawk", - "repo": "upstream:gawk", - "ref": "baserock/build-essential", - "build-mode": "staging", - "prefix": "/usr", - "build-depends": [ - "stage2-binutils", - "stage2-busybox", - "stage2-eglibc", - "stage2-fhs-dirs", - "stage2-gawk", - "stage2-gcc", - "stage2-linux-api-headers", - "stage2-make", - "eglibc" - ] - }, - { - "name": "gcc", - "repo": "upstream:gcc-tarball", - "ref": "baserock/build-essential", - "build-mode": "staging", - "prefix": "/usr", - "build-depends": [ - "stage2-binutils", - "stage2-busybox", - "stage2-eglibc", - "stage2-fhs-dirs", - "stage2-gawk", - "stage2-gcc", - "stage2-linux-api-headers", - "stage2-make", - "eglibc", - "zlib" - ] - }, - { - "name": "make", - "repo": "upstream:make", - "ref": "baserock/build-essential", - "build-mode": "staging", - "prefix": "/usr", - "build-depends": [ - "stage2-binutils", - "stage2-busybox", - "stage2-eglibc", - "stage2-fhs-dirs", - "stage2-gawk", - "stage2-gcc", - "stage2-linux-api-headers", - "stage2-make", - "eglibc" - ] - }, - { - "name": "ccache", - "repo": "upstream:ccache", - "ref": "baserock/build-essential", - "build-mode": "staging", - "prefix": "/usr", - "build-depends": [ - "stage2-binutils", - "stage2-busybox", - "stage2-eglibc", - "stage2-fhs-dirs", - "stage2-gawk", - "stage2-gcc", - "stage2-linux-api-headers", - "stage2-make", - "eglibc", - "zlib" - ] - } - ] -} +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 + prefix: /tools + build-depends: [] + + - name: stage1-gcc + repo: upstream:gcc-tarball + ref: baserock/build-essential + build-mode: bootstrap + prefix: /tools + build-depends: + - stage1-binutils + + # 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). + + - name: stage2-linux-api-headers + repo: upstream:linux + ref: baserock/build-essential + build-mode: bootstrap + prefix: /tools + build-depends: + - stage1-binutils + - stage1-gcc + + - name: stage2-eglibc + repo: upstream:eglibc2 + ref: baserock/2.15-build-essential + build-mode: bootstrap + prefix: /tools + build-depends: + - stage1-binutils + - stage1-gcc + - stage2-linux-api-headers + + - name: stage2-binutils + repo: upstream:binutils-redhat + ref: baserock/build-essential + build-mode: bootstrap + prefix: /tools + build-depends: + - stage1-binutils + - stage1-gcc + - stage2-eglibc + + - name: stage2-gcc + repo: upstream:gcc-tarball + ref: baserock/build-essential + build-mode: bootstrap + prefix: /tools + build-depends: + - stage1-binutils + - stage1-gcc + - stage2-eglibc + + - name: stage2-busybox + repo: upstream:busybox + ref: baserock/build-essential + build-mode: bootstrap + prefix: /tools + build-depends: + - stage1-binutils + - stage1-gcc + - stage2-eglibc + + - name: stage2-fhs-dirs + repo: baserock:baserock/fhs-dirs + ref: master + build-mode: bootstrap + prefix: /tools + build-depends: [] + + - name: stage2-gawk + repo: upstream:gawk + ref: baserock/build-essential + build-mode: bootstrap + prefix: /tools + build-depends: + - stage1-binutils + - stage1-gcc + - stage2-eglibc + + - name: stage2-make + repo: upstream:make + ref: baserock/build-essential + build-mode: bootstrap + prefix: /tools + build-depends: + - stage1-binutils + - stage1-gcc + - stage2-eglibc + + # 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. + + - name: fhs-dirs + repo: baserock:baserock/fhs-dirs + ref: master + build-mode: staging + prefix: /usr + 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 + prefix: /usr + 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 + prefix: /usr + build-depends: + - stage2-binutils + - stage2-busybox + - stage2-eglibc + - stage2-fhs-dirs + - stage2-gawk + - stage2-gcc + - stage2-linux-api-headers + - stage2-make + - linux-api-headers + + - name: zlib + repo: upstream:zlib + ref: baserock/build-essential + build-mode: staging + prefix: /usr + build-depends: + - stage2-binutils + - stage2-busybox + - stage2-eglibc + - stage2-fhs-dirs + - stage2-gawk + - stage2-gcc + - stage2-linux-api-headers + - stage2-make + - eglibc + + - name: binutils + repo: upstream:binutils-redhat + ref: baserock/build-essential + build-mode: staging + prefix: /usr + build-depends: + - stage2-binutils + - stage2-busybox + - stage2-eglibc + - stage2-fhs-dirs + - stage2-gawk + - stage2-gcc + - stage2-linux-api-headers + - stage2-make + - eglibc + - zlib + + - name: busybox + repo: upstream:busybox + ref: baserock/build-essential + build-mode: staging + prefix: /usr + build-depends: + - stage2-binutils + - stage2-busybox + - stage2-eglibc + - stage2-fhs-dirs + - stage2-gawk + - stage2-gcc + - stage2-linux-api-headers + - stage2-make + - eglibc + + - name: gawk + repo: upstream:gawk + ref: baserock/build-essential + build-mode: staging + prefix: /usr + build-depends: + - stage2-binutils + - stage2-busybox + - stage2-eglibc + - stage2-fhs-dirs + - stage2-gawk + - stage2-gcc + - stage2-linux-api-headers + - stage2-make + - eglibc + + - name: gcc + repo: upstream:gcc-tarball + ref: baserock/build-essential + build-mode: staging + prefix: /usr + build-depends: + - stage2-binutils + - stage2-busybox + - stage2-eglibc + - stage2-fhs-dirs + - stage2-gawk + - stage2-gcc + - stage2-linux-api-headers + - stage2-make + - eglibc + - zlib + + - name: make + repo: upstream:make + ref: baserock/build-essential + build-mode: staging + prefix: /usr + build-depends: + - stage2-binutils + - stage2-busybox + - stage2-eglibc + - stage2-fhs-dirs + - stage2-gawk + - stage2-gcc + - stage2-linux-api-headers + - stage2-make + - eglibc + + # 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 + prefix: /usr + build-depends: + - stage2-binutils + - stage2-busybox + - stage2-eglibc + - stage2-fhs-dirs + - stage2-gawk + - stage2-gcc + - stage2-linux-api-headers + - stage2-make + - eglibc + - zlib |