From: gowtham.sureshkumar@arm.com
To: meta-arm@lists.yoctoproject.org, Ross.Burton@arm.com
Cc: nd@arm.com, Gowtham Suresh Kumar <gowtham.sureshkumar@arm.com>,
Jon Mason <jon.mason@arm.com>
Subject: [PATCH langdale 2/6] arm-bsp/uefi_capsule: Add UEFI capsule generation class
Date: Tue, 28 Feb 2023 14:41:48 +0000 [thread overview]
Message-ID: <20230228144152.17041-3-gowtham.sureshkumar@arm.com> (raw)
In-Reply-To: <20230228144152.17041-1-gowtham.sureshkumar@arm.com>
From: Gowtham Suresh Kumar <gowtham.sureshkumar@arm.com>
This class currently supports only a single firmware binary. The
required capsule parameters needs to be set, if not the build fails.
Signed-off-by: Gowtham Suresh Kumar <gowtham.sureshkumar@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
---
meta-arm/classes/uefi_capsule.bbclass | 46 +++++++++++++++++++++++++++
1 file changed, 46 insertions(+)
create mode 100644 meta-arm/classes/uefi_capsule.bbclass
diff --git a/meta-arm/classes/uefi_capsule.bbclass b/meta-arm/classes/uefi_capsule.bbclass
new file mode 100644
index 00000000..0c3d3845
--- /dev/null
+++ b/meta-arm/classes/uefi_capsule.bbclass
@@ -0,0 +1,46 @@
+# This class generates UEFI capsules
+# The current class supports generating a capsule with single firmware binary
+
+inherit python3native
+
+IMAGE_TYPES += "uefi_capsule"
+
+# edk2 base tools should be installed in the native sysroot directory
+do_image_uefi_capsule[depends] += "edk2-basetools-native:do_populate_sysroot"
+
+# By default the wic image is used to create a capsule
+CAPSULE_IMGTYPE ?= "wic"
+
+# IMGDEPLOYDIR is used as the default location of firmware binary for which the capsule needs to be created
+CAPSULE_IMGLOCATION ?= "${IMGDEPLOYDIR}"
+
+# The generated capsule by default has uefi.capsule extension
+CAPSULE_EXTENSION ?= "uefi.capsule"
+
+# The following variables must be set to be able to generate a capsule update
+UEFI_FIRMWARE_BINARY ?= ""
+UEFI_FIRMWARE_VERSION ?= ""
+UEFI_FIRMWARE_LSV ?= ""
+UEFI_FIRMWARE_GUID ?= ""
+UEFI_FIRMWARE_UPDATE_INDEX ?= ""
+
+# Check if the required variables are set
+python() {
+ for var in ["UEFI_FIRMWARE_BINARY", "UEFI_FIRMWARE_VERSION", "UEFI_FIRMWARE_LSV", "UEFI_FIRMWARE_GUID", "UEFI_FIRMWARE_UPDATE_INDEX"]:
+ if not d.getVar(var):
+ raise bb.parse.SkipRecipe(f"{var} not set")
+}
+
+IMAGE_CMD:uefi_capsule(){
+
+ # Force the GenerateCapsule script to use python3
+ export PYTHON_COMMAND=${PYTHON}
+
+ ${STAGING_DIR_NATIVE}/usr/bin/edk2-BaseTools/BinWrappers/PosixLike/GenerateCapsule -e -o \
+ ${CAPSULE_IMGLOCATION}/${UEFI_FIRMWARE_BINARY}.${CAPSULE_EXTENSION} --fw-version ${UEFI_FIRMWARE_VERSION} \
+ --lsv ${UEFI_FIRMWARE_LSV} --guid ${UEFI_FIRMWARE_GUID} --verbose --update-image-index \
+ ${UEFI_FIRMWARE_UPDATE_INDEX} --verbose ${CAPSULE_IMGLOCATION}/${UEFI_FIRMWARE_BINARY}
+}
+
+# The firmware binary should be created before generating the capsule
+IMAGE_TYPEDEP:uefi_capsule:append = "${CAPSULE_IMGTYPE}"
--
2.17.1
next prev parent reply other threads:[~2023-02-28 14:42 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-28 14:41 [PATCH langdale 0/6] Add UEFI capsule generation support gowtham.sureshkumar
2023-02-28 14:41 ` [PATCH langdale 1/6] arm/edk2-basetools: Add edk2 base tool native recipe gowtham.sureshkumar
2023-02-28 14:41 ` gowtham.sureshkumar [this message]
2023-02-28 14:41 ` [PATCH langdale 3/6] arm-bsp/corstone1000-image: Generate UEFI capsule for corstone1000 platform gowtham.sureshkumar
2023-02-28 14:41 ` [PATCH langdale 4/6] arm/edk2-basetools: Convert edk2 basetools recipes to native only gowtham.sureshkumar
2023-02-28 14:41 ` [PATCH langdale 5/6] arm-bsp/uefi_capsule: Use json file to pass capsule config gowtham.sureshkumar
2023-02-28 14:41 ` [PATCH langdale 6/6] arm-bsp/uefi_capsule: Move UEFI capsule to IMGDEPLOYDIR gowtham.sureshkumar
2023-03-04 16:59 ` [PATCH langdale 0/6] Add UEFI capsule generation support Jon Mason
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230228144152.17041-3-gowtham.sureshkumar@arm.com \
--to=gowtham.sureshkumar@arm.com \
--cc=Ross.Burton@arm.com \
--cc=jon.mason@arm.com \
--cc=meta-arm@lists.yoctoproject.org \
--cc=nd@arm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).