summaryrefslogtreecommitdiffstats
path: root/classes/image_types_ostree.bbclass
diff options
context:
space:
mode:
Diffstat (limited to 'classes/image_types_ostree.bbclass')
-rw-r--r--classes/image_types_ostree.bbclass23
1 files changed, 18 insertions, 5 deletions
diff --git a/classes/image_types_ostree.bbclass b/classes/image_types_ostree.bbclass
index 4095de0..29da78e 100644
--- a/classes/image_types_ostree.bbclass
+++ b/classes/image_types_ostree.bbclass
@@ -6,10 +6,11 @@ OSTREE_ROOTFS ??= "${WORKDIR}/ostree-rootfs"
6OSTREE_COMMIT_SUBJECT ??= "Commit-id: ${IMAGE_NAME}" 6OSTREE_COMMIT_SUBJECT ??= "Commit-id: ${IMAGE_NAME}"
7OSTREE_COMMIT_BODY ??= "" 7OSTREE_COMMIT_BODY ??= ""
8OSTREE_UPDATE_SUMMARY ??= "0" 8OSTREE_UPDATE_SUMMARY ??= "0"
9OSTREE_DEPLOY_DEVICETREE ??= "0"
9 10
10BUILD_OSTREE_TARBALL ??= "1" 11BUILD_OSTREE_TARBALL ??= "1"
11 12
12SYSTEMD_USED = "${@oe.utils.ifelse(d.getVar('VIRTUAL-RUNTIME_init_manager', True) == 'systemd', 'true', '')}" 13SYSTEMD_USED = "${@oe.utils.ifelse(d.getVar('VIRTUAL-RUNTIME_init_manager') == 'systemd', 'true', '')}"
13 14
14IMAGE_CMD_TAR = "tar --xattrs --xattrs-include=*" 15IMAGE_CMD_TAR = "tar --xattrs --xattrs-include=*"
15CONVERSION_CMD_tar = "touch ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}; ${IMAGE_CMD_TAR} --numeric-owner -cf ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.tar -C ${OTA_IMAGE_ROOTFS} . || [ $? -eq 1 ]" 16CONVERSION_CMD_tar = "touch ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}; ${IMAGE_CMD_TAR} --numeric-owner -cf ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.tar -C ${OTA_IMAGE_ROOTFS} . || [ $? -eq 1 ]"
@@ -103,18 +104,27 @@ IMAGE_CMD_ostree () {
103 ln -sf var/roothome root 104 ln -sf var/roothome root
104 fi 105 fi
105 106
106 checksum=`sha256sum ${DEPLOY_DIR_IMAGE}/${OSTREE_KERNEL} | cut -f 1 -d " "`
107
108 cp ${DEPLOY_DIR_IMAGE}/${OSTREE_KERNEL} boot/vmlinuz-${checksum}
109
110 if [ "${KERNEL_IMAGETYPE}" = "fitImage" ]; then 107 if [ "${KERNEL_IMAGETYPE}" = "fitImage" ]; then
111 # this is a hack for ostree not to override init= in kernel cmdline - 108 # this is a hack for ostree not to override init= in kernel cmdline -
112 # make it think that the initramfs is present (while it is in FIT image) 109 # make it think that the initramfs is present (while it is in FIT image)
110 # since initramfs is fake file, it does not need to be included in checksum
111 checksum=$(sha256sum ${DEPLOY_DIR_IMAGE}/${OSTREE_KERNEL} | cut -f 1 -d " ")
113 touch boot/initramfs-${checksum} 112 touch boot/initramfs-${checksum}
114 else 113 else
114 if [ "${OSTREE_DEPLOY_DEVICETREE}" = "1" ] && [ -n "${KERNEL_DEVICETREE}" ]; then
115 checksum=$(cat ${DEPLOY_DIR_IMAGE}/${OSTREE_KERNEL} ${DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE}-${MACHINE}.${INITRAMFS_FSTYPES} ${KERNEL_DEVICETREE} | sha256sum | cut -f 1 -d " ")
116 for DTS_FILE in ${KERNEL_DEVICETREE}; do
117 DTS_FILE_BASENAME=$(basename ${DTS_FILE})
118 cp ${DEPLOY_DIR_IMAGE}/${DTS_FILE_BASENAME} boot/devicetree-${DTS_FILE_BASENAME}-${checksum}
119 done
120 else
121 checksum=$(cat ${DEPLOY_DIR_IMAGE}/${OSTREE_KERNEL} ${DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE}-${MACHINE}.${INITRAMFS_FSTYPES} | sha256sum | cut -f 1 -d " ")
122 fi
115 cp ${DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE}-${MACHINE}.${INITRAMFS_FSTYPES} boot/initramfs-${checksum} 123 cp ${DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE}-${MACHINE}.${INITRAMFS_FSTYPES} boot/initramfs-${checksum}
116 fi 124 fi
117 125
126 cp ${DEPLOY_DIR_IMAGE}/${OSTREE_KERNEL} boot/vmlinuz-${checksum}
127
118 # Copy image manifest 128 # Copy image manifest
119 cat ${IMAGE_MANIFEST} | cut -d " " -f1,3 > usr/package.manifest 129 cat ${IMAGE_MANIFEST} | cut -d " " -f1,3 > usr/package.manifest
120} 130}
@@ -160,6 +170,9 @@ IMAGE_CMD_ostreepush () {
160 170
161IMAGE_TYPEDEP_garagesign = "ostreepush" 171IMAGE_TYPEDEP_garagesign = "ostreepush"
162do_image_garagesign[depends] += "unzip-native:do_populate_sysroot" 172do_image_garagesign[depends] += "unzip-native:do_populate_sysroot"
173# This lock solves OTA-1866, which is that removing GARAGE_SIGN_REPO while using
174# garage-sign simultaneously for two images often causes problems.
175do_image_garagesign[lockfiles] += "${DEPLOY_DIR_IMAGE}/garagesign.lock"
163IMAGE_CMD_garagesign () { 176IMAGE_CMD_garagesign () {
164 if [ -n "${SOTA_PACKED_CREDENTIALS}" ]; then 177 if [ -n "${SOTA_PACKED_CREDENTIALS}" ]; then
165 # if credentials are issued by a server that doesn't support offline signing, exit silently 178 # if credentials are issued by a server that doesn't support offline signing, exit silently