From eb4a1d31749e5b978adc6d04c05d3305e322e4ad Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Wed, 1 Oct 2008 16:14:23 +0000 Subject: [PATCH] Hopefully simplified the build system a lot --- targets/Linux | 14 ++++-- targets/Linux-arm | 85 ++++++++++++++++++++------------- targets/Linux-i386 | 111 +++++++++++++++++++++++++++++++------------ targets/NetBSD | 12 ++--- targets/NetBSD-sparc | 29 +++++++++++ 5 files changed, 179 insertions(+), 72 deletions(-) diff --git a/targets/Linux b/targets/Linux index e454e6c..f60df3a 100644 --- a/targets/Linux +++ b/targets/Linux @@ -1,3 +1,11 @@ -[ -z "$KERNEL" ] && KERNEL="/vmlinuz" -[ -z "$MOUNT" ] && MOUNT="$SUDO mount -o loop" -[ -z "$UMOUNT" ] && UMOUNT="$SUDO umount" +[ -z "$DU" ] && DU="du -h" +[ -z "$GZIP" ] && GZIP="gzip -9" +[ -z "$KERNEL" ]&& KERNEL="/boot/vmlinuz" +[ -z "$LN" ] && LN="ln" +[ -z "$MKFS" ] && MKFS="mke2fs -F" +[ -z "$MKISOFS" ]&& MKISOFS="mkisofs -J -V \"$VENDOR\"" +[ -z "$MOUNT" ] && MOUNT="$SUDO mount -o loop" +[ -z "$RAMDISK" ]&& RAMDISK="/boot/initrd.img" +[ -z "$TAR" ] && TAR="tar" +[ -z "$TUNE2FS" ]&& TUNE2FS="tune2fs" +[ -z "$UMOUNT" ]&& UMOUNT="$SUDO umount" diff --git a/targets/Linux-arm b/targets/Linux-arm index 60d4200..a49056d 100644 --- a/targets/Linux-arm +++ b/targets/Linux-arm @@ -3,13 +3,8 @@ #variables -[ -z "$LD" ] && LD="cc -shared -nostdlib" -[ -z "$MKFS" ] && MKFS="mkfs.jffs2 -n -e 0x4000 -l -q -r $DESTDIR -X zlib -o" -#executables -[ -z "$DU" ] && DU="du -h" -[ -z "$MKDIR" ] && MKDIR="mkdir -p" -[ -z "$MV" ] && MV="mv -f" -[ -z "$TAR" ] && TAR="tar" +[ -z "$LD" ] && LD="cc -shared -nostdlib" +[ -z "$MKFS" ] && MKFS="mkfs.jffs2 -n -e 0x4000 -l -q -r $DESTDIR -X zlib -o" #includes @@ -31,10 +26,45 @@ _create_directories() } -#public -target_image() +_image_ramdisk() { - _create_directories 'bin' 'dev' 'etc' 'lib' 'sbin' + USAGE="Options for $IMAGE_TYPE on $TARGET:\n\ + IMAGE_FILE Where to write the filesystem image\n\ + MKFS Command used to format the filesystem" + + #sanity check + check "$USAGE" DU GZIP IMAGE_FILE MKFS + + target "install" || exit 2 + + _create_directories "dev" "proc" "mnt/cdrom" "sbin" + + echo + echo -n "Building ramdisk image:" + $MKFS "$IMAGE_FILE" || exit 2 + echo + $DU "$IMAGE_FILE" + + echo + echo -n "Compressing ramdisk:" + $GZIP "$IMAGE_FILE" || exit 2 + $MV "$IMAGE_FILE.gz" "$IMAGE_FILE" || exit 2 + echo + $DU "$IMAGE_FILE" +} + + +_image_rootfs() +{ + USAGE="Options for $IMAGE_TYPE on $TARGET:\n\ + IMAGE_FILE Where to write the filesystem image\n\ + IMAGE_MODULES Path to a tar.gz archive of kernel modules (optional)\n\ + MKFS Command used to format the filesystem" + + #sanity check + check "$USAGE" DESTDIR DU GZIP IMAGE_FILE MKFS MV SUDO TAR + + _create_directories "bin" "dev" "etc" "lib" "sbin" echo echo -n "Fixing installation paths:" @@ -56,7 +86,7 @@ target_image() echo echo "Installing kernel modules:" #progress -ef "$KERNEL_MODULES" -- gunzip -c \ - gunzip -c "$KERNEL_MODULES" \ + $GZIP -dc "$KERNEL_MODULES" \ | (cd "$DESTDIR" && $TAR -xf -) || exit 2 fi @@ -76,37 +106,28 @@ EOF echo echo "Building rootfs image:" - $MKFS "$IMAGE_IMAGE" || exit 2 - $DU "$IMAGE_IMAGE" + $MKFS "$IMAGE_FILE" || exit 2 + $DU "$IMAGE_FILE" echo echo "Building tarball:" OLDPWD="$PWD" - (cd "$DESTDIR" && $TAR -cvzf "$OLDPWD/$IMAGE_IMAGE.tar.gz" .) \ + (cd "$DESTDIR" && $TAR -cvzf "$OLDPWD/$IMAGE_FILE.tar.gz" .) \ | while read filename; do echo -en "\r$filename" done || (echo && exit 2) echo -en "\r" - $DU "$IMAGE_IMAGE.tar.gz" + $DU "$IMAGE_FILE.tar.gz" } -target_ramdisk() +#public +target_image() { - target "install" || exit 2 - - _create_directories 'dev' 'proc' 'mnt/cdrom' 'sbin' - - echo - echo -n "Building ramdisk image:" - $MKFS "$RAMDISK_IMAGE" || exit 2 - echo - $DU "$RAMDISK_IMAGE" - - echo - echo -n "Compressing ramdisk:" - $GZIP "$RAMDISK_IMAGE" || exit 2 - $MV "$RAMDISK_IMAGE.gz" "$RAMDISK_IMAGE" || exit 2 - echo - $DU "$RAMDISK_IMAGE" + case "$IMAGE_TYPE" in + "ramdisk") + return _image_ramdisk + "rootfs"|*) + return _image_rootfs + esac } diff --git a/targets/Linux-i386 b/targets/Linux-i386 index 2e66e88..a564aca 100644 --- a/targets/Linux-i386 +++ b/targets/Linux-i386 @@ -3,8 +3,7 @@ #variables -[ -z "$MKFS" ] && MKFS="mke2fs -F" -[ -z "$TUNE2FS" ] && TUNE2FS="tune2fs" +#XXX insert i386-specific variables here (grub...) #includes @@ -12,13 +11,24 @@ source "`dirname $0`/Apps/Devel/src/scripts/targets/Linux" #functions -target_image() +#private +_image_image() { + USAGE="Options for $IMAGE_TYPE on $TARGET:\n\ + IMAGE_FILE Where to write the filesystem image\n\ + IMAGE_KERNEL Path to the kernel\n\ + IMAGE_SIZE Size of the filesystem image in kilobytes\n\ + MKFS Command used to create the filesystem" + + #sanity check + check "$USAGE" DD DESTDIR DEVZERO IMAGE_FILE IMAGE_KERNEL IMAGE_SIZE \ + MKDIR MKFS MOUNT UMOUNT + + $MKDIR "$DESTDIR" || exit 2 $UMOUNT "$DESTDIR" - $MKDIR "$DESTDIR" || exit 2 - $DD if="$DEVZERO" of="$DISK_IMAGE" count="$DISK_SIZE" && - $MKFS "$DISK_IMAGE" || exit 2 - $MOUNT "$DISK_IMAGE" "$DESTDIR" || exit 2 + $DD if="$DEVZERO" of="$IMAGE_FILE" count="$IMAGE_SIZE" && + $MKFS "$IMAGE_FILE" || exit 2 + $MOUNT "$IMAGE_FILE" "$DESTDIR" || exit 2 target "install" RET=$? $UMOUNT "$DESTDIR" @@ -26,54 +36,93 @@ target_image() } -target_iso() +_image_iso() { + USAGE="Options for $IMAGE_TYPE on $TARGET:\n\ + IMAGE_FILE Where to write the filesystem image\n\ + IMAGE_KERNEL Path to the kernel\n\ + IMAGE_MODULES Path to a tar.gz archive of kernel modules (optional)\n\ + IMAGE_RAMDISK Path to the ramdisk (optional)\n\ + IMAGE_SIZE Size of the filesystem image in kilobytes\n\ + KERNEL_ARGS Additional arguments to give to the kernel (optional)\n\ + MKISOFS Command used to create the ISO image" + + #sanity check + check "$USAGE" DESTDIR KERNEL IMAGE_FILE IMAGE_KERNEL IMAGE_SIZE \ + INSTALL MKDIR MKISOFS MOUNT RAMDISK TAR UMOUNT + $MKDIR "$DESTDIR/boot/grub" || exit 2 - $CP "/usr/lib/grub/i386-pc/stage2_eltorito" \ + $INSTALL -m 644 "/usr/lib/grub/i386-pc/stage2_eltorito" \ "$DESTDIR/boot/grub" || exit 2 - $CP "$KERNEL" "$DESTDIR/boot/uKernel" || exit 2 - if [ ! -z "$RAMDISK_IMAGE" ]; then - $CP "$RAMDISK_IMAGE" "$DESTDIR/boot/initrd.img" - GRUB_INITRD="initrd /boot/initrd.img" + $INSTALL -m 755 "$IMAGE_KERNEL" "$DESTDIR/$KERNEL" || exit 2 + if [ ! -z "$IMAGE_RAMDISK" ]; then + $INSTALL -m 644 "$IMAGE_RAMDISK" "$DESTDIR/$RAMDISK" + GRUB_INITRD="initrd $RAMDISK" fi $CAT > "$DESTDIR/boot/grub/menu.lst" << EOF default 0 timeout 10 title $VENDOR -kernel /boot/uKernel $KERNEL_ARGS +kernel $KERNEL $KERNEL_ARGS $GRUB_INITRD EOF - [ ! -z "$KERNEL_MODULES" ] && cat "$KERNEL_MODULES" | \ - (cd "$DESTDIR" && tar xzf -) + [ ! -z "$IMAGE_MODULES" ] && cat "$IMAGE_MODULES" | \ + (cd "$DESTDIR" && $TAR -xzf -) $MKISOFS -b "boot/grub/stage2_eltorito" -no-emul-boot \ -boot-load-size 4 -boot-info-table \ - -o "$CDROM_IMAGE" "$DESTDIR" + -o "$IMAGE_FILE" "$DESTDIR" } -target_ramdisk() +_image_ramdisk() { - [ -z "$MOUNTPOINT" ] && error "MOUNTPOINT needs to be set" - $UMOUNT "$MOUNTPOINT" + USAGE="Options for $IMAGE_TYPE on $TARGET:\n\ + IMAGE_FILE Where to write the filesystem image\n\ + IMAGE_SIZE Size of the filesystem image in kilobytes\n\ + MKFS Command used to format the ramdisk image\n\ + MOUNTPOINT Path where to temporarily mount the ramdisk image" + + #sanity check + check "$USAGE" DD DEVZERO DU GZIP IMAGE_FILE IMAGE_SIZE INSTALL LN \ + MKDIR MKFS MOUNTPOINT MV UMOUNT + $MKDIR "$MOUNTPOINT" - $DD if="$DEVZERO" of="$RAMDISK_IMAGE" count="$RAMDISK_SIZE"|| exit 2 - $MKFS "$RAMDISK_IMAGE" || exit 2 - [ ! -z "$TUNE2FS" ] && $TUNE2FS -i 0 "$RAMDISK_IMAGE" - $MOUNT "$RAMDISK_IMAGE" "$MOUNTPOINT" || exit 2 + $UMOUNT "$MOUNTPOINT" + $DD if="$DEVZERO" of="$IMAGE_FILE" count="$IMAGE_SIZE" || exit 2 + $MKFS "$IMAGE_FILE" || exit 2 + [ ! -z "$TUNE2FS" ] && $TUNE2FS -i 0 "$IMAGE_FILE" + #FIXME umount on subsequent failures + $MOUNT "$IMAGE_FILE" "$MOUNTPOINT" || exit 2 + + #compile and install linuxrc SUBDIRS="Apps/Unix/src/others/tools" target linuxrc || exit 2 - DESTDIR="$MOUNTPOINT" _create_directories 'dev' 'proc' 'mnt/cdrom' \ - 'sbin' - + DESTDIR="$MOUNTPOINT" _create_directories "dev" "proc" "mnt/cdrom" \ + "sbin" $LN "../mnt/cdrom/usr/bin/sh" "$MOUNTPOINT/sbin/init" - $CP "Apps/Unix/src/others/tools/linuxrc" "$MOUNTPOINT" || exit 2 + $INSTALL -m 755 "Apps/Unix/src/others/tools/linuxrc" \ + "$MOUNTPOINT/linuxrc" || exit 2 $UMOUNT "$MOUNTPOINT" echo echo -n "Compressing ramdisk:" - $GZIP "$RAMDISK_IMAGE" || exit 2 - $MV "$RAMDISK_IMAGE.gz" "$RAMDISK_IMAGE" || exit 2 + $GZIP "$IMAGE_FILE" || exit 2 + $MV "$IMAGE_FILE.gz" "$IMAGE_FILE" || exit 2 echo - $DU "$RAMDISK_IMAGE" + $DU "$IMAGE_FILE" +} + + +#public +target_image() +{ + case "$IMAGE_TYPE" in + "iso") + return _image_iso + "ramdisk") + return _image_ramdisk + *) + return _image_image + esac } diff --git a/targets/NetBSD b/targets/NetBSD index db986de..cdab486 100644 --- a/targets/NetBSD +++ b/targets/NetBSD @@ -1,18 +1,18 @@ -[ -z "$KERNEL" ] && KERNEL="/netbsd" -[ -z "$MKFS" ] && MKFS="newfs -F" -[ -z "$MOUNT" ] && MOUNT="netbsd_mount" -[ -z "$UMOUNT" ] && UMOUNT="netbsd_umount" +[ -z "$KERNEL" ]&& KERNEL="/netbsd" +[ -z "$MKFS" ] && MKFS="newfs -F" +[ -z "$MOUNT" ] && MOUNT="_netbsd_mount" +[ -z "$UMOUNT" ]&& UMOUNT="_netbsd_umount" #functions -netbsd_mount() +_netbsd_mount() { $SUDO vnconfig -c vnd0 "$1" && $SUDO mount /dev/vnd0a "$2" } -netbsd_umount() +_netbsd_umount() { $SUDO umount "$1" && $SUDO vnconfig -u vnd0 diff --git a/targets/NetBSD-sparc b/targets/NetBSD-sparc index 9381ef8..dabe935 100644 --- a/targets/NetBSD-sparc +++ b/targets/NetBSD-sparc @@ -4,3 +4,32 @@ #includes source "`dirname $0`/Apps/Devel/src/scripts/targets/NetBSD" + + +#functions +#public +target_image() +{ + USAGE="Options for $IMAGE_TYPE on $TARGET:\n\ + IMAGE_FILE Where to write the filesystem image\n\ + IMAGE_KERNEL Path to the kernel\n\ + IMAGE_SIZE Size of the filesystem image in kilobytes\n\ + MKFS Command used to format the filesystem" + + #sanity check + check "$USAGE" DD DESTDIR DEVZERO IMAGE_FILE IMAGE_SIZE INSTALL MKDIR \ + MKFS MOUNT UMOUNT + + $MKDIR "$DESTDIR" || exit 2 + $UMOUNT "$DESTDIR" + $DD if="$DEVZERO" of="$IMAGE_FILE" count="$IMAGE_SIZE" && + $MKFS "$IMAGE_FILE" || exit 2 + $MOUNT "$IMAGE_FILE" "$DESTDIR" || exit 2 + target "install" + RET=$? + #FIXME detect errors here too + [ ! -z "$IMAGE_KERNEL" ] && + $INSTALL -m 755 "$IMAGE_KERNEL" "$DESTDIR/$KERNEL" + $UMOUNT "$DESTDIR" + exit $RET +}