summaryrefslogtreecommitdiff
path: root/build-essential.morph
diff options
context:
space:
mode:
Diffstat (limited to 'build-essential.morph')
-rw-r--r--build-essential.morph140
1 files changed, 91 insertions, 49 deletions
diff --git a/build-essential.morph b/build-essential.morph
index 0163093..cbda1e4 100644
--- a/build-essential.morph
+++ b/build-essential.morph
@@ -3,24 +3,26 @@ chunks:
build-mode: bootstrap
name: stage1-binutils
prefix: /tools
- ref: baserock/build-essential
+ ref: c95c6c25ca35e70d2c21daf138daff8371a8c8d9
repo: upstream:binutils-redhat
+ unpetrify-ref: baserock/build-essential
- build-depends:
- stage1-binutils
build-mode: bootstrap
name: stage1-gcc
prefix: /tools
- ref: baserock/build-essential
+ ref: 86eee3c35c3f43b3769a5bd810a45228dcc54343
repo: upstream:gcc-tarball
-
+ unpetrify-ref: baserock/build-essential
- build-depends:
- stage1-binutils
- stage1-gcc
build-mode: bootstrap
name: stage2-linux-api-headers
prefix: /tools
- ref: baserock/build-essential
+ ref: f9755c0c4d5274bbb4a34ca147690ec3bba02d94
repo: upstream:linux
+ unpetrify-ref: baserock/build-essential
- build-depends:
- stage1-binutils
- stage1-gcc
@@ -28,8 +30,9 @@ chunks:
build-mode: bootstrap
name: stage2-eglibc
prefix: /tools
- ref: baserock/2.15-build-essential
+ ref: e51d56cdcf2d9a4372c89a1e88ab78bf7c329df7
repo: upstream:eglibc2
+ unpetrify-ref: baserock/2.15-build-essential
- build-depends:
- stage1-binutils
- stage1-gcc
@@ -37,8 +40,9 @@ chunks:
build-mode: bootstrap
name: stage2-binutils
prefix: /tools
- ref: baserock/build-essential
+ ref: c95c6c25ca35e70d2c21daf138daff8371a8c8d9
repo: upstream:binutils-redhat
+ unpetrify-ref: baserock/build-essential
- build-depends:
- stage1-binutils
- stage1-gcc
@@ -46,8 +50,9 @@ chunks:
build-mode: bootstrap
name: stage2-gcc-fixed-headers
prefix: /tools
- ref: baserock/build-essential
+ ref: 86eee3c35c3f43b3769a5bd810a45228dcc54343
repo: upstream:gcc-tarball
+ unpetrify-ref: baserock/build-essential
- build-depends:
- stage1-binutils
- stage1-gcc
@@ -56,8 +61,9 @@ chunks:
build-mode: bootstrap
name: stage2-gcc
prefix: /tools
- ref: baserock/build-essential
+ ref: 86eee3c35c3f43b3769a5bd810a45228dcc54343
repo: upstream:gcc-tarball
+ unpetrify-ref: baserock/build-essential
- build-depends:
- stage1-binutils
- stage1-gcc
@@ -65,14 +71,16 @@ chunks:
build-mode: bootstrap
name: stage2-busybox
prefix: /tools
- ref: baserock/build-essential
+ ref: eeb9014f28e3aa00673a0fad127e7420da4392db
repo: upstream:busybox
+ unpetrify-ref: baserock/build-essential
- build-depends: []
build-mode: bootstrap
name: stage2-fhs-dirs
prefix: /tools
- ref: master
+ ref: 442e2a6453ec380bf9d64f6be50e57d54ddf93d3
repo: baserock:baserock/fhs-dirs
+ unpetrify-ref: master
- build-depends:
- stage1-binutils
- stage1-gcc
@@ -80,8 +88,9 @@ chunks:
build-mode: bootstrap
name: stage2-gawk
prefix: /tools
- ref: baserock/build-essential
+ ref: 6a0eb04c3d2ac24d80d505b42a8f67799487d133
repo: upstream:gawk
+ unpetrify-ref: baserock/build-essential
- build-depends:
- stage1-binutils
- stage1-gcc
@@ -89,8 +98,9 @@ chunks:
build-mode: bootstrap
name: stage2-make
prefix: /tools
- ref: baserock/build-essential
+ ref: 56968f58301e6e5157cf4c8b6deefbaff2955eba
repo: upstream:make
+ unpetrify-ref: baserock/build-essential
- build-depends:
- stage1-binutils
- stage1-gcc
@@ -99,9 +109,9 @@ chunks:
build-mode: bootstrap
name: stage2-reset-specs
prefix: /tools
- ref: baserock/2.15-build-essential
+ ref: e51d56cdcf2d9a4372c89a1e88ab78bf7c329df7
repo: upstream:eglibc2
-
+ unpetrify-ref: baserock/2.15-build-essential
- build-depends:
- stage2-binutils
- stage2-busybox
@@ -115,8 +125,9 @@ chunks:
build-mode: staging
name: fhs-dirs
prefix: /usr
- ref: master
+ ref: 442e2a6453ec380bf9d64f6be50e57d54ddf93d3
repo: baserock:baserock/fhs-dirs
+ unpetrify-ref: master
- build-depends:
- stage2-binutils
- stage2-busybox
@@ -130,8 +141,9 @@ chunks:
build-mode: staging
name: linux-api-headers
prefix: /usr
- ref: baserock/build-essential
+ ref: f9755c0c4d5274bbb4a34ca147690ec3bba02d94
repo: upstream:linux
+ unpetrify-ref: baserock/build-essential
- build-depends:
- stage2-binutils
- stage2-busybox
@@ -146,8 +158,9 @@ chunks:
build-mode: staging
name: eglibc
prefix: /usr
- ref: baserock/2.15-build-essential
+ ref: e51d56cdcf2d9a4372c89a1e88ab78bf7c329df7
repo: upstream:eglibc2
+ unpetrify-ref: baserock/2.15-build-essential
- build-depends:
- stage2-binutils
- stage2-busybox
@@ -162,8 +175,9 @@ chunks:
build-mode: staging
name: zlib
prefix: /usr
- ref: baserock/build-essential
+ ref: db3aed6856d7a23186844fdf93105cad2fcf2f2f
repo: upstream:zlib
+ unpetrify-ref: baserock/build-essential
- build-depends:
- stage2-binutils
- stage2-busybox
@@ -179,8 +193,9 @@ chunks:
build-mode: staging
name: binutils
prefix: /usr
- ref: baserock/build-essential
+ ref: c95c6c25ca35e70d2c21daf138daff8371a8c8d9
repo: upstream:binutils-redhat
+ unpetrify-ref: baserock/build-essential
- build-depends:
- stage2-binutils
- stage2-busybox
@@ -195,8 +210,9 @@ chunks:
build-mode: staging
name: busybox
prefix: /usr
- ref: baserock/build-essential
+ ref: eeb9014f28e3aa00673a0fad127e7420da4392db
repo: upstream:busybox
+ unpetrify-ref: baserock/build-essential
- build-depends:
- stage2-binutils
- stage2-busybox
@@ -211,8 +227,9 @@ chunks:
build-mode: staging
name: gawk
prefix: /usr
- ref: baserock/build-essential
+ ref: 6a0eb04c3d2ac24d80d505b42a8f67799487d133
repo: upstream:gawk
+ unpetrify-ref: baserock/build-essential
- build-depends:
- stage2-binutils
- stage2-busybox
@@ -228,8 +245,9 @@ chunks:
build-mode: staging
name: gcc
prefix: /usr
- ref: baserock/build-essential
+ ref: 86eee3c35c3f43b3769a5bd810a45228dcc54343
repo: upstream:gcc-tarball
+ unpetrify-ref: baserock/build-essential
- build-depends:
- stage2-binutils
- stage2-busybox
@@ -244,9 +262,9 @@ chunks:
build-mode: staging
name: make
prefix: /usr
- ref: baserock/build-essential
+ ref: 56968f58301e6e5157cf4c8b6deefbaff2955eba
repo: upstream:make
-
+ unpetrify-ref: baserock/build-essential
- build-depends:
- stage2-binutils
- stage2-busybox
@@ -262,38 +280,62 @@ chunks:
build-mode: staging
name: ccache
prefix: /usr
- ref: baserock/build-essential
+ ref: 0827e0b0f9c401b3aac87bb66fdeb81d6bdd6139
repo: upstream:ccache
-description: |
- Toolchain stratum
+ unpetrify-ref: baserock/build-essential
+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
- Stage 1: build a minimal cross compiler with the host's tools.
+ show (and cleanliness) and the binaries actually still run on the host.
- 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.
+ After build-essential is built we do another trick. See
- 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).
+ stage2-fhs-dirs.morph for details. Basically, /bin is a symlink to
- 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.
+ /tools/bin during stage 2 but in stage 3 it becomes a real directory
- 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.
+ again.
- 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.
+ '
kind: stratum
name: build-essential