* [FYI 0/2] Migration to bitbake 2.0
@ 2022-06-07 15:25 Adriaan Schmidt
2022-06-07 15:25 ` [FYI 1/2] bitbake: no user namespace in disable_network Adriaan Schmidt
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Adriaan Schmidt @ 2022-06-07 15:25 UTC (permalink / raw)
To: isar-users; +Cc: Adriaan Schmidt
Hi all,
I recently spent a Friday afternoon playing with bitbake 2.0, and here are the
findings, in patch form, without the actual updated code (which would be bitbake/*,
meta/lib/oe/* and meta/classes/sstate.bbclass.
I made it work for mc:qemuamd64-bullseye:isar-image-base, and for one of
our downstream layers, just to get an idea of the work required.
This post is meant as documentation, for whenever the time comes to apply the
bitbake update...
Changes required:
- new override syntax, with ':' instead of '_'
- some rewording (e.g. WHITELIST -> IGNORE_VARS, ABORT -> HALT)
- new task flag "[network]", which is needed on tasks requiring network
access. If it is not set, networking is disabled by cloning into a new
namespace. The current bitbake implementation creates a new namespace for
network and user, with the latter breaking use of sudo. p1 would be
the corresponding upstream change in bitbake to make sudo work, as an alternative
to adding "[network] = 1" to all tasks (which I tested, and which also works).
- SRCREV always needs to be a hash, not a branch or tag. This does not
actually affect Isar itself, but possibly downstream layers (we often
use SRCREV="v${PV}").
- sstate internally switches from tgz to zstd compression for artifacts,
and from pickle to compressed json for siginfo files. This affects the
isar-sstate script.
Adriaan
Adriaan Schmidt (2):
bitbake: no user namespace in disable_network
migrate Isar to bitbake 2.0
bitbake/lib/bb/utils.py | 3 +-
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 +-
48 files changed, 227 insertions(+), 189 deletions(-)
--
2.30.2
^ permalink raw reply [flat|nested] 4+ messages in thread
* [FYI 1/2] bitbake: no user namespace in disable_network
2022-06-07 15:25 [FYI 0/2] Migration to bitbake 2.0 Adriaan Schmidt
@ 2022-06-07 15:25 ` Adriaan Schmidt
2022-06-07 15:25 ` [FYI 2/2] migrate Isar to bitbake 2.0 Adriaan Schmidt
2022-06-07 15:46 ` [FYI 0/2] Migration " Anton Mikanovich
2 siblings, 0 replies; 4+ messages in thread
From: Adriaan Schmidt @ 2022-06-07 15:25 UTC (permalink / raw)
To: isar-users; +Cc: Adriaan Schmidt
Signed-off-by: Adriaan Schmidt <adriaan.schmidt@siemens.com>
---
bitbake/lib/bb/utils.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/bitbake/lib/bb/utils.py b/bitbake/lib/bb/utils.py
index d11da97..05adb41 100644
--- a/bitbake/lib/bb/utils.py
+++ b/bitbake/lib/bb/utils.py
@@ -1618,7 +1618,7 @@ def disable_network(uid=None, gid=None):
if gid is None:
gid = os.getgid()
- ret = libc.unshare(CLONE_NEWNET | CLONE_NEWUSER)
+ ret = libc.unshare(CLONE_NEWNET)
if ret != 0:
logger.debug("System doesn't suport disabling network without admin privs")
return
--
2.30.2
^ permalink raw reply [flat|nested] 4+ messages in thread
* [FYI 2/2] migrate Isar to bitbake 2.0
2022-06-07 15:25 [FYI 0/2] Migration to bitbake 2.0 Adriaan Schmidt
2022-06-07 15:25 ` [FYI 1/2] bitbake: no user namespace in disable_network Adriaan Schmidt
@ 2022-06-07 15:25 ` Adriaan Schmidt
2022-06-07 15:46 ` [FYI 0/2] Migration " Anton Mikanovich
2 siblings, 0 replies; 4+ messages in thread
From: Adriaan Schmidt @ 2022-06-07 15:25 UTC (permalink / raw)
To: isar-users; +Cc: Adriaan Schmidt
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(-)
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)
--
2.30.2
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [FYI 0/2] Migration to bitbake 2.0
2022-06-07 15:25 [FYI 0/2] Migration to bitbake 2.0 Adriaan Schmidt
2022-06-07 15:25 ` [FYI 1/2] bitbake: no user namespace in disable_network Adriaan Schmidt
2022-06-07 15:25 ` [FYI 2/2] migrate Isar to bitbake 2.0 Adriaan Schmidt
@ 2022-06-07 15:46 ` Anton Mikanovich
2 siblings, 0 replies; 4+ messages in thread
From: Anton Mikanovich @ 2022-06-07 15:46 UTC (permalink / raw)
To: isar-users, Baurzhan Ismagulov
07.06.2022 18:25, Adriaan Schmidt wrote:
> Hi all,
>
> I recently spent a Friday afternoon playing with bitbake 2.0, and here are the
> findings, in patch form, without the actual updated code (which would be bitbake/*,
> meta/lib/oe/* and meta/classes/sstate.bbclass.
>
> I made it work for mc:qemuamd64-bullseye:isar-image-base, and for one of
> our downstream layers, just to get an idea of the work required.
> This post is meant as documentation, for whenever the time comes to apply the
> bitbake update...
>
> Changes required:
> - new override syntax, with ':' instead of '_'
> - some rewording (e.g. WHITELIST -> IGNORE_VARS, ABORT -> HALT)
> - new task flag "[network]", which is needed on tasks requiring network
> access. If it is not set, networking is disabled by cloning into a new
> namespace. The current bitbake implementation creates a new namespace for
> network and user, with the latter breaking use of sudo. p1 would be
> the corresponding upstream change in bitbake to make sudo work, as an alternative
> to adding "[network] = 1" to all tasks (which I tested, and which also works).
> - SRCREV always needs to be a hash, not a branch or tag. This does not
> actually affect Isar itself, but possibly downstream layers (we often
> use SRCREV="v${PV}").
> - sstate internally switches from tgz to zstd compression for artifacts,
> and from pickle to compressed json for siginfo files. This affects the
> isar-sstate script.
>
> Adriaan
Hello Adriaan,
Thanks for the patch. I'm already working on "Bitbake update prepare"
patchset
which will include everything needed for migration but without override
syntax
update itself.
It will also include (already configured for Isar) convert-overrides.py
script
for automatic downstreams update. After this patch we will have Isar and
downstreams ready for fast syntax change (I hope so).
Unfortunately this task has less priority then Isar release preparation,
but I
will try to share something soon.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2022-06-07 15:46 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-07 15:25 [FYI 0/2] Migration to bitbake 2.0 Adriaan Schmidt
2022-06-07 15:25 ` [FYI 1/2] bitbake: no user namespace in disable_network Adriaan Schmidt
2022-06-07 15:25 ` [FYI 2/2] migrate Isar to bitbake 2.0 Adriaan Schmidt
2022-06-07 15:46 ` [FYI 0/2] Migration " Anton Mikanovich
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox