[FYI,2/2] migrate Isar to bitbake 2.0

Message ID 20220607152531.3498370-3-adriaan.schmidt@siemens.com
State Superseded, archived
Headers show
Series Migration to bitbake 2.0 | expand

Commit Message

Schmidt, Adriaan June 7, 2022, 7:25 a.m. UTC
big ugly patch

Signed-off-by: Adriaan Schmidt <adriaan.schmidt@siemens.com>
---
 meta-isar/classes/rpi-sdimg.bbclass           |  4 +-
 meta-isar/classes/ubi-ubifs-img.bbclass       |  4 +-
 meta-isar/conf/distro/raspios-bullseye.conf   |  8 +--
 meta-isar/conf/distro/ubuntu-focal.conf       |  4 +-
 meta-isar/conf/local.conf.sample              |  8 +--
 meta-isar/conf/machine/hikey.conf             |  2 +-
 meta-isar/conf/machine/phyboard-mira.conf     |  2 +-
 meta-isar/conf/machine/qemuamd64.conf         |  6 +-
 meta-isar/conf/machine/qemuriscv64.conf       |  2 +-
 meta-isar/conf/machine/stm32mp15x.conf        |  6 +-
 .../conf/multiconfig/qemuamd64-bullseye.conf  |  2 +-
 meta-isar/recipes-app/cowsay/cowsay_git.bb    |  2 +-
 .../recipes-app/hello-isar/hello-isar.bb      |  4 +-
 meta-isar/recipes-app/libhello/libhello.bb    |  4 +-
 .../bootconfig-rpi/bootconfig-rpi.bb          |  6 +-
 .../optee-os/optee-os-stm32mp15x_3.11.0.bb    |  2 +-
 .../linux/linux-mainline_5.4.70.bb            |  4 +-
 .../linux/linux-phy_5.10.76-phy4.bb           |  2 +-
 meta/classes/base.bbclass                     |  2 +
 meta/classes/dpkg-base.bbclass                |  4 +-
 meta/classes/dpkg-gbp.bbclass                 |  4 +-
 meta/classes/dpkg-prebuilt.bbclass            |  2 +-
 meta/classes/dpkg.bbclass                     |  1 +
 meta/classes/image-tools-extension.bbclass    |  2 +
 meta/classes/image.bbclass                    | 38 ++++++------
 meta/classes/imagetypes.bbclass               | 54 ++++++++---------
 meta/classes/imagetypes_container.bbclass     |  4 +-
 meta/classes/imagetypes_vm.bbclass            |  8 +--
 meta/classes/imagetypes_wic.bbclass           |  5 +-
 meta/classes/rootfs.bbclass                   |  4 +-
 meta/classes/sdk.bbclass                      | 34 +++++------
 meta/conf/bitbake.conf                        | 60 ++++++++++++-------
 meta/conf/distro/debian-common.conf           | 12 ++--
 meta/conf/distro/debian-stretch.conf          |  4 +-
 meta/recipes-bsp/barebox/barebox.inc          |  2 +-
 meta/recipes-bsp/optee-os/optee-os-custom.inc |  2 +-
 .../trusted-firmware-a-custom.inc             |  2 +-
 meta/recipes-bsp/u-boot/u-boot-custom.inc     |  2 +-
 .../isar-bootstrap/isar-bootstrap.inc         | 16 +++--
 .../buildchroot/buildchroot.inc               |  6 +-
 meta/recipes-kernel/kselftest/kselftest.inc   |  8 ++-
 meta/recipes-kernel/linux-module/module.inc   |  2 +-
 meta/recipes-kernel/linux/linux-custom.inc    |  6 +-
 scripts/isar-buildenv-internal                |  4 +-
 scripts/isar-sstate                           | 43 ++++++-------
 testsuite/cibuilder.py                        |  8 +--
 testsuite/citest.py                           |  2 +-
 47 files changed, 225 insertions(+), 188 deletions(-)

Patch

diff --git a/meta-isar/classes/rpi-sdimg.bbclass b/meta-isar/classes/rpi-sdimg.bbclass
index 508c4bc..d8163a4 100644
--- a/meta-isar/classes/rpi-sdimg.bbclass
+++ b/meta-isar/classes/rpi-sdimg.bbclass
@@ -3,7 +3,7 @@ 
 #
 # Based on SD class from meta-raspberrypi
 
-IMAGE_TYPEDEP_rpi_sdimg = "wic"
+IMAGE_TYPEDEP:rpi_sdimg = "wic"
 
 WKS_FILE ?= "rpi-sdimg"
 
@@ -19,6 +19,6 @@  IMAGE_BOOT_FILES ?= "${IMAGE_ROOTFS}/boot/*.*;./ \
 
 IMAGE_INSTALL += "bootconfig-${MACHINE}"
 
