summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Maw <richard.maw@codethink.co.uk>2013-08-15 16:08:47 +0000
committerRichard Maw <richard.maw@codethink.co.uk>2013-08-15 16:08:47 +0000
commitd3a5f948cabd9d4440e5b13b7daa2ced51030b8c (patch)
tree537971de119ad853dbfc94ef3b59a1387c9d3b04
parent5af9cb51c4932583b57dd65d6055f0439ac2cb6a (diff)
downloaddefinitions-d3a5f948cabd9d4440e5b13b7daa2ced51030b8c.tar.gz
Rework to allow a read-only rootfs
The diff is unfortunately useless as the build-essential has lost all formatting, but apart from the usual changes to use different branches, two new chunks have been added. Before stage2-gcc there is now stage2-gcc-fixed-headers, which updates stage1-gcc's internal headers to use limits from system headers. This was previously done at the beginning of stage2-gcc, but required changes to the staging area. There is now also stage2-reset-specs before stage3, which does a nasty hack to prevent gcc using the sysroot specs in the chroot.
-rw-r--r--base-system-armv7-highbank.morph8
-rw-r--r--base-system-armv7b-highbank.morph8
-rw-r--r--base-system-x86_64-generic.morph8
-rw-r--r--bsp-armv7-highbank.morph2
-rw-r--r--bsp-armv7b-highbank.morph2
-rw-r--r--bsp-x86_64-generic.morph2
-rw-r--r--build-essential.morph545
-rw-r--r--core.morph2
-rw-r--r--foundation.morph2
9 files changed, 279 insertions, 300 deletions
diff --git a/base-system-armv7-highbank.morph b/base-system-armv7-highbank.morph
index a317f6a0..37985bc6 100644
--- a/base-system-armv7-highbank.morph
+++ b/base-system-armv7-highbank.morph
@@ -6,16 +6,16 @@ arch: armv7
strata:
- morph: build-essential
repo: baserock:baserock/morphs
- ref: master
+ ref: baserock/richardmaw/S8564/ro-staging-area
- morph: core
repo: baserock:baserock/morphs
- ref: master
+ ref: baserock/richardmaw/S8564/ro-staging-area
- morph: foundation
repo: baserock:baserock/morphs
- ref: master
+ ref: baserock/richardmaw/S8564/ro-staging-area
- morph: bsp-armv7-highbank
repo: baserock:baserock/morphs
- ref: master
+ ref: baserock/richardmaw/S8564/ro-staging-area
configuration-extensions:
- set-hostname
- ssh
diff --git a/base-system-armv7b-highbank.morph b/base-system-armv7b-highbank.morph
index ce86b415..d6a4141b 100644
--- a/base-system-armv7b-highbank.morph
+++ b/base-system-armv7b-highbank.morph
@@ -6,16 +6,16 @@ arch: armv7b
strata:
- morph: build-essential
repo: baserock:baserock/morphs
- ref: master
+ ref: baserock/richardmaw/S8564/ro-staging-area
- morph: core
repo: baserock:baserock/morphs
- ref: master
+ ref: baserock/richardmaw/S8564/ro-staging-area
- morph: foundation
repo: baserock:baserock/morphs
- ref: master
+ ref: baserock/richardmaw/S8564/ro-staging-area
- morph: bsp-armv7b-highbank
repo: baserock:baserock/morphs
- ref: master
+ ref: baserock/richardmaw/S8564/ro-staging-area
configuration-extensions:
- set-hostname
- ssh
diff --git a/base-system-x86_64-generic.morph b/base-system-x86_64-generic.morph
index 89e7f397..7950ee3d 100644
--- a/base-system-x86_64-generic.morph
+++ b/base-system-x86_64-generic.morph
@@ -6,16 +6,16 @@ arch: x86_64
strata:
- morph: build-essential
repo: baserock:baserock/morphs
- ref: master
+ ref: baserock/richardmaw/S8564/ro-staging-area
- morph: core
repo: baserock:baserock/morphs
- ref: master
+ ref: baserock/richardmaw/S8564/ro-staging-area
- morph: foundation
repo: baserock:baserock/morphs
- ref: master
+ ref: baserock/richardmaw/S8564/ro-staging-area
- morph: bsp-x86_64-generic
repo: baserock:baserock/morphs
- ref: master
+ ref: baserock/richardmaw/S8564/ro-staging-area
configuration-extensions:
- set-hostname
- ssh
diff --git a/bsp-armv7-highbank.morph b/bsp-armv7-highbank.morph
index a3eaf2dc..8e23c69e 100644
--- a/bsp-armv7-highbank.morph
+++ b/bsp-armv7-highbank.morph
@@ -3,7 +3,7 @@ description: The platform dependent components required to boot an ARM highbank
kind: stratum
build-depends:
- repo: baserock:baserock/morphs
- ref: master
+ ref: baserock/richardmaw/S8564/ro-staging-area
morph: core
chunks:
- name: linux
diff --git a/bsp-armv7b-highbank.morph b/bsp-armv7b-highbank.morph
index 0a921f9d..ae41a6a7 100644
--- a/bsp-armv7b-highbank.morph
+++ b/bsp-armv7b-highbank.morph
@@ -3,7 +3,7 @@ description: The platform dependent components required to boot an ARM highbank
kind: stratum
build-depends:
- repo: baserock:baserock/morphs
- ref: master
+ ref: baserock/richardmaw/S8564/ro-staging-area
morph: core
chunks:
- name: linux
diff --git a/bsp-x86_64-generic.morph b/bsp-x86_64-generic.morph
index 4f2ad85b..58845629 100644
--- a/bsp-x86_64-generic.morph
+++ b/bsp-x86_64-generic.morph
@@ -4,7 +4,7 @@ description: The set of platform specific components required for booting a 64-b
kind: stratum
build-depends:
- repo: baserock:baserock/morphs
- ref: master
+ ref: baserock/richardmaw/S8564/ro-staging-area
morph: core
chunks:
- name: linux
diff --git a/build-essential.morph b/build-essential.morph
index f4708e3d..4454bdbd 100644
--- a/build-essential.morph
+++ b/build-essential.morph
@@ -1,287 +1,266 @@
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
+- 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/richardmaw/S8564/ro-staging-area
+ build-mode: bootstrap
+ prefix: /tools
+ build-depends:
+ - stage1-binutils
+ - stage1-gcc
+ - stage2-linux-api-headers
+- name: stage2-binutils
+ repo: upstream:binutils-redhat
+ ref: baserock/richardmaw/S8564/ro-staging-area
+ build-mode: bootstrap
+ prefix: /tools
+ build-depends:
+ - stage1-binutils
+ - stage1-gcc
+ - stage2-eglibc
+- name: stage2-gcc-fixed-headers
+ repo: upstream:gcc-tarball
+ ref: baserock/richardmaw/S8564/ro-staging-area
+ build-mode: bootstrap
+ prefix: /tools
+ build-depends:
+ - stage1-binutils
+ - stage1-gcc
+ - stage2-eglibc
+- name: stage2-gcc
+ repo: upstream:gcc-tarball
+ ref: baserock/richardmaw/S8564/ro-staging-area
+ build-mode: bootstrap
+ prefix: /tools
+ build-depends:
+ - stage1-binutils
+ - stage1-gcc
+ - stage2-eglibc
+ - stage2-gcc-fixed-headers
+- name: stage2-busybox
+ repo: upstream:busybox
+ ref: baserock/richardmaw/S8564/ro-staging-area
+ 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/richardmaw/S8564/ro-staging-area
+ build-mode: bootstrap
+ prefix: /tools
+ build-depends:
+ - stage1-binutils
+ - stage1-gcc
+ - stage2-eglibc
+- name: stage2-make
+ repo: upstream:make
+ ref: baserock/richardmaw/S8564/ro-staging-area
+ build-mode: bootstrap
+ prefix: /tools
+ build-depends:
+ - stage1-binutils
+ - stage1-gcc
+ - stage2-eglibc
+- name: stage2-reset-specs
+ repo: upstream:eglibc2
+ ref: baserock/richardmaw/S8564/ro-staging-area
+ build-mode: bootstrap
+ prefix: /tools
+ build-depends:
+ - stage1-binutils
+ - stage1-gcc
+ - stage2-linux-api-headers
+ - 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
+ - stage2-reset-specs
+- 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
+ - stage2-reset-specs
+- 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
+ - stage2-reset-specs
+ - 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
+ - stage2-reset-specs
+ - 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
+ - stage2-reset-specs
+ - 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
+ - stage2-reset-specs
+ - 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
+ - stage2-reset-specs
+ - 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
+ - stage2-reset-specs
+ - 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
+ - stage2-reset-specs
+ - 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
+ - stage2-reset-specs
+ - eglibc
+ - zlib
diff --git a/core.morph b/core.morph
index 435bd54c..e6cd5eae 100644
--- a/core.morph
+++ b/core.morph
@@ -4,7 +4,7 @@ description: Core components of a Baserock base system that are build tools requ
kind: stratum
build-depends:
- repo: baserock:baserock/morphs
- ref: master
+ ref: baserock/richardmaw/S8564/ro-staging-area
morph: build-essential
chunks:
- name: cmake
diff --git a/foundation.morph b/foundation.morph
index 329fb35b..c4cc1946 100644
--- a/foundation.morph
+++ b/foundation.morph
@@ -3,7 +3,7 @@ kind: stratum
description: Basic userland runtime system
build-depends:
- repo: baserock:baserock/morphs
- ref: master
+ ref: baserock/richardmaw/S8564/ro-staging-area
morph: core
chunks:
- name: attr