[v3,1/1] replace custom OVA logic with imagetype logic

Message ID 20230210084044.714348-1-felix.moessbauer@siemens.com
State Accepted, archived
Headers show
Series [v3,1/1] replace custom OVA logic with imagetype logic | expand

Commit Message

MOESSBAUER, Felix Feb. 10, 2023, 8:40 a.m. UTC
This patch refactors the imagetypes_vm class for virtualbox and vmware
images. The existing manual implementation does not work anymore when
referencing ova config files across layers. Instead, we now use the
imagetypes logic, which avoids the problematic changes of
FILESEXTRAPATHS and SRC_URI.

Acked-by: Adriaan Schmidt <adriaan.schmidt@siemens.com>
Signed-off-by: Felix Moessbauer <felix.moessbauer@siemens.com>
---
Changes since v2:

- removed API-CHANGELOG-ENTRY as recommended by reviewer

Changes since v1:

- append with += to IMAGER_INSTALL:ova

Note:

The following pattern does NOT work: IMAGER_INSTALL:append:ova.
The reason is that we unconditionally append to the variable in
the machine config. This pattern is known as not supported.

Felix

 .../images/virtualbox}/vm-img-virtualbox.ovf.tmpl        | 0
 .../recipes-core/images/vmware}/vm-img-vmware.ovf.tmpl   | 0
 meta/classes/imagetypes_vm.bbclass                       | 9 +++------
 3 files changed, 3 insertions(+), 6 deletions(-)
 rename {meta/classes/vm-img => meta-isar/recipes-core/images/virtualbox}/vm-img-virtualbox.ovf.tmpl (100%)
 rename {meta/classes/vm-img => meta-isar/recipes-core/images/vmware}/vm-img-vmware.ovf.tmpl (100%)

Comments

Henning Schild Feb. 10, 2023, 9:29 a.m. UTC | #1
Am Fri, 10 Feb 2023 08:40:44 +0000
schrieb Felix Moessbauer <felix.moessbauer@siemens.com>:

> This patch refactors the imagetypes_vm class for virtualbox and vmware
> images. The existing manual implementation does not work anymore when
> referencing ova config files across layers. Instead, we now use the
> imagetypes logic, which avoids the problematic changes of
> FILESEXTRAPATHS and SRC_URI.

Thanks! My understanding is that it still works, even with bitbake2.
But it always generated nasty warnings and with bitbake2 there seem to
be even more of them. Nice to see them finally go.

Scenario is:

Layer2 builds a vmware image with ova from Layer1 (product)
Layer1 overloads the default template from Isar (product line)
Isar ... some modern "next"

Henning

> Acked-by: Adriaan Schmidt <adriaan.schmidt@siemens.com>
> Signed-off-by: Felix Moessbauer <felix.moessbauer@siemens.com>
> ---
> Changes since v2:
> 
> - removed API-CHANGELOG-ENTRY as recommended by reviewer
> 
> Changes since v1:
> 
> - append with += to IMAGER_INSTALL:ova
> 
> Note:
> 
> The following pattern does NOT work: IMAGER_INSTALL:append:ova.
> The reason is that we unconditionally append to the variable in
> the machine config. This pattern is known as not supported.
> 
> Felix
> 
>  .../images/virtualbox}/vm-img-virtualbox.ovf.tmpl        | 0
>  .../recipes-core/images/vmware}/vm-img-vmware.ovf.tmpl   | 0
>  meta/classes/imagetypes_vm.bbclass                       | 9
> +++------ 3 files changed, 3 insertions(+), 6 deletions(-)
>  rename {meta/classes/vm-img =>
> meta-isar/recipes-core/images/virtualbox}/vm-img-virtualbox.ovf.tmpl
> (100%) rename {meta/classes/vm-img =>
> meta-isar/recipes-core/images/vmware}/vm-img-vmware.ovf.tmpl (100%)
> 
> diff --git a/meta/classes/vm-img/vm-img-virtualbox.ovf.tmpl
> b/meta-isar/recipes-core/images/virtualbox/vm-img-virtualbox.ovf.tmpl
> similarity index 100% rename from
> meta/classes/vm-img/vm-img-virtualbox.ovf.tmpl rename to
> meta-isar/recipes-core/images/virtualbox/vm-img-virtualbox.ovf.tmpl
> diff --git a/meta/classes/vm-img/vm-img-vmware.ovf.tmpl
> b/meta-isar/recipes-core/images/vmware/vm-img-vmware.ovf.tmpl
> similarity index 100% rename from
> meta/classes/vm-img/vm-img-vmware.ovf.tmpl rename to
> meta-isar/recipes-core/images/vmware/vm-img-vmware.ovf.tmpl diff
> --git a/meta/classes/imagetypes_vm.bbclass
> b/meta/classes/imagetypes_vm.bbclass index 81ef866f..41f2af06 100644
> --- a/meta/classes/imagetypes_vm.bbclass +++
> b/meta/classes/imagetypes_vm.bbclass @@ -6,11 +6,8 @@ 
>  inherit buildchroot
>  
> -USING_OVA = "${@bb.utils.contains('IMAGE_BASETYPES', 'ova', '1',
> '0', d)}" -
> -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_SRC_URI:ova =
> "file://${OVF_TEMPLATE_FILE}" 
>  IMAGE_TYPEDEP:ova = "wic"
>  IMAGER_INSTALL:ova += "qemu-utils gawk uuid-runtime"
> @@ -67,8 +64,8 @@ OVA_VARS = "OVA_NAME OVA_MEMORY OVA_NUMBER_OF_CPU
> OVA_VRAM \ OVA_FIRMWARE OVA_ACPI OVA_3D_ACCEL \
>              OVA_SHA_ALG VIRTUAL_MACHINE_IMAGE_FILE"
>  
> -TEMPLATE_FILES += "${@'${OVF_TEMPLATE_FILE}' if
> d.getVar('USING_OVA') == '1' else ''}" -TEMPLATE_VARS += "${OVA_VARS}"
> +IMAGE_TEMPLATE_FILES:ova = "${OVF_TEMPLATE_FILE}"
> +IMAGE_TEMPLATE_VARS:ova = "${OVA_VARS}"
>  
>  do_image_ova[prefuncs] += "convert_wic"
>  IMAGE_CMD:ova() {
Uladzimir Bely Feb. 16, 2023, 4:42 a.m. UTC | #2
In the email from Friday, 10 February 2023 11:40:44 +03 user Felix Moessbauer 
wrote:
> This patch refactors the imagetypes_vm class for virtualbox and vmware
> images. The existing manual implementation does not work anymore when
> referencing ova config files across layers. Instead, we now use the
> imagetypes logic, which avoids the problematic changes of
> FILESEXTRAPATHS and SRC_URI.
> 
> Acked-by: Adriaan Schmidt <adriaan.schmidt@siemens.com>
> Signed-off-by: Felix Moessbauer <felix.moessbauer@siemens.com>
> ---
> Changes since v2:
> 
> - removed API-CHANGELOG-ENTRY as recommended by reviewer
> 
> Changes since v1:
> 
> - append with += to IMAGER_INSTALL:ova
> 
> Note:
> 
> The following pattern does NOT work: IMAGER_INSTALL:append:ova.
> The reason is that we unconditionally append to the variable in
> the machine config. This pattern is known as not supported.
> 
> Felix
> 
>  .../images/virtualbox}/vm-img-virtualbox.ovf.tmpl        | 0
>  .../recipes-core/images/vmware}/vm-img-vmware.ovf.tmpl   | 0
>  meta/classes/imagetypes_vm.bbclass                       | 9 +++------
>  3 files changed, 3 insertions(+), 6 deletions(-)
>  rename {meta/classes/vm-img =>
> meta-isar/recipes-core/images/virtualbox}/vm-img-virtualbox.ovf.tmpl (100%)
> rename {meta/classes/vm-img =>
> meta-isar/recipes-core/images/vmware}/vm-img-vmware.ovf.tmpl (100%)
> 
> diff --git a/meta/classes/vm-img/vm-img-virtualbox.ovf.tmpl
> b/meta-isar/recipes-core/images/virtualbox/vm-img-virtualbox.ovf.tmpl
> similarity index 100%
> rename from meta/classes/vm-img/vm-img-virtualbox.ovf.tmpl
> rename to
> meta-isar/recipes-core/images/virtualbox/vm-img-virtualbox.ovf.tmpl diff
> --git a/meta/classes/vm-img/vm-img-vmware.ovf.tmpl
> b/meta-isar/recipes-core/images/vmware/vm-img-vmware.ovf.tmpl similarity
> index 100%
> rename from meta/classes/vm-img/vm-img-vmware.ovf.tmpl
> rename to meta-isar/recipes-core/images/vmware/vm-img-vmware.ovf.tmpl
> diff --git a/meta/classes/imagetypes_vm.bbclass
> b/meta/classes/imagetypes_vm.bbclass index 81ef866f..41f2af06 100644
> --- a/meta/classes/imagetypes_vm.bbclass
> +++ b/meta/classes/imagetypes_vm.bbclass
> @@ -6,11 +6,8 @@
> 
>  inherit buildchroot
> 
> -USING_OVA = "${@bb.utils.contains('IMAGE_BASETYPES', 'ova', '1', '0', d)}"
> -
> -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_SRC_URI:ova = "file://${OVF_TEMPLATE_FILE}"
> 
>  IMAGE_TYPEDEP:ova = "wic"
>  IMAGER_INSTALL:ova += "qemu-utils gawk uuid-runtime"
> @@ -67,8 +64,8 @@ OVA_VARS = "OVA_NAME OVA_MEMORY OVA_NUMBER_OF_CPU OVA_VRAM
> \ OVA_FIRMWARE OVA_ACPI OVA_3D_ACCEL \
>              OVA_SHA_ALG VIRTUAL_MACHINE_IMAGE_FILE"
> 
> -TEMPLATE_FILES += "${@'${OVF_TEMPLATE_FILE}' if d.getVar('USING_OVA') ==
> '1' else ''}" -TEMPLATE_VARS += "${OVA_VARS}"
> +IMAGE_TEMPLATE_FILES:ova = "${OVF_TEMPLATE_FILE}"
> +IMAGE_TEMPLATE_VARS:ova = "${OVA_VARS}"
> 
>  do_image_ova[prefuncs] += "convert_wic"
>  IMAGE_CMD:ova() {

Applied to next, thanks
Henning Schild June 7, 2023, 12:02 p.m. UTC | #3
Am Fri, 10 Feb 2023 08:40:44 +0000
schrieb Felix Moessbauer <felix.moessbauer@siemens.com>:

> This patch refactors the imagetypes_vm class for virtualbox and vmware
> images. The existing manual implementation does not work anymore when
> referencing ova config files across layers. Instead, we now use the
> imagetypes logic, which avoids the problematic changes of
> FILESEXTRAPATHS and SRC_URI.
> 
> Acked-by: Adriaan Schmidt <adriaan.schmidt@siemens.com>
> Signed-off-by: Felix Moessbauer <felix.moessbauer@siemens.com>
> ---
> Changes since v2:
> 
> - removed API-CHANGELOG-ENTRY as recommended by reviewer
> 
> Changes since v1:
> 
> - append with += to IMAGER_INSTALL:ova
> 
> Note:
> 
> The following pattern does NOT work: IMAGER_INSTALL:append:ova.
> The reason is that we unconditionally append to the variable in
> the machine config. This pattern is known as not supported.
> 
> Felix
> 
>  .../images/virtualbox}/vm-img-virtualbox.ovf.tmpl        | 0
>  .../recipes-core/images/vmware}/vm-img-vmware.ovf.tmpl   | 0
>  meta/classes/imagetypes_vm.bbclass                       | 9

