summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMing Liu <liu.ming50@gmail.com>2020-11-25 10:18:48 +0100
committerMing Liu <liu.ming50@gmail.com>2020-11-25 10:18:48 +0100
commit45dc621274f1c798619ffb34be4b1f8d1f657cab (patch)
tree9717b086b1368917722016c4dbc86d421a0314f7
parent14f693fc330812c289e2be24a338426f99e2a151 (diff)
downloadmeta-updater-45dc621274f1c798619ffb34be4b1f8d1f657cab.tar.gz
image_types_ota.bbclass: call oe_mkext234fs to make ota-ext4 image
We dont have to maintain our own function calculate_size and use dd/mkfs.ext4 to generate ota-ext4 image, they have been done in OE by get_rootfs_size/oe_mkext234fs functions, we could just use them. The major benefit could be we can sync the future fixes/changes in these functions from OE, also avoid maintaining some duplicated code in image_types_ota.bbclass. Signed-off-by: Ming Liu <liu.ming50@gmail.com>
-rw-r--r--classes/image_types_ota.bbclass62
1 files changed, 6 insertions, 56 deletions
diff --git a/classes/image_types_ota.bbclass b/classes/image_types_ota.bbclass
index 36a6a64..753136e 100644
--- a/classes/image_types_ota.bbclass
+++ b/classes/image_types_ota.bbclass
@@ -1,42 +1,3 @@
1# Image to use with u-boot as BIOS and OSTree deployment system
2
3# Boot filesystem size in MiB
4# OSTree updates may require some space on boot file system for
5# boot scripts, kernel and initramfs images
6#
7calculate_size () {
8 BASE=$1
9 SCALE=$2
10 MIN=$3
11 MAX=$4
12 EXTRA=$5
13 ALIGN=$6
14
15 SIZE=`echo "$BASE * $SCALE" | bc -l`
16 REM=`echo $SIZE | cut -d "." -f 2`
17 SIZE=`echo $SIZE | cut -d "." -f 1`
18
19 if [ -n "$REM" -o ! "$REM" -eq 0 ]; then
20 SIZE=`expr $SIZE \+ 1`
21 fi
22
23 if [ "$SIZE" -lt "$MIN" ]; then
24 SIZE=$MIN
25 fi
26
27 SIZE=`expr $SIZE \+ $EXTRA`
28 SIZE=`expr $SIZE \+ $ALIGN \- 1`
29 SIZE=`expr $SIZE \- $SIZE \% $ALIGN`
30
31 if [ -n "$MAX" ]; then
32 if [ "$SIZE" -gt "$MAX" ]; then
33 return -1
34 fi
35 fi
36
37 echo "${SIZE}"
38}
39
40OTA_SYSROOT = "${WORKDIR}/ota-sysroot" 1OTA_SYSROOT = "${WORKDIR}/ota-sysroot"
41TAR_IMAGE_ROOTFS_task-image-ota = "${OTA_SYSROOT}" 2TAR_IMAGE_ROOTFS_task-image-ota = "${OTA_SYSROOT}"
42IMAGE_TYPEDEP_ota = "ostreecommit" 3IMAGE_TYPEDEP_ota = "ostreecommit"
@@ -108,24 +69,13 @@ IMAGE_CMD_ota () {
108 echo "{\"${ostree_target_hash}\":\"${GARAGE_TARGET_NAME}-${target_version}\"}" > ${OTA_SYSROOT}/ostree/deploy/${OSTREE_OSNAME}/var/sota/import/installed_versions 69 echo "{\"${ostree_target_hash}\":\"${GARAGE_TARGET_NAME}-${target_version}\"}" > ${OTA_SYSROOT}/ostree/deploy/${OSTREE_OSNAME}/var/sota/import/installed_versions
109} 70}
110 71
72EXTRA_IMAGECMD_ota-ext4 = "-O ^64bit -L otaroot -i 4096"
111IMAGE_TYPEDEP_ota-ext4 = "ota" 73IMAGE_TYPEDEP_ota-ext4 = "ota"
112do_image_ota_ext4[depends] = "e2fsprogs-native:do_populate_sysroot" 74IMAGE_ROOTFS_task-image-ota-ext4 = "${OTA_SYSROOT}"
113IMAGE_CMD_ota-ext4 () { 75IMAGE_CMD_ota-ext4 () {
114 # Calculate image size 76 ln -sf ${STAGING_DIR_NATIVE}${base_sbindir_native}/mkfs.ext4 ${STAGING_DIR_NATIVE}${base_sbindir_native}/mkfs.ota-ext4
115 OTA_ROOTFS_SIZE=$(calculate_size `du -ks ${OTA_SYSROOT} | cut -f 1` "${IMAGE_OVERHEAD_FACTOR}" "${IMAGE_ROOTFS_SIZE}" "${IMAGE_ROOTFS_MAXSIZE}" `expr ${IMAGE_ROOTFS_EXTRA_SPACE}` "${IMAGE_ROOTFS_ALIGNMENT}") 77 ln -sf ${STAGING_DIR_NATIVE}${base_sbindir_native}/fsck.ext4 ${STAGING_DIR_NATIVE}${base_sbindir_native}/fsck.ota-ext4
116 78 oe_mkext234fs ota-ext4 ${EXTRA_IMAGECMD}
117 if [ ${OTA_ROOTFS_SIZE} -lt 0 ]; then
118 bbfatal "create_ota failed to calculate OTA rootfs size!"
119 fi
120
121 eval local COUNT=\"0\"
122 eval local MIN_COUNT=\"60\"
123 if [ ${OTA_ROOTFS_SIZE} -lt ${MIN_COUNT} ]; then
124 eval COUNT=\"${MIN_COUNT}\"
125 fi
126
127 dd if=/dev/zero of=${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.ota-ext4 seek=${OTA_ROOTFS_SIZE} count=${COUNT} bs=1024
128 mkfs.ext4 -O ^64bit ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.ota-ext4 -L otaroot -d ${OTA_SYSROOT}
129} 79}
130 80do_image_ota_ext4[depends] = "e2fsprogs-native:do_populate_sysroot"
131do_image_wic[depends] += "${@bb.utils.contains('DISTRO_FEATURES', 'sota', '%s:do_image_ota_ext4' % d.getVar('PN'), '', d)}" 81do_image_wic[depends] += "${@bb.utils.contains('DISTRO_FEATURES', 'sota', '%s:do_image_ota_ext4' % d.getVar('PN'), '', d)}"