summaryrefslogtreecommitdiff
path: root/baserock-bootstrap
diff options
context:
space:
mode:
authorRichard Maw <richard.maw@codethink.co.uk>2012-03-15 09:56:30 +0000
committerRichard Maw <richard.maw@codethink.co.uk>2012-03-15 09:56:30 +0000
commitbcac5a631fe2dfec7076af8b70692a8ef1771eb1 (patch)
treefe6840f0d3360f311a6290d0694adbeeb9521266 /baserock-bootstrap
parentc52ac6541a710fccfe91cd7d60e7c4eeebf734f1 (diff)
downloadmorph-bcac5a631fe2dfec7076af8b70692a8ef1771eb1.tar.gz
bootstrap: convert pass1 to use morph
run-bootstrap-in-chroot: add cliapp to squeeze-chroot baserock-bootstrap: * remove use of sudo, the script expects to be run with sufficient privilidges * remove multiple unused variables and functions * replace the build instructions with a call to morph with a stratum that should have all the required programs with --prefix and --toolchain-target set
Diffstat (limited to 'baserock-bootstrap')
-rwxr-xr-xbaserock-bootstrap882
1 files changed, 70 insertions, 812 deletions
diff --git a/baserock-bootstrap b/baserock-bootstrap
index 7d13c45b..5be8f1b5 100755
--- a/baserock-bootstrap
+++ b/baserock-bootstrap
@@ -7,65 +7,24 @@ set -u
BASEDIR=$(dirname $(readlink -f $0))
LFS="$(pwd)/tree"
-allsources="$LFS/../../lfs-tarballs"
-sources="$LFS/sources"
tools="$LFS/tools"
buildwhat="$1"
-CPUS=$(grep -i -c '^processor' /proc/cpuinfo)
-JOBS=$(expr 2 '*' $CPUS)
-
export LC_ALL=C
export LFS_TGT=$(uname -m)-lfs-linux-gnu
HOST_CAT=`which cat`
HOST_CP=`which cp`
HOST_MKDIR=`which mkdir`
-HOST_DIRNAME=`which dirname`
-HOST_SED=`which sed`
-HOST_SUDO=`which sudo`
-HOST_READLINK=`which readlink`
HOST_CHMOD=`which chmod`
export CCACHE_DIR="/var/tmp/ccache"
export PATH="$tools/bin:$tools/sbin:/usr/lib/ccache:/usr/bin:/bin"
-download()
-{
- basename=$(basename "$1")
- if [ ! -e "$sources/$basename" ]
- then
- echo "Downloading $1 to $basename"
- wget -O temp.download "$1"
- mv temp.download "$sources/$basename"
- fi
-}
-
-
-download_all()
-{
- while read url
- do
- download "$url"
- done < "$BASEDIR/wget-list"
-}
-
-
-unpack()
-{
- if [ ! -e "$sources/$1" ]
- then
- echo "Unpacking" "$sources/$1"*.tar.*
- tar -C "$sources" -xf "$sources/$1"*.tar.*
- fi
-}
-
-
pass1_directories()
{
$HOST_MKDIR -p "$LFS"
- $HOST_MKDIR -p "$sources"
$HOST_MKDIR -p "$tools"
$HOST_MKDIR -p "$tools/bin"
@@ -79,663 +38,54 @@ pass1_directories()
[ -e "$LFS/tmp" ] || $HOST_MKDIR -p "$LFS/tmp"
[ -e "$LFS/dev" ] || $HOST_MKDIR -p "$LFS/dev"
[ -e "$LFS/dev/console" ] || \
- $HOST_SUDO mknod -m 600 "$LFS/dev/console" c 5 1
- [ -e "$LFS/dev/null" ] || $HOST_SUDO mknod -m 666 "$LFS/dev/null" c 1 3
- [ -e "$LFS/dev/random" ] || $HOST_SUDO mknod -m 644 "$LFS/dev/random" c 1 8
+ 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" ] || \
- $HOST_SUDO mknod -m 644 "$LFS/dev/urandom" c 1 9
-}
-
-
-pass1_binutils_1()
-{
- echo "Building binutils pass 1"
- if [ ! -e "$tools/bin/${LFS_TGT}-objdump" ]
- then
- unpack binutils-2.21.1
- $HOST_MKDIR "$sources/binutils-build"
- cd "$sources/binutils-build"
- "../binutils-2.21.1/configure" \
- --target=$LFS_TGT \
- --prefix="$tools" \
- --disable-nls \
- --disable-werror
- make -j$JOBS
- make install
- rm -rf "$sources/binutils-build" "$sources/binutils-2.21.1"
- fi
-}
-
-
-pass1_gcc_1()
-{
- echo "Building gcc pass 1"
- if [ ! -e "$tools/bin/${LFS_TGT}-gcc" ]
- then
- unpack gcc-4.6.1
- unpack gmp-5.0.2
- unpack mpfr-3.1.0
- unpack mpc-0.9
- cd "$sources/gcc-4.6.1"
- cp -a ../gmp-5.0.2 gmp
- cp -a ../mpfr-3.1.0 mpfr
- cp -a ../mpc-0.9 mpc
- patch -Np1 -i ../gcc-4.6.1-cross_compile-1.patch
-
- $HOST_MKDIR "$sources/gcc-build"
- cd "$sources/gcc-build"
- "../gcc-4.6.1/configure" \
- --target=$LFS_TGT --prefix="$tools" \
- --disable-nls --disable-shared --disable-multilib \
- --disable-decimal-float --disable-threads \
- --disable-libmudflap --disable-libssp \
- --disable-libgomp --disable-libquadmath \
- --disable-target-libiberty --disable-target-zlib \
- --enable-languages=c --without-ppl --without-cloog \
- --with-mpfr-include=$(pwd)/../gcc-4.6.1/mpfr/src \
- --with-mpfr-lib=$(pwd)/mpfr/src/.libs
- make -j$JOBS
- make install
- ln -s libgcc.a `$LFS_TGT-gcc -print-libgcc-file-name | \
- $HOST_SED 's/libgcc/&_eh/'`
-
- rm -rf "$sources/gcc-build" "$sources/gcc-4.6.1"
- fi
-}
-
-
-pass1_linux_api_headers()
-{
- echo "Installing Linux API headers"
- if [ ! -d "$tools/include/linux" ]
- then
- unpack linux-3.1
- cd "$sources/linux-3.1"
- make mrproper
- make headers_check
- make INSTALL_HDR_PATH=dest headers_install
- cp -rv dest/include/* "$tools/include"
- rm -rf "$sources/linux-3.1"
- fi
-}
-
-
-pass1_eglibc()
-{
- echo "Building eglibc"
- if [ ! -e "$tools/lib/libc.so.6" ]
- then
- unpack eglibc-2.14
- cd "$sources/eglibc-2.14"
- (cd libc && ln -s ../ports ports)
-
- $HOST_MKDIR "$sources/eglibc-build"
- cd "$sources/eglibc-build"
-
- case `uname -m` in
- i?86) echo "CFLAGS += -march=i486 -mtune=native" >> configparms ;;
- esac
-
- ../eglibc-2.14/libc/configure --prefix="$tools" \
- --host=$LFS_TGT --build=$(../eglibc-2.14/libc/scripts/config.guess) \
- --disable-profile --enable-add-ons \
- --enable-kernel=2.6.25 --with-headers="$tools/include" \
- --without-selinux --without-cvs \
- libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes libc_cv_ssp=no
-
- make -j$JOBS
- make install
- rm -rf "$sources/eglibc-2.14"
- fi
-}
-
-
-pass1_adjust_gcc_specs()
-{
- echo "Adjusting gcc specs file"
- SPECS=`$HOST_DIRNAME $($LFS_TGT-gcc -print-libgcc-file-name)`/specs
- $LFS_TGT-gcc -dumpspecs | $HOST_SED \
- -e "s@/lib\(64\)\?/ld@$tools&@g" \
- -e "/^\*cpp:$/{n;s,$, -isystem $tools/include,}" > $SPECS
- echo "New specs file is: $SPECS"
- unset SPECS
-}
-
-
-pass1_sanity_check()
-{
- echo "Sanity checking toolchain"
- cd "$LFS/tmp"
- echo 'int main(void) { return 0; }' > dummy.c
- $LFS_TGT-gcc -B"$tools/lib" dummy.c
- readelf -l a.out | grep ": $LFS"
- rm dummy.c a.out
-}
-
-
-pass1_busybox()
-{
- echo "Building busybox"
- if [ ! -e "$tools/bin/busybox" ]
- then
- unpack busybox-1.19.3
- cd "$sources/busybox-1.19.3"
- make defconfig
- $HOST_SED -e 's/.*FEATURE_PREFER_APPLETS.*/CONFIG_FEATURE_PREFER_APPLETS=y/' -i .config
- $HOST_SED -e 's/.*FEATURE_SH_STANDALONE.*/CONFIG_FEATURE_SH_STANDALONE=y/' -i .config
- $HOST_SED -e 's/^CONFIG_INETD=.*/# CONFIG_INETD is not set/' -i .config
- $HOST_SED -e 's/.*FEATURE_COMPRESS_USAGE=.*/CONFIG_FEATURE_COMPRESS_USAGE=y/' -i .config
- $HOST_SED -e 's/.*FEATURE_COMPRESS_USAGE=.*/CONFIG_FEATURE_COMPRESS_USAGE=y/' -i .config
- $HOST_SED -e 's/.*FEATURE_PREFER_APPLETS=.*/# CONFIG_FEATURE_PREFER_APPLETS is not set/' -i .config
- $HOST_SED -e 's/.*FEATURE_MOUNT_NFS=.*/# CONFIG_FEATURE_MOUNT_NFS is not set/' -i .config
- $HOST_SED -e 's/.*FEATURE_MOUNT_CIFS=.*/# CONFIG_FEATURE_MOUNT_CIFS is not set/' -i .config
- $HOST_SED -e 's/.*CONFIG_AWK=.*/# CONFIG_AWK is not set/' -i .config
- $HOST_SED -e 's/.*CONFIG_PATCH=.*/# CONFIG_PATCH is not set/' -i .config
- make clean
- make -j$JOBS V=1
- make install
- cp _install/bin/busybox "$tools/bin"
- find _install/bin _install/sbin _install/usr/bin _install/usr/sbin \
- -type l ! -name busybox | \
- while read x; do ln -sf busybox "$tools/bin/"$(basename "$x"); done
- rm -rf "$sources/busybox-1.19.3"
- fi
-}
-
-
-pass1_binutils_2()
-{
- echo "Building binutils pass 2"
- if [ ! -e "$tools/bin/objdump" ]
- then
- unpack binutils-2.21.1
- $HOST_MKDIR "$sources/binutils-pass2-build"
- cd "$sources/binutils-pass2-build"
- CC="$LFS_TGT-gcc -B$tools/lib/" \
- AR=$LFS_TGT-ar RANLIB=$LFS_TGT-ranlib \
- ../binutils-2.21.1/configure --prefix="$tools" \
- --disable-nls --with-lib-path="$tools/lib"
- make -j$JOBS
- make install
- make -C ld clean
- make -C ld LIB_PATH=/usr/lib:/lib
- cp -v ld/ld-new "$tools/bin"
- rm -rf "$sources/binutils-pass2-build" "$sources/binutils-2.21.1"
- fi
-}
-
-
-pass1_gcc_2()
-{
- echo "Building gcc pass 2"
- if [ ! -e "$tools/bin/gcc" ]
- then
- unpack gcc-4.6.1
- cd "$sources/gcc-4.6.1"
- patch -Np1 -i ../gcc-4.6.1-cross_compile-1.patch
- patch -Np1 -i ../gcc-4.6.1-startfiles_fix-1.patch
-
- cp -v gcc/Makefile.in{,.orig}
- $HOST_SED 's@\./fixinc\.sh@-c true@' gcc/Makefile.in.orig \
- > gcc/Makefile.in
-
- cp -v gcc/Makefile.in{,.tmp}
- $HOST_SED 's/^T_CFLAGS =$/& -fomit-frame-pointer/' \
- gcc/Makefile.in.tmp > gcc/Makefile.in
-
- for file in \
- $(find gcc/config -name linux64.h -o -name linux.h -o -name sysv4.h)
- do
- cp -v $file{,.orig}
- $HOST_SED -e "s@/lib\(64\)\?\(32\)\?/ld@$tools&@g" \
- -e "s@/usr@$tools@g" $file.orig > $file
- echo '
-#undef STANDARD_INCLUDE_DIR
-#define STANDARD_INCLUDE_DIR 0
-#define STANDARD_STARTFILE_PREFIX_1 ""
-#define STANDARD_STARTFILE_PREFIX_2 ""' >> $file
- touch $file.orig
- done
-
- case $(uname -m) in
- x86_64)
- for file in $(find gcc/config -name t-linux64) ; do \
- cp -v $file{,.orig}
- $HOST_SED '/MULTILIB_OSDIRNAMES/d' $file.orig > $file
- done
- ;;
- esac
-
- rm -rf gmp mpfr mpc
- unpack gmp-5.0.2
- unpack mpfr-3.1.0
- unpack mpc-0.9
- cp -a ../gmp-5.0.2 gmp
- cp -a ../mpfr-3.1.0 mpfr
- cp -a ../mpc-0.9 mpc
-
- $HOST_MKDIR "$sources/gcc-pass2-build"
- cd "$sources/gcc-pass2-build"
-
- CC="$LFS_TGT-gcc -B$tools/lib/" \
- AR=$LFS_TGT-ar RANLIB=$LFS_TGT-ranlib \
- ../gcc-4.6.1/configure --prefix="$tools" \
- --with-local-prefix="$tools" --enable-clocale=gnu \
- --enable-shared --enable-threads=posix \
- --enable-__cxa_atexit --enable-languages=c,c++ \
- --disable-libstdcxx-pch --disable-multilib \
- --disable-bootstrap --disable-libgomp \
- --without-ppl --without-cloog \
- --with-mpfr-include=$(pwd)/../gcc-4.6.1/mpfr/src \
- --with-mpfr-lib=$(pwd)/mpfr/src/.libs
-
- make -j$JOBS
- make install
- ln -s gcc "$tools/bin/cc"
-
- rm -rf "$sources/gcc-pass2-build" "$sources/gcc-4.6.1"
- fi
-}
-
-
-pass1_zlib()
-{
- echo "Building ZLIB"
- if [ ! -e "$tools/lib/libz.so" ]
- then
- unpack zlib-1.2.5
- cd "$sources/zlib-1.2.5"
- ./configure --prefix="$tools"
- make -j1
- make install
- rm -rf "$sources/zlib-1.2.5"
- fi
-}
-
-
-pass1_ncurses()
-{
- echo "Building ncurses"
- if [ ! -e "$tools/lib/libncurses.so" ]
- then
- unpack ncurses-5.9
- cd "$sources/ncurses-5.9"
- ./configure --prefix="$tools" --with-shared \
- --without-debug --without-ada --enable-overwrite
- make -j$JOBS
- make install
- rm -rf "$sources/ncurses-5.9"
- fi
-}
-
-
-pass1_bash()
-{
- echo "Building bash"
- if [ ! -e "$tools/bin/bash" ]
- then
- unpack bash-4.2
- cd "$sources/bash-4.2"
- patch -Np1 -i ../bash-4.2-fixes-3.patch
- ./configure --prefix="$tools" --without-bash-malloc
- make -j$JOBS
-# make tests
- make install
- ln -s "$tools/bin/bash" "$tools/bin/sh"
- rm -rf "$sources/bash-4.2"
- fi
-}
-
-
-pass1_bzip2()
-{
- echo "Building bzip2"
- if [ ! -e "$tools/bin/bzip2" ]
- then
- unpack bzip2-1.0.6
- cd "$sources/bzip2-1.0.6"
- make
- make PREFIX="$tools" install
- rm -rf "$sources/bzip2-1.0.6"
- fi
-}
-
-
-pass1_coreutils()
-{
- echo "Building coreutils"
- if [ ! -e "$tools/bin/cp" ]
- then
- unpack coreutils-8.14
- cd "$sources/coreutils-8.14"
- ./configure --prefix="$tools" --enable-install-program=hostname
- make -j$JOBS
-# make RUN_EXPENSIVE_TESTS=yes check
- make install
- cp -v src/su "$tools/bin/su-tools"
- rm -rf "$sources/coreutils-8.14"
- fi
-}
-
-
-pass1_diffutils()
-{
- echo "Building diffutils"
- if [ ! -e "$tools/bin/diff" ]
- then
- unpack diffutils-3.2
- cd "$sources/diffutils-3.2"
- ./configure --prefix="$tools"
- make -j$JOBS
-# make check
- make install
- rm -rf "$sources/diffutils-3.2"
- fi
-}
-
-
-pass1_file()
-{
- echo "Building file"
- if [ ! -e "$tools/bin/file" ]
- then
- unpack file-5.09
- cd "$sources/file-5.09"
- ./configure --prefix="$tools"
- make -j$JOBS
-# make check
- make install
- rm -rf "$sources/file-5.09"
- fi
-}
-
-
-pass1_findutils()
-{
- echo "Building findutils"
- if [ ! -e "$tools/bin/find" ]
- then
- unpack findutils-4.4.2
- cd "$sources/findutils-4.4.2"
- ./configure --prefix="$tools"
- make -j$JOBS
-# make check
- make install
- rm -rf "$sources/findutils-4.4.2"
- fi
-}
-
-
-pass1_gawk()
-{
- echo "Building gawk"
- if [ ! -e "$tools/bin/awk" ]
- then
- unpack gawk-4.0.0
- cd "$sources/gawk-4.0.0"
- ./configure --prefix="$tools"
- make -j$JOBS
-# make check
- make install
- rm -rf "$sources/gawk-4.0.0"
- fi
+ mknod -m 644 "$LFS/dev/urandom" c 1 9
}
-
-pass1_gettext()
+pass1_get_sources_with_morph()
{
- echo "Building gettext"
- if [ ! -e "$tools/bin/msgfmt" ]
- then
- unpack gettext-0.18.1.1
- cd "$sources/gettext-0.18.1.1"
- ./configure --prefix="$tools"
- make -j$JOBS
- make install
- rm -rf "$sources/gettext-0.18.1.1"
- fi
-}
-
-
-pass1_grep()
-{
- echo "Building grep"
- if [ ! -e "$tools/bin/grep" ]
- then
- unpack grep-2.9
- cd "$sources/grep-2.9"
- ./configure --prefix="$tools" --disable-perl-regexp
- make -j$JOBS
-# make check
- make install
- rm -rf "$sources/grep-2.9"
- fi
-}
-
-
-pass1_gzip()
-{
- echo "Building gzip"
- if [ ! -e "$tools/bin/gzip" ]
- then
- unpack gzip-1.4
- cd "$sources/gzip-1.4"
- ./configure --prefix="$tools"
- make -j$JOBS
-# make check
- make install
- rm -rf "$sources/gzip-1.4"
- fi
-}
-
-
-pass1_m4()
-{
- echo "Building m4"
- if [ ! -e "$tools/bin/m4" ]
- then
- unpack m4-1.4.16
- cd "$sources/m4-1.4.16"
- ./configure --prefix="$tools"
- make -j$JOBS
-# make check
- make install
- rm -rf "$sources/m4-1.4.16"
- fi
-}
-
-
-pass1_make()
-{
- echo "Building make"
- if [ ! -e "$tools/bin/make" ]
- then
- unpack make-3.82
- cd "$sources/make-3.82"
- ./configure --prefix="$tools"
- make -j$JOBS
-# make check
- make install
- rm -rf "$sources/make-3.82"
- fi
-}
-
-
-pass1_patch()
-{
- echo "Building patch"
- if [ ! -e "$tools/bin/patch" ]
- then
- unpack patch-2.6.1
- cd "$sources/patch-2.6.1"
- ./configure --prefix="$tools"
- make -j$JOBS
-# make check
- make install
- rm -rf "$sources/patch-2.6.1"
- fi
-}
-
-
-pass1_perl()
-{
- echo "Building perl"
- if [ ! -e "$tools/bin/perl" ]
- then
- unpack perl-5.14.2
- cd "$sources/perl-5.14.2"
- patch -Np1 -i ../perl-5.14.2-libc-1.patch
- sh Configure -des -Dprefix="$tools"
- make -j$JOBS
- cp -v perl cpan/podlators/pod2man "$tools/bin"
- $HOST_MKDIR -p "$tools/lib/perl5/5.14.2"
- cp -Rv lib/* "$tools/lib/perl5/5.14.2"
- rm -rf "$sources/perl-5.14.2"
- fi
-}
-
-
-pass1_sed()
-{
- echo "Building sed"
- if [ ! -e "$tools/bin/sed" ]
- then
- unpack sed-4.2.1
- cd "$sources/sed-4.2.1"
- ./configure --prefix="$tools"
- make -j$JOBS
-# make check
- make install
- rm -rf "$sources/sed-4.2.1"
- fi
-}
-
-
-pass1_tar()
-{
- echo "Building tar"
- if [ ! -e "$tools/bin/tar" ]
- then
- unpack tar-1.26
- cd "$sources/tar-1.26"
- # mknod check fails without
- FORCE_UNSAFE_CONFIGURE=1 ./configure --prefix="$tools"
- make -j$JOBS
-# make check
- make install
- rm -rf "$sources/tar-1.26"
- fi
-}
-
-
-pass1_texinfo()
-{
- echo "Building texinfo"
- if [ ! -e "$tools/bin/makeinfo" ]
- then
- unpack texinfo-4.13
- cd "$sources/texinfo-4.13"
- ./configure --prefix="$tools"
- make -j$JOBS
-# make check
- make install
- rm -rf "$sources/texinfo-4.13"
- fi
-}
-
-
-pass1_xz()
-{
- echo "Building xz"
- if [ ! -e "$tools/bin/xz" ]
- then
- unpack xz-5.0.3
- cd "$sources/xz-5.0.3"
- ./configure --prefix="$tools"
- make -j$JOBS
-# make check
- make install
- rm -rf "$sources/xz-5.0.3"
- fi
-}
-
-
-pass1_python()
-{
- echo "Building Python"
- if [ ! -e "$tools/bin/python" ]
- then
- unpack Python-2.7.2
- cd "$sources/Python-2.7.2"
- ./configure --prefix="$tools"
- make -j$JOBS
- make install
- rm -rf "$sources/Python-2.7.2"
- fi
-}
-
-
-pass1_cliapp()
-{
- echo "Building cliapp"
- if [ ! -e "$tools/lib/python2.7/site-packages/cliapp" ]
- then
- cp "$sources/python-cliapp_0.27.orig.tar.gz" \
- "$sources/cliapp-0.27.tar.gz"
- unpack cliapp-0.27
- cd "$sources/cliapp-0.27"
- $HOST_SED -i '/^import cliapp/d' setup.py
- $HOST_SED -i 's/cliapp.__version__/"0.27"/g' setup.py
- python setup.py install --prefix="$tools"
- rm -rf "$sources/cliapp-0.27"
- fi
-}
-
-
-pass1_git()
-{
- echo "Building git"
- if [ ! -e "$tools/bin/git" ]
- then
- unpack git-1.7.7.3
- cd "$sources/git-1.7.7.3"
- ./configure --prefix="$tools"
- make -j$JOBS
- make install
- rm -rf "$sources/git-1.7.7.3"
- fi
-}
-
-
-pass1_strip_tools()
-{
- echo "Stripping binaries"
- strip --strip-debug "$tools"/lib/* || true
- strip --strip-unneeded "$tools"/{,s}bin/* || true
-}
-
-
-pass1_fix_perms()
-{
- $HOST_SUDO -p'Password for chown: ' chown -R root:root "$LFS"
+ cd /tree/baserock/gits/morph
+ $HOST_MKDIR -p /baserock/cache
+ export PATH="/usr/bin:/bin:$tools/bin:$tools/sbin"
+ while ! python ./morph --verbose update-gits \
+ morphs rm/morph-pass1 bootstrap-pass1.morph \
+ --cachedir=/baserock/cache \
+ --log=/baserock/morph.log \
+ --dump-memory-profile=none \
+ --keep-path \
+ --bundle-server="$GIT_BUNDLES"
+ do
+ echo eeekk try again
+ done
}
-
-pass1_cleanup_at_end()
+pass1_build_with_morph()
{
- echo "Removing unnecessary stuff at the end of pass1"
- rm -rf "$LFS/tree/sources"
+ cd /tree/baserock/gits/morph
+ $HOST_MKDIR -p /baserock/cache
+ export PATH="/usr/bin:/bin:$tools/bin:$tools/sbin"
+ python ./morph --verbose build \
+ morphs rm/morph-pass1 bootstrap-pass1.morph \
+ --no-git-update \
+ --bootstrap \
+ --cachedir=/baserock/cache \
+ --log=/baserock/morph.log \
+ --dump-memory-profile=none \
+ --keep-path \
+ --prefix="$tools" \
+ --toolchain-target="$LFS_TGT"
}
-
-pass2_get_sources()
+pass2_get_morph()
{
- echo "Get Baserock sources"
- # FIXME: This should use git from inside the chroot
+ echo "Get morph"
if [ ! -e "$LFS/baserock/gits" ]
then
- $HOST_MKDIR -p "$LFS/baserock"
- $HOST_SUDO cp -al "$HOME/baserock/gits" "$LFS/baserock"
+ $HOST_MKDIR -p "$LFS/baserock/gits"
+ cp -al "$HOME/baserock/gits/morph" "$LFS/baserock/gits/morph"
fi
}
@@ -753,10 +103,10 @@ pass2_prepare_for_chroot()
if [ ! -d "$LFS/etc" ]
then
- $HOST_SUDO mkdir -p "$LFS/etc"
- $HOST_SUDO chmod 777 "$LFS/etc"
- $HOST_SUDO touch "$LFS/etc/ld.so.conf"
- $HOST_SUDO chmod 666 "$LFS/etc/ld.so.conf"
+ 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
@@ -771,20 +121,20 @@ EOF
[ -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
+# /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" ] || $HOST_SUDO ln -sf ../tools/bin/bash "$LFS/bin/sh"
+ [ -e "$LFS/bin/sh" ] || ln -sf ../tools/bin/bash "$LFS/bin/sh"
[ -e "$LFS/bin/bash" ] || \
- $HOST_SUDO ln -sf ../tools/bin/bash "$LFS/bin/bash"
- [ -e "$LFS/bin/pwd" ] || $HOST_SUDO ln -sf ../tools/bin/pwd "$LFS/bin/pwd"
+ ln -sf ../tools/bin/bash "$LFS/bin/bash"
+ [ -e "$LFS/bin/pwd" ] || ln -sf ../tools/bin/pwd "$LFS/bin/pwd"
[ -e "$LFS/bin/echo" ] || \
- $HOST_SUDO ln -sf ../tools/bin/echo "$LFS/bin/echo"
+ ln -sf ../tools/bin/echo "$LFS/bin/echo"
if [ ! -e "$LFS/usr/bin/perl" ]; then
$HOST_MKDIR -p $LFS/usr/bin
- $HOST_SUDO ln -sf ../../tools/bin/perl "$LFS/usr/bin/perl"
+ ln -sf ../../tools/bin/perl "$LFS/usr/bin/perl"
fi
}
@@ -818,19 +168,19 @@ EOF
local do_chroot="$BASEDIR/do-chroot.bash"
$HOST_CAT <<EOF >"$do_chroot"
#!/bin/bash
-trap "$HOST_SUDO umount $LFS/proc $LFS/sys" INT TERM EXIT
+trap "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"
+ mount -t proc proc "$LFS/proc"
fi
if ! mount | grep "$LFS/sys" >/dev/null
then
- $HOST_SUDO mount -t sysfs sysfs "$LFS/sys"
+ 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" \\
+$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" \\
@@ -849,7 +199,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"
@@ -869,19 +218,19 @@ EOF
local do_chroot="$BASEDIR/do-chroot.bash"
$HOST_CAT <<EOF >"$do_chroot"
#!/bin/bash
-trap "$HOST_SUDO umount $LFS/proc $LFS/sys" INT TERM EXIT
+trap "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"
+ mount -t proc proc "$LFS/proc"
fi
if ! mount | grep "$LFS/sys" >/dev/null
then
- $HOST_SUDO mount -t sysfs sysfs "$LFS/sys"
+ 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" \\
+$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" \\
@@ -891,57 +240,6 @@ EOF
"$do_chroot" /baserock/build.sh
}
-
-pass2_build_devel_system_outside_chroot()
-{
- echo "Building devel system image"
-
- cd "$LFS/.."
- img="devsys.img"
-
- $HOST_SUDO qemu-img create -f raw "$img" 1G
- $HOST_SUDO parted -s "$img" mklabel msdos
- $HOST_SUDO parted -s "$img" mkpart primary 0% 100%
- $HOST_SUDO parted -s "$img" set 1 boot on
- $HOST_SUDO install-mbr "$img"
- part=/dev/mapper/$($HOST_SUDO kpartx -av "$img" |
- awk '/^add map/ { print $3 }' |
- head -n1)
- trap "$HOST_SUDO kpartx -dv $img" INT TERM EXIT
- # mapper may not yet be ready
- while test ! -e "$part"; do :; done
- $HOST_SUDO mkfs -t ext4 "$part"
- mp="$(mktemp -d)"
- $HOST_SUDO mount "$part" "$mp"
- trap "$HOST_SUDO umount $part; $HOST_SUDO kpartx -dv $img" INT TERM EXIT
-
- for stratum in \
- "$LFS"/baserock/cache/*.stratum.{foundation,linux-stratum,devel}
- do
- $HOST_SUDO tar -C "$mp" -xf "$stratum"
- done
-
- cat <<EOF | $HOST_SUDO tee "$mp/etc/fstab"
-proc /proc proc defaults 0 0
-sysfs /sys sysfs defaults 0 0
-/dev/sda1 / ext4 errors=remount-ro 0 1
-EOF
-
- cat <<EOF | $HOST_SUDO tee "$mp/extlinux.conf"
-default linux
-timeout 1
-
-label linux
-kernel /vmlinuz
-append root=/dev/sda1 init=/sbin/init quiet rw
-EOF
-
- $HOST_SUDO extlinux --install "$mp"
- sync
- sleep 2
-}
-
-
pass2a_cleanup_at_end()
{
echo "Remove unnecessary stuff at the end of pass2a"
@@ -960,7 +258,7 @@ pass2b_cleanup_at_end()
pass3_remove_tools()
{
echo "Removing $LFS/tools"
- $HOST_SUDO rm -rf "$LFS/tools"
+ rm -rf "$LFS/tools"
}
pass3_get_sources_with_morph_in_chroot()
@@ -1000,19 +298,19 @@ EOF
local do_chroot="$BASEDIR/do-chroot.bash"
$HOST_CAT <<EOF >"$do_chroot"
#!/bin/bash
-trap "$HOST_SUDO umount $LFS/proc $LFS/sys" INT TERM EXIT
+trap "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"
+ mount -t proc proc "$LFS/proc"
fi
if ! mount | grep "$LFS/sys" >/dev/null
then
- $HOST_SUDO mount -t sysfs sysfs "$LFS/sys"
+ 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" \\
+$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}"
@@ -1049,19 +347,19 @@ EOF
local do_chroot="$BASEDIR/do-chroot.bash"
$HOST_CAT >"$do_chroot" <<EOF
#!/bin/bash
-trap "$HOST_SUDO umount $LFS/proc $LFS/sys" INT TERM EXIT
+trap "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"
+ mount -t proc proc "$LFS/proc"
fi
if ! mount | grep "$LFS/sys" >/dev/null
then
- $HOST_SUDO mount -t sysfs sysfs "$LFS/sys"
+ 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" \\
+$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}"
@@ -1075,53 +373,13 @@ echo "LFS_TGT=$LFS_TGT"
pass1_directories
-if [ -e "$allsources" ]
-then
- $HOST_CP -au "$allsources/." "$LFS/sources/."
-fi
-download_all
-
case "$buildwhat" in
pass1)
- pass1_binutils_1
- pass1_gcc_1
- pass1_linux_api_headers
- pass1_eglibc
- pass1_adjust_gcc_specs
- pass1_sanity_check
- pass1_binutils_2
- pass1_gcc_2
- pass1_sanity_check
- pass1_zlib
- pass1_ncurses
- #pass1_busybox
- pass1_bash
- pass1_bzip2
- pass1_coreutils
- pass1_diffutils
- pass1_file
- pass1_findutils
- pass1_gawk
- pass1_gettext
- pass1_grep
- pass1_gzip
- pass1_m4
- pass1_make
- pass1_patch
- pass1_perl
- pass1_sed
- pass1_tar
- pass1_texinfo
- pass1_xz
- pass1_python
- pass1_cliapp
- pass1_git
- #pass1_strip_tools
- #pass1_fix_perms
- pass1_cleanup_at_end
+ pass1_get_sources_with_morph
+ pass1_build_with_morph
;;
pass2a)
- pass2_get_sources
+ pass2_get_morph
pass2_prepare_for_chroot
pass2_get_sources_with_morph_in_chroot
pass2a_cleanup_at_end