Mercurial > hg > aboriginal
view simple-root-filesystem.sh @ 1128:e5f9681a8b3c
Lots of comment updates. Add a NO_HOST_TOOLS=1 config option, and a few "time" calls to stages that didn't have them. Put native-compiler.sh after root-filesystem.sh in build so it's slightly easier to document.
author | Rob Landley <rob@landley.net> |
---|---|
date | Sat, 19 Jun 2010 16:44:49 -0500 |
parents | 2b68517f5b62 |
children | 1ad777637d2d |
line wrap: on
line source
#!/bin/bash # Build a basic busybox+uClibc root filesystem for a given target. # Requires a cross-compiler (or simple-cross-compiler) in the $PATH or in # the build directory. In theory you can supply your own as long as the # prefix- name is correct. source sources/include.sh || exit 1 read_arch_dir "$1" check_for_base_arch || exit 0 check_prerequisite "${ARCH}-cc" # Announce start of stage. echo "=== Building $STAGE_NAME" # Determine which directory layout we're using if [ -z "$ROOT_NODIRS" ] then mkdir -p "$STAGE_DIR"/{tmp,proc,sys,dev,home,mnt} && chmod a+rwxt "$STAGE_DIR/tmp" || dienow for i in bin sbin lib etc do mkdir -p "$STAGE_DIR/usr/$i" && ln -s "usr/$i" "$STAGE_DIR/$i" || dienow done ln -s share/man "$STAGE_DIR/usr/man" || dienow STAGE_DIR="$STAGE_DIR/usr" else mkdir -p "$STAGE_DIR/bin" || dienow fi # Copy qemu setup script and so on. cp -r "${SOURCES}/native-root/." "$STAGE_DIR/" && cp "$SRCDIR"/MANIFEST "$STAGE_DIR/src" || dienow # Build busybox and toybox build_section busybox cp "$WORK"/config-busybox "$STAGE_DIR"/src || dienow build_section toybox # Put statically and dynamically linked hello world programs on there for # test purposes. "${ARCH}-cc" "${SOURCES}/toys/hello.c" -Os $CFLAGS -o "$STAGE_DIR/bin/hello-dynamic" || dienow if [ "$BUILD_STATIC" != none ] then "${ARCH}-cc" "${SOURCES}/toys/hello.c" -Os $CFLAGS -static -o "$STAGE_DIR/bin/hello-static" || dienow fi # Do we need shared libraries? if [ "$BUILD_STATIC" != all ] then echo Copying compiler libraries... mkdir -p "$STAGE_DIR/lib" || dienow (path_search \ "$("$ARCH-cc" --print-search-dirs | sed -n 's/^libraries: =*//p')" \ "*.so*" 'cp -H "$DIR/$FILE" "$STAGE_DIR/lib/$FILE"' \ || dienow) | dotprogress fi # Clean up and package the result if [ -z "$SKIP_STRIP" ] then "${ARCH}-strip" "$STAGE_DIR"/{bin/*,sbin/*,libexec/gcc/*/*/*} "${ARCH}-strip" --strip-unneeded "$STAGE_DIR"/lib/*.so fi create_stage_tarball # Color back to normal echo -e "\e[0mBuild complete"