summaryrefslogtreecommitdiff
path: root/baserock-bootstrap
diff options
context:
space:
mode:
Diffstat (limited to 'baserock-bootstrap')
-rwxr-xr-xbaserock-bootstrap537
1 files changed, 0 insertions, 537 deletions
diff --git a/baserock-bootstrap b/baserock-bootstrap
deleted file mode 100755
index 619baeb4..00000000
--- a/baserock-bootstrap
+++ /dev/null
@@ -1,537 +0,0 @@
-#!/bin/bash
-
-set -e
-set +h
-set -u
-
-BASEDIR=$(dirname $(readlink -f $0))
-
-LFS="$(pwd)/tree"
-LFS="${LFS/\/\///}"
-tools="$LFS/tools"
-
-buildwhat="$1"
-
-export LC_ALL=C
-
-case "$(uname -m)" in
-*armv7*)
- export LFS_TGT=$(uname -m)-lfs-linux-gnueabi
- export TARGET_CFLAGS="-march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=softfp -O2"
- export PASS3_STRATUM="bootstrap-pass3-imx53"
- ;;
-*armv5*)
- export LFS_TGT=$(uname -m)-lfs-linux-gnueabi
- export TARGET_CFLAGS="-march=armv5 -O2"
- export PASS3_STRATUM="bootstrap-pass3-imx53"
- ;;
-*)
- export LFS_TGT=$(uname -m)-lfs-linux-gnu
- export TARGET_CFLAGS="-O2"
- export PASS3_STRATUM="bootstrap-pass3-x86_64-generic"
- ;;
-esac
-
-HOST_CAT=`which cat`
-HOST_CP=`which cp`
-HOST_MKDIR=`which mkdir`
-HOST_CHMOD=`which chmod`
-
-export CCACHE_DIR="/var/tmp/ccache"
-export PATH="$tools/lib/ccache:$tools/bin:$tools/sbin:/usr/lib/ccache:/usr/bin:/bin:/usr/sbin:/sbin"
-
-pass1_directories()
-{
- $HOST_MKDIR -p "$LFS"
-
- $HOST_MKDIR -p "$tools"
- $HOST_MKDIR -p "$tools/bin"
- $HOST_MKDIR -p "$tools/lib"
- [ -h "$tools/sbin" ] || ln -sf "bin" "$tools/sbin"
- [ -h "$tools/lib64" ] || ln -sf "lib" "$tools/lib64"
- [ -h "$tools/libexec" ] || ln -sf "lib" "$tools/libexec"
-
- [ -e "$LFS/proc" ] || $HOST_MKDIR -p "$LFS/proc"
- [ -e "$LFS/sys" ] || $HOST_MKDIR -p "$LFS/sys"
- [ -e "$LFS/tmp" ] || $HOST_MKDIR -p "$LFS/tmp"
- [ -e "$LFS/dev" ] || $HOST_MKDIR -p "$LFS/dev"
- [ -e "$LFS/dev/console" ] || \
- mknod -m 600 "$LFS/dev/console" c 5 1
- [ -e "$LFS/dev/null" ] || mknod -m 666 "$LFS/dev/null" c 1 3
- [ -e "$LFS/dev/random" ] || mknod -m 644 "$LFS/dev/random" c 1 8
- [ -e "$LFS/dev/urandom" ] || \
- mknod -m 644 "$LFS/dev/urandom" c 1 9
-}
-
-pass1_get_sources_with_morph()
-{
- cd $LFS/baserock/gits/morph
- $HOST_MKDIR -p $LFS/baserock/cache
- python ./morph --verbose update-gits \
- baserock:baserock/morphs master bootstrap-pass1 \
- --cachedir=$LFS/baserock/cache \
- --log=$LFS/baserock/morph.log \
- --dump-memory-profile=none \
- --keep-path \
- --tarball-server="$GIT_TARBALLS"
-}
-
-pass1_build_with_morph()
-{
- cd $LFS/baserock/gits/morph
- $HOST_MKDIR -p $LFS/baserock/cache
- $HOST_MKDIR -p $LFS/tmp
- python ./morph --verbose build-morphology \
- baserock:baserock/morphs master bootstrap-pass1 \
- --no-git-update \
- --no-distcc \
- --no-ccache \
- --bootstrap \
- --cachedir=$LFS/baserock/cache \
- --tempdir=$LFS/tmp \
- --log=$LFS/baserock/morph.log \
- --dump-memory-profile=none \
- --keep-path \
- --prefix="$tools" \
- --toolchain-target="$LFS_TGT" \
- --target-cflags="$TARGET_CFLAGS"
-}
-
-pass1_dump_build_times()
-{
- echo "Dumping pass 1 build times"
- cd $LFS/baserock/gits/morph
- python ./dump-build-times $LFS/baserock/cache/artifacts
-}
-
-pass2_get_morph()
-{
- echo "Get morph"
- if [ ! -e "$LFS/baserock/gits" ]
- then
- $HOST_MKDIR -p "$LFS/baserock/gits"
- cp -al "$HOME/baserock/gits/morph" "$LFS/baserock/gits/morph"
- fi
-}
-
-
-pass2_prepare_for_chroot()
-{
- echo "Preparing $LFS for chroot"
- cd "$LFS"
- if [ ! -h "$LFS/$LFS" ]
- then
- $HOST_MKDIR -p "$LFS/$LFS"
- /bin/rmdir "$LFS/$LFS"
- /bin/ln -s / "$LFS/$LFS"
- fi
-
- if [ ! -d "$LFS/etc" ]
- then
- mkdir -p "$LFS/etc"
- chmod 777 "$LFS/etc"
- touch "$LFS/etc/ld.so.conf"
- chmod 666 "$LFS/etc/ld.so.conf"
- cat <<EOF > "$LFS/etc/ld.so.conf"
-/lib64
-/lib
-/usr/lib64
-/usr/lib
-EOF
- fi
-
-# $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' |
-# /usr/bin/tee "$LFS/etc/hostname" > /dev/null
-
- # Add symlinks for common locations of specific tools
- # These are needed for #! lines in scripts
- [ -e "$LFS/bin" ] || $HOST_MKDIR -p "$LFS/bin"
- [ -e "$LFS/bin/sh" ] || ln -sf ../tools/bin/bash "$LFS/bin/sh"
- [ -e "$LFS/bin/bash" ] || \
- ln -sf ../tools/bin/bash "$LFS/bin/bash"
- [ -e "$LFS/bin/pwd" ] || ln -sf ../tools/bin/pwd "$LFS/bin/pwd"
- [ -e "$LFS/bin/echo" ] || \
- ln -sf ../tools/bin/echo "$LFS/bin/echo"
- if [ ! -e "$LFS/usr/bin/perl" ]; then
- $HOST_MKDIR -p $LFS/usr/bin
- ln -sf ../../tools/bin/perl "$LFS/usr/bin/perl"
- fi
-}
-
-
-pass2_get_sources_with_morph_in_chroot()
-{
- echo "Getting sources with morph"
- cat <<EOF > "$LFS/baserock/build.sh"
-#!/tools/bin/bash
-set -e
-set -x
-
-cd /baserock/gits/morph
-mkdir -p /baserock/cache
-export PATH="/usr/bin:/bin:$tools/bin:$tools/sbin"
-python ./morph --verbose update-gits \
- baserock:baserock/morphs master bootstrap-pass2 \
- --bootstrap \
- --cachedir=/baserock/cache \
- --log=/baserock/morph.log \
- --dump-memory-profile=none \
- --keep-path \
- --tarball-server="$GIT_TARBALLS"
-EOF
- $HOST_CHMOD +x "$LFS/baserock/build.sh"
- local do_chroot="$BASEDIR/do-chroot.bash"
- $HOST_CAT <<EOF >"$do_chroot"
-#!/bin/bash
-trap "umount $LFS/proc $LFS/sys || true" INT TERM EXIT
-set -e
-set -x
-if ! mount | grep "$LFS/proc" >/dev/null
-then
- mount -t proc proc "$LFS/proc"
-fi
-if ! mount | grep "$LFS/sys" >/dev/null
-then
- mount -t sysfs sysfs "$LFS/sys"
-fi
-$HOST_CP -f /etc/resolv.conf "$LFS/etc/resolv.conf"
-/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"
- "$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
-
-cd /baserock/gits/morph
-mkdir -p /baserock/cache
-export PATH="/usr/bin:/bin:$tools/bin:$tools/sbin"
-export LD_LIBRARY_PATH="/usr/lib:/lib:/lib64:/tools/lib:/tools/lib64"
-python ./morph --verbose build-morphology \
- baserock:baserock/morphs master bootstrap-pass2 \
- --bootstrap \
- --no-git-update \
- --cachedir=/baserock/cache \
- --log=/baserock/morph.log \
- --dump-memory-profile=none \
- --keep-path \
- --tarball-server="$GIT_TARBALLS" \
- --target-cflags="$TARGET_CFLAGS"
-EOF
- $HOST_CHMOD +x "$LFS/baserock/build.sh"
- local do_chroot="$BASEDIR/do-chroot.bash"
- $HOST_CAT <<EOF >"$do_chroot"
-#!/bin/bash
-trap "umount $LFS/proc $LFS/sys || true" INT TERM EXIT
-set -e
-set -x
-if ! mount | grep "$LFS/proc" >/dev/null
-then
- mount -t proc proc "$LFS/proc"
-fi
-if ! mount | grep "$LFS/sys" >/dev/null
-then
- mount -t sysfs sysfs "$LFS/sys"
-fi
-$HOST_CP -f /etc/resolv.conf "$LFS/etc/resolv.conf"
-/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"
- "$do_chroot" /baserock/build.sh
-}
-
-pass2_dump_build_times()
-{
- echo "Dumping pass 2 build times"
- cat <<EOF > "$LFS/baserock/dump-pass2-build-times.sh"
-#!/tools/bin/bash
-set -e
-set -x
-
-cd /baserock/gits/morph
-python ./dump-build-times /baserock/cache/artifacts
-EOF
- $HOST_CHMOD +x "$LFS/baserock/dump-pass2-build-times.sh"
- local do_chroot="$BASEDIR/do-chroot.bash"
- $HOST_CAT <<EOF >"$do_chroot"
-#!/bin/bash
-trap "umount $LFS/proc $LFS/sys || true" INT TERM EXIT
-set -e
-set -x
-if ! mount | grep "$LFS/proc" >/dev/null
-then
- mount -t proc proc "$LFS/proc"
-fi
-if ! mount | grep "$LFS/sys" >/dev/null
-then
- mount -t sysfs sysfs "$LFS/sys"
-fi
-$HOST_CP -f /etc/resolv.conf "$LFS/etc/resolv.conf"
-/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"
- "$do_chroot" /baserock/dump-pass2-build-times.sh
-}
-
-pass2a_cleanup_at_end()
-{
- echo "Remove unnecessary stuff at the end of pass2a"
- rm -f "$LFS/baserock/cache/gits/"*.bndl
-}
-
-
-pass2b_cleanup_at_end()
-{
- echo "Remove unnecessary stuff at the end of pass2b"
- rm -rf "$LFS/tools"
-}
-
-
-pass3_remove_tools()
-{
- echo "Removing $LFS/tools"
- rm -rf "$LFS/tools"
-}
-
-pass3_get_sources_with_morph_in_chroot()
-{
- echo "Getting sources with morph"
-
- cd "$LFS/baserock/gits/morph"
- cat <<EOF > "$LFS/baserock/build.sh"
-#!/bin/bash
-set -e
-set -x
-
-cd /baserock/gits/morph
-python ./morph --verbose update-gits \
- baserock:baserock/morphs master $PASS3_STRATUM \
- --cachedir=/baserock/cache \
- --log=/baserock/morph.log \
- --dump-memory-profile=none \
- --keep-path \
- --tarball-server="$GIT_TARBALLS"
-EOF
- $HOST_CHMOD +x "$LFS/baserock/build.sh"
- local do_chroot="$BASEDIR/do-chroot.bash"
- $HOST_CAT <<EOF >"$do_chroot"
-#!/bin/bash
-trap "umount $LFS/proc $LFS/sys || true" INT TERM EXIT
-set -e
-set -x
-if ! mount | grep "$LFS/proc" >/dev/null
-then
- mount -t proc proc "$LFS/proc"
-fi
-if ! mount | grep "$LFS/sys" >/dev/null
-then
- mount -t sysfs sysfs "$LFS/sys"
-fi
-$HOST_CP -f /etc/resolv.conf "$LFS/etc/resolv.conf"
-/usr/sbin/chroot "$LFS" \\
- /usr/bin/env -i HOME=/baserock TERM=\$TERM \\
- PATH="/bin:/usr/bin:/sbin:/usr/sbin" \\
- "\${@-\$SHELL}"
-EOF
- $HOST_CHMOD +x "$do_chroot"
- "$do_chroot" /baserock/build.sh
-}
-
-pass3_build_with_morph_in_chroot()
-{
- echo "Building Baserock with morph"
-
- cat <<'EOF' >"$LFS/usr/bin/linux-user-chroot"
-#!/bin/sh
-
-CHDIR=.
-
-while true; do
- case "$1" in
- --help)
- echo 'See "man linux-user-chroot"'
- exit 0
- ;;
- --version)
- echo 'Fake'
- exit 0
- ;;
- --mount-bind)
- # swallow option and arguments
- shift 3
- ;;
- --mount-readonly)
- shift 2
- ;;
- --mount-proc|--unshare-ipc|--unshare-pid)
- # swallow configure flag
- shift
- ;;
- --chdir)
- CHDIR="$2"
- shift 2
- ;;
- *)
- # terminate arg processing
- ROOTDIR="$1"
- shift
- break
- ;;
- esac
-done
-
-exec chroot "$ROOTDIR" sh -c 'cd "$1" && shift && exec "$@"' -- "$CHDIR" "$@"
-EOF
- chmod +x "$LFS/usr/bin/linux-user-chroot"
-
- cat <<EOF > "$LFS/baserock/build_pass3.sh"
-#!/bin/bash
-set -e
-set -x
-
-export PATH="/usr/bin:/bin:/usr/sbin:/sbin"
-cd /baserock/gits/morph
-
-filler=\$(mktemp)
-scripts/assemble-stratum --cachedir /baserock/cache \
- "$LFS/baserock/cache/artifacts/"*.stratum.bootstrap-pass2 \
- "\$filler" bootstrap-pass2
-
-python ./morph --verbose build-morphology \
- baserock:baserock/morphs master $PASS3_STRATUM \
- --staging-chroot \
- --staging-filler "\$filler" \
- --no-git-update \
- --cachedir=/baserock/cache \
- --log=/baserock/morph.log \
- --dump-memory-profile=none \
- --keep-path \
- --tarball-server="$GIT_TARBALLS" \
- --target-cflags="$TARGET_CFLAGS"
-rm "\$filler"
-EOF
- $HOST_CHMOD +x "$LFS/baserock/build_pass3.sh"
- local do_chroot="$BASEDIR/do-chroot.bash"
- $HOST_CAT >"$do_chroot" <<EOF
-#!/bin/bash
-trap "umount $LFS/proc $LFS/sys || true" INT TERM EXIT
-set -e
-set -x
-if ! mount | grep "$LFS/proc" >/dev/null
-then
- mount -t proc proc "$LFS/proc"
-fi
-if ! mount | grep "$LFS/sys" >/dev/null
-then
- mount -t sysfs sysfs "$LFS/sys"
-fi
-$HOST_CP -f /etc/resolv.conf "$LFS/etc/resolv.conf"
-/usr/sbin/chroot "$LFS" \\
- /usr/bin/env -i HOME=/baserock TERM=\$TERM \\
- PATH="/bin:/usr/bin:/sbin:/usr/sbin" \\
- "\${@-\$SHELL}"
-EOF
- $HOST_CHMOD +x "$do_chroot"
- "$do_chroot" /baserock/build_pass3.sh
-}
-
-pass3_dump_build_times()
-{
- echo "Dumping pass 3 build times"
-
- cat <<EOF > "$LFS/baserock/dump-pass3-build-times.sh"
-#!/bin/bash
-set -e
-set -x
-
-export PATH="/usr/bin:/bin"
-cd /baserock/gits/morph
-python ./dump-build-times /baserock/cache/artifacts
-EOF
- $HOST_CHMOD +x "$LFS/baserock/dump-pass3-build-times.sh"
- local do_chroot="$BASEDIR/do-chroot.bash"
- $HOST_CAT >"$do_chroot" <<EOF
-#!/bin/bash
-trap "umount $LFS/proc $LFS/sys || true" INT TERM EXIT
-set -e
-set -x
-if ! mount | grep "$LFS/proc" >/dev/null
-then
- mount -t proc proc "$LFS/proc"
-fi
-if ! mount | grep "$LFS/sys" >/dev/null
-then
- mount -t sysfs sysfs "$LFS/sys"
-fi
-$HOST_CP -f /etc/resolv.conf "$LFS/etc/resolv.conf"
-/usr/sbin/chroot "$LFS" \\
- /usr/bin/env -i HOME=/baserock TERM=\$TERM \\
- PATH="/bin:/usr/bin:/sbin:/usr/sbin" \\
- "\${@-\$SHELL}"
-EOF
- $HOST_CHMOD +x "$do_chroot"
- "$do_chroot" /baserock/dump-pass3-build-times.sh
-}
-echo "Bootstrapping Baserock development environment"
-echo "LFS_TGT=$LFS_TGT"
-
-time pass1_directories
-
-case "$buildwhat" in
- pass1a)
- time pass1_get_sources_with_morph
- ;;
- pass1b)
- time pass1_build_with_morph
- time pass1_dump_build_times
- ;;
- pass2a)
- time pass2_get_morph
- time pass2_prepare_for_chroot
- time pass2_get_sources_with_morph_in_chroot
- time pass2a_cleanup_at_end
- ;;
- pass2b)
- time pass2_build_with_morph_in_chroot
- time pass2_dump_build_times
- time pass2b_cleanup_at_end
- ;;
- pass3a)
- time pass3_remove_tools
- time pass3_get_sources_with_morph_in_chroot
- ;;
- pass3b)
- time pass3_build_with_morph_in_chroot
- time pass3_dump_build_times
- ;;
- *) echo "Usage! (sorry, I'm unhelpful)" 1>&2
- exit 1
- ;;
-esac
-
-echo "$buildwhat finished OK"
-