-python do_wic_image_prepend() {
+python do_wic_image:prepend() {
     bb.warn("rpi-sdimg image type is deprecated, please change to wic.")
 }
diff --git a/meta-isar/classes/ubi-ubifs-img.bbclass b/meta-isar/classes/ubi-ubifs-img.bbclass
index 7a917b4..036395c 100644
--- a/meta-isar/classes/ubi-ubifs-img.bbclass
+++ b/meta-isar/classes/ubi-ubifs-img.bbclass
@@ -5,8 +5,8 @@ 
 #
 # SPDX-License-Identifier: MIT
 
-IMAGE_TYPEDEP_ubi_ubifs = "ubi"
-IMAGE_TYPEDEP_ubi += "ubifs fit"
+IMAGE_TYPEDEP:ubi_ubifs = "ubi"
+IMAGE_TYPEDEP:ubi += "ubifs fit"
 
 IMAGE_CMD_ubi_ubifs() {
     # we need to produce output (with extension .ubi-ubifs),
diff --git a/meta-isar/conf/distro/raspios-bullseye.conf b/meta-isar/conf/distro/raspios-bullseye.conf
index 5e4a09c..6116b54 100644
--- a/meta-isar/conf/distro/raspios-bullseye.conf
+++ b/meta-isar/conf/distro/raspios-bullseye.conf
@@ -4,20 +4,20 @@ 
 # Copyright (C) 2022 ilbers GmbH
 
 BASE_DISTRO = "raspios"
-BASE_DISTRO_arm64 = "debian"
+BASE_DISTRO:arm64 = "debian"
 
 BASE_DISTRO_CODENAME = "bullseye"
 HOST_DISTRO ?= "debian-bullseye"
 HOST_DISTRO_APT_SOURCES ?= "conf/distro/${HOST_DISTRO}.list"
 
 DISTRO_APT_SOURCES ?= "conf/distro/raspios-bullseye.list"
-DISTRO_APT_SOURCES_arm64 ?= "conf/distro/raspios-bullseye-64.list"
+DISTRO_APT_SOURCES:arm64 ?= "conf/distro/raspios-bullseye-64.list"
 
 DISTRO_BOOTSTRAP_KEYS = "http://raspbian.raspberrypi.org/raspbian.public.key;sha256sum=ca59cd4f2bcbc3a1d41ba6815a02a8dc5c175467a59bd87edeac458f4a5345de"
-DISTRO_BOOTSTRAP_KEYS_arm64 = ""
+DISTRO_BOOTSTRAP_KEYS:arm64 = ""
 
 DISTRO_KERNELS ?= "kernel kernel7 kernel7l kernel8"
 
 THIRD_PARTY_APT_KEYS += "http://archive.raspberrypi.org/debian/raspberrypi.gpg.key;sha256sum=76603890d82a492175caf17aba68dc73acb1189c9fd58ec0c19145dfa3866d56"
 
-COMPAT_DISTRO_ARCH_arm64 = "armhf"
+COMPAT_DISTRO_ARCH:arm64 = "armhf"
diff --git a/meta-isar/conf/distro/ubuntu-focal.conf b/meta-isar/conf/distro/ubuntu-focal.conf
index 4dfa201..a39db1b 100644
--- a/meta-isar/conf/distro/ubuntu-focal.conf
+++ b/meta-isar/conf/distro/ubuntu-focal.conf
@@ -8,8 +8,8 @@  require conf/distro/debian-common.conf
 BASE_DISTRO = "ubuntu"
 
 DISTRO_APT_SOURCES ?= "conf/distro/${DISTRO}.list"
-DISTRO_APT_SOURCES_arm64 ?= "conf/distro/${DISTRO}-ports.list"
-HOST_DISTRO_APT_SOURCES_append_arm64 = " ${DISTRO_APT_SOURCES}"
+DISTRO_APT_SOURCES:arm64 ?= "conf/distro/${DISTRO}-ports.list"
+HOST_DISTRO_APT_SOURCES:append:arm64 = " ${DISTRO_APT_SOURCES}"
 
 BASE_DISTRO_CODENAME = "focal"
 
diff --git a/meta-isar/conf/local.conf.sample b/meta-isar/conf/local.conf.sample
index 58f3e1a..834fbd5 100644
--- a/meta-isar/conf/local.conf.sample
+++ b/meta-isar/conf/local.conf.sample
@@ -162,10 +162,10 @@  BB_DISKMON_DIRS = "\
     STOPTASKS,${DL_DIR},1G,100K \
     STOPTASKS,${SSTATE_DIR},1G,100K \
     STOPTASKS,/tmp,100M,100K \
-    ABORT,${TMPDIR},100M,1K \
-    ABORT,${DL_DIR},100M,1K \
-    ABORT,${SSTATE_DIR},100M,1K \
-    ABORT,/tmp,10M,1K"
+    HALT,${TMPDIR},100M,1K \
+    HALT,${DL_DIR},100M,1K \
+    HALT,${SSTATE_DIR},100M,1K \
+    HALT,/tmp,10M,1K"
 
 # Isar MIRRORS in case of service unavailable
 MIRRORS ?= "git?://salsa\.debian\.org/debian/.* git://github.com/ilbers/BASENAME"
diff --git a/meta-isar/conf/machine/hikey.conf b/meta-isar/conf/machine/hikey.conf
index 7f9cccb..a606992 100644
--- a/meta-isar/conf/machine/hikey.conf
+++ b/meta-isar/conf/machine/hikey.conf
@@ -11,4 +11,4 @@  IMAGE_FSTYPES = "wic"
 WKS_FILE ?= "hikey"
 IMAGER_INSTALL += "${GRUB_BOOTLOADER_INSTALL}"
 
-IMAGE_PREINSTALL_append = " firmware-ti-connectivity"
+IMAGE_PREINSTALL:append = " firmware-ti-connectivity"
diff --git a/meta-isar/conf/machine/phyboard-mira.conf b/meta-isar/conf/machine/phyboard-mira.conf
index ac42084..82e6534 100644
--- a/meta-isar/conf/machine/phyboard-mira.conf
+++ b/meta-isar/conf/machine/phyboard-mira.conf
@@ -10,7 +10,7 @@  KERNEL_NAME ?= "phy"
 MACHINE_SERIAL ?= "ttymxc0"
 BAUDRATE_TTY ?= "115200"
 
-IMAGE_TYPEDEP_ubi += "ubifs"
+IMAGE_TYPEDEP:ubi += "ubifs"
 
 MKUBIFS_ARGS := "-m 0x800 -e 0x1f000 -c 8012"
 UBINIZE_ARGS = "-vv -m 0x800 -p 0x20000"
diff --git a/meta-isar/conf/machine/qemuamd64.conf b/meta-isar/conf/machine/qemuamd64.conf
index eca2628..9a9b6e9 100644
--- a/meta-isar/conf/machine/qemuamd64.conf
+++ b/meta-isar/conf/machine/qemuamd64.conf
@@ -4,14 +4,14 @@ 
 DISTRO_ARCH ?= "amd64"
 
 KERNEL_NAME ?= "amd64"
-KERNEL_NAME_ubuntu-focal ?= "generic"
+KERNEL_NAME:ubuntu-focal ?= "generic"
 
 IMAGE_FSTYPES ?= "wic"
 WKS_FILE ?= "sdimage-efi"
 IMAGER_INSTALL += "${GRUB_BOOTLOADER_INSTALL}"
 
-WKS_FILE_ubuntu-focal ?= "sdimage-efi-sd"
-IMAGER_INSTALL_remove_ubuntu-focal = "${GRUB_BOOTLOADER_INSTALL}"
+WKS_FILE:ubuntu-focal ?= "sdimage-efi-sd"
+IMAGER_INSTALL:remove:ubuntu-focal = "${GRUB_BOOTLOADER_INSTALL}"
 
 IMAGE_INSTALL += "sshd-regen-keys"
 
diff --git a/meta-isar/conf/machine/qemuriscv64.conf b/meta-isar/conf/machine/qemuriscv64.conf
index cd04d87..f7a7c8d 100644
--- a/meta-isar/conf/machine/qemuriscv64.conf
+++ b/meta-isar/conf/machine/qemuriscv64.conf
@@ -22,4 +22,4 @@  MACHINE_SERIAL ?= "ttyS0"
 BAUDRATE_TTY ?= "115200"
 
 # when enabled, rebuilding the initramfs fails with out-of-space error
-IMAGE_INSTALL_remove = "enable-fsck"
+IMAGE_INSTALL:remove = "enable-fsck"
diff --git a/meta-isar/conf/machine/stm32mp15x.conf b/meta-isar/conf/machine/stm32mp15x.conf
index 62de7dd..8f8bf28 100644
--- a/meta-isar/conf/machine/stm32mp15x.conf
+++ b/meta-isar/conf/machine/stm32mp15x.conf
@@ -7,9 +7,9 @@  DISTRO_ARCH ?= "armhf"
 
 KERNEL_NAME ?= "mainline"
 
-PREFERRED_PROVIDER_u-boot-stm32mp15x = "u-boot-stm32mp15x"
-U_BOOT_CONFIG_stm32mp15x = "stm32mp15_trusted_defconfig"
-U_BOOT_BIN_stm32mp15x = "u-boot.stm32"
+PREFERRED_PROVIDER:u-boot-stm32mp15x = "u-boot-stm32mp15x"
+U_BOOT_CONFIG:stm32mp15x = "stm32mp15_trusted_defconfig"
+U_BOOT_BIN:stm32mp15x = "u-boot.stm32"
 
 IMAGE_FSTYPES ?= "wic"
 WKS_FILE ?= "stm32mp15x.wks.in"
diff --git a/meta-isar/conf/multiconfig/qemuamd64-bullseye.conf b/meta-isar/conf/multiconfig/qemuamd64-bullseye.conf
index 13d870d..1c1326c 100644
--- a/meta-isar/conf/multiconfig/qemuamd64-bullseye.conf
+++ b/meta-isar/conf/multiconfig/qemuamd64-bullseye.conf
@@ -3,4 +3,4 @@ 
 MACHINE ?= "qemuamd64"
 DISTRO ?= "debian-bullseye"
 
-IMAGE_FSTYPES_append = " cpio.gz tar.gz"
+IMAGE_FSTYPES:append = " cpio.gz tar.gz"
diff --git a/meta-isar/recipes-app/cowsay/cowsay_git.bb b/meta-isar/recipes-app/cowsay/cowsay_git.bb
index c3a1f49..51e5f7e 100644
--- a/meta-isar/recipes-app/cowsay/cowsay_git.bb
+++ b/meta-isar/recipes-app/cowsay/cowsay_git.bb
@@ -5,6 +5,6 @@ 
 
 inherit dpkg-gbp
 
-SRC_URI = "git://salsa.debian.org/debian/cowsay.git;protocol=https"
+SRC_URI = "git://salsa.debian.org/debian/cowsay.git;protocol=https;branch=master"
 SRC_URI += "file://isar.patch"
 SRCREV = "756f0c41fbf582093c0c1dff9ff77734716cb26f"
diff --git a/meta-isar/recipes-app/hello-isar/hello-isar.bb b/meta-isar/recipes-app/hello-isar/hello-isar.bb
index 8c3ba8b..1a03486 100644
--- a/meta-isar/recipes-app/hello-isar/hello-isar.bb
+++ b/meta-isar/recipes-app/hello-isar/hello-isar.bb
@@ -15,12 +15,12 @@  PV = "0.3-a18c14c"
 DEPENDS += "libhello"
 
 SRC_URI = " \
-    git://github.com/ilbers/hello.git;protocol=https;destsuffix=${P} \
+    git://github.com/ilbers/hello.git;protocol=https;destsuffix=${P};branch=master \
     file://subdir/0001-Add-some-help.patch \
     file://yet-another-change.txt;apply=yes;striplevel=0"
 SRCREV = "a18c14cc11ce6b003f3469e89223cffb4016861d"
 
 # NOTE: This is just to test 32-bit building on 64-bit archs.
-PACKAGE_ARCH_compat-arch = "${COMPAT_DISTRO_ARCH}"
+PACKAGE_ARCH:compat-arch = "${COMPAT_DISTRO_ARCH}"
 
 inherit dpkg
diff --git a/meta-isar/recipes-app/libhello/libhello.bb b/meta-isar/recipes-app/libhello/libhello.bb
index 5c44de5..45fadd2 100644
--- a/meta-isar/recipes-app/libhello/libhello.bb
+++ b/meta-isar/recipes-app/libhello/libhello.bb
@@ -10,10 +10,10 @@  LIC_FILES_CHKSUM = "file://${LAYERDIR_core}/licenses/COPYING.GPLv2;md5=751419260
 
 PV = "0.1-98f2e41"
 
-SRC_URI = "git://github.com/ilbers/libhello.git;protocol=https;destsuffix=${P}"
+SRC_URI = "git://github.com/ilbers/libhello.git;protocol=https;destsuffix=${P};branch=master"
 SRCREV = "98f2e41e7d05ab8d19b0c5d160b104b725c8fd93"
 
 # NOTE: This is just to test 32-bit building on 64-bit archs.
-PACKAGE_ARCH_compat-arch = "${COMPAT_DISTRO_ARCH}"
+PACKAGE_ARCH:compat-arch = "${COMPAT_DISTRO_ARCH}"
 
 inherit dpkg
diff --git a/meta-isar/recipes-bsp/bootconfig-rpi/bootconfig-rpi.bb b/meta-isar/recipes-bsp/bootconfig-rpi/bootconfig-rpi.bb
index 648c728..9ca1287 100644
--- a/meta-isar/recipes-bsp/bootconfig-rpi/bootconfig-rpi.bb
+++ b/meta-isar/recipes-bsp/bootconfig-rpi/bootconfig-rpi.bb
@@ -13,9 +13,9 @@  TEMPLATE_VARS = "MACHINE_SERIAL BAUDRATE_TTY"
 TEMPLATE_FILES = "cmdline.txt.tmpl"
 
 # Exceptions for RPi1
-SRC_URI_append_rpi = " file://postinst"
-SRC_URI_remove_rpi = "file://cmdline.txt.tmpl"
-TEMPLATE_FILES_remove_rpi = "cmdline.txt.tmpl"
+SRC_URI:append:rpi = " file://postinst"
+SRC_URI:remove:rpi = "file://cmdline.txt.tmpl"
+TEMPLATE_FILES:remove:rpi = "cmdline.txt.tmpl"
 
 PN = "bootconfig-${MACHINE}"
 
diff --git a/meta-isar/recipes-bsp/optee-os/optee-os-stm32mp15x_3.11.0.bb b/meta-isar/recipes-bsp/optee-os/optee-os-stm32mp15x_3.11.0.bb
index 8436dcb..08676be 100644
--- a/meta-isar/recipes-bsp/optee-os/optee-os-stm32mp15x_3.11.0.bb
+++ b/meta-isar/recipes-bsp/optee-os/optee-os-stm32mp15x_3.11.0.bb
@@ -20,7 +20,7 @@  OPTEE_BINARIES = "tee-header_v2.stm32 tee-pageable_v2.stm32 tee-pager_v2.stm32"
 
 # Set version manually to PV, the tarball does not contain any hint.
 # Alternative: pull from git and add git as build dependency.
-dpkg_runbuild_prepend() {
+dpkg_runbuild:prepend() {
     grep -q "^export TEE_IMPL_VERSION" ${S}/debian/rules ||
         cat << EOF >> ${S}/debian/rules
 
diff --git a/meta-isar/recipes-kernel/linux/linux-mainline_5.4.70.bb b/meta-isar/recipes-kernel/linux/linux-mainline_5.4.70.bb
index 644535e..a82a179 100644
--- a/meta-isar/recipes-kernel/linux/linux-mainline_5.4.70.bb
+++ b/meta-isar/recipes-kernel/linux/linux-mainline_5.4.70.bb
@@ -19,12 +19,12 @@  SRC_URI[sha256sum] = "c0b3d8085c5ba235df38b00b740e053659709e8a5ca21957a239f6bc22
 
 S = "${WORKDIR}/linux-${ARCHIVE_VERSION}"
 
-KERNEL_DEFCONFIG_qemuamd64 = "x86_64_defconfig"
+KERNEL_DEFCONFIG:qemuamd64 = "x86_64_defconfig"
 
 LINUX_VERSION_EXTENSION = "-isar"
 
 # For testing purposes only
-dpkg_configure_kernel_append() {
+dpkg_configure_kernel:append() {
     grep -q "# CONFIG_MTD is not set" ${S}/debian/rules ||
         cat << EOF | sed -i '/^override_dh_auto_build/ r /dev/stdin' ${S}/debian/rules
 	if ! grep "# CONFIG_MTD is not set" \$(O)/.config && \\
diff --git a/meta-isar/recipes-kernel/linux/linux-phy_5.10.76-phy4.bb b/meta-isar/recipes-kernel/linux/linux-phy_5.10.76-phy4.bb
index 84609a0..2a39141 100644
--- a/meta-isar/recipes-kernel/linux/linux-phy_5.10.76-phy4.bb
+++ b/meta-isar/recipes-kernel/linux/linux-phy_5.10.76-phy4.bb
@@ -7,7 +7,7 @@  SRC_URI[sha256sum] = "ce0cff708da9f3dca1f6f8d6c433589fd5a5ea8db9e33114f44497ecf8
 
 S = "${WORKDIR}/linux-mainline-${PV}"
 
-KBUILD_DEPENDS_append = "lzop"
+KBUILD_DEPENDS:append = "lzop"
 
 KERNEL_DEFCONFIG = "imx_v6_v7_defconfig"
 
diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass
index 4ec2c81..e04b5e0 100644
--- a/meta/classes/base.bbclass
+++ b/meta/classes/base.bbclass
@@ -178,6 +178,7 @@  def isar_export_ccache(d):
 do_fetch[dirs] = "${DL_DIR}"
 do_fetch[file-checksums] = "${@bb.fetch.get_checksum_file_list(d)}"
 do_fetch[vardeps] += "SRCREV"
+do_fetch[network] = "1"
 
 # Fetch package from the source link
 python do_fetch() {
@@ -225,6 +226,7 @@  CLEANFUNCS ?= ""
 # Derived from OpenEmbedded Core: meta/classes/utility-tasks.bbclass
 addtask clean
 do_clean[nostamp] = "1"
+#do_clean[network] = "1"
 python do_clean() {
     import subprocess
     import glob
diff --git a/meta/classes/dpkg-base.bbclass b/meta/classes/dpkg-base.bbclass
index 7e032ba..4876876 100644
--- a/meta/classes/dpkg-base.bbclass
+++ b/meta/classes/dpkg-base.bbclass
@@ -12,7 +12,7 @@  inherit deb-dl-dir
 
 DEPENDS ?= ""
 
-DEPENDS_append_riscv64 = "${@' crossbuild-essential-riscv64' if d.getVar('ISAR_CROSS_COMPILE', True) == '1' and d.getVar('PN') != 'crossbuild-essential-riscv64' else ''}"
+DEPENDS:append:riscv64 = "${@' crossbuild-essential-riscv64' if d.getVar('ISAR_CROSS_COMPILE', True) == '1' and d.getVar('PN') != 'crossbuild-essential-riscv64' else ''}"
 DEB_BUILD_PROFILES ?= ""
 DEB_BUILD_OPTIONS ?= ""
 
@@ -118,6 +118,7 @@  do_apt_fetch() {
 
 addtask apt_fetch
 do_apt_fetch[lockfiles] += "${REPO_ISAR_DIR}/isar.lock"
+do_apt_fetch[network] = "1"
 
 # Add dependency from the correct buildchroot: host or target
 do_apt_fetch[depends] += "${BUILDCHROOT_DEP}"
@@ -140,6 +141,7 @@  do_apt_unpack() {
 
     dpkg_undo_mounts
 }
+#do_apt_unpack[network] = "1"
 
 addtask apt_unpack after do_apt_fetch
 
diff --git a/meta/classes/dpkg-gbp.bbclass b/meta/classes/dpkg-gbp.bbclass
index d956e8c..e189c88 100644
--- a/meta/classes/dpkg-gbp.bbclass
+++ b/meta/classes/dpkg-gbp.bbclass
@@ -12,7 +12,7 @@  PATCHTOOL ?= "git"
 GBP_DEPENDS ?= "git-buildpackage pristine-tar"
 GBP_EXTRA_OPTIONS ?= "--git-pristine-tar"
 
-do_install_builddeps_append() {
+do_install_builddeps:append() {
     dpkg_do_mounts
     distro="${DISTRO}"
     if [ ${ISAR_CROSS_COMPILE} -eq 1 ]; then
@@ -29,6 +29,6 @@  do_install_builddeps_append() {
     dpkg_undo_mounts
 }
 
-dpkg_runbuild_prepend() {
+dpkg_runbuild:prepend() {
     export GBP_PREFIX="gbp buildpackage --git-ignore-new ${GBP_EXTRA_OPTIONS} --git-builder="
 }
diff --git a/meta/classes/dpkg-prebuilt.bbclass b/meta/classes/dpkg-prebuilt.bbclass
index 0a6daef..fe14f0c 100644
--- a/meta/classes/dpkg-prebuilt.bbclass
+++ b/meta/classes/dpkg-prebuilt.bbclass
@@ -5,7 +5,7 @@ 
 
 inherit dpkg-base
 
-python do_unpack_prepend() {
+python do_unpack:prepend() {
     # enforce unpack=false
     src_uri = (d.getVar('SRC_URI', False) or '').split()
     if len(src_uri) == 0:
diff --git a/meta/classes/dpkg.bbclass b/meta/classes/dpkg.bbclass
index af83353..d73cdac 100644
--- a/meta/classes/dpkg.bbclass
+++ b/meta/classes/dpkg.bbclass
@@ -29,6 +29,7 @@  addtask install_builddeps after do_prepare_build before do_dpkg_build
 do_install_builddeps[depends] += "${BUILDCHROOT_DEP} isar-apt:do_cache_config"
 # apt and reprepro may not run in parallel, acquire the Isar lock
 do_install_builddeps[lockfiles] += "${REPO_ISAR_DIR}/isar.lock"
+do_install_builddeps[network] = "1"
 
 addtask devshell after do_install_builddeps
 
diff --git a/meta/classes/image-tools-extension.bbclass b/meta/classes/image-tools-extension.bbclass
index b996813..e02ebb0 100644
--- a/meta/classes/image-tools-extension.bbclass
+++ b/meta/classes/image-tools-extension.bbclass
@@ -16,7 +16,9 @@  DEPENDS += "${IMAGER_BUILD_DEPS}"
 
 do_install_imager_deps[depends] = "${BUILDCHROOT_DEP} isar-apt:do_cache_config"
 do_install_imager_deps[deptask] = "do_deploy_deb"
+do_install_imager_deps[vardeps] = "IMAGER_INSTALL"
 do_install_imager_deps[lockfiles] += "${REPO_ISAR_DIR}/isar.lock"
+do_install_imager_deps[network] = "1"
 do_install_imager_deps() {
     if [ -z "${@d.getVar("IMAGER_INSTALL", True).strip()}" ]; then
         exit
diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
index 0da56b7..9c7abec 100644
--- a/meta/classes/image.bbclass
+++ b/meta/classes/image.bbclass
@@ -75,7 +75,7 @@  ROOTFS_MANIFEST_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}"
 ROOTFS_DPKGSTATUS_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}"
 ROOTFS_PACKAGE_SUFFIX ?= "${PN}-${DISTRO}-${MACHINE}"
 
-ROOTFS_POSTPROCESS_COMMAND_prepend = "${@bb.utils.contains('BASE_REPO_FEATURES', 'cache-deb-src', 'cache_deb_src', '', d)} "
+ROOTFS_POSTPROCESS_COMMAND:prepend = "${@bb.utils.contains('BASE_REPO_FEATURES', 'cache-deb-src', 'cache_deb_src', '', d)} "
 
 inherit rootfs
 inherit sdk
@@ -125,7 +125,7 @@  def get_image_basetypes(d):
             # be backwards-compatible
             bt = bt[:-len('-img')]
             bb.warn("IMAGE_TYPE '{0}-img' is deprecated. Please use '{0}' instead.".format(bt))
-        deps = (d.getVar('IMAGE_TYPEDEP_' + bt.replace('-', '_').replace('.', '_')) or '').split()
+        deps = (d.getVar('IMAGE_TYPEDEP:' + bt.replace('-', '_').replace('.', '_')) or '').split()
         ret = set([bt])
         for dep in deps:
             ret |= recurse(dep)
@@ -164,8 +164,8 @@  python() {
         if t not in basetypes[bt]:
             basetypes[bt].append(t)
         t_clean = t.replace('-', '_').replace('.', '_')
-        deps = (d.getVar('IMAGE_TYPEDEP_' + t_clean) or '').split()
-        vardeps.add('IMAGE_TYPEDEP_' + t_clean)
+        deps = (d.getVar('IMAGE_TYPEDEP:' + t_clean) or '').split()
+        vardeps.add('IMAGE_TYPEDEP:' + t_clean)
         if bt not in typedeps:
             typedeps[bt] = set()
         for dep in deps:
@@ -197,7 +197,7 @@  python() {
         localdata.delVar('DATETIME')
         localdata.delVar('DATE')
         localdata.delVar('TMPDIR')
-        vardepsexclude = (d.getVarFlag('IMAGE_CMD_' + bt_clean, 'vardepsexclude', True) or '').split()
+        vardepsexclude = (d.getVarFlag('IMAGE_CMD:' + bt_clean, 'vardepsexclude', True) or '').split()
         for dep in vardepsexclude:
             localdata.delVar(dep)
 
@@ -213,14 +213,14 @@  python() {
         localdata.setVar('SUDO_CHROOT', localdata.expand('sudo chroot ${BUILDCHROOT_DIR}'))
 
         # imager install
-        for dep in (d.getVar('IMAGER_INSTALL_' + bt_clean) or '').split():
+        for dep in (d.getVar('IMAGER_INSTALL:' + bt_clean) or '').split():
             imager_install.add(dep)
-        for dep in (d.getVar('IMAGER_BUILD_DEPS_' + bt_clean) or '').split():
+        for dep in (d.getVar('IMAGER_BUILD_DEPS:' + bt_clean) or '').split():
             imager_build_deps.add(dep)
 
         # construct image command
         cmds.append('\timage_do_mounts')
-        image_cmd = localdata.getVar('IMAGE_CMD_' + bt_clean)
+        image_cmd = localdata.getVar('IMAGE_CMD:' + bt_clean)
         if image_cmd:
             localdata.setVar('type', bt)
             cmds.append(localdata.expand(image_cmd))
@@ -228,16 +228,16 @@  python() {
             cmds.append(localdata.expand('\tsudo chown $(id -u):$(id -g) ${IMAGE_FILE_HOST}'))
         else:
             bb.fatal("No IMAGE_CMD for %s" % bt)
-        vardeps.add('IMAGE_CMD_' + bt_clean)
-        d.delVarFlag('IMAGE_CMD_' + bt_clean, 'func')
-        task_deps = d.getVarFlag('IMAGE_CMD_' + bt_clean, 'depends')
+        vardeps.add('IMAGE_CMD:' + bt_clean)
+        d.delVarFlag('IMAGE_CMD:' + bt_clean, 'func')
+        task_deps = d.getVarFlag('IMAGE_CMD:' + bt_clean, 'depends')
 
-        image_src = localdata.getVar('IMAGE_SRC_URI_' + bt_clean)
+        image_src = localdata.getVar('IMAGE_SRC_URI:' + bt_clean)
         if image_src:
             d.appendVar("SRC_URI", ' ' + image_src)
 
-        image_tmpl_files = localdata.getVar('IMAGE_TEMPLATE_FILES_' + bt_clean)
-        image_tmpl_vars = localdata.getVar('IMAGE_TEMPLATE_VARS_' + bt_clean)
+        image_tmpl_files = localdata.getVar('IMAGE_TEMPLATE_FILES:' + bt_clean)
+        image_tmpl_vars = localdata.getVar('IMAGE_TEMPLATE_VARS:' + bt_clean)
         if image_tmpl_files:
             d.appendVar("TEMPLATE_FILES", ' ' + image_tmpl_files)
         if image_tmpl_vars:
@@ -252,12 +252,12 @@  python() {
                     t = t[:-len(c) - 1]
                     create_conversions(t)
                     localdata.setVar('type', t)
-                    cmd = '\t' + localdata.getVar('CONVERSION_CMD_' + c)
+                    cmd = '\t' + localdata.getVar('CONVERSION_CMD:' + c)
                     if cmd not in cmds:
                         cmds.append(cmd)
                         cmds.append(localdata.expand('\tsudo chown $(id -u):$(id -g) ${IMAGE_FILE_HOST}.%s' % c))
-                    vardeps.add('CONVERSION_CMD_' + c)
-                    for dep in (localdata.getVar('CONVERSION_DEPS_' + c) or '').split():
+                    vardeps.add('CONVERSION_CMD:' + c)
+                    for dep in (localdata.getVar('CONVERSION_DEPS:' + c) or '').split():
                         conversion_install.add(dep)
                     # remove temporary image files
                     if t not in image_types:
@@ -282,6 +282,7 @@  python() {
         task = 'do_image_%s' % bt_clean
         d.setVar(task, '\n'.join(cmds))
         d.setVarFlag(task, 'func', '1')
+        d.setVarFlag(task, 'network', '1')
         d.appendVarFlag(task, 'prefuncs', ' set_image_size')
         d.appendVarFlag(task, 'vardeps', ' ' + ' '.join(vardeps))
         d.appendVarFlag(task, 'vardepsexclude', ' ' + ' '.join(vardepsexclude))
@@ -336,6 +337,7 @@  DTB_IMG = "${PP_DEPLOY}/${@(d.getVar('DTB_FILES').split() or [''])[0]}"
 
 do_copy_boot_files[dirs] = "${DEPLOY_DIR_IMAGE}"
 do_copy_boot_files[lockfiles] += "${DEPLOY_DIR_IMAGE}/isar.lock"
+#do_copy_boot_files[network] = "1"
 do_copy_boot_files() {
     kernel="$(realpath -q '${IMAGE_ROOTFS}'/vmlinu[xz])"
     if [ ! -f "$kernel" ]; then
@@ -384,6 +386,7 @@  python do_deploy() {
 }
 addtask deploy before do_build after do_image
 
+#do_rootfs_finalize[network] = "1"
 do_rootfs_finalize() {
     sudo -s <<'EOSUDO'
         set -e
@@ -427,6 +430,7 @@  addtask rootfs_finalize before do_rootfs after do_rootfs_postprocess
 
 ROOTFS_QA_FIND_ARGS ?= ""
 
+#do_rootfs_quality_check[network] = "1"
 do_rootfs_quality_check() {
     rootfs_install_stamp=$( ls -1 "${STAMP}".do_rootfs_install* | head -1 )
     test -f "$rootfs_install_stamp"
diff --git a/meta/classes/imagetypes.bbclass b/meta/classes/imagetypes.bbclass
index bea5af5..50cd448 100644
--- a/meta/classes/imagetypes.bbclass
+++ b/meta/classes/imagetypes.bbclass
@@ -4,19 +4,19 @@ 
 # SPDX-License-Identifier: MIT
 
 #image type: tar
-IMAGER_INSTALL_tar = "tar"
+IMAGER_INSTALL:tar = "tar"
 TAR_OPTIIONS ?= ""
 
-IMAGE_CMD_tar() {
+IMAGE_CMD:tar() {
     ${SUDO_CHROOT} tar ${TAR_OPTIONS} -cvf \
                  ${IMAGE_FILE_CHROOT} --one-file-system -C ${PP_ROOTFS} .
 }
 
 # image type: ext4
-IMAGER_INSTALL_ext4 += "e2fsprogs"
+IMAGER_INSTALL:ext4 += "e2fsprogs"
 MKE2FS_ARGS ?=  "-t ext4"
 
-IMAGE_CMD_ext4() {
+IMAGE_CMD:ext4() {
     truncate -s ${ROOTFS_SIZE}K '${IMAGE_FILE_HOST}'
 
     ${SUDO_CHROOT} /sbin/mke2fs ${MKE2FS_ARGS} \
@@ -24,10 +24,10 @@  IMAGE_CMD_ext4() {
 }
 
 # image type: cpio
-IMAGER_INSTALL_cpio += "cpio"
+IMAGER_INSTALL:cpio += "cpio"
 CPIO_IMAGE_FORMAT ?= "newc"
 
-IMAGE_CMD_cpio() {
+IMAGE_CMD:cpio() {
     ${SUDO_CHROOT} \
         sh -c "cd ${PP_ROOTFS}; /usr/bin/find . | \
                /usr/bin/cpio -H ${CPIO_IMAGE_FORMAT} -o > \
@@ -37,16 +37,16 @@  IMAGE_CMD_cpio() {
 # image type: fit
 MKIMAGE_ARGS ??= ""
 FIT_IMAGE_SOURCE ??= "fitimage.its"
-IMAGER_INSTALL_fit += "u-boot-tools device-tree-compiler"
+IMAGER_INSTALL:fit += "u-boot-tools device-tree-compiler"
 
-IMAGE_SRC_URI_fit = "file://${FIT_IMAGE_SOURCE}.tmpl"
-IMAGE_TEMPLATE_FILES_fit = "${FIT_IMAGE_SOURCE}.tmpl"
-IMAGE_TEMPLATE_VARS_fit = "KERNEL_IMG INITRD_IMG DTB_IMG"
+IMAGE_SRC_URI:fit = "file://${FIT_IMAGE_SOURCE}.tmpl"
+IMAGE_TEMPLATE_FILES:fit = "${FIT_IMAGE_SOURCE}.tmpl"
+IMAGE_TEMPLATE_VARS:fit = "KERNEL_IMG INITRD_IMG DTB_IMG"
 
 # Default fit image deploy path (inside imager)
 FIT_IMG ?= "${PP_DEPLOY}/${IMAGE_FULLNAME}.fit"
 
-IMAGE_CMD_fit() {
+IMAGE_CMD:fit() {
     if [ ! -e "${WORKDIR}/${FIT_IMAGE_SOURCE}" ]; then
         die "FIT_IMAGE_SOURCE does not contain fitimage source file"
     fi
@@ -54,11 +54,11 @@  IMAGE_CMD_fit() {
     ${SUDO_CHROOT} /usr/bin/mkimage ${MKIMAGE_ARGS} \
                 -f '${PP_WORK}/${FIT_IMAGE_SOURCE}' '${IMAGE_FILE_CHROOT}'
 }
-IMAGE_CMD_fit[depends] = "${PN}:do_transform_template"
+IMAGE_CMD:fit[depends] = "${PN}:do_transform_template"
 
 # image type: ubifs
-IMAGER_INSTALL_ubifs += "mtd-utils"
-IMAGE_CMD_REQUIRED_ARGS_ubifs = "MKUBIFS_ARGS"
+IMAGER_INSTALL:ubifs += "mtd-utils"
+IMAGE_CMD_REQUIRED_ARGS:ubifs = "MKUBIFS_ARGS"
 
 # Default UBIFS image deploy path (inside imager)
 UBIFS_IMG ?= "${PP_DEPLOY}/${IMAGE_FULLNAME}.ubifs"
@@ -66,23 +66,23 @@  UBIFS_IMG ?= "${PP_DEPLOY}/${IMAGE_FULLNAME}.ubifs"
 # glibc bug 23960 https://sourceware.org/bugzilla/show_bug.cgi?id=23960
 # should not use QEMU on armhf target with mkfs.ubifs < v2.1.3
 THIS_ISAR_CROSS_COMPILE := "${ISAR_CROSS_COMPILE}"
-ISAR_CROSS_COMPILE_armhf = "${@bb.utils.contains('IMAGE_BASETYPES', 'ubifs', '1', '${THIS_ISAR_CROSS_COMPILE}', d)}"
+ISAR_CROSS_COMPILE:armhf = "${@bb.utils.contains('IMAGE_BASETYPES', 'ubifs', '1', '${THIS_ISAR_CROSS_COMPILE}', d)}"
 
-IMAGE_CMD_ubifs() {
+IMAGE_CMD:ubifs() {
     ${SUDO_CHROOT} /usr/sbin/mkfs.ubifs ${MKUBIFS_ARGS} \
                 -r '${PP_ROOTFS}' '${IMAGE_FILE_CHROOT}'
 }
 
 # image type: ubi
-IMAGER_INSTALL_ubi += "mtd-utils"
-IMAGE_CMD_REQUIRED_ARGS_ubi = "UBINIZE_ARGS"
+IMAGER_INSTALL:ubi += "mtd-utils"
+IMAGE_CMD_REQUIRED_ARGS:ubi = "UBINIZE_ARGS"
 UBINIZE_CFG ??= "ubinize.cfg"
 
-IMAGE_SRC_URI_ubi = "file://${UBINIZE_CFG}.tmpl"
-IMAGE_TEMPLATE_FILES_ubi = "${UBINIZE_CFG}.tmpl"
-IMAGE_TEMPLATE_VARS_ubi = "KERNEL_IMG INITRD_IMG DTB_IMG UBIFS_IMG FIT_IMG"
+IMAGE_SRC_URI:ubi = "file://${UBINIZE_CFG}.tmpl"
+IMAGE_TEMPLATE_FILES:ubi = "${UBINIZE_CFG}.tmpl"
+IMAGE_TEMPLATE_VARS:ubi = "KERNEL_IMG INITRD_IMG DTB_IMG UBIFS_IMG FIT_IMG"
 
-IMAGE_CMD_ubi() {
+IMAGE_CMD:ubi() {
     if [ ! -e "${WORKDIR}/${UBINIZE_CFG}" ]; then
         die "UBINIZE_CFG does not contain ubinize config file."
     fi
@@ -90,18 +90,18 @@  IMAGE_CMD_ubi() {
     ${SUDO_CHROOT} /usr/sbin/ubinize ${UBINIZE_ARGS} \
                 -o '${IMAGE_FILE_CHROOT}' '${PP_WORK}/${UBINIZE_CFG}'
 }
-IMAGE_CMD_ubi[depends] = "${PN}:do_transform_template"
+IMAGE_CMD:ubi[depends] = "${PN}:do_transform_template"
 
 # image conversions
 IMAGE_CONVERSIONS = "gz xz"
 
-CONVERSION_CMD_gz = "${SUDO_CHROOT} sh -c 'gzip -f -9 -n -c --rsyncable ${IMAGE_FILE_CHROOT} > ${IMAGE_FILE_CHROOT}.gz'"
-CONVERSION_DEPS_gz = "gzip"
+CONVERSION_CMD:gz = "${SUDO_CHROOT} sh -c 'gzip -f -9 -n -c --rsyncable ${IMAGE_FILE_CHROOT} > ${IMAGE_FILE_CHROOT}.gz'"
+CONVERSION_DEPS:gz = "gzip"
 
 XZ_MEMLIMIT ?= "50%"
 XZ_THREADS ?= "${@oe.utils.cpu_count(at_least=2)}"
 XZ_THREADS[vardepvalue] = "1"
 XZ_OPTIONS ?= "--memlimit=${XZ_MEMLIMIT} --threads=${XZ_THREADS}"
 XZ_OPTIONS[vardepsexclude] += "XZ_MEMLIMIT XZ_THREADS"
-CONVERSION_CMD_xz = "${SUDO_CHROOT} sh -c 'xz -c ${XZ_OPTIONS} ${IMAGE_FILE_CHROOT} > ${IMAGE_FILE_CHROOT}.xz'"
-CONVERSION_DEPS_xz = "xz-utils"
+CONVERSION_CMD:xz = "${SUDO_CHROOT} sh -c 'xz -c ${XZ_OPTIONS} ${IMAGE_FILE_CHROOT} > ${IMAGE_FILE_CHROOT}.xz'"
+CONVERSION_DEPS:xz = "xz-utils"
diff --git a/meta/classes/imagetypes_container.bbclass b/meta/classes/imagetypes_container.bbclass
index 436a005..71b0c7e 100644
--- a/meta/classes/imagetypes_container.bbclass
+++ b/meta/classes/imagetypes_container.bbclass
@@ -17,8 +17,8 @@  python() {
         return
     for t in d.getVar('CONTAINER_TYPES').split():
         t_clean = t.replace('-', '_').replace('.', '_')
-        d.setVar('IMAGE_CMD_' + t_clean, 'convert_container %s "${CONTAINER_IMAGE_NAME}" "${IMAGE_FILE_HOST}"' % t)
-        d.setVar('IMAGE_FULLNAME_' + t_clean, '${PN}-${DISTRO}-${DISTRO_ARCH}')
+        d.setVar('IMAGE_CMD:' + t_clean, 'convert_container %s "${CONTAINER_IMAGE_NAME}" "${IMAGE_FILE_HOST}"' % t)
+        d.setVar('IMAGE_FULLNAME:' + t_clean, '${PN}-${DISTRO}-${DISTRO_ARCH}')
         bb.build.addtask('containerize', 'do_image_' + t_clean, 'do_image_tools', d)
 }
 
diff --git a/meta/classes/imagetypes_vm.bbclass b/meta/classes/imagetypes_vm.bbclass
index 8a676ac..241f5e8 100644
--- a/meta/classes/imagetypes_vm.bbclass
+++ b/meta/classes/imagetypes_vm.bbclass
@@ -8,12 +8,12 @@  inherit buildchroot
 
 USING_OVA = "${@bb.utils.contains('IMAGE_BASETYPES', 'ova', '1', '0', d)}"
 
-FILESEXTRAPATHS_prepend := "${LAYERDIR_core}/classes/vm-img:"
+FILESEXTRAPATHS:prepend := "${LAYERDIR_core}/classes/vm-img:"
 OVF_TEMPLATE_FILE ?= "vm-img-virtualbox.ovf.tmpl"
 SRC_URI += "${@'file://${OVF_TEMPLATE_FILE}' if d.getVar('USING_OVA') == '1' else ''}"
 
-IMAGE_TYPEDEP_ova = "wic"
-IMAGER_INSTALL_ova += "qemu-utils gawk uuid-runtime"
+IMAGE_TYPEDEP:ova = "wic"
+IMAGER_INSTALL:ova += "qemu-utils gawk uuid-runtime"
 
 # virtual machine disk settings
 SOURCE_IMAGE_FILE ?= "${IMAGE_FULLNAME}.wic"
@@ -71,7 +71,7 @@  TEMPLATE_FILES += "${@'${OVF_TEMPLATE_FILE}' if d.getVar('USING_OVA') == '1' els
 TEMPLATE_VARS += "${OVA_VARS}"
 
 do_image_ova[prefuncs] += "convert_wic"
-IMAGE_CMD_ova() {
+IMAGE_CMD:ova() {
     if [ ! ${VIRTUAL_MACHINE_IMAGE_TYPE} = "vmdk" ]; then
         exit 0
     fi
diff --git a/meta/classes/imagetypes_wic.bbclass b/meta/classes/imagetypes_wic.bbclass
index 61a74d4..4155451 100644
--- a/meta/classes/imagetypes_wic.bbclass
+++ b/meta/classes/imagetypes_wic.bbclass
@@ -85,7 +85,7 @@  python () {
 
 inherit buildchroot
 
-IMAGER_INSTALL_wic += "${WIC_IMAGER_INSTALL}"
+IMAGER_INSTALL:wic += "${WIC_IMAGER_INSTALL}"
 # wic comes with reasonable defaults, and the proper interface is the wks file
 ROOTFS_EXTRA ?= "0"
 
@@ -131,6 +131,7 @@  python do_rootfs_wicenv () {
 }
 
 addtask do_rootfs_wicenv after do_rootfs before do_image_wic
+#do_rootfs_wicenv[network] = "1"
 do_rootfs_wicenv[vardeps] += "${WICVARS}"
 do_rootfs_wicenv[prefuncs] = 'set_image_size'
 
@@ -142,7 +143,7 @@  check_for_wic_warnings() {
 }
 
 do_image_wic[file-checksums] += "${WKS_FILE_CHECKSUM}"
-IMAGE_CMD_wic() {
+IMAGE_CMD:wic() {
     wic_do_mounts
     generate_wic_image
     check_for_wic_warnings
diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass
index 7e9fb0f..419c12f 100644
--- a/meta/classes/rootfs.bbclass
+++ b/meta/classes/rootfs.bbclass
@@ -72,7 +72,7 @@  rootfs_do_qemu() {
 }
 
 BOOTSTRAP_SRC = "${DEPLOY_DIR_BOOTSTRAP}/${ROOTFS_DISTRO}-host_${DISTRO}-${DISTRO_ARCH}"
-BOOTSTRAP_SRC_${ROOTFS_ARCH} = "${DEPLOY_DIR_BOOTSTRAP}/${ROOTFS_DISTRO}-${ROOTFS_ARCH}"
+BOOTSTRAP_SRC:${ROOTFS_ARCH} = "${DEPLOY_DIR_BOOTSTRAP}/${ROOTFS_DISTRO}-${ROOTFS_ARCH}"
 
 rootfs_prepare[weight] = "25"
 rootfs_prepare(){
@@ -175,6 +175,7 @@  do_rootfs_install[vardeps] += "${ROOTFS_CONFIGURE_COMMAND} ${ROOTFS_INSTALL_COMM
 do_rootfs_install[vardepsexclude] += "IMAGE_ROOTFS"
 do_rootfs_install[depends] = "isar-bootstrap-${@'target' if d.getVar('ROOTFS_ARCH') == d.getVar('DISTRO_ARCH') else 'host'}:do_build"
 do_rootfs_install[recrdeptask] = "do_deploy_deb"
+#do_rootfs_install[network] = "1"
 python do_rootfs_install() {
     configure_cmds = (d.getVar("ROOTFS_CONFIGURE_COMMAND", True) or "").split()
     install_cmds = (d.getVar("ROOTFS_INSTALL_COMMAND", True) or "").split()
@@ -288,6 +289,7 @@  python do_rootfs() {
 addtask rootfs before do_build
 
 do_rootfs_postprocess[depends] = "base-apt:do_cache isar-apt:do_cache_config"
+#do_rootfs_postprocess[network] = "1"
 
 SSTATETASKS += "do_rootfs_install"
 SSTATECREATEFUNCS += "rootfs_install_sstate_prepare"
diff --git a/meta/classes/sdk.bbclass b/meta/classes/sdk.bbclass
index 477dff7..4f43ea6 100644
--- a/meta/classes/sdk.bbclass
+++ b/meta/classes/sdk.bbclass
@@ -45,46 +45,46 @@  SDK_PREINSTALL += " \
     equivs"
 
 TOOLCHAIN = "crossbuild-essential-${DISTRO_ARCH}"
-TOOLCHAIN_${HOST_ARCH} = "build-essential"
-TOOLCHAIN_i386 = "build-essential"
-TOOLCHAIN_append_compat-arch = " crossbuild-essential-${COMPAT_DISTRO_ARCH}"
+TOOLCHAIN:${HOST_ARCH} = "build-essential"
+TOOLCHAIN:i386 = "build-essential"
+TOOLCHAIN:append:compat-arch = " crossbuild-essential-${COMPAT_DISTRO_ARCH}"
 
 # rootfs/image overrides for the SDK
-ROOTFS_ARCH_class-sdk = "${HOST_ARCH}"
-ROOTFS_DISTRO_class-sdk = "${HOST_DISTRO}"
-ROOTFS_PACKAGES_class-sdk = "sdk-files ${TOOLCHAIN} ${SDK_PREINSTALL} ${SDK_INSTALL}"
-ROOTFS_FEATURES_append_class-sdk = " clean-package-cache generate-manifest export-dpkg-status"
-ROOTFS_MANIFEST_DEPLOY_DIR_class-sdk = "${DEPLOY_DIR_SDKCHROOT}"
-ROOTFS_DPKGSTATUS_DEPLOY_DIR_class-sdk = "${DEPLOY_DIR_SDKCHROOT}"
+ROOTFS_ARCH:class-sdk = "${HOST_ARCH}"
+ROOTFS_DISTRO:class-sdk = "${HOST_DISTRO}"
+ROOTFS_PACKAGES:class-sdk = "sdk-files ${TOOLCHAIN} ${SDK_PREINSTALL} ${SDK_INSTALL}"
+ROOTFS_FEATURES:append:class-sdk = " clean-package-cache generate-manifest export-dpkg-status"
+ROOTFS_MANIFEST_DEPLOY_DIR:class-sdk = "${DEPLOY_DIR_SDKCHROOT}"
+ROOTFS_DPKGSTATUS_DEPLOY_DIR:class-sdk = "${DEPLOY_DIR_SDKCHROOT}"
 
 IMAGE_FSTYPES_class-sdk = "${SDK_FORMATS}"
 
 # bitbake dependencies
 SDKDEPENDS += "sdk-files ${SDK_INSTALL}"
-SDKDEPENDS_append_riscv64 = "${@' crossbuild-essential-riscv64' if d.getVar('ISAR_CROSS_COMPILE', True) == '1' and d.getVar('PN') != 'crossbuild-essential-riscv64' else ''}"
-DEPENDS_class-sdk = "${SDKDEPENDS}"
+SDKDEPENDS:append:riscv64 = "${@' crossbuild-essential-riscv64' if d.getVar('ISAR_CROSS_COMPILE', True) == '1' and d.getVar('PN') != 'crossbuild-essential-riscv64' else ''}"
+DEPENDS:class-sdk = "${SDKDEPENDS}"
 
 SDKROOTFSDEPENDS = ""
-SDKROOTFSDEPENDS_class-sdk = "${BPN}:do_rootfs"
+SDKROOTFSDEPENDS:class-sdk = "${BPN}:do_rootfs"
 do_rootfs_install[depends] += "${SDKROOTFSDEPENDS}"
 
 SDKROOTFSVARDEPS = ""
-SDKROOTFSVARDEPS_class-sdk = "SDK_INCLUDE_ISAR_APT"
+SDKROOTFSVARDEPS:class-sdk = "SDK_INCLUDE_ISAR_APT"
 do_rootfs_install[vardeps] += "${SDKROOTFSVARDEPS}"
 
 # additional SDK steps
-ROOTFS_CONFIGURE_COMMAND_append_class-sdk = " ${@'rootfs_configure_isar_apt_dir' if d.getVar('SDK_INCLUDE_ISAR_APT') == '1' else ''}"
+ROOTFS_CONFIGURE_COMMAND:append:class-sdk = " ${@'rootfs_configure_isar_apt_dir' if d.getVar('SDK_INCLUDE_ISAR_APT') == '1' else ''}"
 rootfs_configure_isar_apt_dir() {
     # Copy isar-apt instead of mounting:
     sudo cp -Trpfx ${REPO_ISAR_DIR}/${DISTRO} ${ROOTFSDIR}/isar-apt
 }
 
-ROOTFS_POSTPROCESS_COMMAND_prepend_class-sdk = "sdkchroot_configscript "
+ROOTFS_POSTPROCESS_COMMAND:prepend:class-sdk = "sdkchroot_configscript "
 sdkchroot_configscript () {
     sudo chroot ${ROOTFSDIR} /configscript.sh ${DISTRO_ARCH}
 }
 
-ROOTFS_POSTPROCESS_COMMAND_append_class-sdk = " sdkchroot_finalize"
+ROOTFS_POSTPROCESS_COMMAND:append:class-sdk = " sdkchroot_finalize"
 sdkchroot_finalize() {
     if [ "${SDK_INCLUDE_ISAR_APT}" = "0" ]; then
         # Remove isar-apt repo entry
@@ -126,7 +126,7 @@  do_deploy_sdkchroot() {
     ln -Tfsr "${ROOTFSDIR}" "${SDKCHROOT_DIR}"
 }
 
-CLEANFUNCS_class-sdk = "clean_deploy"
+CLEANFUNCS:class-sdk = "clean_deploy"
 clean_deploy() {
     rm -f "${SDKCHROOT_DIR}"
 }
diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
index a05bd90..77a2a32 100644
--- a/meta/conf/bitbake.conf
+++ b/meta/conf/bitbake.conf
@@ -30,9 +30,9 @@  DEBDIR = "${DL_DIR}/deb"
 DEBSRCDIR = "${DL_DIR}/deb-src"
 P = "${PN}-${PV}"
 PF = "${PN}-${PV}-${PR}"
-PN = "${@bb.parse.BBHandler.vars_from_file(d.getVar('FILE', False),d)[0] or 'defaultpkgname'}"
-PV = "${@bb.parse.BBHandler.vars_from_file(d.getVar('FILE', False),d)[1] or '1.0'}"
-PR = "${@bb.parse.BBHandler.vars_from_file(d.getVar('FILE', False),d)[2] or 'r0'}"
+PN = "${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[0] or 'defaultpkgname'}"
+PV = "${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or '1.0'}"
+PR = "${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[2] or 'r0'}"
 PROVIDES = ""
 S = "${WORKDIR}/${P}"
 AUTOREV = "${@bb.fetch2.get_autorev(d)}"
@@ -61,21 +61,21 @@  BUILDCHROOT_TARGET_DIR = "${DEPLOY_DIR_BUILDCHROOT}-target/${DISTRO}-${DISTRO_AR
 SDKCHROOT_DIR = "${DEPLOY_DIR_SDKCHROOT}/${DISTRO}-${DISTRO_ARCH}"
 CACHE = "${TMPDIR}/cache"
 KERNEL_FILE ?= "vmlinuz"
-KERNEL_FILE_mipsel ?= "vmlinux"
-KERNEL_FILE_riscv64 ?= "vmlinux"
-KERNEL_FILE_arm64 ?= "vmlinux"
+KERNEL_FILE:mipsel ?= "vmlinux"
+KERNEL_FILE:riscv64 ?= "vmlinux"
+KERNEL_FILE:arm64 ?= "vmlinux"
 
 OVERRIDES = "${DISTRO_ARCH}:${COMPAT_OVERRIDE}:${MACHINE}:${DISTRO}:forcevariable"
 FILESOVERRIDES = "${DISTRO_ARCH}:${MACHINE}"
 COMPAT_OVERRIDE = "${@'compat-arch' if d.getVar('ISAR_ENABLE_COMPAT_ARCH') == '1' else ''}"
 
 # Setting default QEMU_ARCH variables for different DISTRO_ARCH:
-QEMU_ARCH_amd64 = "x86_64"
-QEMU_ARCH_i386 = "i386"
-QEMU_ARCH_armhf = "arm"
-QEMU_ARCH_arm64 = "aarch64"
-QEMU_ARCH_mipsel = "mipsel"
-QEMU_ARCH_riscv64 = "riscv64"
+QEMU_ARCH:amd64 = "x86_64"
+QEMU_ARCH:i386 = "i386"
+QEMU_ARCH:armhf = "arm"
+QEMU_ARCH:arm64 = "aarch64"
+QEMU_ARCH:mipsel = "mipsel"
+QEMU_ARCH:riscv64 = "riscv64"
 
 # Codename of the repository created by the caching class
 DEBDISTRONAME ?= "isar"
@@ -94,23 +94,34 @@  THIRD_PARTY_APT_KEYRING = "/etc/apt/trusted.gpg.d/third_party.gpg"
 REPO_BASE_DIR = "${DEPLOY_DIR}/base-apt/${DISTRO}/apt"
 REPO_BASE_DB_DIR = "${DEPLOY_DIR}/base-apt/${DISTRO}/db"
 
-BB_HASHBASE_WHITELIST ?= "TMPDIR FILE PATH PWD BB_TASKHASH BBPATH BBSERVER DL_DIR \
-    SSTATE_DIR THISDIR FILESEXTRAPATHS FILE_DIRNAME HOME LOGNAME SHELL TERM \
+# Setup our default hash policy
+BB_SIGNATURE_HANDLER ?= "OEBasicHash"
+BB_HASHEXCLUDE_COMMON ?= "TMPDIR FILE PATH PWD BB_TASKHASH BBPATH BBSERVER DL_DIR \
+    THISDIR FILESEXTRAPATHS FILE_DIRNAME HOME LOGNAME SHELL TERM \
     USER FILESPATH STAGING_DIR_HOST STAGING_DIR_TARGET COREBASE PRSERV_HOST \
-    PRSERV_DUMPDIR PRSERV_DUMPFILE PRSERV_LOCKDOWN PARALLEL_MAKE \
+    STAMPS_DIR PRSERV_DUMPDIR PRSERV_DUMPFILE PRSERV_LOCKDOWN PARALLEL_MAKE \
     CCACHE_DIR EXTERNAL_TOOLCHAIN CCACHE CCACHE_NOHASHDIR LICENSE_PATH SDKPKGSUFFIX \
-    WORKDIR STAMPCLEAN PKGDATA_DIR BUILD_ARCH SSTATE_PKGARCH \
-    BB_WORKERCONTEXT BB_LIMITEDDEPS DEPLOY_DIR BUILDCHROOT_DIR \
-    REPO_ISAR_DIR REPO_ISAR_DB_DIR REPO_BASE_DIR REPO_BASE_DB_DIR LAYERDIR_core \
-    SCRIPTSDIR TOPDIR"
-BB_HASHCONFIG_WHITELIST ?= "${BB_HASHBASE_WHITELIST} DATE TIME SSH_AGENT_PID \
-    SSH_AUTH_SOCK PSEUDO_BUILD BB_ENV_EXTRAWHITE DISABLE_SANITY_CHECKS \
+    WARN_QA WORKDIR STAMPCLEAN PKGDATA_DIR BUILD_ARCH SSTATE_PKGARCH \
+    BB_WORKERCONTEXT BB_LIMITEDDEPS BB_UNIHASH extend_recipe_sysroot DEPLOY_DIR \
+    SSTATE_HASHEQUIV_METHOD SSTATE_HASHEQUIV_REPORT_TASKDATA \
+    SSTATE_HASHEQUIV_OWNER CCACHE_TOP_DIR BB_HASHSERVE GIT_CEILING_DIRECTORIES \
+    OMP_NUM_THREADS BB_CURRENTTASK \
+    BUILDCHROOT_DIR REPO_ISAR_DIR REPO_ISAR_DB_DIR REPO_BASE_DIR REPO_BASE_DB_DIR \
+    LAYERDIR_core SCRIPTSDIR TOPDIR"
+BB_BASEHASH_IGNORE_VARS ?= "${BB_HASHEXCLUDE_COMMON} PSEUDO_IGNORE_PATHS BUILDHISTORY_DIR \
+    SSTATE_DIR SOURCE_DATE_EPOCH"
+BB_HASHCONFIG_IGNORE_VARS ?= "${BB_HASHEXCLUDE_COMMON} DATE TIME SSH_AGENT_PID \
+    SSH_AUTH_SOCK PSEUDO_BUILD BB_ENV_PASSTHROUGH_ADDITIONS DISABLE_SANITY_CHECKS \
     BB_NUMBER_THREADS BB_ORIGENV BB_INVALIDCONF BBINCLUDED \
     GIT_PROXY_COMMAND ALL_PROXY all_proxy NO_PROXY no_proxy FTP_PROXY ftp_proxy \
     HTTP_PROXY http_proxy HTTPS_PROXY https_proxy SOCKS5_USER SOCKS5_PASSWD \
     BB_SETSCENE_ENFORCE BB_CMDLINE BB_SERVER_TIMEOUT"
-BB_SIGNATURE_HANDLER ?= "basichash"
-BB_STAMP_POLICY ?= "full"
+BB_SIGNATURE_EXCLUDE_FLAGS ?= "doc deps depends \
+    lockfiles vardepsexclude vardeps vardepvalue vardepvalueexclude \
+    file-checksums python task nostamp \
+    sstate-lockfile-shared prefuncs postfuncs export_func deptask rdeptask \
+    recrdeptask nodeprrecs stamp-extra-info sstate-outputdirs filename lineno \
+    progress mcdepends number_threads"
 
 # Default to setting automatically based on cpu count
 BB_NUMBER_THREADS ?= "${@bb.utils.cpu_count()}"
@@ -120,6 +131,9 @@  PARALLEL_MAKE ?= "-j ${@bb.utils.cpu_count()}"
 
 BBINCLUDELOGS ??= "yes"
 
+ZSTD_THREADS ?= "${@oe.utils.cpu_count(at_least=2)}"
+ZSTD_THREADS[vardepvalue] = "1"
+
 # Add event handlers for bitbake
 INHERIT += "isar-events sstate"
 
diff --git a/meta/conf/distro/debian-common.conf b/meta/conf/distro/debian-common.conf
index d24fc2b..6f6a165 100644
--- a/meta/conf/distro/debian-common.conf
+++ b/meta/conf/distro/debian-common.conf
@@ -21,12 +21,12 @@  WIC_IMAGER_INSTALL = "parted \
                       tar \
                       fdisk"
 
-GRUB_BOOTLOADER_INSTALL_amd64 = "grub-efi-amd64-bin"
-GRUB_BOOTLOADER_INSTALL_i386 = "grub-efi-ia32-bin"
-GRUB_BOOTLOADER_INSTALL_armhf = "grub-efi-arm-bin"
-GRUB_BOOTLOADER_INSTALL_arm64 = "grub-efi-arm64-bin"
+GRUB_BOOTLOADER_INSTALL:amd64 = "grub-efi-amd64-bin"
+GRUB_BOOTLOADER_INSTALL:i386 = "grub-efi-ia32-bin"
+GRUB_BOOTLOADER_INSTALL:armhf = "grub-efi-arm-bin"
+GRUB_BOOTLOADER_INSTALL:arm64 = "grub-efi-arm64-bin"
 
 SYSLINUX_BOOTLOADER_INSTALL = "syslinux syslinux-common"
 
-COMPAT_DISTRO_ARCH_amd64 = "i386"
-COMPAT_DISTRO_ARCH_arm64 = "armhf"
+COMPAT_DISTRO_ARCH:amd64 = "i386"
+COMPAT_DISTRO_ARCH:arm64 = "armhf"
diff --git a/meta/conf/distro/debian-stretch.conf b/meta/conf/distro/debian-stretch.conf
index 8b38fa5..fe62523 100644
--- a/meta/conf/distro/debian-stretch.conf
+++ b/meta/conf/distro/debian-stretch.conf
@@ -13,5 +13,5 @@  DISTRO_KERNELS ?= "4kc-malta 586 5kc-malta 686 686-pae amd64 arm64 armmp \
     rt-686-pae rt-amd64 s390x"
 
 WIC_IMAGER_INSTALL += "python3"
-WIC_IMAGER_INSTALL_remove = "fdisk"
-WIC_IMAGER_INSTALL_remove = "python3-distutils"
+WIC_IMAGER_INSTALL:remove = "fdisk"
+WIC_IMAGER_INSTALL:remove = "python3-distutils"
diff --git a/meta/recipes-bsp/barebox/barebox.inc b/meta/recipes-bsp/barebox/barebox.inc
index 5896d60..2999113 100644
--- a/meta/recipes-bsp/barebox/barebox.inc
+++ b/meta/recipes-bsp/barebox/barebox.inc
@@ -14,7 +14,7 @@  BAREBOX_BUILD_DIR ?= "build"
 BAREBOX_VERSION_EXTENSION ?= ""
 BAREBOX_ENV ?= ""
 
-FILESEXTRAPATHS_prepend := "${FILE_DIRNAME}/files:"
+FILESEXTRAPATHS:prepend := "${FILE_DIRNAME}/files:"
 SRC_URI += "file://rules.tmpl \
             file://version.cfg.tmpl \
             file://defaultenv.cfg.tmpl"
diff --git a/meta/recipes-bsp/optee-os/optee-os-custom.inc b/meta/recipes-bsp/optee-os/optee-os-custom.inc
index 23612d8..d48827a 100644
--- a/meta/recipes-bsp/optee-os/optee-os-custom.inc
+++ b/meta/recipes-bsp/optee-os/optee-os-custom.inc
@@ -7,7 +7,7 @@ 
 
 inherit dpkg
 
-FILESEXTRAPATHS_prepend := "${FILE_DIRNAME}/files:"
+FILESEXTRAPATHS:prepend := "${FILE_DIRNAME}/files:"
 
 SRC_URI += "file://debian/"
 
diff --git a/meta/recipes-bsp/trusted-firmware-a/trusted-firmware-a-custom.inc b/meta/recipes-bsp/trusted-firmware-a/trusted-firmware-a-custom.inc
index 64153c6..052d9a4 100644
--- a/meta/recipes-bsp/trusted-firmware-a/trusted-firmware-a-custom.inc
+++ b/meta/recipes-bsp/trusted-firmware-a/trusted-firmware-a-custom.inc
@@ -7,7 +7,7 @@ 
 
 inherit dpkg
 
-FILESEXTRAPATHS_prepend := "${FILE_DIRNAME}/files:"
+FILESEXTRAPATHS:prepend := "${FILE_DIRNAME}/files:"
 
 SRC_URI += "file://debian/"
 
diff --git a/meta/recipes-bsp/u-boot/u-boot-custom.inc b/meta/recipes-bsp/u-boot/u-boot-custom.inc
index 2af7ada..876eb36 100644
--- a/meta/recipes-bsp/u-boot/u-boot-custom.inc
+++ b/meta/recipes-bsp/u-boot/u-boot-custom.inc
@@ -5,7 +5,7 @@ 
 #
 # SPDX-License-Identifier: MIT
 
-FILESEXTRAPATHS_prepend := "${FILE_DIRNAME}/files:"
+FILESEXTRAPATHS:prepend := "${FILE_DIRNAME}/files:"
 
 DESCRIPTION ?= "Custom U-Boot"
 
diff --git a/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc b/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc
index 6cc62a5..c04a0ad 100644
--- a/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc
+++ b/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc
@@ -7,7 +7,7 @@ 
 
 LICENSE = "gpl-2.0"
 LIC_FILES_CHKSUM = "file://${LAYERDIR_core}/licenses/COPYING.GPLv2;md5=751419260aa954499f7abaabaa882bbe"
-FILESPATH_prepend := "${THISDIR}/files:"
+FILESPATH:prepend := "${THISDIR}/files:"
 SRC_URI = " \
     file://isar-apt-fallback.conf \
     file://locale \
@@ -25,11 +25,11 @@  DISTRO_BOOTSTRAP_KEYFILES = ""
 THIRD_PARTY_APT_KEYFILES = ""
 DEPLOY_ISAR_BOOTSTRAP ?= ""
 DISTRO_BOOTSTRAP_BASE_PACKAGES = "locales"
-DISTRO_BOOTSTRAP_BASE_PACKAGES_append_gnupg = ",gnupg"
-DISTRO_BOOTSTRAP_BASE_PACKAGES_append_https-support = "${@https_support(d)}"
+DISTRO_BOOTSTRAP_BASE_PACKAGES:append:gnupg = ",gnupg"
+DISTRO_BOOTSTRAP_BASE_PACKAGES:append:https-support = "${@https_support(d)}"
 DISTRO_VARS_PREFIX ?= "${@'HOST_' if d.getVar('BOOTSTRAP_FOR_HOST') == '1' else ''}"
 BOOTSTRAP_DISTRO = "${@d.getVar('HOST_DISTRO' if d.getVar('BOOTSTRAP_FOR_HOST') == '1' else 'DISTRO')}"
-FILESEXTRAPATHS_append = ":${BBPATH}"
+FILESEXTRAPATHS:append = ":${BBPATH}"
 
 inherit deb-dl-dir
 
@@ -191,7 +191,7 @@  def get_distro_needs_https_support(d):
     else:
         return ""
 
-OVERRIDES_append = ":${@get_distro_needs_https_support(d)}"
+OVERRIDES:append = ":${@get_distro_needs_https_support(d)}"
 
 def get_distro_needs_gpg_support(d):
     if d.getVar("DISTRO_BOOTSTRAP_KEYS") or \
@@ -201,7 +201,7 @@  def get_distro_needs_gpg_support(d):
     else:
         return ""
 
-OVERRIDES_append = ":${@get_distro_needs_gpg_support(d)}"
+OVERRIDES:append = ":${@get_distro_needs_gpg_support(d)}"
 
 def get_distro_source(d):
     return get_distro_primary_source_entry(d)[0]
@@ -277,6 +277,7 @@  do_bootstrap[vardeps] += " \
     "
 do_bootstrap[dirs] = "${DEPLOY_DIR_BOOTSTRAP}"
 do_bootstrap[depends] = "base-apt:do_cache isar-apt:do_cache_config"
+do_bootstrap[network] = "1"
 
 do_bootstrap() {
     if [ "${ISAR_ENABLE_COMPAT_ARCH}" = "1" ]; then
@@ -296,6 +297,9 @@  do_bootstrap() {
     fi
     E="${@ isar_export_proxies(d)}"
     export BOOTSTRAP_FOR_HOST debootstrap_args E
+    id
+    mount
+    ls -l /etc/sudo.conf /usr/bin/sudo
 
     sudo rm -rf --one-file-system "${ROOTFSDIR}"
     deb_dl_dir_import "${ROOTFSDIR}" "${BOOTSTRAP_DISTRO}"
diff --git a/meta/recipes-devtools/buildchroot/buildchroot.inc b/meta/recipes-devtools/buildchroot/buildchroot.inc
index aa190e9..ae4ffa7 100644
--- a/meta/recipes-devtools/buildchroot/buildchroot.inc
+++ b/meta/recipes-devtools/buildchroot/buildchroot.inc
@@ -6,7 +6,7 @@ 
 LICENSE = "gpl-2.0"
 LIC_FILES_CHKSUM = "file://${LAYERDIR_core}/licenses/COPYING.GPLv2;md5=751419260aa954499f7abaabaa882bbe"
 
-FILESPATH_prepend := "${THISDIR}/files:"
+FILESPATH:prepend := "${THISDIR}/files:"
 SRC_URI = "file://configscript.sh \
            file://build.sh \
            file://common.sh \
@@ -23,7 +23,7 @@  ROOTFS_MANIFEST_DEPLOY_DIR = "${DEPLOY_DIR_BUILDCHROOT}"
 ROOTFS_DPKGSTATUS_DEPLOY_DIR = "${DEPLOY_DIR_BUILDCHROOT}"
 ROOTFS_FEATURES += "generate-manifest export-dpkg-status"
 
-BUILDCHROOT_COMPAT_PREINSTALL_compat-arch = " \
+BUILDCHROOT_COMPAT_PREINSTALL:compat-arch = " \
     libc6:${COMPAT_DISTRO_ARCH} \
     crossbuild-essential-${COMPAT_DISTRO_ARCH}"
 
@@ -42,7 +42,7 @@  BUILDCHROOT_PREINSTALL_COMMON = " \
     equivs \
     adduser"
 
-rootfs_do_mounts_append() {
+rootfs_do_mounts:append() {
     sudo -s <<'EOSUDO'
     set -e
     mkdir -p '${BUILDCHROOT_DIR}/downloads'
diff --git a/meta/recipes-kernel/kselftest/kselftest.inc b/meta/recipes-kernel/kselftest/kselftest.inc
index 6187d8e..a8ef125 100644
--- a/meta/recipes-kernel/kselftest/kselftest.inc
+++ b/meta/recipes-kernel/kselftest/kselftest.inc
@@ -7,7 +7,7 @@ 
 
 inherit dpkg
 
-FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
 
 # Some test-cases like memfd compilation failed in cross-compilation.
 # Force native compilation for now to have consistent output across
@@ -44,8 +44,10 @@  KSELFTEST_SKIP_TARGETS ?= ""
 KSELFTEST_FORCE_TARGETS ?= "0"
 
 KSELFTEST_ARGS = "${@ "TARGETS=\"${KSELFTEST_TARGETS}\"" if d.getVar('KSELFTEST_TARGETS', True) else ''}"
-KSELFTEST_ARGS_append = "${@ " FORCE_TARGETS=1" if d.getVar('KSELFTEST_FORCE_TARGETS', True) == '1' else ''}"
-KSELFTEST_ARGS_append .= "${@ " SKIP_TARGETS=\"${KSELFTEST_SKIP_TARGETS}\"" if d.getVar('KSELFTEST_SKIP_TARGETS', True) else ''}"
+KSELFTEST_ARGS:append = "\
+    ${@ " FORCE_TARGETS=1" if d.getVar('KSELFTEST_FORCE_TARGETS', True) == '1' else ''} \
+    ${@ " SKIP_TARGETS=\"${KSELFTEST_SKIP_TARGETS}\"" if d.getVar('KSELFTEST_SKIP_TARGETS', True) else ''} \
+    "
 
 do_prepare_build[cleandirs] += "${S}/debian"
 do_prepare_build() {
diff --git a/meta/recipes-kernel/linux-module/module.inc b/meta/recipes-kernel/linux-module/module.inc
index 50acfe1..fcf5d57 100644
--- a/meta/recipes-kernel/linux-module/module.inc
+++ b/meta/recipes-kernel/linux-module/module.inc
@@ -5,7 +5,7 @@ 
 #
 # SPDX-License-Identifier: MIT
 
-FILESEXTRAPATHS_prepend := "${FILE_DIRNAME}/files:"
+FILESEXTRAPATHS:prepend := "${FILE_DIRNAME}/files:"
 
 DESCRIPTION ?= "Custom kernel module ${PN}"
 
diff --git a/meta/recipes-kernel/linux/linux-custom.inc b/meta/recipes-kernel/linux/linux-custom.inc
index a6b1cda..9efdc26 100644
--- a/meta/recipes-kernel/linux/linux-custom.inc
+++ b/meta/recipes-kernel/linux/linux-custom.inc
@@ -46,7 +46,7 @@  LINUX_VERSION_EXTENSION ?= ""
 KERNEL_DEFCONFIG ??= ""
 
 # Add our template meta-data to the sources
-FILESEXTRAPATHS_prepend := "${FILE_DIRNAME}/files:"
+FILESEXTRAPATHS:prepend := "${FILE_DIRNAME}/files:"
 SRC_URI += "file://debian"
 
 # Variables and files that make our templates
@@ -132,7 +132,7 @@  def get_additional_build_profiles(d):
 
 DEB_BUILD_PROFILES += "${@get_additional_build_profiles(d)}"
 
-do_prepare_build_prepend() {
+do_prepare_build:prepend() {
 	# copy meta-data over to source tree
 	rm -rf ${S}/debian
 	cp -r ${WORKDIR}/debian ${S}/
@@ -203,6 +203,6 @@  EOF
 	fi
 }
 
-dpkg_runbuild_prepend() {
+dpkg_runbuild:prepend() {
 	dpkg_configure_kernel
 }
diff --git a/scripts/isar-buildenv-internal b/scripts/isar-buildenv-internal
index ec8e437..046c332 100755
--- a/scripts/isar-buildenv-internal
+++ b/scripts/isar-buildenv-internal
@@ -77,5 +77,5 @@  export PATH
 BBPATH="${BUILDDIR}"
 export BBPATH
 
-BB_ENV_EXTRAWHITE="BITBAKEDIR SCRIPTSDIR TESTSUITEDIR http_proxy https_proxy ftp_proxy no_proxy GNUPGHOME"
-export BB_ENV_EXTRAWHITE
+BB_ENV_PASSTHROUGH_ADDITIONS="BITBAKEDIR SCRIPTSDIR TESTSUITEDIR http_proxy https_proxy ftp_proxy no_proxy GNUPGHOME"
+export BB_ENV_PASSTHROUGH_ADDITIONS
diff --git a/scripts/isar-sstate b/scripts/isar-sstate
index 8ea85ed..4140eda 100755
--- a/scripts/isar-sstate
+++ b/scripts/isar-sstate
@@ -40,7 +40,7 @@  followed by one of `w`, `d`, `h`, `m`, or `s` (for weeks, days, hours, minutes,
 seconds, respectively).
 
 `--max-age` specifies up to which age artifacts should be kept in the cache.
-Anything older will be removed. Note that this only applies to the `.tgz` files
+Anything older will be removed. Note that this only applies to the `.zst` files
 containing the actual cached items, not the `.siginfo` files containing the
 cache metadata (signatures and hashes).
 To permit analysis of caching details using the `analyze` command, the siginfo
@@ -118,16 +118,17 @@  apt-get install python3-botocore
 import argparse
 from collections import namedtuple
 import datetime
+import json
 import os
 import re
 import shutil
 import sys
 from tempfile import NamedTemporaryFile
 import time
-import pickle
 
 sys.path.insert(0, os.path.join(os.path.dirname(os.path.realpath(__file__)), '..', 'bitbake', 'lib'))
-from bb.siggen import compare_sigfiles
+from bb.siggen import compare_sigfiles, SetDecoder
+import bb.compress.zstd
 
 # runtime detection of supported targets
 webdav_supported = True
@@ -574,7 +575,7 @@  def arguments():
         '-v', '--verbose', default=False, action='store_true')
     parser.add_argument(
         '--max-age', type=str, default='1d',
-        help="clean: remove tgz files older than MAX_AGE (a number followed by w|d|h|m|s)")
+        help="clean: remove artifacts older than MAX_AGE (a number followed by w|d|h|m|s)")
     parser.add_argument(
         '--max-sig-age', type=str, default=None,
         help="clean: remove siginfo files older than MAX_SIG_AGE (defaults to MAX_AGE)")
@@ -658,21 +659,21 @@  def sstate_clean(target, max_age, max_sig_age, verbose, **kwargs):
     links = [f for f in all_files if f.islink]
     if links:
         print(f"NOTE: we have links: {links}")
-    tgz_files = [f for f in all_files if f.suffix == 'tgz']
-    siginfo_files = [f for f in all_files if f.suffix == 'tgz.siginfo']
-    del_tgz_files = [f for f in tgz_files if f.age >= max_age_seconds]
-    del_tgz_hashes = [f.hash for f in del_tgz_files]
+    artifact_files = [f for f in all_files if f.suffix == 'zst']
+    siginfo_files = [f for f in all_files if f.suffix == 'zst.siginfo']
+    del_artifact_files = [f for f in artifact_files if f.age >= max_age_seconds]
+    del_artifact_hashes = [f.hash for f in del_artifact_files]
     del_siginfo_files = [f for f in siginfo_files if
-                         f.age >= max_sig_age_seconds or f.hash in del_tgz_hashes]
-    print(f"INFO: found {len(tgz_files)} tgz files, {len(del_tgz_files)} of which are older than {max_age}")
+                         f.age >= max_sig_age_seconds or f.hash in del_artifact_hashes]
+    print(f"INFO: found {len(artifact_files)} artifact files, {len(del_artifact_files)} of which are older than {max_age}")
     print(f"INFO: found {len(siginfo_files)} siginfo files, {len(del_siginfo_files)} of which "
-          f"correspond to old tgz files or are older than {max_sig_age}")
+          f"correspond to old artifact files or are older than {max_sig_age}")
 
-    for f in del_tgz_files + del_siginfo_files:
+    for f in del_artifact_files + del_siginfo_files:
         if verbose:
             print(f"[DELETE] {f.path}")
         target.delete(f.path)
-    freed_gb = sum([x.size for x in del_tgz_files + del_siginfo_files]) / 1024.0 / 1024.0 / 1024.0
+    freed_gb = sum([x.size for x in del_artifact_files + del_siginfo_files]) / 1024.0 / 1024.0 / 1024.0
     print(f"INFO: freed {freed_gb:.02f} GB")
     return 0
 
@@ -710,7 +711,7 @@  def sstate_info(target, verbose, **kwargs):
     for k, entries in recipes.items():
         print(f"Cache hits for {k}:")
         for pn in entries:
-            hits = [f for f in all_files if f.pn == pn and f.task == key_task[k] and f.suffix == 'tgz']
+            hits = [f for f in all_files if f.pn == pn and f.task == key_task[k] and f.suffix == 'zst']
             print(f"  - {pn}: {len(hits)} hits")
     print("Other cache hits:")
     for pn in others:
@@ -781,7 +782,10 @@  def sstate_analyze(source, target, **kwargs):
 
             local_file = source.download(s.path)
             remote_file = target.download(t.path)
-            out = compare_sigfiles(remote_file, local_file, recursecb, color=True)
+            try:
+                out = compare_sigfiles(remote_file, local_file, recursecb, color=True)
+            except:
+                out = ["Failed to compare signature files."]
             source.release(local_file)
             target.release(remote_file)
             # shorten hashes from 64 to 8 characters for better readability
@@ -802,16 +806,15 @@  def sstate_lint(target, verbose, sources_dir, build_dir, exit_code, **kwargs):
     hits_other = 0
     for sig in cache_sigs.values():
         sig_file = target.download(sig.path)
-        with open(sig_file, 'rb') as f:
-            sigdata_raw = pickle.Unpickler(f)
-            sigdata = sigdata_raw.load()
+        with bb.compress.zstd.open(sig_file, 'rt', encoding='utf-8', num_threads=1) as f:
+            sigdata = json.load(f, object_hook=SetDecoder)
 
             pn_issues = []
             for name, val in sigdata['varvals'].items():
                 if not name[0].isupper():
                     continue
-                if sigdata['basewhitelist'] and name in sigdata['basewhitelist'] or \
-                   sigdata['taskwhitelist'] and name in sigdata['taskwhitelist'] or \
+                if sigdata['basehash_ignore_vars'] and name in sigdata['basehash_ignore_vars'] or \
+                   sigdata['taskhash_ignore_tasks'] and name in sigdata['taskhash_ignore_tasks'] or \
                    name in ADDITIONAL_IGNORED_VARNAMES:
                     continue
                 if not val or not val[0] == '/':
diff --git a/testsuite/cibuilder.py b/testsuite/cibuilder.py
index bc48d47..14a131a 100755
--- a/testsuite/cibuilder.py
+++ b/testsuite/cibuilder.py
@@ -89,9 +89,9 @@  class CIBuilder(Test):
         # write ci_build.conf
         with open(self.build_dir + '/conf/ci_build.conf', 'w') as f:
             if compat_arch:
-                f.write('ISAR_ENABLE_COMPAT_ARCH_amd64 = "1"\n')
-                f.write('ISAR_ENABLE_COMPAT_ARCH_arm64 = "1"\n')
-                f.write('ISAR_ENABLE_COMPAT_ARCH_debian-stretch_amd64 = "0"\n')
+                f.write('ISAR_ENABLE_COMPAT_ARCH:amd64 = "1"\n')
+                f.write('ISAR_ENABLE_COMPAT_ARCH:arm64 = "1"\n')
+                f.write('ISAR_ENABLE_COMPAT_ARCH:debian-stretch:amd64 = "0"\n')
                 f.write('IMAGE_INSTALL += "kselftest"\n')
             if cross:
                 f.write('ISAR_CROSS_COMPILE = "1"\n')
@@ -102,7 +102,7 @@  class CIBuilder(Test):
                 f.write('BB_NO_NETWORK = "1"\n')
             if container:
                 f.write('SDK_FORMATS = "docker-archive"\n')
-                f.write('IMAGE_INSTALL_remove = "example-module-${KERNEL_NAME} enable-fsck"\n')
+                f.write('IMAGE_INSTALL:remove = "example-module-${KERNEL_NAME} enable-fsck"\n')
             if gpg_pub_key:
                 f.write('BASE_REPO_KEY="file://' + gpg_pub_key + '"\n')
             if distro_apt_premir:
diff --git a/testsuite/citest.py b/testsuite/citest.py
index 16e38d0..e8b63c5 100755
--- a/testsuite/citest.py
+++ b/testsuite/citest.py
@@ -216,7 +216,7 @@  class RebuildTest(CIBaseTest):
 
         self.backupfile(dpkgbase_file)
         with open(dpkgbase_file, 'a') as file:
-            file.write('do_fetch_append() {\n\n}')
+            file.write('do_fetch:append() {\n\n}')
 
         try:
             self.perform_build_test('mc:qemuamd64-bullseye:isar-image-base', debsrc_cache=True)