* [PATCH 0/2] Update UEFI capsule generation to use json config file @ 2023-02-15 10:42 gowtham.sureshkumar 2023-02-15 10:42 ` [PATCH 1/2] arm/edk2-basetools: Convert edk2 basetools recipes to native only gowtham.sureshkumar ` (2 more replies) 0 siblings, 3 replies; 7+ messages in thread From: gowtham.sureshkumar @ 2023-02-15 10:42 UTC (permalink / raw) To: meta-arm, Ross.Burton; +Cc: nd, Gowtham Suresh Kumar From: Gowtham Suresh Kumar <gowtham.sureshkumar@arm.com> The UEFI capsule parameters can be passed to the script using a json file which is easily scalable when generating multiple capsules. Also the edk2 base tools recipe is made native only. Gowtham Suresh Kumar (2): arm/edk2-basetools: Convert edk2 basetools recipes to native only arm-bsp/uefi_capsule: Use json file to pass capsule config .../recipes-bsp/images/corstone1000-image.bb | 8 +++--- ...rstone1000-image-capsule-update-image.json | 11 ++++++++ meta-arm/classes/uefi_capsule.bbclass | 27 ++++++++++++------- ...211.bb => edk2-basetools-native_202211.bb} | 6 ++--- 4 files changed, 35 insertions(+), 17 deletions(-) create mode 100644 meta-arm-bsp/recipes-bsp/images/files/corstone1000-image-capsule-update-image.json rename meta-arm/recipes-devtools/edk2-basetools/{edk2-basetools_202211.bb => edk2-basetools-native_202211.bb} (92%) -- 2.17.1 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/2] arm/edk2-basetools: Convert edk2 basetools recipes to native only 2023-02-15 10:42 [PATCH 0/2] Update UEFI capsule generation to use json config file gowtham.sureshkumar @ 2023-02-15 10:42 ` gowtham.sureshkumar 2023-02-15 10:42 ` [PATCH 2/2] arm-bsp/uefi_capsule: Use json file to pass capsule config gowtham.sureshkumar 2023-02-17 4:30 ` [PATCH 0/2] Update UEFI capsule generation to use json config file Jon Mason 2 siblings, 0 replies; 7+ messages in thread From: gowtham.sureshkumar @ 2023-02-15 10:42 UTC (permalink / raw) To: meta-arm, Ross.Burton; +Cc: nd, Gowtham Suresh Kumar From: Gowtham Suresh Kumar <gowtham.sureshkumar@arm.com> The BBCLASSEXTEND configuration can generate native sdk and target recipes as well. The cp command used in do_install will create host contamination issues for these recipes, so this patch makes the recipe native only. Signed-off-by: Gowtham Suresh Kumar <gowtham.sureshkumar@arm.com> --- ...-basetools_202211.bb => edk2-basetools-native_202211.bb} | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) rename meta-arm/recipes-devtools/edk2-basetools/{edk2-basetools_202211.bb => edk2-basetools-native_202211.bb} (92%) diff --git a/meta-arm/recipes-devtools/edk2-basetools/edk2-basetools_202211.bb b/meta-arm/recipes-devtools/edk2-basetools/edk2-basetools-native_202211.bb similarity index 92% rename from meta-arm/recipes-devtools/edk2-basetools/edk2-basetools_202211.bb rename to meta-arm/recipes-devtools/edk2-basetools/edk2-basetools-native_202211.bb index c80fdae2..6a59c22c 100644 --- a/meta-arm/recipes-devtools/edk2-basetools/edk2-basetools_202211.bb +++ b/meta-arm/recipes-devtools/edk2-basetools/edk2-basetools-native_202211.bb @@ -3,7 +3,7 @@ # generating UEFI capsules as it only depends on some python scripts. Other # tools need to be built first before adding to sysroot. -DESCRIPTION = "EDK2 Base Tools" +SUMMARY = "EDK2 Base Tools" LICENSE = "BSD-2-Clause-Patent" # EDK2 @@ -14,11 +14,11 @@ SRCREV = "fff6d81270b57ee786ea18ad74f43149b9f03494" S = "${WORKDIR}/git" +inherit native + RDEPENDS:${PN} += "python3-core" do_install () { mkdir -p ${D}${bindir}/edk2-BaseTools cp -r ${WORKDIR}/git/BaseTools/* ${D}${bindir}/edk2-BaseTools/ } - -BBCLASSEXTEND = "native" -- 2.17.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/2] arm-bsp/uefi_capsule: Use json file to pass capsule config 2023-02-15 10:42 [PATCH 0/2] Update UEFI capsule generation to use json config file gowtham.sureshkumar 2023-02-15 10:42 ` [PATCH 1/2] arm/edk2-basetools: Convert edk2 basetools recipes to native only gowtham.sureshkumar @ 2023-02-15 10:42 ` gowtham.sureshkumar 2023-02-15 12:23 ` [meta-arm] " Jose Quaresma 2023-02-17 4:30 ` [PATCH 0/2] Update UEFI capsule generation to use json config file Jon Mason 2 siblings, 1 reply; 7+ messages in thread From: gowtham.sureshkumar @ 2023-02-15 10:42 UTC (permalink / raw) To: meta-arm, Ross.Burton; +Cc: nd, Gowtham Suresh Kumar From: Gowtham Suresh Kumar <gowtham.sureshkumar@arm.com> This patch uses the json config file for UEFI capsule generation as this is efficient and easily scalable to generate multiple capsules. Signed-off-by: Gowtham Suresh Kumar <gowtham.sureshkumar@arm.com> --- .../recipes-bsp/images/corstone1000-image.bb | 8 +++--- ...rstone1000-image-capsule-update-image.json | 11 ++++++++ meta-arm/classes/uefi_capsule.bbclass | 27 ++++++++++++------- 3 files changed, 32 insertions(+), 14 deletions(-) create mode 100644 meta-arm-bsp/recipes-bsp/images/files/corstone1000-image-capsule-update-image.json diff --git a/meta-arm-bsp/recipes-bsp/images/corstone1000-image.bb b/meta-arm-bsp/recipes-bsp/images/corstone1000-image.bb index b0a71bca..ce4df8a6 100644 --- a/meta-arm-bsp/recipes-bsp/images/corstone1000-image.bb +++ b/meta-arm-bsp/recipes-bsp/images/corstone1000-image.bb @@ -13,11 +13,9 @@ PACKAGE_INSTALL = "" IMAGE_FSTYPES += "wic wic.nopt uefi_capsule" -UEFI_FIRMWARE_BINARY = "corstone1000-image-${MACHINE}.wic.nopt" -UEFI_FIRMWARE_VERSION = "5" -UEFI_FIRMWARE_LSV = "0" -UEFI_FIRMWARE_GUID = "e2bb9c06-70e9-4b14-97a3-5a7913176e3f" -UEFI_FIRMWARE_UPDATE_INDEX = "0" +UEFI_FIRMWARE_BINARY = "${PN}-${MACHINE}.wic.nopt" +UEFI_CAPSULE_CONFIG = "${THISDIR}/files/${PN}-capsule-update-image.json" +CAPSULE_IMGTYPE = "wic.nopt" do_sign_images() { # Sign TF-A BL2 diff --git a/meta-arm-bsp/recipes-bsp/images/files/corstone1000-image-capsule-update-image.json b/meta-arm-bsp/recipes-bsp/images/files/corstone1000-image-capsule-update-image.json new file mode 100644 index 00000000..0f011ff7 --- /dev/null +++ b/meta-arm-bsp/recipes-bsp/images/files/corstone1000-image-capsule-update-image.json @@ -0,0 +1,11 @@ +{ + "Payloads": [ + { + "FwVersion": "5", + "Guid": "e2bb9c06-70e9-4b14-97a3-5a7913176e3f", + "LowestSupportedVersion": "1", + "Payload": "$UEFI_FIRMWARE_BINARY", + "UpdateImageIndex": "0" + } + ] +} diff --git a/meta-arm/classes/uefi_capsule.bbclass b/meta-arm/classes/uefi_capsule.bbclass index 0c3d3845..cf708412 100644 --- a/meta-arm/classes/uefi_capsule.bbclass +++ b/meta-arm/classes/uefi_capsule.bbclass @@ -1,6 +1,7 @@ # This class generates UEFI capsules # The current class supports generating a capsule with single firmware binary +DEPENDS += "gettext-native" inherit python3native IMAGE_TYPES += "uefi_capsule" @@ -19,14 +20,11 @@ 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 ?= "" +UEFI_CAPSULE_CONFIG ?= "" # 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"]: + for var in ["UEFI_FIRMWARE_BINARY", "UEFI_CAPSULE_CONFIG"]: if not d.getVar(var): raise bb.parse.SkipRecipe(f"{var} not set") } @@ -36,10 +34,21 @@ 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} + # Copy the firmware and the capsule config json to current directory + if [ -e ${CAPSULE_IMGLOCATION}/${UEFI_FIRMWARE_BINARY} ]; then + cp ${CAPSULE_IMGLOCATION}/${UEFI_FIRMWARE_BINARY} . ; + fi + + export UEFI_FIRMWARE_BINARY=${UEFI_FIRMWARE_BINARY} + envsubst < ${UEFI_CAPSULE_CONFIG} > ./${MACHINE}-capsule-update-image.json + + ${STAGING_DIR_NATIVE}/usr/bin/edk2-BaseTools/BinWrappers/PosixLike/GenerateCapsule \ + -e -o ${UEFI_FIRMWARE_BINARY}.${CAPSULE_EXTENSION} -j \ + ${MACHINE}-capsule-update-image.json + + # Remove the firmware to avoid contamination of IMGDEPLOYDIR + rm ${UEFI_FIRMWARE_BINARY} + } # The firmware binary should be created before generating the capsule -- 2.17.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [meta-arm] [PATCH 2/2] arm-bsp/uefi_capsule: Use json file to pass capsule config 2023-02-15 10:42 ` [PATCH 2/2] arm-bsp/uefi_capsule: Use json file to pass capsule config gowtham.sureshkumar @ 2023-02-15 12:23 ` Jose Quaresma 2023-02-15 12:44 ` Gowtham Suresh Kumar 0 siblings, 1 reply; 7+ messages in thread From: Jose Quaresma @ 2023-02-15 12:23 UTC (permalink / raw) To: Gowtham Suresh Kumar; +Cc: meta-arm, Ross.Burton, nd [-- Attachment #1: Type: text/plain, Size: 5371 bytes --] Hi Gowtham, Gowtham Suresh Kumar <gowtham.sureshkumar@arm.com> escreveu no dia quarta, 15/02/2023 à(s) 10:42: > From: Gowtham Suresh Kumar <gowtham.sureshkumar@arm.com> > > This patch uses the json config file for UEFI capsule generation > as this is efficient and easily scalable to generate multiple > capsules. > > Signed-off-by: Gowtham Suresh Kumar <gowtham.sureshkumar@arm.com> > --- > .../recipes-bsp/images/corstone1000-image.bb | 8 +++--- > ...rstone1000-image-capsule-update-image.json | 11 ++++++++ > meta-arm/classes/uefi_capsule.bbclass | 27 ++++++++++++------- > 3 files changed, 32 insertions(+), 14 deletions(-) > create mode 100644 > meta-arm-bsp/recipes-bsp/images/files/corstone1000-image-capsule-update-image.json > > diff --git a/meta-arm-bsp/recipes-bsp/images/corstone1000-image.bb > b/meta-arm-bsp/recipes-bsp/images/corstone1000-image.bb > index b0a71bca..ce4df8a6 100644 > --- a/meta-arm-bsp/recipes-bsp/images/corstone1000-image.bb > +++ b/meta-arm-bsp/recipes-bsp/images/corstone1000-image.bb > @@ -13,11 +13,9 @@ PACKAGE_INSTALL = "" > > IMAGE_FSTYPES += "wic wic.nopt uefi_capsule" > > -UEFI_FIRMWARE_BINARY = "corstone1000-image-${MACHINE}.wic.nopt" > -UEFI_FIRMWARE_VERSION = "5" > -UEFI_FIRMWARE_LSV = "0" > -UEFI_FIRMWARE_GUID = "e2bb9c06-70e9-4b14-97a3-5a7913176e3f" > -UEFI_FIRMWARE_UPDATE_INDEX = "0" > +UEFI_FIRMWARE_BINARY = "${PN}-${MACHINE}.wic.nopt" > +UEFI_CAPSULE_CONFIG = "${THISDIR}/files/${PN}-capsule-update-image.json" > +CAPSULE_IMGTYPE = "wic.nopt" > Looks like this variable is not used anywhere. Jose > > do_sign_images() { > # Sign TF-A BL2 > diff --git > a/meta-arm-bsp/recipes-bsp/images/files/corstone1000-image-capsule-update-image.json > b/meta-arm-bsp/recipes-bsp/images/files/corstone1000-image-capsule-update-image.json > new file mode 100644 > index 00000000..0f011ff7 > --- /dev/null > +++ > b/meta-arm-bsp/recipes-bsp/images/files/corstone1000-image-capsule-update-image.json > @@ -0,0 +1,11 @@ > +{ > + "Payloads": [ > + { > + "FwVersion": "5", > + "Guid": "e2bb9c06-70e9-4b14-97a3-5a7913176e3f", > + "LowestSupportedVersion": "1", > + "Payload": "$UEFI_FIRMWARE_BINARY", > + "UpdateImageIndex": "0" > + } > + ] > +} > diff --git a/meta-arm/classes/uefi_capsule.bbclass > b/meta-arm/classes/uefi_capsule.bbclass > index 0c3d3845..cf708412 100644 > --- a/meta-arm/classes/uefi_capsule.bbclass > +++ b/meta-arm/classes/uefi_capsule.bbclass > @@ -1,6 +1,7 @@ > # This class generates UEFI capsules > # The current class supports generating a capsule with single firmware > binary > > +DEPENDS += "gettext-native" > inherit python3native > > IMAGE_TYPES += "uefi_capsule" > @@ -19,14 +20,11 @@ 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 ?= "" > +UEFI_CAPSULE_CONFIG ?= "" > > # 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"]: > + for var in ["UEFI_FIRMWARE_BINARY", "UEFI_CAPSULE_CONFIG"]: > if not d.getVar(var): > raise bb.parse.SkipRecipe(f"{var} not set") > } > @@ -36,10 +34,21 @@ 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} > + # Copy the firmware and the capsule config json to current directory > + if [ -e ${CAPSULE_IMGLOCATION}/${UEFI_FIRMWARE_BINARY} ]; then > + cp ${CAPSULE_IMGLOCATION}/${UEFI_FIRMWARE_BINARY} . ; > + fi > + > + export UEFI_FIRMWARE_BINARY=${UEFI_FIRMWARE_BINARY} > + envsubst < ${UEFI_CAPSULE_CONFIG} > > ./${MACHINE}-capsule-update-image.json > + > + > ${STAGING_DIR_NATIVE}/usr/bin/edk2-BaseTools/BinWrappers/PosixLike/GenerateCapsule > \ > + -e -o ${UEFI_FIRMWARE_BINARY}.${CAPSULE_EXTENSION} -j \ > + ${MACHINE}-capsule-update-image.json > + > + # Remove the firmware to avoid contamination of IMGDEPLOYDIR > + rm ${UEFI_FIRMWARE_BINARY} > + > } > > # The firmware binary should be created before generating the capsule > -- > 2.17.1 > > > -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > View/Reply Online (#4391): > https://lists.yoctoproject.org/g/meta-arm/message/4391 > Mute This Topic: https://lists.yoctoproject.org/mt/96980035/5052612 > Group Owner: meta-arm+owner@lists.yoctoproject.org > Unsubscribe: https://lists.yoctoproject.org/g/meta-arm/unsub [ > quaresma.jose@gmail.com] > -=-=-=-=-=-=-=-=-=-=-=- > > -- Best regards, José Quaresma [-- Attachment #2: Type: text/html, Size: 7614 bytes --] ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [meta-arm] [PATCH 2/2] arm-bsp/uefi_capsule: Use json file to pass capsule config 2023-02-15 12:23 ` [meta-arm] " Jose Quaresma @ 2023-02-15 12:44 ` Gowtham Suresh Kumar 2023-02-15 13:14 ` Jose Quaresma 0 siblings, 1 reply; 7+ messages in thread From: Gowtham Suresh Kumar @ 2023-02-15 12:44 UTC (permalink / raw) To: Jose Quaresma; +Cc: meta-arm, Ross Burton, nd [-- Attachment #1: Type: text/plain, Size: 6017 bytes --] Hello Jose, The CAPSULE_IMGTYPE is used in the uefi_capsule.bbclass as shown below. IMAGE_TYPEDEP:uefi_capsule:append = "${CAPSULE_IMGTYPE}" Best regards, Gowtham Suresh Kumar ________________________________ From: Jose Quaresma <quaresma.jose@gmail.com> Sent: Wednesday, February 15, 2023 12:23 PM To: Gowtham Suresh Kumar <Gowtham.SureshKumar@arm.com> Cc: meta-arm@lists.yoctoproject.org <meta-arm@lists.yoctoproject.org>; Ross Burton <Ross.Burton@arm.com>; nd <nd@arm.com> Subject: Re: [meta-arm] [PATCH 2/2] arm-bsp/uefi_capsule: Use json file to pass capsule config Hi Gowtham, Gowtham Suresh Kumar <gowtham.sureshkumar@arm.com<mailto:gowtham.sureshkumar@arm.com>> escreveu no dia quarta, 15/02/2023 à(s) 10:42: From: Gowtham Suresh Kumar <gowtham.sureshkumar@arm.com<mailto:gowtham.sureshkumar@arm.com>> This patch uses the json config file for UEFI capsule generation as this is efficient and easily scalable to generate multiple capsules. Signed-off-by: Gowtham Suresh Kumar <gowtham.sureshkumar@arm.com<mailto:gowtham.sureshkumar@arm.com>> --- .../recipes-bsp/images/corstone1000-image.bb<http://corstone1000-image.bb> | 8 +++--- ...rstone1000-image-capsule-update-image.json | 11 ++++++++ meta-arm/classes/uefi_capsule.bbclass | 27 ++++++++++++------- 3 files changed, 32 insertions(+), 14 deletions(-) create mode 100644 meta-arm-bsp/recipes-bsp/images/files/corstone1000-image-capsule-update-image.json diff --git a/meta-arm-bsp/recipes-bsp/images/corstone1000-image.bb<http://corstone1000-image.bb> b/meta-arm-bsp/recipes-bsp/images/corstone1000-image.bb<http://corstone1000-image.bb> index b0a71bca..ce4df8a6 100644 --- a/meta-arm-bsp/recipes-bsp/images/corstone1000-image.bb<http://corstone1000-image.bb> +++ b/meta-arm-bsp/recipes-bsp/images/corstone1000-image.bb<http://corstone1000-image.bb> @@ -13,11 +13,9 @@ PACKAGE_INSTALL = "" IMAGE_FSTYPES += "wic wic.nopt uefi_capsule" -UEFI_FIRMWARE_BINARY = "corstone1000-image-${MACHINE}.wic.nopt" -UEFI_FIRMWARE_VERSION = "5" -UEFI_FIRMWARE_LSV = "0" -UEFI_FIRMWARE_GUID = "e2bb9c06-70e9-4b14-97a3-5a7913176e3f" -UEFI_FIRMWARE_UPDATE_INDEX = "0" +UEFI_FIRMWARE_BINARY = "${PN}-${MACHINE}.wic.nopt" +UEFI_CAPSULE_CONFIG = "${THISDIR}/files/${PN}-capsule-update-image.json" +CAPSULE_IMGTYPE = "wic.nopt" Looks like this variable is not used anywhere. Jose do_sign_images() { # Sign TF-A BL2 diff --git a/meta-arm-bsp/recipes-bsp/images/files/corstone1000-image-capsule-update-image.json b/meta-arm-bsp/recipes-bsp/images/files/corstone1000-image-capsule-update-image.json new file mode 100644 index 00000000..0f011ff7 --- /dev/null +++ b/meta-arm-bsp/recipes-bsp/images/files/corstone1000-image-capsule-update-image.json @@ -0,0 +1,11 @@ +{ + "Payloads": [ + { + "FwVersion": "5", + "Guid": "e2bb9c06-70e9-4b14-97a3-5a7913176e3f", + "LowestSupportedVersion": "1", + "Payload": "$UEFI_FIRMWARE_BINARY", + "UpdateImageIndex": "0" + } + ] +} diff --git a/meta-arm/classes/uefi_capsule.bbclass b/meta-arm/classes/uefi_capsule.bbclass index 0c3d3845..cf708412 100644 --- a/meta-arm/classes/uefi_capsule.bbclass +++ b/meta-arm/classes/uefi_capsule.bbclass @@ -1,6 +1,7 @@ # This class generates UEFI capsules # The current class supports generating a capsule with single firmware binary +DEPENDS += "gettext-native" inherit python3native IMAGE_TYPES += "uefi_capsule" @@ -19,14 +20,11 @@ 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 ?= "" +UEFI_CAPSULE_CONFIG ?= "" # 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"]: + for var in ["UEFI_FIRMWARE_BINARY", "UEFI_CAPSULE_CONFIG"]: if not d.getVar(var): raise bb.parse.SkipRecipe(f"{var} not set") } @@ -36,10 +34,21 @@ 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} + # Copy the firmware and the capsule config json to current directory + if [ -e ${CAPSULE_IMGLOCATION}/${UEFI_FIRMWARE_BINARY} ]; then + cp ${CAPSULE_IMGLOCATION}/${UEFI_FIRMWARE_BINARY} . ; + fi + + export UEFI_FIRMWARE_BINARY=${UEFI_FIRMWARE_BINARY} + envsubst < ${UEFI_CAPSULE_CONFIG} > ./${MACHINE}-capsule-update-image.json + + ${STAGING_DIR_NATIVE}/usr/bin/edk2-BaseTools/BinWrappers/PosixLike/GenerateCapsule \ + -e -o ${UEFI_FIRMWARE_BINARY}.${CAPSULE_EXTENSION} -j \ + ${MACHINE}-capsule-update-image.json + + # Remove the firmware to avoid contamination of IMGDEPLOYDIR + rm ${UEFI_FIRMWARE_BINARY} + } # The firmware binary should be created before generating the capsule -- 2.17.1 -=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#4391): https://lists.yoctoproject.org/g/meta-arm/message/4391 Mute This Topic: https://lists.yoctoproject.org/mt/96980035/5052612 Group Owner: meta-arm+owner@lists.yoctoproject.org<mailto:meta-arm%2Bowner@lists.yoctoproject.org> Unsubscribe: https://lists.yoctoproject.org/g/meta-arm/unsub [quaresma.jose@gmail.com<mailto:quaresma.jose@gmail.com>] -=-=-=-=-=-=-=-=-=-=-=- -- Best regards, José Quaresma [-- Attachment #2: Type: text/html, Size: 11995 bytes --] ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [meta-arm] [PATCH 2/2] arm-bsp/uefi_capsule: Use json file to pass capsule config 2023-02-15 12:44 ` Gowtham Suresh Kumar @ 2023-02-15 13:14 ` Jose Quaresma 0 siblings, 0 replies; 7+ messages in thread From: Jose Quaresma @ 2023-02-15 13:14 UTC (permalink / raw) To: Gowtham Suresh Kumar; +Cc: meta-arm, Ross Burton, nd [-- Attachment #1: Type: text/plain, Size: 6376 bytes --] Gowtham Suresh Kumar <Gowtham.SureshKumar@arm.com> escreveu no dia quarta, 15/02/2023 à(s) 12:44: > Hello Jose, > > The CAPSULE_IMGTYPE is used in the uefi_capsule.bbclass as shown below. > > IMAGE_TYPEDEP:uefi_capsule:append = "${CAPSULE_IMGTYPE}" > Yup, sorry for the noise. Since it is needed, it can be reused in: -UEFI_FIRMWARE_BINARY = "${PN}-${MACHINE}.wic.nopt" +UEFI_FIRMWARE_BINARY = "${PN}-${MACHINE}.${CAPSULE_IMGTYPE}" Jose > Best regards, > Gowtham Suresh Kumar > ------------------------------ > *From:* Jose Quaresma <quaresma.jose@gmail.com> > *Sent:* Wednesday, February 15, 2023 12:23 PM > *To:* Gowtham Suresh Kumar <Gowtham.SureshKumar@arm.com> > *Cc:* meta-arm@lists.yoctoproject.org <meta-arm@lists.yoctoproject.org>; > Ross Burton <Ross.Burton@arm.com>; nd <nd@arm.com> > *Subject:* Re: [meta-arm] [PATCH 2/2] arm-bsp/uefi_capsule: Use json file > to pass capsule config > > Hi Gowtham, > > Gowtham Suresh Kumar <gowtham.sureshkumar@arm.com> escreveu no dia > quarta, 15/02/2023 à(s) 10:42: > > From: Gowtham Suresh Kumar <gowtham.sureshkumar@arm.com> > > This patch uses the json config file for UEFI capsule generation > as this is efficient and easily scalable to generate multiple > capsules. > > Signed-off-by: Gowtham Suresh Kumar <gowtham.sureshkumar@arm.com> > --- > .../recipes-bsp/images/corstone1000-image.bb | 8 +++--- > ...rstone1000-image-capsule-update-image.json | 11 ++++++++ > meta-arm/classes/uefi_capsule.bbclass | 27 ++++++++++++------- > 3 files changed, 32 insertions(+), 14 deletions(-) > create mode 100644 > meta-arm-bsp/recipes-bsp/images/files/corstone1000-image-capsule-update-image.json > > diff --git a/meta-arm-bsp/recipes-bsp/images/corstone1000-image.bb > b/meta-arm-bsp/recipes-bsp/images/corstone1000-image.bb > index b0a71bca..ce4df8a6 100644 > --- a/meta-arm-bsp/recipes-bsp/images/corstone1000-image.bb > +++ b/meta-arm-bsp/recipes-bsp/images/corstone1000-image.bb > @@ -13,11 +13,9 @@ PACKAGE_INSTALL = "" > > IMAGE_FSTYPES += "wic wic.nopt uefi_capsule" > > -UEFI_FIRMWARE_BINARY = "corstone1000-image-${MACHINE}.wic.nopt" > -UEFI_FIRMWARE_VERSION = "5" > -UEFI_FIRMWARE_LSV = "0" > -UEFI_FIRMWARE_GUID = "e2bb9c06-70e9-4b14-97a3-5a7913176e3f" > -UEFI_FIRMWARE_UPDATE_INDEX = "0" > +UEFI_FIRMWARE_BINARY = "${PN}-${MACHINE}.wic.nopt" > +UEFI_CAPSULE_CONFIG = "${THISDIR}/files/${PN}-capsule-update-image.json" > +CAPSULE_IMGTYPE = "wic.nopt" > > > Looks like this variable is not used anywhere. > > Jose > > > > do_sign_images() { > # Sign TF-A BL2 > diff --git > a/meta-arm-bsp/recipes-bsp/images/files/corstone1000-image-capsule-update-image.json > b/meta-arm-bsp/recipes-bsp/images/files/corstone1000-image-capsule-update-image.json > new file mode 100644 > index 00000000..0f011ff7 > --- /dev/null > +++ > b/meta-arm-bsp/recipes-bsp/images/files/corstone1000-image-capsule-update-image.json > @@ -0,0 +1,11 @@ > +{ > + "Payloads": [ > + { > + "FwVersion": "5", > + "Guid": "e2bb9c06-70e9-4b14-97a3-5a7913176e3f", > + "LowestSupportedVersion": "1", > + "Payload": "$UEFI_FIRMWARE_BINARY", > + "UpdateImageIndex": "0" > + } > + ] > +} > diff --git a/meta-arm/classes/uefi_capsule.bbclass > b/meta-arm/classes/uefi_capsule.bbclass > index 0c3d3845..cf708412 100644 > --- a/meta-arm/classes/uefi_capsule.bbclass > +++ b/meta-arm/classes/uefi_capsule.bbclass > @@ -1,6 +1,7 @@ > # This class generates UEFI capsules > # The current class supports generating a capsule with single firmware > binary > > +DEPENDS += "gettext-native" > inherit python3native > > IMAGE_TYPES += "uefi_capsule" > @@ -19,14 +20,11 @@ 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 ?= "" > +UEFI_CAPSULE_CONFIG ?= "" > > # 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"]: > + for var in ["UEFI_FIRMWARE_BINARY", "UEFI_CAPSULE_CONFIG"]: > if not d.getVar(var): > raise bb.parse.SkipRecipe(f"{var} not set") > } > @@ -36,10 +34,21 @@ 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} > + # Copy the firmware and the capsule config json to current directory > + if [ -e ${CAPSULE_IMGLOCATION}/${UEFI_FIRMWARE_BINARY} ]; then > + cp ${CAPSULE_IMGLOCATION}/${UEFI_FIRMWARE_BINARY} . ; > + fi > + > + export UEFI_FIRMWARE_BINARY=${UEFI_FIRMWARE_BINARY} > + envsubst < ${UEFI_CAPSULE_CONFIG} > > ./${MACHINE}-capsule-update-image.json > + > + > ${STAGING_DIR_NATIVE}/usr/bin/edk2-BaseTools/BinWrappers/PosixLike/GenerateCapsule > \ > + -e -o ${UEFI_FIRMWARE_BINARY}.${CAPSULE_EXTENSION} -j \ > + ${MACHINE}-capsule-update-image.json > + > + # Remove the firmware to avoid contamination of IMGDEPLOYDIR > + rm ${UEFI_FIRMWARE_BINARY} > + > } > > # The firmware binary should be created before generating the capsule > -- > 2.17.1 > > > -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > View/Reply Online (#4391): > https://lists.yoctoproject.org/g/meta-arm/message/4391 > Mute This Topic: https://lists.yoctoproject.org/mt/96980035/5052612 > Group Owner: meta-arm+owner@lists.yoctoproject.org > Unsubscribe: https://lists.yoctoproject.org/g/meta-arm/unsub [ > quaresma.jose@gmail.com] > -=-=-=-=-=-=-=-=-=-=-=- > > > > -- > Best regards, > > José Quaresma > -- Best regards, José Quaresma [-- Attachment #2: Type: text/html, Size: 11661 bytes --] ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 0/2] Update UEFI capsule generation to use json config file 2023-02-15 10:42 [PATCH 0/2] Update UEFI capsule generation to use json config file gowtham.sureshkumar 2023-02-15 10:42 ` [PATCH 1/2] arm/edk2-basetools: Convert edk2 basetools recipes to native only gowtham.sureshkumar 2023-02-15 10:42 ` [PATCH 2/2] arm-bsp/uefi_capsule: Use json file to pass capsule config gowtham.sureshkumar @ 2023-02-17 4:30 ` Jon Mason 2 siblings, 0 replies; 7+ messages in thread From: Jon Mason @ 2023-02-17 4:30 UTC (permalink / raw) To: meta-arm, Ross.Burton, gowtham.sureshkumar; +Cc: nd On Wed, 15 Feb 2023 10:42:34 +0000, gowtham.sureshkumar@arm.com wrote: > The UEFI capsule parameters can be passed to the script using a json file > which is easily scalable when generating multiple capsules. Also the edk2 > base tools recipe is made native only. > > Gowtham Suresh Kumar (2): > arm/edk2-basetools: Convert edk2 basetools recipes to native only > arm-bsp/uefi_capsule: Use json file to pass capsule config > > [...] Applied, thanks! [1/2] arm/edk2-basetools: Convert edk2 basetools recipes to native only commit: ae0dd2a58cf612b30d7d18d86bfdb0930432f44f [2/2] arm-bsp/uefi_capsule: Use json file to pass capsule config commit: ac39c6d4cc9390e002c7be6cd7080214c144349a Best regards, -- Jon Mason <jon.mason@arm.com> ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2023-02-17 4:31 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2023-02-15 10:42 [PATCH 0/2] Update UEFI capsule generation to use json config file gowtham.sureshkumar 2023-02-15 10:42 ` [PATCH 1/2] arm/edk2-basetools: Convert edk2 basetools recipes to native only gowtham.sureshkumar 2023-02-15 10:42 ` [PATCH 2/2] arm-bsp/uefi_capsule: Use json file to pass capsule config gowtham.sureshkumar 2023-02-15 12:23 ` [meta-arm] " Jose Quaresma 2023-02-15 12:44 ` Gowtham Suresh Kumar 2023-02-15 13:14 ` Jose Quaresma 2023-02-17 4:30 ` [PATCH 0/2] Update UEFI capsule generation to use json config file Jon Mason
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).