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 <javier.viguera@digi.com>
This commit is contained in:
Javier Viguera 2014-04-03 19:40:00 +02:00
parent fa215a27b8
commit be88589716
3 changed files with 24 additions and 34 deletions

View File

@ -20,24 +20,39 @@ def next_power_of_2(n):
i <<= 1 i <<= 1
return i 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() { IMAGE_CMD_jffs2() {
nimg="$(echo ${FLASH_PEB} | awk -F, '{print NF}')" nimg="$(echo ${FLASH_PEB} | awk -F, '{print NF}')"
for i in $(seq 1 ${nimg}); do for i in $(seq 1 ${nimg}); do
peb_it="$(echo ${FLASH_PEB} | cut -d',' -f${i})" peb_it="$(echo ${FLASH_PEB} | cut -d',' -f${i})"
# Do not use '-p (padding)' option. It breaks 'ccardimx28js' flash images [JIRA:DEL-218] # 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 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 done
} }
IMAGE_CMD_sum.jffs2() { # The CWD for this set of commads is DEPLOY_DIR_IMAGE so the paths are relative to it.
nimg="$(echo ${FLASH_PEB} | awk -F, '{print NF}')" COMPRESS_CMD_sum() {
# 'nimg' is set in IMAGE_CMD_jffs2 (which is executed just before)
for i in $(seq 1 ${nimg}); do for i in $(seq 1 ${nimg}); do
peb_it="$(echo ${FLASH_PEB} | cut -d',' -f${i})" peb_it="$(echo ${FLASH_PEB} | cut -d',' -f${i})"
# Do not use '-p (padding)' option. It breaks 'ccardimx28js' flash images [JIRA:DEL-218] sumtool -e ${peb_it} -i ${IMAGE_NAME}.${peb_it}.rootfs.jffs2 -o ${IMAGE_NAME}.${peb_it}.rootfs.jffs2.sum
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.sum ${IMAGE_LINK_NAME}.${peb_it}.jffs2.sum
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 # 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 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() { IMAGE_CMD_ubifs() {
@ -48,35 +63,10 @@ IMAGE_CMD_ubifs() {
leb_it="$(echo ${FLASH_LEB} | cut -d',' -f${i})" leb_it="$(echo ${FLASH_LEB} | cut -d',' -f${i})"
mio_it="$(echo ${FLASH_MIO} | 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} 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 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_CMD_boot.vfat() {
# #
# Image generation code for image type 'boot.vfat' # Image generation code for image type 'boot.vfat'

View File

@ -54,7 +54,7 @@ PREFERRED_PROVIDER_virtual/libgles2_mx6 ?= "gpu-viv-bin-mx6q"
EXTRA_IMAGEDEPENDS = "u-boot" EXTRA_IMAGEDEPENDS = "u-boot"
# Flash image types # 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 # MX6 does not have flash memory so build sdcard images
SDCARD_ROOTFS_mx6 ?= "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ext4" SDCARD_ROOTFS_mx6 ?= "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ext4"

View File

@ -28,7 +28,7 @@ MACHINE_EXTRA_RRECOMMENDS += "udev-extraconf"
EXTRA_IMAGEDEPENDS = "u-boot" EXTRA_IMAGEDEPENDS = "u-boot"
# Flash image types # Flash image types
IMAGE_FSTYPES ?= "sum.jffs2 tar.bz2 ubifs" IMAGE_FSTYPES ?= "jffs2.sum tar.bz2 ubifs"
KERNEL_IMAGETYPE = "uImage" KERNEL_IMAGETYPE = "uImage"