merge of '15eabf62626d7b5980c5f03a6eb67c7cf0c49ccb'
[openembedded.git] / classes / n2100-image.bbclass
1 DEPENDS += "openssl-native"
2 EXTRA_IMAGECMD = "--little-endian"
3 ERASEBLOCK_SIZE = "0x20000"
4 IMAGE_FSTYPES = "jffs2"
5 IMAGE_POSTPROCESS_COMMAND += '${MACHINE}_pack_image;'
6
7 n2100_pack_image() {
8         # find latest kernel
9         KERNEL=`ls -tr ${DEPLOY_DIR_IMAGE}/zImage* | tail -1`
10         if [ -z "$KERNEL" ]; then
11                 oefatal "No kernel found in ${DEPLOY_DIR_IMAGE}. Bitbake linux to create one."
12                 exit 1
13         fi
14         ROOTFS=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2
15         OUTPUT=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.flash.img
16         PADFILE=${DEPLOY_DIR_IMAGE}/padfile.zzz
17         HEX_MAX_KERN_SIZE=1C0000
18         DEC_MAX_KERN_SIZE=`echo "ibase=16; $HEX_MAX_KERN_SIZE" | bc `
19         HEX_MAX_ROOT_SIZE=DC0000
20         DEC_MAX_ROOT_SIZE=`echo "ibase=16; $HEX_MAX_ROOT_SIZE" | bc `
21         KERNEL_SIZE=`ls -l $KERNEL | awk '{print $5}'`
22         if [ $KERNEL_SIZE -gt $DEC_MAX_KERN_SIZE ]; then
23                 oefatal "Kernel too large at $KERNEL_SIZE bytes.  Max is $DEC_MAX_KERN_SIZE."
24                 exit 1
25         fi
26         ROOT_SIZE=`ls -l $ROOTFS | awk '{print $5}'`
27         if [ $ROOT_SIZE -gt $DEC_MAX_ROOT_SIZE ]; then
28                 oefatal "Rootfs is too large at $ROOT_SIZE bytes.  Max is $DEC_MAX_ROOT_SIZE."
29                 exit 1
30         fi
31         PAD_SIZE=`echo "$DEC_MAX_KERN_SIZE - $KERNEL_SIZE" | bc `
32         dd if=/dev/zero of=$PADFILE bs=$PAD_SIZE count=1 2>>/dev/null
33         cat $KERNEL $PADFILE $ROOTFS > $OUTPUT
34         rm -f $PADFILE
35         ls -l $OUTPUT
36 }