@@ -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.")
}
@@ -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),
@@ -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"
@@ -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"
@@ -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"
@@ -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"
@@ -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"
@@ -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"
@@ -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"
@@ -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"
@@ -3,4 +3,4 @@
MACHINE ?= "qemuamd64"
DISTRO ?= "debian-bullseye"
-IMAGE_FSTYPES_append = " cpio.gz tar.gz"
+IMAGE_FSTYPES:append = " cpio.gz tar.gz"
@@ -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"
@@ -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
@@ -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
@@ -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}"
@@ -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
@@ -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 && \\
@@ -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"
@@ -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
@@ -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
@@ -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="
}
@@ -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:
@@ -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
@@ -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
@@ -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"
@@ -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"
@@ -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)
}
@@ -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
@@ -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
@@ -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"
@@ -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}"
}
@@ -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"
@@ -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"
@@ -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"
@@ -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"
@@ -7,7 +7,7 @@
inherit dpkg
-FILESEXTRAPATHS_prepend := "${FILE_DIRNAME}/files:"
+FILESEXTRAPATHS:prepend := "${FILE_DIRNAME}/files:"
SRC_URI += "file://debian/"
@@ -7,7 +7,7 @@
inherit dpkg
-FILESEXTRAPATHS_prepend := "${FILE_DIRNAME}/files:"
+FILESEXTRAPATHS:prepend := "${FILE_DIRNAME}/files:"
SRC_URI += "file://debian/"
@@ -5,7 +5,7 @@
#
# SPDX-License-Identifier: MIT
-FILESEXTRAPATHS_prepend := "${FILE_DIRNAME}/files:"
+FILESEXTRAPATHS:prepend := "${FILE_DIRNAME}/files:"
DESCRIPTION ?= "Custom U-Boot"
@@ -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}"
@@ -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'
@@ -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() {
@@ -5,7 +5,7 @@
#
# SPDX-License-Identifier: MIT
-FILESEXTRAPATHS_prepend := "${FILE_DIRNAME}/files:"
+FILESEXTRAPATHS:prepend := "${FILE_DIRNAME}/files:"
DESCRIPTION ?= "Custom kernel module ${PN}"
@@ -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
}
@@ -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
@@ -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] == '/':
@@ -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:
@@ -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)
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(-)