diff options
author | Lars Wirzenius <lars.wirzenius@codethink.co.uk> | 2012-02-16 13:14:23 +0000 |
---|---|---|
committer | Lars Wirzenius <lars.wirzenius@codethink.co.uk> | 2012-02-16 20:30:16 +0000 |
commit | e288d36e28182e8d39da159a141f699b40a162ce (patch) | |
tree | a1a3a62e994a34a613097300aecee6f4d4bee674 | |
parent | 06f15c8b7d514353ccfe50db92bfbe64c1c555b4 (diff) | |
download | morph-e288d36e28182e8d39da159a141f699b40a162ce.tar.gz |
Simplify bootstrap dir tree; split pass2 into two parts
-rwxr-xr-x | baserock-bootstrap | 61 | ||||
-rwxr-xr-x | run-bootstrap-in-chroot | 49 |
2 files changed, 76 insertions, 34 deletions
diff --git a/baserock-bootstrap b/baserock-bootstrap index 695db03d..816ccb6b 100755 --- a/baserock-bootstrap +++ b/baserock-bootstrap @@ -752,12 +752,12 @@ pass2_prepare_for_chroot() EOF fi - $HOST_MKDIR -p "$LFS/etc" +# $HOST_MKDIR -p "$LFS/etc" [ -e "$LFS/etc/passwd" ] || echo 'root::0:0:root:/root:/bin/bash' > "$LFS/etc/passwd" [ -e "$LFS/etc/group" ] || echo 'root::0:' > "$LFS/etc/group" - [ -e "$LFS/etc/hostname" ] || echo 'baserock-boot' | - $HOST_SUDO /usr/bin/tee "$LFS/etc/hostname" > /dev/null +# [ -e "$LFS/etc/hostname" ] || echo 'baserock-boot' | +# $HOST_SUDO /usr/bin/tee "$LFS/etc/hostname" > /dev/null # Add symlinks for common locations of specific tools # These are needed for #! lines in scripts @@ -773,7 +773,7 @@ EOF } -pass2_build_with_morph_in_chroot() +pass2_get_sources_with_morph_in_chroot() { echo "Building Baserock with morph" cat <<EOF > "$LFS/baserock/build.sh" @@ -781,7 +781,6 @@ pass2_build_with_morph_in_chroot() set -e set -x -#/tools/bin/ldconfig -f /etc/ld.so.conf -C /etc/ld.so.cache cd /baserock/gits/morph mkdir -p /baserock/cache export PATH="/usr/bin:/bin:$tools/bin:$tools/sbin" @@ -801,6 +800,48 @@ while ! python ./morph --verbose update-gits \ do echo eeekk try again done +EOF + $HOST_CHMOD +x "$LFS/baserock/build.sh" + local do_chroot="$BASEDIR/do-chroot.bash" + if [ ! -e "$do_chroot" ]; then + $HOST_CAT <<EOF >"$do_chroot" +#!/bin/bash +trap "$HOST_SUDO umount $LFS/proc $LFS/sys" INT TERM EXIT +set -e +set -x +if ! mount | grep "$LFS/proc" >/dev/null +then + $HOST_SUDO mount -t proc proc "$LFS/proc" +fi +if ! mount | grep "$LFS/sys" >/dev/null +then + $HOST_SUDO mount -t sysfs sysfs "$LFS/sys" +fi +$HOST_SUDO $HOST_CP -f /etc/resolv.conf "$LFS/etc/resolv.conf" +$HOST_SUDO /usr/sbin/chroot "$LFS" \\ + /tools/bin/env -i HOME=/baserock TERM=\$TERM \\ + PATH="/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin" \\ + BOOTSTRAP_TOOLS="$LFS/tools" \\ + "\${@-\$SHELL}" +EOF + $HOST_CHMOD +x "$do_chroot" + fi + "$do_chroot" /baserock/build.sh +} + + +pass2_build_with_morph_in_chroot() +{ + echo "Building Baserock with morph" + cat <<EOF > "$LFS/baserock/build.sh" +#!/tools/bin/bash +set -e +set -x + +#/tools/bin/ldconfig -f /etc/ld.so.conf -C /etc/ld.so.cache +cd /baserock/gits/morph +mkdir -p /baserock/cache +export PATH="/usr/bin:/bin:$tools/bin:$tools/sbin" python ./morph --verbose build \ morphs master foundation.morph \ morphs master devel-bootstrap.morph \ @@ -818,7 +859,7 @@ EOF $HOST_CHMOD +x "$LFS/baserock/build.sh" local do_chroot="$BASEDIR/do-chroot.bash" if [ ! -e "$do_chroot" ]; then - $HOST_CAT >"$do_chroot" <<EOF + $HOST_CAT <<EOF >"$do_chroot" #!/bin/bash trap "$HOST_SUDO umount $LFS/proc $LFS/sys" INT TERM EXIT set -e @@ -927,7 +968,8 @@ python ./morph --verbose build \ morphs master foundation.morph \ morphs master devel.morph \ morphs master linux-stratum.morph \ - --bootstrap \ + --staging-chroot \ + $(for x in $LFS/baserock/cache/*.stratum.*; do echo -n "--staging-filler=$x "; done) \ --cachedir=/baserock/cache \ --log=/baserock/morph.log \ --dump-memory-profile=none \ @@ -1010,9 +1052,12 @@ case "$buildwhat" in #pass1_strip_tools #pass1_fix_perms ;; - pass2) + pass2a) pass2_get_sources pass2_prepare_for_chroot + pass2_get_sources_with_morph_in_chroot + ;; + pass2b) pass2_build_with_morph_in_chroot #pass2_build_devel_system_outside_chroot ;; diff --git a/run-bootstrap-in-chroot b/run-bootstrap-in-chroot index 82f99a68..928264d1 100755 --- a/run-bootstrap-in-chroot +++ b/run-bootstrap-in-chroot @@ -10,6 +10,26 @@ unmount_virtual() umount "$1/tree/sys" || true } +run_pass() +{ + local dir="$1" + local passname="$2" + local tarball="$snapshotdir/$passname-snapshot.tar.gz" + + if "$snapshot" && [ -e "$tarball" ] + then + tar -C "$dir" -xf "$tarball" + cp baserock-bootstrap "$dir/." # update bootstrap script + else + cp baserock-bootstrap "$dir/." + "./do-squeeze-chroot" bash -x baserock-bootstrap "$passname" || exit 1 + if "$snapshot" + then + tar -C "$dir" -caf "$tarball" . + fi + fi +} + export LC_ALL=C if [ "x$1" = x ] @@ -81,19 +101,7 @@ else fi # Unpack existing snapshot, or run pass1 of bootstrap and then make snapshot. -pass1snapshot="$snapshotdir/pass1-snapshot.tar.gz" -if "$snapshot" && [ -e "$pass1snapshot" ] -then - tar -C "$dir" -xf "$pass1snapshot" - cp baserock-bootstrap "$dir/." #update bootstrap script -else - cp baserock-bootstrap "$dir/." - "./do-squeeze-chroot" bash -x baserock-bootstrap pass1 || exit 1 - if "$snapshot" - then - tar -C "$dir" -caf "$pass1snapshot" . - fi -fi +run_pass "$dir" pass1 # Update the git repos. mkdir -p "$dir/tree/baserock" @@ -103,19 +111,8 @@ mkdir "$dir/tree/baserock/gits/morph" cp -r . "$dir/tree/baserock/gits/morph/." # Unpack existing snapshot, or run pass2 of bootstrap and then make snapshot. -pass2snapshot="$snapshotdir/pass2-snapshot.tar.gz" -if "$snapshot" && [ -e "$pass2snapshot" ] -then - tar -C "$dir" -xf "$pass2snapshot" - cp baserock-bootstrap "$dir/." #update bootstrap script -else - cp baserock-bootstrap "$dir/." - "./do-squeeze-chroot" bash -x baserock-bootstrap pass2 || exit 1 - if "$snapshot" - then - tar -C "$dir" -caf "$pass2snapshot" . - fi -fi +run_pass "$dir" pass2a +run_pass "$dir" pass2b # Run pass3 of bootstrap. "./do-squeeze-chroot" bash -x baserock-bootstrap pass3 || exit 1 |