morty migration: meta-digi-arm: update image_types bbclass
* Transfer dependences from base types 'boot' and 'recovery' to the actual image types 'boot.vfat', 'boot.ubifs', 'recovery.vfat' and 'recovery.ubifs' using IMAGE_TYPEDEP variable. * Now the images are created in a per image recipe deploy directory (IMGDEPLOYDIR), so use that instead of the final DEPLOY_DIR_IMAGE. * Remove manual creation of symbolic links and let Poky create them. For this, we need to remove the default 'rootfs' image suffix using the imgsuffix variable flag for the corresponding do_image_* functions. https://jira.digi.com/browse/DEL-3451 Signed-off-by: Javier Viguera <javier.viguera@digi.com>
This commit is contained in:
parent
41b3631934
commit
0cb35907cd
|
|
@ -1,8 +1,11 @@
|
||||||
inherit image_types
|
inherit image_types
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# BOOT IMAGES #
|
||||||
|
################################################################################
|
||||||
def TRUSTFENCE_BOOTIMAGE_DEPENDS(d):
|
def TRUSTFENCE_BOOTIMAGE_DEPENDS(d):
|
||||||
tf_initramfs = d.getVar('TRUSTFENCE_INITRAMFS_IMAGE',True) or ""
|
tf_initramfs = d.getVar('TRUSTFENCE_INITRAMFS_IMAGE',True) or ""
|
||||||
return "%s:do_rootfs" % tf_initramfs if tf_initramfs else ""
|
return "%s:do_image_complete" % tf_initramfs if tf_initramfs else ""
|
||||||
|
|
||||||
IMAGE_DEPENDS_boot.vfat = " \
|
IMAGE_DEPENDS_boot.vfat = " \
|
||||||
dosfstools-native:do_populate_sysroot \
|
dosfstools-native:do_populate_sysroot \
|
||||||
|
|
@ -13,10 +16,7 @@ IMAGE_DEPENDS_boot.vfat = " \
|
||||||
"
|
"
|
||||||
|
|
||||||
IMAGE_CMD_boot.vfat() {
|
IMAGE_CMD_boot.vfat() {
|
||||||
#
|
BOOTIMG_FILES="$(readlink -e ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin)"
|
||||||
# Image generation code for image type 'boot.vfat'
|
|
||||||
#
|
|
||||||
BOOTIMG_FILES="$(readlink -e ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE})"
|
|
||||||
BOOTIMG_FILES_SYMLINK="${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin"
|
BOOTIMG_FILES_SYMLINK="${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin"
|
||||||
if [ -n "${KERNEL_DEVICETREE}" ]; then
|
if [ -n "${KERNEL_DEVICETREE}" ]; then
|
||||||
for DTB in ${KERNEL_DEVICETREE}; do
|
for DTB in ${KERNEL_DEVICETREE}; do
|
||||||
|
|
@ -49,28 +49,26 @@ IMAGE_CMD_boot.vfat() {
|
||||||
BOOTIMG_BLOCKS="$(expr \( \( ${BOOTIMG_BLOCKS} + 15 \) / 16 \) \* 16)"
|
BOOTIMG_BLOCKS="$(expr \( \( ${BOOTIMG_BLOCKS} + 15 \) / 16 \) \* 16)"
|
||||||
|
|
||||||
# Build VFAT boot image and copy files into it
|
# Build VFAT boot image and copy files into it
|
||||||
mkfs.vfat -n "Boot ${MACHINE}" -S 512 -C ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.boot.vfat ${BOOTIMG_BLOCKS}
|
mkfs.vfat -n "Boot ${MACHINE}" -S 512 -C ${IMGDEPLOYDIR}/${IMAGE_NAME}.boot.vfat ${BOOTIMG_BLOCKS}
|
||||||
mcopy -i ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.boot.vfat ${BOOTIMG_FILES_SYMLINK} ::/
|
mcopy -i ${IMGDEPLOYDIR}/${IMAGE_NAME}.boot.vfat ${BOOTIMG_FILES_SYMLINK} ::/
|
||||||
|
|
||||||
# Copy boot scripts into the VFAT image
|
# Copy boot scripts into the VFAT image
|
||||||
for item in ${BOOT_SCRIPTS}; do
|
for item in ${BOOT_SCRIPTS}; do
|
||||||
src=`echo $item | awk -F':' '{ print $1 }'`
|
src=`echo $item | awk -F':' '{ print $1 }'`
|
||||||
dst=`echo $item | awk -F':' '{ print $2 }'`
|
dst=`echo $item | awk -F':' '{ print $2 }'`
|
||||||
mcopy -i ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.boot.vfat -s ${DEPLOY_DIR_IMAGE}/$src ::/$dst
|
mcopy -i ${IMGDEPLOYDIR}/${IMAGE_NAME}.boot.vfat -s ${DEPLOY_DIR_IMAGE}/$src ::/$dst
|
||||||
done
|
done
|
||||||
|
|
||||||
# Truncate the image to speed up the downloading/writing to the EMMC
|
# Truncate the image to speed up the downloading/writing to the EMMC
|
||||||
if [ -n "${BOARD_BOOTIMAGE_PARTITION_SIZE}" ]; then
|
if [ -n "${BOARD_BOOTIMAGE_PARTITION_SIZE}" ]; then
|
||||||
# U-Boot writes 512 bytes sectors so truncate the image at a sector boundary
|
# U-Boot writes 512 bytes sectors so truncate the image at a sector boundary
|
||||||
truncate -s $(expr \( \( ${BOOTIMG_FILES_SIZE} + 511 \) / 512 \) \* 512) ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.boot.vfat
|
truncate -s $(expr \( \( ${BOOTIMG_FILES_SIZE} + 511 \) / 512 \) \* 512) ${IMGDEPLOYDIR}/${IMAGE_NAME}.boot.vfat
|
||||||
fi
|
|
||||||
|
|
||||||
# Create the symlink
|
|
||||||
if [ -n "${IMAGE_LINK_NAME}" ] && [ -e ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.boot.vfat ]; then
|
|
||||||
ln -s ${IMAGE_NAME}.boot.vfat ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.boot.vfat
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Remove the default ".rootfs." suffix for 'boot.vfat' images
|
||||||
|
do_image_boot_vfat[imgsuffix] = "."
|
||||||
|
|
||||||
IMAGE_DEPENDS_boot.ubifs = " \
|
IMAGE_DEPENDS_boot.ubifs = " \
|
||||||
mtd-utils-native:do_populate_sysroot \
|
mtd-utils-native:do_populate_sysroot \
|
||||||
u-boot:do_deploy \
|
u-boot:do_deploy \
|
||||||
|
|
@ -79,9 +77,6 @@ IMAGE_DEPENDS_boot.ubifs = " \
|
||||||
"
|
"
|
||||||
|
|
||||||
IMAGE_CMD_boot.ubifs() {
|
IMAGE_CMD_boot.ubifs() {
|
||||||
#
|
|
||||||
# Image generation code for image type 'boot.ubifs'
|
|
||||||
#
|
|
||||||
BOOTIMG_FILES_SYMLINK="${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin"
|
BOOTIMG_FILES_SYMLINK="${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin"
|
||||||
if [ -n "${KERNEL_DEVICETREE}" ]; then
|
if [ -n "${KERNEL_DEVICETREE}" ]; then
|
||||||
for DTB in ${KERNEL_DEVICETREE}; do
|
for DTB in ${KERNEL_DEVICETREE}; do
|
||||||
|
|
@ -97,7 +92,7 @@ IMAGE_CMD_boot.ubifs() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Create temporary folder
|
# Create temporary folder
|
||||||
TMP_BOOTDIR="$(mktemp -d ${DEPLOY_DIR_IMAGE}/boot.XXXXXX)"
|
TMP_BOOTDIR="$(mktemp -d ${IMGDEPLOYDIR}/boot.XXXXXX)"
|
||||||
|
|
||||||
# Hard-link BOOTIMG_FILES into the temporary folder with the symlink filename
|
# Hard-link BOOTIMG_FILES into the temporary folder with the symlink filename
|
||||||
for item in ${BOOTIMG_FILES_SYMLINK}; do
|
for item in ${BOOTIMG_FILES_SYMLINK}; do
|
||||||
|
|
@ -113,52 +108,54 @@ IMAGE_CMD_boot.ubifs() {
|
||||||
done
|
done
|
||||||
|
|
||||||
# Build UBIFS boot image out of temp folder
|
# Build UBIFS boot image out of temp folder
|
||||||
mkfs.ubifs -r ${TMP_BOOTDIR} -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.boot.ubifs ${MKUBIFS_BOOT_ARGS}
|
mkfs.ubifs -r ${TMP_BOOTDIR} -o ${IMGDEPLOYDIR}/${IMAGE_NAME}.boot.ubifs ${MKUBIFS_BOOT_ARGS}
|
||||||
|
|
||||||
# Create the symlink
|
|
||||||
if [ -n "${IMAGE_LINK_NAME}" ] && [ -e ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.boot.ubifs ]; then
|
|
||||||
ln -s ${IMAGE_NAME}.boot.ubifs ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.boot.ubifs
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Remove the temporary folder
|
# Remove the temporary folder
|
||||||
rm -rf ${TMP_BOOTDIR}
|
rm -rf ${TMP_BOOTDIR}
|
||||||
}
|
}
|
||||||
|
|
||||||
IMAGE_DEPENDS_recovery.vfat = "${RECOVERY_INITRAMFS_IMAGE}:do_rootfs"
|
# Remove the default ".rootfs." suffix for 'boot.ubifs' images
|
||||||
|
do_image_boot_ubifs[imgsuffix] = "."
|
||||||
|
|
||||||
# The recovery vfat image requires the boot image to be built before
|
#
|
||||||
IMAGE_TYPEDEP_recovery.vfat = "${SDIMG_BOOTFS_TYPE}"
|
# Transfer the dependences from the basetype 'boot' to the actual image types
|
||||||
|
#
|
||||||
|
# This is needed because otherwise the IMAGE_DEPENDS_<actualtype> is not used and the build fails.
|
||||||
|
#
|
||||||
|
IMAGE_TYPEDEP_boot = " \
|
||||||
|
${@bb.utils.contains('IMAGE_FSTYPES', 'boot.ubifs', 'boot.ubifs', '', d)} \
|
||||||
|
${@bb.utils.contains('IMAGE_FSTYPES', 'boot.vfat', 'boot.vfat', '', d)} \
|
||||||
|
"
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# RECOVERY IMAGES #
|
||||||
|
################################################################################
|
||||||
|
IMAGE_DEPENDS_recovery.vfat = " \
|
||||||
|
${RECOVERY_INITRAMFS_IMAGE}:do_image_complete \
|
||||||
|
"
|
||||||
|
|
||||||
IMAGE_CMD_recovery.vfat() {
|
IMAGE_CMD_recovery.vfat() {
|
||||||
#
|
# Use 'boot.vfat' image as base
|
||||||
# Image generation code for image type 'recovery.vfat'
|
cp --remove-destination ${IMGDEPLOYDIR}/${IMAGE_NAME}.boot.vfat ${IMGDEPLOYDIR}/${IMAGE_NAME}.recovery.vfat
|
||||||
#
|
|
||||||
# Copy the boot.vfat image
|
|
||||||
cp ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.boot.vfat ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.recovery.vfat
|
|
||||||
|
|
||||||
# Copy the recovery init script into the VFAT image
|
# Copy the recovery U-Boot script and recovery initramfs into the VFAT image
|
||||||
mcopy -o -i ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.recovery.vfat -s ${DEPLOY_DIR_IMAGE}/recovery.scr ::/boot.scr
|
mcopy -o -i ${IMGDEPLOYDIR}/${IMAGE_NAME}.recovery.vfat -s ${DEPLOY_DIR_IMAGE}/recovery.scr ::/boot.scr
|
||||||
|
mcopy -i ${IMGDEPLOYDIR}/${IMAGE_NAME}.recovery.vfat -s ${DEPLOY_DIR_IMAGE}/${RECOVERY_INITRAMFS_IMAGE}-${MACHINE}.cpio.gz.u-boot.tf ::/uramdisk-recovery.img
|
||||||
# Copy the recovery ramdisk into the VFAT image
|
|
||||||
mcopy -i ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.recovery.vfat -s ${DEPLOY_DIR_IMAGE}/${RECOVERY_INITRAMFS_IMAGE}-${MACHINE}.cpio.gz.u-boot.tf ::/uramdisk-recovery.img
|
|
||||||
|
|
||||||
# Create the symlink
|
|
||||||
if [ -n "${IMAGE_LINK_NAME}" ] && [ -e ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.recovery.vfat ]; then
|
|
||||||
ln -s ${IMAGE_NAME}.recovery.vfat ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.recovery.vfat
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Remove the default ".rootfs." suffix for 'recovery.vfat' images
|
||||||
|
do_image_recovery_vfat[imgsuffix] = "."
|
||||||
|
|
||||||
|
IMAGE_TYPEDEP_recovery.vfat = "boot.vfat"
|
||||||
|
|
||||||
IMAGE_DEPENDS_recovery.ubifs = " \
|
IMAGE_DEPENDS_recovery.ubifs = " \
|
||||||
mtd-utils-native:do_populate_sysroot \
|
mtd-utils-native:do_populate_sysroot \
|
||||||
u-boot:do_deploy \
|
u-boot:do_deploy \
|
||||||
virtual/kernel:do_deploy \
|
virtual/kernel:do_deploy \
|
||||||
${RECOVERY_INITRAMFS_IMAGE}:do_rootfs \
|
${RECOVERY_INITRAMFS_IMAGE}:do_image_complete \
|
||||||
"
|
"
|
||||||
|
|
||||||
IMAGE_CMD_recovery.ubifs() {
|
IMAGE_CMD_recovery.ubifs() {
|
||||||
#
|
|
||||||
# Image generation code for image type 'recovery.ubifs'
|
|
||||||
#
|
|
||||||
RECOVERYIMG_FILES_SYMLINK="${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin"
|
RECOVERYIMG_FILES_SYMLINK="${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin"
|
||||||
if [ -n "${KERNEL_DEVICETREE}" ]; then
|
if [ -n "${KERNEL_DEVICETREE}" ]; then
|
||||||
for DTB in ${KERNEL_DEVICETREE}; do
|
for DTB in ${KERNEL_DEVICETREE}; do
|
||||||
|
|
@ -169,7 +166,7 @@ IMAGE_CMD_recovery.ubifs() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Create temporary folder
|
# Create temporary folder
|
||||||
TMP_RECOVERYDIR="$(mktemp -d ${DEPLOY_DIR_IMAGE}/recovery.XXXXXX)"
|
TMP_RECOVERYDIR="$(mktemp -d ${IMGDEPLOYDIR}/recovery.XXXXXX)"
|
||||||
|
|
||||||
# Hard-link RECOVERYIMG_FILES into the temporary folder with the symlink filename
|
# Hard-link RECOVERYIMG_FILES into the temporary folder with the symlink filename
|
||||||
for item in ${RECOVERYIMG_FILES_SYMLINK}; do
|
for item in ${RECOVERYIMG_FILES_SYMLINK}; do
|
||||||
|
|
@ -177,24 +174,33 @@ IMAGE_CMD_recovery.ubifs() {
|
||||||
ln ${orig} ${TMP_RECOVERYDIR}/$(basename ${item})
|
ln ${orig} ${TMP_RECOVERYDIR}/$(basename ${item})
|
||||||
done
|
done
|
||||||
|
|
||||||
# Copy the recovery init script.
|
# Copy the recovery U-Boot script and recovery initramfs into the temporary folder
|
||||||
cp ${DEPLOY_DIR_IMAGE}/recovery.scr ${TMP_RECOVERYDIR}/boot.scr
|
cp ${DEPLOY_DIR_IMAGE}/recovery.scr ${TMP_RECOVERYDIR}/boot.scr
|
||||||
|
|
||||||
# Copy the recovery ramdisk image.
|
|
||||||
cp ${DEPLOY_DIR_IMAGE}/${RECOVERY_INITRAMFS_IMAGE}-${MACHINE}.cpio.gz.u-boot.tf ${TMP_RECOVERYDIR}/uramdisk-recovery.img
|
cp ${DEPLOY_DIR_IMAGE}/${RECOVERY_INITRAMFS_IMAGE}-${MACHINE}.cpio.gz.u-boot.tf ${TMP_RECOVERYDIR}/uramdisk-recovery.img
|
||||||
|
|
||||||
# Build UBIFS boot image out of temp folder
|
# Build UBIFS recovery image out of temp folder
|
||||||
mkfs.ubifs -r ${TMP_RECOVERYDIR} -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.recovery.ubifs ${MKUBIFS_BOOT_ARGS}
|
mkfs.ubifs -r ${TMP_RECOVERYDIR} -o ${IMGDEPLOYDIR}/${IMAGE_NAME}.recovery.ubifs ${MKUBIFS_BOOT_ARGS}
|
||||||
|
|
||||||
# Create the symlink
|
|
||||||
if [ -n "${IMAGE_LINK_NAME}" ] && [ -e ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.recovery.ubifs ]; then
|
|
||||||
ln -s ${IMAGE_NAME}.recovery.ubifs ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.recovery.ubifs
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Remove the temporary folder
|
# Remove the temporary folder
|
||||||
rm -rf ${TMP_RECOVERYDIR}
|
rm -rf ${TMP_RECOVERYDIR}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Remove the default ".rootfs." suffix for 'recovery.ubifs' images
|
||||||
|
do_image_recovery_ubifs[imgsuffix] = "."
|
||||||
|
|
||||||
|
#
|
||||||
|
# Transfer the dependences from the basetype 'recovery' to the actual image types
|
||||||
|
#
|
||||||
|
# This is needed because otherwise the IMAGE_DEPENDS_<actualtype> is not used and the build fails.
|
||||||
|
#
|
||||||
|
IMAGE_TYPEDEP_recovery = " \
|
||||||
|
${@bb.utils.contains('IMAGE_FSTYPES', 'recovery.ubifs', 'recovery.ubifs', '', d)} \
|
||||||
|
${@bb.utils.contains('IMAGE_FSTYPES', 'recovery.vfat', 'recovery.vfat boot.vfat', '', d)} \
|
||||||
|
"
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# TRUSTFENCE SIGN #
|
||||||
|
################################################################################
|
||||||
trustence_sign_cpio() {
|
trustence_sign_cpio() {
|
||||||
#
|
#
|
||||||
# Image generation code for image type 'cpio.gz.u-boot.tf'
|
# Image generation code for image type 'cpio.gz.u-boot.tf'
|
||||||
|
|
@ -217,6 +223,9 @@ CONVERSIONTYPES += "gz.u-boot.tf"
|
||||||
CONVERSION_CMD_gz.u-boot.tf = "${CONVERSION_CMD_gz.u-boot}; trustence_sign_cpio ${IMAGE_NAME}.rootfs.${type}.gz.u-boot"
|
CONVERSION_CMD_gz.u-boot.tf = "${CONVERSION_CMD_gz.u-boot}; trustence_sign_cpio ${IMAGE_NAME}.rootfs.${type}.gz.u-boot"
|
||||||
IMAGE_TYPES += "cpio.gz.u-boot.tf"
|
IMAGE_TYPES += "cpio.gz.u-boot.tf"
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# SDCARD IMAGES #
|
||||||
|
################################################################################
|
||||||
# Set alignment to 4MB [in KiB]
|
# Set alignment to 4MB [in KiB]
|
||||||
IMAGE_ROOTFS_ALIGNMENT = "4096"
|
IMAGE_ROOTFS_ALIGNMENT = "4096"
|
||||||
|
|
||||||
|
|
@ -224,12 +233,12 @@ IMAGE_ROOTFS_ALIGNMENT = "4096"
|
||||||
BOARD_BOOTIMAGE_PARTITION_SIZE ??= "65536"
|
BOARD_BOOTIMAGE_PARTITION_SIZE ??= "65536"
|
||||||
|
|
||||||
# SD card image name
|
# SD card image name
|
||||||
SDIMG = "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.sdcard"
|
SDIMG = "${IMGDEPLOYDIR}/${IMAGE_NAME}.rootfs.sdcard"
|
||||||
|
|
||||||
SDIMG_BOOTFS_TYPE ?= "boot.vfat"
|
SDIMG_BOOTFS_TYPE ?= "boot.vfat"
|
||||||
SDIMG_BOOTFS = "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.${SDIMG_BOOTFS_TYPE}"
|
SDIMG_BOOTFS = "${IMGDEPLOYDIR}/${IMAGE_NAME}.${SDIMG_BOOTFS_TYPE}"
|
||||||
SDIMG_ROOTFS_TYPE ?= "ext4"
|
SDIMG_ROOTFS_TYPE ?= "ext4"
|
||||||
SDIMG_ROOTFS = "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.${SDIMG_ROOTFS_TYPE}"
|
SDIMG_ROOTFS = "${IMGDEPLOYDIR}/${IMAGE_NAME}.rootfs.${SDIMG_ROOTFS_TYPE}"
|
||||||
|
|
||||||
IMAGE_DEPENDS_sdcard = " \
|
IMAGE_DEPENDS_sdcard = " \
|
||||||
dosfstools-native:do_populate_sysroot \
|
dosfstools-native:do_populate_sysroot \
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue