meta-arm.lists.yoctoproject.org archive mirror
 help / color / mirror / Atom feed
* [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).