summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <lars.wirzenius@codethink.co.uk>2012-02-16 13:14:23 +0000
committerLars Wirzenius <lars.wirzenius@codethink.co.uk>2012-02-16 20:30:16 +0000
commite288d36e28182e8d39da159a141f699b40a162ce (patch)
treea1a3a62e994a34a613097300aecee6f4d4bee674
parent06f15c8b7d514353ccfe50db92bfbe64c1c555b4 (diff)
downloadmorph-e288d36e28182e8d39da159a141f699b40a162ce.tar.gz
Simplify bootstrap dir tree; split pass2 into two parts
-rwxr-xr-xbaserock-bootstrap61
-rwxr-xr-xrun-bootstrap-in-chroot49
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