]> code.ossystems Code Review - meta-freescale.git/commitdiff
image_types_fsl.bbclass: Refactor boot image duplicated code
authorOtavio Salvador <otavio@ossystems.com.br>
Thu, 15 Oct 2015 18:03:31 +0000 (15:03 -0300)
committerOtavio Salvador <otavio@ossystems.com.br>
Tue, 19 Apr 2016 18:03:21 +0000 (15:03 -0300)
The code which copies the boot scripts and Device Tree files is
duplicated across the different image types. This patch reworks this
code to avoid this duplication.

Change-Id: Ib9405067a5419e1b295dfac9e3d3bd9b896d424e
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
classes/image_types_fsl.bbclass

index 80722d687ac00fc9b1704f5113a25c13f1b585f3..fc7d438c207af8312b3282c6b0e3783bb4e358d5 100644 (file)
@@ -92,6 +92,45 @@ SDCARD_GENERATION_COMMAND_mx6 = "generate_imx_sdcard"
 SDCARD_GENERATION_COMMAND_mx7 = "generate_imx_sdcard"
 SDCARD_GENERATION_COMMAND_vf = "generate_imx_sdcard"
 
+
+#
+# Generate the boot image with the boot scripts and required Device Tree
+# files
+_generate_boot_image() {
+       local boot_part=$1
+
+       # Create boot partition image
+       BOOT_BLOCKS=$(LC_ALL=C parted -s ${SDCARD} unit b print \
+                         | awk "/ $boot_part / { print substr(\$4, 1, length(\$4 -1)) / 1024 }")
+
+       rm -f ${WORKDIR}/boot.img
+       mkfs.vfat -n "${BOOTDD_VOLUME_ID}" -S 512 -F 32 -C ${WORKDIR}/boot.img $BOOT_BLOCKS
+
+       mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin ::/${KERNEL_IMAGETYPE}
+
+       # Copy boot scripts
+       for item in ${BOOT_SCRIPTS}; do
+               src=`echo $item | awk -F':' '{ print $1 }'`
+               dst=`echo $item | awk -F':' '{ print $2 }'`
+
+               mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/$src ::/$dst
+       done
+
+       # Copy device tree file
+       if test -n "${KERNEL_DEVICETREE}"; then
+               for DTS_FILE in ${KERNEL_DEVICETREE}; do
+                       DTS_BASE_NAME=`basename ${DTS_FILE} | awk -F "." '{print $1}'`
+                       if [ -e "${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${DTS_BASE_NAME}.dtb" ]; then
+                               kernel_bin="`readlink ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin`"
+                               kernel_bin_for_dtb="`readlink ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${DTS_BASE_NAME}.dtb | sed "s,$DTS_BASE_NAME,${MACHINE},g;s,\.dtb$,.bin,g"`"
+                               if [ $kernel_bin = $kernel_bin_for_dtb ]; then
+                                       mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${DTS_BASE_NAME}.dtb ::/${DTS_BASE_NAME}.dtb
+                               fi
+                       fi
+               done
+       fi
+}
+
 #
 # Create an image that can by written onto a SD card using dd for use
 # with i.MX SoC family
@@ -150,35 +189,7 @@ generate_imx_sdcard () {
                ;;
        esac
 
-       # Create boot partition image
-       BOOT_BLOCKS=$(LC_ALL=C parted -s ${SDCARD} unit b print \
-                         | awk '/ 1 / { print substr($4, 1, length($4 -1)) / 1024 }')
-       rm -f ${WORKDIR}/boot.img
-       mkfs.vfat -n "${BOOTDD_VOLUME_ID}" -S 512 -F 32 -C ${WORKDIR}/boot.img $BOOT_BLOCKS
-
-       mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin ::/${KERNEL_IMAGETYPE}
-
-       # Copy boot scripts
-       for item in ${BOOT_SCRIPTS}; do
-               src=`echo $item | awk -F':' '{ print $1 }'`
-               dst=`echo $item | awk -F':' '{ print $2 }'`
-
-               mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/$src ::/$dst
-       done
-
-       # Copy device tree file
-       if test -n "${KERNEL_DEVICETREE}"; then
-               for DTS_FILE in ${KERNEL_DEVICETREE}; do
-                       DTS_BASE_NAME=`basename ${DTS_FILE} | awk -F "." '{print $1}'`
-                       if [ -e "${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${DTS_BASE_NAME}.dtb" ]; then
-                               kernel_bin="`readlink ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin`"
-                               kernel_bin_for_dtb="`readlink ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${DTS_BASE_NAME}.dtb | sed "s,$DTS_BASE_NAME,${MACHINE},g;s,\.dtb$,.bin,g"`"
-                               if [ $kernel_bin = $kernel_bin_for_dtb ]; then
-                                       mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${DTS_BASE_NAME}.dtb ::/${DTS_BASE_NAME}.dtb
-                               fi
-                       fi
-               done
-       fi
+       _generate_boot_image 1
 
        # Burn Partition
        dd if=${WORKDIR}/boot.img of=${SDCARD} conv=notrunc,fsync seek=1 bs=$(expr ${IMAGE_ROOTFS_ALIGNMENT} \* 1024)
@@ -255,24 +266,8 @@ generate_mxs_sdcard () {
                parted -s ${SDCARD} unit KiB mkpart primary $(expr  ${IMAGE_ROOTFS_ALIGNMENT} \+ ${BOOT_SPACE_ALIGNED}) $(expr ${IMAGE_ROOTFS_ALIGNMENT} \+ ${BOOT_SPACE_ALIGNED} \+ $ROOTFS_SIZE)
 
                dd if=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.uboot.mxsboot-sdcard of=${SDCARD} conv=notrunc seek=1 bs=$(expr 1024 \* 1024)
-               BOOT_BLOCKS=$(LC_ALL=C parted -s ${SDCARD} unit b print \
-               | awk '/ 2 / { print substr($4, 1, length($4 -1)) / 1024 }')
-
-               rm -f ${WORKDIR}/boot.img
-               mkfs.vfat -n "${BOOTDD_VOLUME_ID}" -S 512 -F 32 -C ${WORKDIR}/boot.img $BOOT_BLOCKS
-               mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin ::/${KERNEL_IMAGETYPE}
-               if test -n "${KERNEL_DEVICETREE}"; then
-                       for DTS_FILE in ${KERNEL_DEVICETREE}; do
-                               DTS_BASE_NAME=`basename ${DTS_FILE} | awk -F "." '{print $1}'`
-                               if [ -e "${KERNEL_IMAGETYPE}-${DTS_BASE_NAME}.dtb" ]; then
-                                       kernel_bin="`readlink ${KERNEL_IMAGETYPE}-${MACHINE}.bin`"
-                                       kernel_bin_for_dtb="`readlink ${KERNEL_IMAGETYPE}-${DTS_BASE_NAME}.dtb | sed "s,$DTS_BASE_NAME,${MACHINE},g;s,\.dtb$,.bin,g"`"
-                                       if [ $kernel_bin = $kernel_bin_for_dtb ]; then
-                                               mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${DTS_BASE_NAME}.dtb ::/${DTS_BASE_NAME}.dtb
-                                       fi
-                               fi
-                       done
-               fi
+
+               _generate_boot_image 2
 
                dd if=${WORKDIR}/boot.img of=${SDCARD} conv=notrunc seek=2 bs=$(expr 1024 \* 1024)
                ;;