summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Thursfield <sam.thursfield@codethink.co.uk>2013-02-08 15:29:01 +0000
committerSam Thursfield <sam.thursfield@codethink.co.uk>2013-02-21 17:10:47 +0000
commitaddfb51bc4392ce3e7cc33913175b5665ac284f5 (patch)
tree65b3e139e322f9a443e0d75947a4877f06293a61
parentc2d155e8cdf27d2901567337345bfde4b29d1de7 (diff)
downloadmorphs-addfb51bc4392ce3e7cc33913175b5665ac284f5.tar.gz
Add new build-essential morph
In YAML format!
-rw-r--r--build-essential.morph214
-rw-r--r--build-essential.morph.yaml223
2 files changed, 423 insertions, 14 deletions
diff --git a/build-essential.morph b/build-essential.morph
index 5a3fb2c..b44f51f 100644
--- a/build-essential.morph
+++ b/build-essential.morph
@@ -4,58 +4,244 @@
"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