Why that rename actually? This is an API change for downstream layers
who do not overwrite OVF_TEMPLATE_FILE but only have meta not meta-isar.

I think it should be moved back to meta so other projects do not have
to include meta-isar as a layer.

Henning

> +++------ 3 files changed, 3 insertions(+), 6 deletions(-)
>  rename {meta/classes/vm-img =>
> meta-isar/recipes-core/images/virtualbox}/vm-img-virtualbox.ovf.tmpl
> (100%) rename {meta/classes/vm-img =>
> meta-isar/recipes-core/images/vmware}/vm-img-vmware.ovf.tmpl (100%)
> 
> diff --git a/meta/classes/vm-img/vm-img-virtualbox.ovf.tmpl
> b/meta-isar/recipes-core/images/virtualbox/vm-img-virtualbox.ovf.tmpl
> similarity index 100% rename from
> meta/classes/vm-img/vm-img-virtualbox.ovf.tmpl rename to
> meta-isar/recipes-core/images/virtualbox/vm-img-virtualbox.ovf.tmpl
> diff --git a/meta/classes/vm-img/vm-img-vmware.ovf.tmpl
> b/meta-isar/recipes-core/images/vmware/vm-img-vmware.ovf.tmpl
> similarity index 100% rename from
> meta/classes/vm-img/vm-img-vmware.ovf.tmpl rename to
> meta-isar/recipes-core/images/vmware/vm-img-vmware.ovf.tmpl diff
> --git a/meta/classes/imagetypes_vm.bbclass
> b/meta/classes/imagetypes_vm.bbclass index 81ef866f..41f2af06 100644
> --- a/meta/classes/imagetypes_vm.bbclass +++
> b/meta/classes/imagetypes_vm.bbclass @@ -6,11 +6,8 @@ 
>  inherit buildchroot
>  
> -USING_OVA = "${@bb.utils.contains('IMAGE_BASETYPES', 'ova', '1',
> '0', d)}" -
> -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_SRC_URI:ova =
> "file://${OVF_TEMPLATE_FILE}" 
>  IMAGE_TYPEDEP:ova = "wic"
>  IMAGER_INSTALL:ova += "qemu-utils gawk uuid-runtime"
> @@ -67,8 +64,8 @@ OVA_VARS = "OVA_NAME OVA_MEMORY OVA_NUMBER_OF_CPU
> OVA_VRAM \ OVA_FIRMWARE OVA_ACPI OVA_3D_ACCEL \
>              OVA_SHA_ALG VIRTUAL_MACHINE_IMAGE_FILE"
>  
> -TEMPLATE_FILES += "${@'${OVF_TEMPLATE_FILE}' if
> d.getVar('USING_OVA') == '1' else ''}" -TEMPLATE_VARS += "${OVA_VARS}"
> +IMAGE_TEMPLATE_FILES:ova = "${OVF_TEMPLATE_FILE}"
> +IMAGE_TEMPLATE_VARS:ova = "${OVA_VARS}"
>  
>  do_image_ova[prefuncs] += "convert_wic"
>  IMAGE_CMD:ova() {

Patch

diff --git a/meta/classes/vm-img/vm-img-virtualbox.ovf.tmpl b/meta-isar/recipes-core/images/virtualbox/vm-img-virtualbox.ovf.tmpl
similarity index 100%
rename from meta/classes/vm-img/vm-img-virtualbox.ovf.tmpl
rename to meta-isar/recipes-core/images/virtualbox/vm-img-virtualbox.ovf.tmpl
diff --git a/meta/classes/vm-img/vm-img-vmware.ovf.tmpl b/meta-isar/recipes-core/images/vmware/vm-img-vmware.ovf.tmpl
similarity index 100%
rename from meta/classes/vm-img/vm-img-vmware.ovf.tmpl
rename to meta-isar/recipes-core/images/vmware/vm-img-vmware.ovf.tmpl
diff --git a/meta/classes/imagetypes_vm.bbclass b/meta/classes/imagetypes_vm.bbclass
index 81ef866f..41f2af06 100644
--- a/meta/classes/imagetypes_vm.bbclass
+++ b/meta/classes/imagetypes_vm.bbclass
@@ -6,11 +6,8 @@ 
 
 inherit buildchroot
 
-USING_OVA = "${@bb.utils.contains('IMAGE_BASETYPES', 'ova', '1', '0', d)}"
-
-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_SRC_URI:ova = "file://${OVF_TEMPLATE_FILE}"
 
 IMAGE_TYPEDEP:ova = "wic"
 IMAGER_INSTALL:ova += "qemu-utils gawk uuid-runtime"
@@ -67,8 +64,8 @@  OVA_VARS = "OVA_NAME OVA_MEMORY OVA_NUMBER_OF_CPU OVA_VRAM \
             OVA_FIRMWARE OVA_ACPI OVA_3D_ACCEL \
             OVA_SHA_ALG VIRTUAL_MACHINE_IMAGE_FILE"
 
-TEMPLATE_FILES += "${@'${OVF_TEMPLATE_FILE}' if d.getVar('USING_OVA') == '1' else ''}"
-TEMPLATE_VARS += "${OVA_VARS}"
+IMAGE_TEMPLATE_FILES:ova = "${OVF_TEMPLATE_FILE}"
+IMAGE_TEMPLATE_VARS:ova = "${OVA_VARS}"
 
 do_image_ova[prefuncs] += "convert_wic"
 IMAGE_CMD:ova() {