summaryrefslogtreecommitdiff
path: root/build-essential.morph
diff options
context:
space:
mode:
authorRichard Maw <richard.maw@codethink.co.uk>2013-07-02 09:49:07 +0000
committerRichard Maw <richard.maw@codethink.co.uk>2013-07-02 09:49:07 +0000
commit1ec02fcd9546769bf120e35416950080c2d6f490 (patch)
treea864bd38f9623260263df6ec816c7f527ee61807 /build-essential.morph
parentbb1c5872b5e73bed652240daad982b90282314f9 (diff)
downloaddefinitions-1ec02fcd9546769bf120e35416950080c2d6f490.tar.gz
Replace JSON morphologies with YAML.
Diffstat (limited to 'build-essential.morph')
-rw-r--r--build-essential.morph584
1 files changed, 287 insertions, 297 deletions
diff --git a/build-essential.morph b/build-essential.morph
index bd8859d4..f4708e3d 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