summaryrefslogtreecommitdiffstats
path: root/external/meta-updater/classes
diff options
context:
space:
mode:
Diffstat (limited to 'external/meta-updater/classes')
-rw-r--r--external/meta-updater/classes/image_types_ostree.bbclass86
-rw-r--r--external/meta-updater/classes/image_types_ota.bbclass31
-rw-r--r--external/meta-updater/classes/sota.bbclass10
-rw-r--r--external/meta-updater/classes/sota_freedom-u540.bbclass12
-rw-r--r--external/meta-updater/classes/sota_m3ulcb.bbclass4
-rw-r--r--external/meta-updater/classes/sota_minnowboard.bbclass4
-rw-r--r--external/meta-updater/classes/sota_porter.bbclass4
-rw-r--r--external/meta-updater/classes/sota_qemux86-64.bbclass2
-rw-r--r--external/meta-updater/classes/sota_raspberrypi.bbclass13
-rw-r--r--external/meta-updater/classes/sota_sanity.bbclass23
10 files changed, 104 insertions, 85 deletions
diff --git a/external/meta-updater/classes/image_types_ostree.bbclass b/external/meta-updater/classes/image_types_ostree.bbclass
index 533d338b..0b928a37 100644
--- a/external/meta-updater/classes/image_types_ostree.bbclass
+++ b/external/meta-updater/classes/image_types_ostree.bbclass
@@ -1,13 +1,13 @@
# OSTree deployment
-inherit distro_features_check
+inherit features_check
+
+REQUIRED_DISTRO_FEATURES = "usrmerge"
-OSTREE_KERNEL ??= "${KERNEL_IMAGETYPE}"
OSTREE_ROOTFS ??= "${WORKDIR}/ostree-rootfs"
OSTREE_COMMIT_SUBJECT ??= "Commit-id: ${IMAGE_NAME}"
OSTREE_COMMIT_BODY ??= ""
OSTREE_COMMIT_VERSION ??= "${DISTRO_VERSION}"
OSTREE_UPDATE_SUMMARY ??= "0"
-OSTREE_DEPLOY_DEVICETREE ??= "0"
BUILD_OSTREE_TARBALL ??= "1"
@@ -17,16 +17,25 @@ IMAGE_CMD_TAR = "tar --xattrs --xattrs-include=*"
CONVERSION_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 ${TAR_IMAGE_ROOTFS} . || [ $? -eq 1 ]"
CONVERSIONTYPES_append = " tar"
-REQUIRED_DISTRO_FEATURES = "usrmerge"
TAR_IMAGE_ROOTFS_task-image-ostree = "${OSTREE_ROOTFS}"
+
+python prepare_ostree_rootfs() {
+ import oe.path
+ import shutil
+
+ ostree_rootfs = d.getVar("OSTREE_ROOTFS")
+ if os.path.lexists(ostree_rootfs):
+ bb.utils.remove(ostree_rootfs, True)
+
+ # Copy required as we change permissions on some files.
+ image_rootfs = d.getVar("IMAGE_ROOTFS")
+ oe.path.copyhardlinktree(image_rootfs, ostree_rootfs)
+}
+
do_image_ostree[dirs] = "${OSTREE_ROOTFS}"
-do_image_ostree[cleandirs] = "${OSTREE_ROOTFS}"
+do_image_ostree[prefuncs] += "prepare_ostree_rootfs"
do_image_ostree[depends] = "coreutils-native:do_populate_sysroot virtual/kernel:do_deploy ${INITRAMFS_IMAGE}:do_image_complete"
IMAGE_CMD_ostree () {
- cp -a ${IMAGE_ROOTFS}/* ${OSTREE_ROOTFS}
- chmod a+rx ${OSTREE_ROOTFS}
- sync
-
for d in var/*; do
if [ "${d}" != "var/local" ]; then
rm -rf ${d}
@@ -37,9 +46,6 @@ IMAGE_CMD_ostree () {
mkdir sysroot
ln -sf sysroot/ostree ostree
- rm -rf tmp/*
- ln -sf sysroot/tmp tmp
-
mkdir -p usr/rootdirs
mv etc usr/
@@ -48,13 +54,11 @@ IMAGE_CMD_ostree () {
mkdir -p usr/etc/tmpfiles.d
tmpfiles_conf=usr/etc/tmpfiles.d/00ostree-tmpfiles.conf
echo "d /var/rootdirs 0755 root root -" >>${tmpfiles_conf}
- echo "L /var/rootdirs/home - - - - /sysroot/home" >>${tmpfiles_conf}
else
mkdir -p usr/etc/init.d
tmpfiles_conf=usr/etc/init.d/tmpfiles.sh
echo '#!/bin/sh' > ${tmpfiles_conf}
echo "mkdir -p /var/rootdirs; chmod 755 /var/rootdirs" >> ${tmpfiles_conf}
- echo "ln -sf /sysroot/home /var/rootdirs/home" >> ${tmpfiles_conf}
ln -s ../init.d/tmpfiles.sh usr/etc/rcS.d/S20tmpfiles.sh
fi
@@ -63,13 +67,11 @@ IMAGE_CMD_ostree () {
mkdir -p usr/share/sota/
echo -n "${OSTREE_BRANCHNAME}" > usr/share/sota/branchname
- # Preserve data in /home to be later copied to /sysroot/home by sysroot
- # generating procedure
- mkdir -p usr/homedirs
- if [ -d "home" ] && [ ! -L "home" ]; then
- mv home usr/homedirs/home
- ln -sf var/rootdirs/home home
- fi
+ # home directories get copied from the OE root later to the final sysroot
+ # Create a symlink to var/rootdirs/home to make sure the OSTree deployment
+ # redirects /home to /var/rootdirs/home.
+ rm -rf home/
+ ln -sf var/rootdirs/home home
# Move persistent directories to /var
dirs="opt mnt media srv"
@@ -130,27 +132,6 @@ IMAGE_CMD_ostree () {
ln -sf ../var/usrlocal usr/local
- if [ "${KERNEL_IMAGETYPE}" = "fitImage" ]; then
- # this is a hack for ostree not to override init= in kernel cmdline -
- # make it think that the initramfs is present (while it is in FIT image)
- # since initramfs is fake file, it does not need to be included in checksum
- checksum=$(sha256sum ${DEPLOY_DIR_IMAGE}/${OSTREE_KERNEL} | cut -f 1 -d " ")
- touch boot/initramfs-${checksum}
- else
- if [ "${OSTREE_DEPLOY_DEVICETREE}" = "1" ] && [ -n "${KERNEL_DEVICETREE}" ]; then
- checksum=$(cat ${DEPLOY_DIR_IMAGE}/${OSTREE_KERNEL} ${DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE}-${MACHINE}.${INITRAMFS_FSTYPES} ${KERNEL_DEVICETREE} | sha256sum | cut -f 1 -d " ")
- for DTS_FILE in ${KERNEL_DEVICETREE}; do
- DTS_FILE_BASENAME=$(basename ${DTS_FILE})
- cp ${DEPLOY_DIR_IMAGE}/${DTS_FILE_BASENAME} boot/devicetree-${DTS_FILE_BASENAME}-${checksum}
- done
- else
- checksum=$(cat ${DEPLOY_DIR_IMAGE}/${OSTREE_KERNEL} ${DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE}-${MACHINE}.${INITRAMFS_FSTYPES} | sha256sum | cut -f 1 -d " ")
- fi
- cp ${DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE}-${MACHINE}.${INITRAMFS_FSTYPES} boot/initramfs-${checksum}
- fi
-
- cp ${DEPLOY_DIR_IMAGE}/${OSTREE_KERNEL} boot/vmlinuz-${checksum}
-
# Copy image manifest
cat ${IMAGE_MANIFEST} | cut -d " " -f1,3 > usr/package.manifest
}
@@ -164,25 +145,20 @@ IMAGE_CMD_ostreecommit () {
fi
# Commit the result
- ostree --repo=${OSTREE_REPO} commit \
+ ostree_target_hash=$(ostree --repo=${OSTREE_REPO} commit \
--tree=dir=${OSTREE_ROOTFS} \
--skip-if-unchanged \
--branch=${OSTREE_BRANCHNAME} \
--subject="${OSTREE_COMMIT_SUBJECT}" \
--body="${OSTREE_COMMIT_BODY}" \
--add-metadata-string=version="${OSTREE_COMMIT_VERSION}" \
- --bind-ref="${OSTREE_BRANCHNAME}-${IMAGE_BASENAME}"
+ ${EXTRA_OSTREE_COMMIT})
- if [ "${OSTREE_UPDATE_SUMMARY}" = "1" ]; then
+ echo $ostree_target_hash > ${WORKDIR}/ostree_manifest
+
+ if [ ${@ oe.types.boolean('${OSTREE_UPDATE_SUMMARY}')} = True ]; then
ostree --repo=${OSTREE_REPO} summary -u
fi
-
- # To enable simultaneous bitbaking of two images with the same branch name,
- # create a new ref in the repo using the basename of the image. (This first
- # requires deleting it if it already exists.) Fixes OTA-2211.
- ostree --repo=${OSTREE_REPO} refs --delete ${OSTREE_BRANCHNAME}-${IMAGE_BASENAME}
- ostree_target_hash=$(cat ${OSTREE_REPO}/refs/heads/${OSTREE_BRANCHNAME})
- ostree --repo=${OSTREE_REPO} refs --create=${OSTREE_BRANCHNAME}-${IMAGE_BASENAME} ${ostree_target_hash}
}
IMAGE_TYPEDEP_ostreepush = "ostreecommit"
@@ -197,7 +173,7 @@ IMAGE_CMD_ostreepush () {
if [ -n "${SOTA_PACKED_CREDENTIALS}" ]; then
if [ -e ${SOTA_PACKED_CREDENTIALS} ]; then
- garage-push -vv --repo=${OSTREE_REPO} \
+ garage-push --loglevel 0 --repo=${OSTREE_REPO} \
--ref=${OSTREE_BRANCHNAME} \
--credentials=${SOTA_PACKED_CREDENTIALS} \
--cacert=${STAGING_ETCDIR_NATIVE}/ssl/certs/ca-certificates.crt \
@@ -232,7 +208,7 @@ IMAGE_CMD_garagesign () {
--home-dir ${GARAGE_SIGN_REPO} \
--credentials ${SOTA_PACKED_CREDENTIALS}
- ostree_target_hash=$(cat ${OSTREE_REPO}/refs/heads/${OSTREE_BRANCHNAME}-${IMAGE_BASENAME})
+ ostree_target_hash=$(cat ${WORKDIR}/ostree_manifest)
# Use OSTree target hash as version if none was provided by the user
target_version=${ostree_target_hash}
@@ -308,7 +284,7 @@ IMAGE_CMD_garagecheck () {
# if credentials are issued by a server that doesn't support offline signing, exit silently
unzip -p ${SOTA_PACKED_CREDENTIALS} root.json targets.pub targets.sec tufrepo.url 2>&1 >/dev/null || exit 0
- ostree_target_hash=$(cat ${OSTREE_REPO}/refs/heads/${OSTREE_BRANCHNAME}-${IMAGE_BASENAME})
+ ostree_target_hash=$(cat ${WORKDIR}/ostree_manifest)
garage-check --ref=${ostree_target_hash} \
--credentials=${SOTA_PACKED_CREDENTIALS} \
diff --git a/external/meta-updater/classes/image_types_ota.bbclass b/external/meta-updater/classes/image_types_ota.bbclass
index 857161af..36a6a64e 100644
--- a/external/meta-updater/classes/image_types_ota.bbclass
+++ b/external/meta-updater/classes/image_types_ota.bbclass
@@ -45,13 +45,17 @@ do_image_ota[cleandirs] = "${OTA_SYSROOT}"
do_image_ota[depends] = "${@'grub:do_populate_sysroot' if d.getVar('OSTREE_BOOTLOADER') == 'grub' else ''} \
${@'virtual/bootloader:do_deploy' if d.getVar('OSTREE_BOOTLOADER') == 'u-boot' else ''}"
IMAGE_CMD_ota () {
- export OSTREE_BOOT_PARTITION=${OSTREE_BOOT_PARTITION}
- ostree admin --sysroot=${OTA_SYSROOT} init-fs ${OTA_SYSROOT}
+ ostree admin --sysroot=${OTA_SYSROOT} init-fs --modern ${OTA_SYSROOT}
ostree admin --sysroot=${OTA_SYSROOT} os-init ${OSTREE_OSNAME}
+
+ # Preparation required to steer ostree bootloader detection
mkdir -p ${OTA_SYSROOT}/boot/loader.0
ln -s loader.0 ${OTA_SYSROOT}/boot/loader
if [ "${OSTREE_BOOTLOADER}" = "grub" ]; then
+ # Used by ostree-grub-generator called by the ostree binary
+ export OSTREE_BOOT_PARTITION=${OSTREE_BOOT_PARTITION}
+
mkdir -p ${OTA_SYSROOT}/boot/grub2
ln -s ../loader/grub.cfg ${OTA_SYSROOT}/boot/grub2/grub.cfg
elif [ "${OSTREE_BOOTLOADER}" = "u-boot" ]; then
@@ -60,15 +64,25 @@ IMAGE_CMD_ota () {
bbfatal "Invalid bootloader: ${OSTREE_BOOTLOADER}"
fi
- ostree_target_hash=$(cat ${OSTREE_REPO}/refs/heads/${OSTREE_BRANCHNAME}-${IMAGE_BASENAME})
+ ostree_target_hash=$(cat ${WORKDIR}/ostree_manifest)
+ # Use OSTree hash to avoid any potential race conditions between
+ # multiple builds accessing the same ${OSTREE_REPO}.
ostree --repo=${OTA_SYSROOT}/ostree/repo pull-local --remote=${OSTREE_OSNAME} ${OSTREE_REPO} ${ostree_target_hash}
kargs_list=""
for arg in ${OSTREE_KERNEL_ARGS}; do
kargs_list="${kargs_list} --karg-append=$arg"
done
- ostree admin --sysroot=${OTA_SYSROOT} deploy ${kargs_list} --os=${OSTREE_OSNAME} ${ostree_target_hash}
+ # Create the same reference on the device we use in the archive OSTree
+ # repo in ${OSTREE_REPO}. This reference will show up when showing the
+ # deployment on the device:
+ # ostree admin status
+ # If a remote with the name ${OSTREE_OSNAME} is configured, this also
+ # will allow to use:
+ # ostree admin upgrade
+ ostree --repo=${OTA_SYSROOT}/ostree/repo refs --create=${OSTREE_OSNAME}:${OSTREE_BRANCHNAME} ${ostree_target_hash}
+ ostree admin --sysroot=${OTA_SYSROOT} deploy ${kargs_list} --os=${OSTREE_OSNAME} ${OSTREE_OSNAME}:${OSTREE_BRANCHNAME}
cp -a ${IMAGE_ROOTFS}/var/sota ${OTA_SYSROOT}/ostree/deploy/${OSTREE_OSNAME}/var/ || true
# Create /var/sota if it doesn't exist yet
@@ -76,8 +90,11 @@ IMAGE_CMD_ota () {
# Ensure the permissions are correctly set
chmod 700 ${OTA_SYSROOT}/ostree/deploy/${OSTREE_OSNAME}/var/sota
- cp -a ${OSTREE_ROOTFS}/var/local ${OTA_SYSROOT}/ostree/deploy/${OSTREE_OSNAME}/var/ || true
- cp -a ${OSTREE_ROOTFS}/usr/homedirs/home ${OTA_SYSROOT}/ || true
+ cp -a ${IMAGE_ROOTFS}/var/local ${OTA_SYSROOT}/ostree/deploy/${OSTREE_OSNAME}/var/ || true
+
+ mkdir -p ${OTA_SYSROOT}/ostree/deploy/${OSTREE_OSNAME}/var/rootdirs
+ cp -a ${IMAGE_ROOTFS}/home ${OTA_SYSROOT}/ostree/deploy/${OSTREE_OSNAME}/var/rootdirs/home || true
+
# Ensure that /var/local exists (AGL symlinks /usr/local to /var/local)
install -d ${OTA_SYSROOT}/ostree/deploy/${OSTREE_OSNAME}/var/local
# Set package version for the first deployment
@@ -111,4 +128,4 @@ IMAGE_CMD_ota-ext4 () {
mkfs.ext4 -O ^64bit ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.ota-ext4 -L otaroot -d ${OTA_SYSROOT}
}
-do_image_wic[depends] += "${@bb.utils.contains('DISTRO_FEATURES', 'sota', '%s:do_image_ota_ext4' % d.getVar('IMAGE_BASENAME'), '', d)}"
+do_image_wic[depends] += "${@bb.utils.contains('DISTRO_FEATURES', 'sota', '%s:do_image_ota_ext4' % d.getVar('PN'), '', d)}"
diff --git a/external/meta-updater/classes/sota.bbclass b/external/meta-updater/classes/sota.bbclass
index c248cfc0..fde00cd5 100644
--- a/external/meta-updater/classes/sota.bbclass
+++ b/external/meta-updater/classes/sota.bbclass
@@ -1,12 +1,14 @@
DISTROOVERRIDES .= "${@bb.utils.contains('DISTRO_FEATURES', 'sota', ':sota', '', d)}"
-SOTA_CLIENT ??= "aktualizr"
SOTA_CLIENT_PROV ??= "aktualizr-shared-prov"
SOTA_DEPLOY_CREDENTIALS ?= "1"
SOTA_HARDWARE_ID ??= "${MACHINE}"
-IMAGE_INSTALL_append_sota = " ostree os-release ${SOTA_CLIENT} ${SOTA_CLIENT_PROV}"
IMAGE_CLASSES += " image_types_ostree image_types_ota image_repo_manifest"
+IMAGE_INSTALL_append_sota = " aktualizr aktualizr-info ${SOTA_CLIENT_PROV} \
+ ostree os-release ostree-kernel \
+ ${@'ostree-initramfs' if d.getVar('KERNEL_IMAGETYPE') != 'fitImage' else ''} \
+ ${@'ostree-devicetrees' if oe.types.boolean('${OSTREE_DEPLOY_DEVICETREE}') else ''}"
IMAGE_FSTYPES += "${@bb.utils.contains('DISTRO_FEATURES', 'sota', 'ostreepush garagesign garagecheck ota-ext4 wic', ' ', d)}"
IMAGE_FSTYPES += "${@bb.utils.contains('BUILD_OSTREE_TARBALL', '1', 'ostree.tar.bz2', ' ', d)}"
@@ -27,6 +29,9 @@ OSTREE_BRANCHNAME ?= "${SOTA_HARDWARE_ID}"
OSTREE_OSNAME ?= "poky"
OSTREE_BOOTLOADER ??= 'u-boot'
OSTREE_BOOT_PARTITION ??= "/boot"
+OSTREE_KERNEL ??= "${KERNEL_IMAGETYPE}"
+OSTREE_DEPLOY_DEVICETREE ??= "0"
+OSTREE_DEVICETREE ??= "${KERNEL_DEVICETREE}"
INITRAMFS_IMAGE ?= "initramfs-ostree-image"
@@ -46,6 +51,7 @@ SOTA_MACHINE_m3ulcb = "m3ulcb"
SOTA_MACHINE_intel-corei7-64 ?= "minnowboard"
SOTA_MACHINE_qemux86-64 ?= "qemux86-64"
SOTA_MACHINE_am335x-evm ?= "am335x-evm-wifi"
+SOTA_MACHINE_freedom-u540 ?= "freedom-u540"
SOTA_OVERRIDES_BLACKLIST = "ostree ota"
SOTA_REQUIRED_VARIABLES = "OSTREE_REPO OSTREE_BRANCHNAME OSTREE_OSNAME OSTREE_BOOTLOADER OSTREE_BOOT_PARTITION GARAGE_SIGN_REPO GARAGE_TARGET_NAME"
diff --git a/external/meta-updater/classes/sota_freedom-u540.bbclass b/external/meta-updater/classes/sota_freedom-u540.bbclass
new file mode 100644
index 00000000..c287154e
--- /dev/null
+++ b/external/meta-updater/classes/sota_freedom-u540.bbclass
@@ -0,0 +1,12 @@
+OSTREE_KERNEL = "${KERNEL_IMAGETYPE}-${INITRAMFS_IMAGE}-${MACHINE}-${MACHINE}"
+
+OSTREE_BOOTLOADER ?= "u-boot"
+INITRAMFS_FSTYPES = "cpio.gz"
+PREFERRED_PROVIDER_virtual/bootloader_sota ?= "u-boot"
+
+IMAGE_BOOT_FILES += "uEnv.txt"
+IMAGE_BOOT_FILES_remove = "fitImage"
+
+OSTREE_KERNEL_ARGS_sota ?= "earlycon=sbi console=ttySIF0 ramdisk_size=16384 root=/dev/ram0 rw rootfstype=ext4 rootwait rootdelay=2 ostree_root=/dev/mmcblk0p3"
+
+WKS_FILE_sota = "freedom-u540-opensbi-sota.wks"
diff --git a/external/meta-updater/classes/sota_m3ulcb.bbclass b/external/meta-updater/classes/sota_m3ulcb.bbclass
index e7fa9c2f..7ea273d0 100644
--- a/external/meta-updater/classes/sota_m3ulcb.bbclass
+++ b/external/meta-updater/classes/sota_m3ulcb.bbclass
@@ -8,5 +8,5 @@ OSTREE_BOOTLOADER ?= "u-boot"
UBOOT_MACHINE_sota = "${@d.getVar('SOC_FAMILY').split(':')[1]}_ulcb_defconfig"
-PREFERRED_RPROVIDER_virtual/network-configuration ?= "connman"
-IMAGE_INSTALL_append_sota = " virtual/network-configuration "
+PREFERRED_RPROVIDER_network-configuration ?= "connman"
+IMAGE_INSTALL_append_sota = " network-configuration "
diff --git a/external/meta-updater/classes/sota_minnowboard.bbclass b/external/meta-updater/classes/sota_minnowboard.bbclass
index a907217d..31289651 100644
--- a/external/meta-updater/classes/sota_minnowboard.bbclass
+++ b/external/meta-updater/classes/sota_minnowboard.bbclass
@@ -8,5 +8,5 @@ IMAGE_FSTYPES_remove_sota = "live hddimg"
OSTREE_KERNEL_ARGS ?= "ramdisk_size=16384 rw rootfstype=ext4 rootwait rootdelay=2 console=ttyS0,115200 console=tty0"
IMAGE_INSTALL_append = " minnowboard-efi-startup"
-PREFERRED_RPROVIDER_virtual/network-configuration ?= "connman"
-IMAGE_INSTALL_append_sota = " virtual/network-configuration "
+PREFERRED_RPROVIDER_network-configuration ?= "connman"
+IMAGE_INSTALL_append_sota = " network-configuration "
diff --git a/external/meta-updater/classes/sota_porter.bbclass b/external/meta-updater/classes/sota_porter.bbclass
index 80062e1c..6c6fe70e 100644
--- a/external/meta-updater/classes/sota_porter.bbclass
+++ b/external/meta-updater/classes/sota_porter.bbclass
@@ -7,5 +7,5 @@ IMAGE_BOOT_FILES_sota += "porter-bootfiles/*"
OSTREE_BOOTLOADER ?= "u-boot"
UBOOT_MACHINE_sota = "porter_config"
-PREFERRED_RPROVIDER_virtual/network-configuration ?= "connman"
-IMAGE_INSTALL_append_sota = " virtual/network-configuration "
+PREFERRED_RPROVIDER_network-configuration ?= "connman"
+IMAGE_INSTALL_append_sota = " network-configuration "
diff --git a/external/meta-updater/classes/sota_qemux86-64.bbclass b/external/meta-updater/classes/sota_qemux86-64.bbclass
index fc4aa7cf..3dc2428b 100644
--- a/external/meta-updater/classes/sota_qemux86-64.bbclass
+++ b/external/meta-updater/classes/sota_qemux86-64.bbclass
@@ -13,4 +13,4 @@ IMAGE_ROOTFS_EXTRA_SPACE = "${@bb.utils.contains('DISTRO_FEATURES', 'sota', '655
# fix for u-boot/swig build issue
HOSTTOOLS_NONFATAL += "x86_64-linux-gnu-gcc"
-IMAGE_INSTALL_append_sota = " virtual/network-configuration "
+IMAGE_INSTALL_append_sota = " network-configuration "
diff --git a/external/meta-updater/classes/sota_raspberrypi.bbclass b/external/meta-updater/classes/sota_raspberrypi.bbclass
index c901a70e..3935ba8c 100644
--- a/external/meta-updater/classes/sota_raspberrypi.bbclass
+++ b/external/meta-updater/classes/sota_raspberrypi.bbclass
@@ -13,7 +13,7 @@ UBOOT_DTBO_LOADADDRESS = "0x06000000"
IMAGE_INSTALL_append = " fit-conf"
DEV_MATCH_DIRECTIVE_pn-networkd-dhcp-conf = "Driver=smsc95xx lan78xx"
-IMAGE_INSTALL_append_sota = " virtual/network-configuration "
+IMAGE_INSTALL_append_sota = " network-configuration "
PREFERRED_PROVIDER_virtual/bootloader_sota ?= "u-boot"
UBOOT_ENTRYPOINT_sota ?= "0x00080000"
@@ -39,14 +39,15 @@ def make_dtb_boot_files(d):
return ' '.join([transform(dtb) for dtb in alldtbs.split(' ') if dtb])
-IMAGE_BOOT_FILES_sota = "bcm2835-bootfiles/* \
+IMAGE_BOOT_FILES_sota = "${BOOTFILES_DIR_NAME}/* \
u-boot.bin;${SDIMG_KERNELIMAGE} \
"
-# OSTree puts its own boot.scr to bcm2835-bootfiles
-# raspberrypi4 needs dtb in /boot partition so that they can be read by the
-# firmware
-IMAGE_BOOT_FILES_append_sota_raspberrypi4 = "${@make_dtb_boot_files(d)}"
+# OSTree puts its own boot.scr in ${BOOTFILES_DIR_NAME} (historically
+# bcm2835-bootfiles, now just bootfiles).
+# rpi4 and recent rpi3 firmwares needs dtb in /boot partition
+# so that they can be read by the firmware
+IMAGE_BOOT_FILES_append_sota = "${@make_dtb_boot_files(d)}"
# Just the overlays that will be used should be listed
KERNEL_DEVICETREE_raspberrypi2_sota ?= " bcm2709-rpi-2-b.dtb "
diff --git a/external/meta-updater/classes/sota_sanity.bbclass b/external/meta-updater/classes/sota_sanity.bbclass
index 74973eb5..02ca2e71 100644
--- a/external/meta-updater/classes/sota_sanity.bbclass
+++ b/external/meta-updater/classes/sota_sanity.bbclass
@@ -1,5 +1,12 @@
# Sanity check the sota setup for common misconfigurations
+def sota_check_boolean_variable(var, d):
+ try:
+ oe.types.boolean(d.getVar(var))
+ except:
+ return False
+ return True
+
def sota_check_overrides(status, d):
for var in (d.getVar('SOTA_OVERRIDES_BLACKLIST') or "").split():
if var in d.getVar('OVERRIDES').split(':'):
@@ -47,14 +54,14 @@ def sota_check_variables_validity(status, d):
path = os.path.abspath(credentials)
if not os.path.exists(path):
status.addresult("SOTA_PACKED_CREDENTIALS is not set correctly. The zipped credentials file does not exist.\n")
- if d.getVar("OSTREE_UPDATE_SUMMARY") and d.getVar("OSTREE_UPDATE_SUMMARY") not in ("0", "1", ""):
- status.addresult("OSTREE_UPDATE_SUMMARY should be set to 0 or 1.\n")
- if d.getVar("OSTREE_DEPLOY_DEVICETREE") and d.getVar("OSTREE_DEPLOY_DEVICETREE") not in ("0", "1", ""):
- status.addresult("OSTREE_DEPLOY_DEVICETREE should be set to 0 or 1.\n")
- if d.getVar("GARAGE_SIGN_AUTOVERSION") and d.getVar("GARAGE_SIGN_AUTOVERSION") not in ("0", "1", ""):
- status.addresult("GARAGE_SIGN_AUTOVERSION should be set to 0 or 1.\n")
- if d.getVar("SOTA_DEPLOY_CREDENTIALS") and d.getVar("SOTA_DEPLOY_CREDENTIALS") not in ("0", "1", ""):
- status.addresult("SOTA_DEPLOY_CREDENTIALS should be set to 0 or 1.\n")
+ if not sota_check_boolean_variable("OSTREE_UPDATE_SUMMARY", d):
+ status.addresult("OSTREE_UPDATE_SUMMARY (=%s) should be set to yes/y/true/t/1 or no/n/false/f/0.\n" % d.getVar("OSTREE_UPDATE_SUMMARY"))
+ if not sota_check_boolean_variable("OSTREE_DEPLOY_DEVICETREE", d):
+ status.addresult("OSTREE_DEPLOY_DEVICETREE (=%s) should be set to yes/y/true/t/1 or no/n/false/f/0.\n" % d.getVar("OSTREE_DEPLOY_DEVICETREE"))
+ if not sota_check_boolean_variable("GARAGE_SIGN_AUTOVERSION", d):
+ status.addresult("GARAGE_SIGN_AUTOVERSION (=%s) should be set to yes/y/true/t/1 or no/n/false/f/0.\n" % d.getVar("GARAGE_SIGN_AUTOVERSION"))
+ if not sota_check_boolean_variable("SOTA_DEPLOY_CREDENTIALS", d):
+ status.addresult("SOTA_DEPLOY_CREDENTIALS (=%s) should be set to yes/y/true/t/1 or no/n/false/f/0.\n" % d.getVar("SOTA_DEPLOY_CREDENTIALS"))
def sota_raise_sanity_error(msg, d):
if d.getVar("SANITY_USE_EVENTS") == "1":