From be8858971661cf9e6c929bc3246ef7d22692a049 Mon Sep 17 00:00:00 2001 From: Javier Viguera Date: Thu, 3 Apr 2014 19:40:00 +0200 Subject: [PATCH] meta-digi-arm: fix code to generate JFFS2 and UBIFS images It was broken after the upgrade to Yocto 1.6 because the framework to generate images in Yocto 1.6 changed. https://jira.digi.com/browse/DEL-1032 Signed-off-by: Javier Viguera --- .../classes/image_types_digi.bbclass | 54 ++++++++----------- .../conf/machine/include/imx-digi-base.inc | 2 +- .../conf/machine/include/mxs-digi-base.inc | 2 +- 3 files changed, 24 insertions(+), 34 deletions(-) diff --git a/meta-digi-arm/classes/image_types_digi.bbclass b/meta-digi-arm/classes/image_types_digi.bbclass index a3ed34e58..80097afcf 100644 --- a/meta-digi-arm/classes/image_types_digi.bbclass +++ b/meta-digi-arm/classes/image_types_digi.bbclass @@ -20,24 +20,39 @@ def next_power_of_2(n): i <<= 1 return i +# Return TRUE if jffs2 is not in IMAGE_FSTYPES +JFFS2_NOT_IN_FSTYPES = "${@jffs2_not_in_fstypes(d)}" +def jffs2_not_in_fstypes(d): + return str('jffs2' not in d.getVar('IMAGE_FSTYPES', True).split()).lower() + IMAGE_CMD_jffs2() { nimg="$(echo ${FLASH_PEB} | awk -F, '{print NF}')" for i in $(seq 1 ${nimg}); do peb_it="$(echo ${FLASH_PEB} | cut -d',' -f${i})" # Do not use '-p (padding)' option. It breaks 'ccardimx28js' flash images [JIRA:DEL-218] mkfs.jffs2 -n -e ${peb_it} -d ${IMAGE_ROOTFS} -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.${peb_it}.rootfs.jffs2 + ln -sf ${IMAGE_NAME}.${peb_it}.rootfs.jffs2 ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.${peb_it}.jffs2 done } -IMAGE_CMD_sum.jffs2() { - nimg="$(echo ${FLASH_PEB} | awk -F, '{print NF}')" +# The CWD for this set of commads is DEPLOY_DIR_IMAGE so the paths are relative to it. +COMPRESS_CMD_sum() { + # 'nimg' is set in IMAGE_CMD_jffs2 (which is executed just before) for i in $(seq 1 ${nimg}); do peb_it="$(echo ${FLASH_PEB} | cut -d',' -f${i})" - # Do not use '-p (padding)' option. It breaks 'ccardimx28js' flash images [JIRA:DEL-218] - mkfs.jffs2 -n -e ${peb_it} -d ${IMAGE_ROOTFS} -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.${peb_it}.rootfs.jffs2 - sumtool -e ${peb_it} -i ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.${peb_it}.rootfs.jffs2 -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.${peb_it}.rootfs.sum.jffs2 - rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.${peb_it}.rootfs.jffs2 + sumtool -e ${peb_it} -i ${IMAGE_NAME}.${peb_it}.rootfs.jffs2 -o ${IMAGE_NAME}.${peb_it}.rootfs.jffs2.sum + ln -sf ${IMAGE_NAME}.${peb_it}.rootfs.jffs2.sum ${IMAGE_LINK_NAME}.${peb_it}.jffs2.sum + + # If 'jffs2' is not in IMAGE_FSTYPES remove the images and symlinks + if ${JFFS2_NOT_IN_FSTYPES}; then + rm -f ${IMAGE_NAME}.${peb_it}.rootfs.jffs2 ${IMAGE_LINK_NAME}.${peb_it}.jffs2 + fi done + + # Create dummy file so the final script can remove it and not fail + if ${JFFS2_NOT_IN_FSTYPES}; then + touch ${IMAGE_NAME}.rootfs.jffs2 + fi } IMAGE_CMD_ubifs() { @@ -48,35 +63,10 @@ IMAGE_CMD_ubifs() { leb_it="$(echo ${FLASH_LEB} | cut -d',' -f${i})" mio_it="$(echo ${FLASH_MIO} | cut -d',' -f${i})" mkfs.ubifs -r ${IMAGE_ROOTFS} -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.${peb_it}.rootfs.ubifs -m ${mio_it} -e ${leb_it} -c ${mlc_it} + ln -sf ${IMAGE_NAME}.${peb_it}.rootfs.ubifs ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.${peb_it}.ubifs done } -# -# A copy of the original function in 'image_types.bbclass', just overriding the -# part of the symlinks generation so we can create more than one symlink (one per -# JFFS2 image) -# -runimagecmd_jffs2() { - ROOTFS_SIZE=`du -ks ${IMAGE_ROOTFS} | awk '{base_size = $1 * ${IMAGE_OVERHEAD_FACTOR}; base_size = ((base_size > ${IMAGE_ROOTFS_SIZE} ? base_size : ${IMAGE_ROOTFS_SIZE}) + ${IMAGE_ROOTFS_EXTRA_SPACE}); if (base_size != int(base_size)) base_size = int(base_size + 1); base_size = base_size + ${IMAGE_ROOTFS_ALIGNMENT} - 1; base_size -= base_size % ${IMAGE_ROOTFS_ALIGNMENT}; print base_size }'` - ${cmd} - - # And create the symlinks - # - # The previous $\{cmd} expands to IMAGE_CMD_jffs2 so we have all the - # needed variables available (nimg, pebX, etc) - if [ -n "${IMAGE_LINK_NAME}" ]; then - for type in ${subimages}; do - for i in $(seq 1 ${nimg}); do - peb_it="$(echo ${FLASH_PEB} | cut -d',' -f${i})" - ln -sf ${IMAGE_NAME}.${peb_it}.rootfs.$type ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.${peb_it}.$type - done - done - fi -} - -runimagecmd_sum.jffs2 = "${runimagecmd_jffs2}" -runimagecmd_ubifs = "${runimagecmd_jffs2}" - IMAGE_CMD_boot.vfat() { # # Image generation code for image type 'boot.vfat' diff --git a/meta-digi-arm/conf/machine/include/imx-digi-base.inc b/meta-digi-arm/conf/machine/include/imx-digi-base.inc index 3b041a728..103b10dfb 100644 --- a/meta-digi-arm/conf/machine/include/imx-digi-base.inc +++ b/meta-digi-arm/conf/machine/include/imx-digi-base.inc @@ -54,7 +54,7 @@ PREFERRED_PROVIDER_virtual/libgles2_mx6 ?= "gpu-viv-bin-mx6q" EXTRA_IMAGEDEPENDS = "u-boot" # Flash image types -IMAGE_FSTYPES ?= "sum.jffs2 tar.bz2 ubifs" +IMAGE_FSTYPES ?= "jffs2.sum tar.bz2 ubifs" # MX6 does not have flash memory so build sdcard images SDCARD_ROOTFS_mx6 ?= "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ext4" diff --git a/meta-digi-arm/conf/machine/include/mxs-digi-base.inc b/meta-digi-arm/conf/machine/include/mxs-digi-base.inc index 12ae0d927..c0690a244 100644 --- a/meta-digi-arm/conf/machine/include/mxs-digi-base.inc +++ b/meta-digi-arm/conf/machine/include/mxs-digi-base.inc @@ -28,7 +28,7 @@ MACHINE_EXTRA_RRECOMMENDS += "udev-extraconf" EXTRA_IMAGEDEPENDS = "u-boot" # Flash image types -IMAGE_FSTYPES ?= "sum.jffs2 tar.bz2 ubifs" +IMAGE_FSTYPES ?= "jffs2.sum tar.bz2 ubifs" KERNEL_IMAGETYPE = "uImage"