tegra-uefi-capsules: include all logic for BUP generation

Drop BUP-specific recipes and move all logic to UEFI capsule
generation recipe, as suggested in [1].

[1] https://github.com/OE4T/meta-tegra/discussions/1492
Signed-off-by: Igor Opaniuk <igor.opaniuk@foundries.io>
This commit is contained in:
Igor Opaniuk
2024-05-27 12:45:09 +02:00
committed by Matt Madison
parent ca2f725732
commit 3b28f68df6
4 changed files with 45 additions and 95 deletions

View File

@@ -462,25 +462,3 @@ do_image_tegraflash[depends] += "${TEGRAFLASH_PKG_DEPENDS} dtc-native:do_populat
virtual/bootloader:do_deploy virtual/secure-os:do_deploy ${TEGRA_SIGNING_EXTRA_DEPS} ${DTB_EXTRA_DEPS} \
${@'${TEGRAFLASH_INITRD_FLASH_IMAGE}:do_image_complete' if d.getVar('TEGRAFLASH_INITRD_FLASH_IMAGE') != '' else ''}"
IMAGE_TYPEDEP:tegraflash += "${IMAGE_TEGRAFLASH_FS_TYPE}"
oe_make_bup_payload() {
PATH="${STAGING_BINDIR_NATIVE}/${FLASHTOOLS_DIR}:${PATH}"
export tosimgfilename=${TOSIMGFILENAME}
rm -rf ${WORKDIR}/bup-payload
mkdir ${WORKDIR}/bup-payload
oldwd="$PWD"
cd ${WORKDIR}/bup-payload
# BUP generator really wants to use 'boot.img' for the LNX
# partition contents
tegraflash_populate_package "$1" boot.img ${@tegra_bootcontrol_overlay_list(d, bup=True)}
mv generate_bup_payload.sh doflash.sh
tegraflash_create_flash_config flash.xml.in boot.img ${STAGING_DATADIR}/tegraflash/bupgen-internal-flash.xml
. ./flashvars
tegraflash_custom_sign_bup
for bup in ${WORKDIR}/bup-payload/${BUP_PAYLOAD_DIR}/*; do
[ -e $bup ] || continue
BUP_generator.py --contents --check $bup
done
mv ${WORKDIR}/bup-payload/${BUP_PAYLOAD_DIR}/* .
cd "$oldwd"
}

View File

@@ -1,26 +0,0 @@
DESCRIPTION = "Install tegra bup payload file in the location expected by nv_update_engine"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
COMPATIBLE_MACHINE = "(tegra)"
inherit tegra-bup
do_install() {
install -d ${D}/opt/ota_package/
if [ -e ${DEPLOY_DIR_IMAGE}/${BUPFILENAME}.bl_only.bup-payload ]; then
install -m 0644 ${DEPLOY_DIR_IMAGE}/${BUPFILENAME}.bl_only.bup-payload ${D}/opt/ota_package/bl_only_payload
fi
if [ -e ${DEPLOY_DIR_IMAGE}/${BUPFILENAME}.kernel_only.bup-payload ]; then
install -m 0644 ${DEPLOY_DIR_IMAGE}/${BUPFILENAME}.kernel_only.bup-payload ${D}/opt/ota_package/kernel_only_payload
fi
}
ALLOW_EMPTY:${PN} = "1"
do_install[depends] += "${@bup_dependency(d)}"
FILES:${PN} = "/opt/ota_package"
RDEPENDS:${PN} += "tegra-redundant-boot-update-engine"
# For UEFI build - remove once buildpaths issue is resolved there
INSANE_SKIP:${PN} = "buildpaths"
PACKAGE_ARCH = "${MACHINE_ARCH}"

View File

@@ -2,7 +2,7 @@ DESCRIPTION = "Generate UEFI capsules for bup paylods"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
inherit tegra-bup deploy
inherit tegra-bup deploy image_types_tegra kernel-artifact-names
TEGRA_UEFI_CAPSULE_SIGNING_CLASS ??= "tegra-uefi-capsule-signing"
inherit ${TEGRA_UEFI_CAPSULE_SIGNING_CLASS}
@@ -11,13 +11,51 @@ TEGRA_UEFI_CAPSULE_SIGNING_EXTRA_DEPS ??= ""
COMPATIBLE_MACHINE = "(tegra)"
DEPENDS += "tegra-bup-payload"
TEGRA_SIGNING_EXTRA_DEPS ??= ""
GUID:tegra194 ?= "be3f5d68-7654-4ed2-838c-2a2faf901a78"
GUID:tegra234 ?= "bf0d4599-20d4-414e-b2c5-3595b1cda402"
do_compile() {
# Generate BUP images
PATH="${STAGING_BINDIR_NATIVE}/${FLASHTOOLS_DIR}:${PATH}"
export tosimgfilename=${TOSIMGFILENAME}
rm -rf ${B}/bup-payload
mkdir ${B}/bup-payload
oldwd="$PWD"
cd ${B}/bup-payload
# BUP generator really wants to use 'boot.img' for the LNX
# partition contents
tegraflash_populate_package ${IMAGE_TEGRAFLASH_KERNEL} boot.img ${@tegra_bootcontrol_overlay_list(d, bup=True)}
mv generate_bup_payload.sh doflash.sh
tegraflash_create_flash_config flash.xml.in boot.img ${STAGING_DATADIR}/tegraflash/bupgen-internal-flash.xml
. ./flashvars
tegraflash_custom_sign_bup
for bup in ${B}/bup-payload/${BUP_PAYLOAD_DIR}/*; do
[ -e $bup ] || continue
BUP_generator.py --contents --check $bup
done
mv ${B}/bup-payload/${BUP_PAYLOAD_DIR}/* .
cd "$oldwd"
# Create symlinks BUP payloads with a naming expected by sign_uefi_capsules
for f in ${B}/bup-payload/*_only_payload; do
[ -e $f ] || continue
sfx=$(basename $f _payload)
ln -sf $f ${B}/${BUPFILENAME}.$sfx.bup-payload
done
# Generate UEFI capsules
sign_uefi_capsules
# Check if capsules were generated successfully
if [ ! -e ${B}/tegra-bl.cap ]; then
bberror "${B}/tegra-bl.cap wasn't generated"
fi
if [ -e ${B}/${BUPFILENAME}.kernel.bup_payload -a ! -e ${B}/tegra-kernel.cap ]; then
bberror "${B}/tegra-kernel.cap wasn't generated"
fi
}
TEGRA_UEFI_CAPSULE_INSTALL_DIR ??= "/opt/nvidia/UpdateCapsule"
@@ -53,3 +91,8 @@ do_deploy() {
addtask deploy after do_install
do_compile[depends] += "${@bup_dependency(d)} ${TEGRA_UEFI_CAPSULE_SIGNING_EXTRA_DEPS}"
do_compile[depends] += "virtual/kernel:do_deploy tegra-flashtools-native:do_populate_sysroot dtc-native:do_populate_sysroot"
do_compile[depends] += "python3-pyyaml-native:do_populate_sysroot"
do_compile[depends] += "tegra-redundant-boot-rollback:do_populate_sysroot tegra-bootfiles:do_populate_sysroot"
do_compile[depends] += "coreutils-native:do_populate_sysroot ${TEGRA_ESP_IMAGE}:do_image_complete virtual/secure-os:do_deploy"
do_compile[depends] += "${TEGRA_SIGNING_EXTRA_DEPS}"

View File

@@ -1,45 +0,0 @@
DESCRIPTION = "Generates a bootloader update payload for use with nv_update_engine when using a kernel with bundled initramfs"
LICENSE = "MIT"
COMPATIBLE_MACHINE = "(tegra)"
INHIBIT_DEFAULT_DEPS = "1"
inherit nopackages image_types_tegra deploy kernel-artifact-names
deltask do_fetch
deltask do_unpack
deltask do_patch
deltask do_configure
deltask do_compile
deltask do_install
deltask do_populate_sysroot
do_deploy() {
if [ ! -z "${INITRAMFS_IMAGE}" -a "${INITRAMFS_IMAGE_BUNDLE}" = "1" ]; then
for imageType in ${KERNEL_IMAGETYPES} ; do
if [ "$imageType" = "fitImage" ] ; then
continue
fi
initramfs_symlink_name=${imageType}-${INITRAMFS_LINK_NAME}
oe_make_bup_payload ${DEPLOY_DIR_IMAGE}/${initramfs_symlink_name}.cboot
install -d ${DEPLOYDIR}
for f in ${WORKDIR}/bup-payload/*_only_payload; do
[ -e $f ] || continue
sfx=$(basename $f _payload)
install -m 0644 $f ${DEPLOYDIR}/${initramfs_symlink_name}.$sfx.bup-payload
done
done
fi
}
TEGRA_SIGNING_EXTRA_DEPS ??= ""
do_deploy[depends] += "virtual/kernel:do_deploy tegra-flashtools-native:do_populate_sysroot dtc-native:do_populate_sysroot"
do_deploy[depends] += "python3-pyyaml-native:do_populate_sysroot"
do_deploy[depends] += "tegra-redundant-boot-rollback:do_populate_sysroot tegra-bootfiles:do_populate_sysroot"
do_deploy[depends] += "coreutils-native:do_populate_sysroot ${TEGRA_ESP_IMAGE}:do_image_complete virtual/secure-os:do_deploy"
do_deploy[depends] += "${TEGRA_SIGNING_EXTRA_DEPS}"
addtask deploy before do_build
PACKAGE_ARCH = "${MACHINE_ARCH}"