Mercurial > hg > aboriginal
changeset 1056:4a6f0088450c
Only rebuild kernel when we need to.
author | Rob Landley <rob@landley.net> |
---|---|
date | Tue, 04 May 2010 00:49:14 -0500 |
parents | 5cce9954d37f |
children | 949617f5287f |
files | system-image.sh |
diffstat | 1 files changed, 23 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/system-image.sh Tue May 04 00:48:08 2010 -0500 +++ b/system-image.sh Tue May 04 00:49:14 2010 -0500 @@ -27,7 +27,7 @@ echo "=== Packaging system image from root-filesystem" -blank_tempdir "$STAGE_DIR" +mkdir -p "$STAGE_DIR" blank_tempdir "$WORK" [ -z "$SYSIMAGE_TYPE" ] && SYSIMAGE_TYPE=squashfs @@ -52,17 +52,26 @@ make ARCH=$BOOT_KARCH KCONFIG_ALLCONFIG=mini.conf $LINUX_FLAGS \ allnoconfig >/dev/null || dienow +# This is a layering violation: we're adding stuff to the native root +# filesystem. But we want the kernel .config to be saved in the system +# image's filesystem. (TODO: Find a better way to do this.) + +[ -d "$STAGE_DIR/usr/src" ] && cp .config "$NATIVE_ROOT/usr/src/config-linux" + # Build kernel in parallel with initramfs -[ ! -e "$STAGE_DIR/zImage-$ARCH" ] && +if [ "$SYSIMAGE_TYPE" == initramfs ] || [ ! -e "$STAGE_DIR/zImage-$ARCH" ] +then echo "make -j $CPUS ARCH=$BOOT_KARCH $DO_CROSS $LINUX_FLAGS $VERBOSITY" && - ( make -j $CPUS ARCH=$BOOT_KARCH $DO_CROSS $LINUX_FLAGS $VERBOSITY || - dienow ) & + maybe_fork "make -j $CPUS ARCH=$BOOT_KARCH $DO_CROSS $LINUX_FLAGS $VERBOSITY || dienow" +fi # Embed an initramfs image in the kernel? echo "Generating root filesystem of type: $SYSIMAGE_TYPE" +rm "$STAGE_DIR/image-$ARCH"* 2>/dev/null + if [ "$SYSIMAGE_TYPE" == "initramfs" ] then $CC usr/gen_init_cpio.c -o my_gen_init_cpio || dienow @@ -122,10 +131,15 @@ # a larger -b size to genext2fs is insanely slow, and not particularly # sparse.) - if [ $[1024*$SYSIMAGE_HDA_MEGS] -gt 65536 ] + echo "$(stat -c %s "$STAGE_DIR/$IMAGE") -lt $SYSIMAGE_HDA_MEGS" + + if [ ! -z "$SYSIMAGE_HDA_MEGS" ] && + [ $((`stat -c %s "$STAGE_DIR/$IMAGE"` / (1024*1024) )) -lt "$SYSIMAGE_HDA_MEGS" ] then + echo resizing image to $SYSIMAGE_HDA_MEGS dd if=/dev/zero of="$STAGE_DIR/$IMAGE" bs=1k count=1 seek=$[1024*1024-1] && resize2fs "$STAGE_DIR/$IMAGE" ${SYSIMAGE_HDA_MEGS}M || dienow + echo resize complete fi elif [ "$SYSIMAGE_TYPE" == "squashfs" ] @@ -145,9 +159,10 @@ trap "" EXIT # Install kernel - -[ -d "$TOOLS/src" ] && cp .config "$TOOLS/src/config-linux" -cp "$KERNEL_PATH" "$STAGE_DIR/zImage-$ARCH" +if [ ! -e "$STAGE_DIR/zImage-$ARCH" ] +then + cp "$KERNEL_PATH" "$STAGE_DIR/zImage-$ARCH" +fi cleanup