* [PATCH v2 0/4] Allow better control over container tags
@ 2021-08-02 8:40 Henning Schild
2021-08-02 8:40 ` [PATCH v2 1/4] classes: make sure container extension can run multiple times Henning Schild
` (3 more replies)
0 siblings, 4 replies; 9+ messages in thread
From: Henning Schild @ 2021-08-02 8:40 UTC (permalink / raw)
To: isar-users; +Cc: Silvano Cirujano Cuesta, Henning Schild
changes since v1:
- add RECIPE-API-CHANGELOG entry for interface change in p3
--
A container tags consists of "name:tag" and both have been kind of
hardcoded so far. "tag" was always "latest" which is not proper
versioning. And "name" has always been "isar-DISTRO-ARCH" which is also
not proper because the name should probably describe the content and not
so much the build system. Plus that name means guaranteed collision if
you build two containers with isar based on the same disto and arch.
Henning Schild (4):
classes: make sure container extension can run multiple times
classes: simplify tag handling in container class
classes: allow more control over container image name and tag
classes: fix comment in container-img class
RECIPE-API-CHANGELOG.md | 4 +++
meta/classes/container-img.bbclass | 6 ++---
.../classes/image-container-extension.bbclass | 25 ++++++++++---------
meta/classes/image-sdk-extension.bbclass | 2 +-
4 files changed, 20 insertions(+), 17 deletions(-)
--
2.31.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v2 1/4] classes: make sure container extension can run multiple times
2021-08-02 8:40 [PATCH v2 0/4] Allow better control over container tags Henning Schild
@ 2021-08-02 8:40 ` Henning Schild
2021-08-02 8:40 ` [PATCH v2 2/4] classes: simplify tag handling in container class Henning Schild
` (2 subsequent siblings)
3 siblings, 0 replies; 9+ messages in thread
From: Henning Schild @ 2021-08-02 8:40 UTC (permalink / raw)
To: isar-users; +Cc: Silvano Cirujano Cuesta, Henning Schild
If the container extension fails somewhere in the middle, it could leave
things behind resulting in issues when trying to run only that one task
again.
So make sure to remove stuff as root and remove another possibly
existing directory.
Signed-off-by: Henning Schild <henning.schild@siemens.com>
---
meta/classes/image-container-extension.bbclass | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/meta/classes/image-container-extension.bbclass b/meta/classes/image-container-extension.bbclass
index e26604a04f06..6537fc693265 100644
--- a/meta/classes/image-container-extension.bbclass
+++ b/meta/classes/image-container-extension.bbclass
@@ -18,7 +18,7 @@ containerize_rootfs() {
# prepare OCI container image skeleton
bbdebug 1 "prepare OCI container image skeleton"
- rm -rf "${oci_img_dir}"
+ sudo rm -rf "${oci_img_dir}" "${oci_img_dir}_unpacked"
sudo umoci init --layout "${oci_img_dir}"
sudo umoci new --image "${oci_img_dir}:${empty_tag}"
sudo umoci config --image "${oci_img_dir}:${empty_tag}" \
--
2.31.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v2 2/4] classes: simplify tag handling in container class
2021-08-02 8:40 [PATCH v2 0/4] Allow better control over container tags Henning Schild
2021-08-02 8:40 ` [PATCH v2 1/4] classes: make sure container extension can run multiple times Henning Schild
@ 2021-08-02 8:40 ` Henning Schild
2021-08-02 8:40 ` [PATCH v2 3/4] classes: allow more control over container image name and tag Henning Schild
2021-08-02 8:40 ` [PATCH v2 4/4] classes: fix comment in container-img class Henning Schild
3 siblings, 0 replies; 9+ messages in thread
From: Henning Schild @ 2021-08-02 8:40 UTC (permalink / raw)
To: isar-users; +Cc: Silvano Cirujano Cuesta, Henning Schild
Call the variable "tag" and use it in all places where "latest" was
hardcoded. This prepares for another patch that will allow chosing
something else than "latest" for a tag.
Signed-off-by: Henning Schild <henning.schild@siemens.com>
---
meta/classes/image-container-extension.bbclass | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/meta/classes/image-container-extension.bbclass b/meta/classes/image-container-extension.bbclass
index 6537fc693265..0e70ba9c1405 100644
--- a/meta/classes/image-container-extension.bbclass
+++ b/meta/classes/image-container-extension.bbclass
@@ -10,7 +10,7 @@ CONTAINER_FORMATS ?= "docker-archive"
containerize_rootfs() {
local cmd="/bin/dash"
local empty_tag="empty"
- local full_tag="latest"
+ local tag="latest"
local oci_img_dir="${WORKDIR}/oci-image"
local rootfs="$1"
local rootfs_id="$2"
@@ -33,7 +33,7 @@ containerize_rootfs() {
# pack container image
bbdebug 1 "pack container image"
- sudo umoci repack --image "${oci_img_dir}:${full_tag}" \
+ sudo umoci repack --image "${oci_img_dir}:${tag}" \
"${oci_img_dir}_unpacked"
sudo umoci remove --image "${oci_img_dir}:${empty_tag}"
sudo rm -rf "${oci_img_dir}_unpacked"
@@ -49,14 +49,14 @@ containerize_rootfs() {
case "${image_type}" in
"docker-archive" | "oci-archive")
if [ "${image_type}" = "oci-archive" ] ; then
- target="${image_type}:${image_archive}:latest"
+ target="${image_type}:${image_archive}:${tag}"
else
- target="${image_type}:${image_archive}:${image_name}:latest"
+ target="${image_type}:${image_archive}:${image_name}:${tag}"
fi
rm -f "${image_archive}" "${image_archive}.xz"
bbdebug 2 "Converting OCI image to ${image_type}"
skopeo --insecure-policy copy \
- "oci:${oci_img_dir}:${full_tag}" "${target}"
+ "oci:${oci_img_dir}:${tag}" "${target}"
bbdebug 2 "Compressing image"
xz -T0 "${image_archive}"
;;
@@ -69,8 +69,8 @@ containerize_rootfs() {
die "Adding the container image to a container runtime (${image_type}) not supported if running from a container (e.g. 'kas-container')"
fi
skopeo --insecure-policy copy \
- "oci:${oci_img_dir}:${full_tag}" \
- "${image_type}:${image_name}:latest"
+ "oci:${oci_img_dir}:${tag}" \
+ "${image_type}:${image_name}:${tag}"
;;
*)
die "Unsupported format for containerize_rootfs: ${image_type}"
--
2.31.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v2 3/4] classes: allow more control over container image name and tag
2021-08-02 8:40 [PATCH v2 0/4] Allow better control over container tags Henning Schild
2021-08-02 8:40 ` [PATCH v2 1/4] classes: make sure container extension can run multiple times Henning Schild
2021-08-02 8:40 ` [PATCH v2 2/4] classes: simplify tag handling in container class Henning Schild
@ 2021-08-02 8:40 ` Henning Schild
2021-08-02 9:44 ` Silvano Cirujano Cuesta
2021-08-02 8:40 ` [PATCH v2 4/4] classes: fix comment in container-img class Henning Schild
3 siblings, 1 reply; 9+ messages in thread
From: Henning Schild @ 2021-08-02 8:40 UTC (permalink / raw)
To: isar-users; +Cc: Silvano Cirujano Cuesta, Henning Schild
This patch allows more fine-grained control over how the resulting
container will be tagged. Where the default name will be PN together
with DISTRO and ARCH, and tag will be derived from PV and PR
Signed-off-by: Henning Schild <henning.schild@siemens.com>
---
RECIPE-API-CHANGELOG.md | 4 ++++
meta/classes/container-img.bbclass | 4 +---
meta/classes/image-container-extension.bbclass | 11 ++++++-----
meta/classes/image-sdk-extension.bbclass | 2 +-
4 files changed, 12 insertions(+), 9 deletions(-)
diff --git a/RECIPE-API-CHANGELOG.md b/RECIPE-API-CHANGELOG.md
index 806c2914f13f..284583e28120 100644
--- a/RECIPE-API-CHANGELOG.md
+++ b/RECIPE-API-CHANGELOG.md
@@ -292,3 +292,7 @@ Migrate your patches so they can be applied with "git am", or
Kernel image name for arm64 platforms is vmlinux now. Image format was
not changed (uncompressed executable) but now it is named correctly.
+
+### Change default "image_name:tag" when building container images
+
+The name used to be rather static and the tag was always "latest", now the values are derived from recipe variables PN, PV, PR.
diff --git a/meta/classes/container-img.bbclass b/meta/classes/container-img.bbclass
index 79ef3e8d756b..9928a58ef53d 100644
--- a/meta/classes/container-img.bbclass
+++ b/meta/classes/container-img.bbclass
@@ -9,10 +9,8 @@
do_container_image[stamp-extra-info] = "${DISTRO}-${MACHINE}"
do_container_image[vardeps] += "CONTAINER_FORMATS"
do_container_image(){
- rootfs_id="${DISTRO}-${DISTRO_ARCH}"
-
bbdebug 1 "Generate container image in these formats: ${CONTAINER_FORMATS}"
- containerize_rootfs "${IMAGE_ROOTFS}" "${rootfs_id}" "${CONTAINER_FORMATS}"
+ containerize_rootfs "${IMAGE_ROOTFS}" "${CONTAINER_FORMATS}"
}
addtask container_image before do_image after do_image_tools
diff --git a/meta/classes/image-container-extension.bbclass b/meta/classes/image-container-extension.bbclass
index 0e70ba9c1405..43b67f9d864d 100644
--- a/meta/classes/image-container-extension.bbclass
+++ b/meta/classes/image-container-extension.bbclass
@@ -6,15 +6,16 @@
# This class extends the image.bbclass for containerizing the root filesystem.
CONTAINER_FORMATS ?= "docker-archive"
+CONTAINER_IMAGE_NAME ?= "${PN}-${DISTRO}-${DISTRO_ARCH}"
+CONTAINER_TAG ?= "${PV}-${PR}"
containerize_rootfs() {
local cmd="/bin/dash"
local empty_tag="empty"
- local tag="latest"
+ local tag="${CONTAINER_TAG}"
local oci_img_dir="${WORKDIR}/oci-image"
local rootfs="$1"
- local rootfs_id="$2"
- local container_formats="$3"
+ local container_formats="$2"
# prepare OCI container image skeleton
bbdebug 1 "prepare OCI container image skeleton"
@@ -42,9 +43,9 @@ containerize_rootfs() {
sudo chown --recursive $(id -u):$(id -g) "${oci_img_dir}"
# convert the OCI container image to the desired format
- image_name="isar-${rootfs_id}"
+ image_name="${CONTAINER_IMAGE_NAME}"
for image_type in ${CONTAINER_FORMATS} ; do
- image_archive="${DEPLOY_DIR_IMAGE}/${rootfs_id}-${image_type}.tar"
+ image_archive="${DEPLOY_DIR_IMAGE}/${image_name}-${tag}-${image_type}.tar"
bbdebug 1 "Creating container image type: ${image_type}"
case "${image_type}" in
"docker-archive" | "oci-archive")
diff --git a/meta/classes/image-sdk-extension.bbclass b/meta/classes/image-sdk-extension.bbclass
index 426b92595554..fa15b588068c 100644
--- a/meta/classes/image-sdk-extension.bbclass
+++ b/meta/classes/image-sdk-extension.bbclass
@@ -80,7 +80,7 @@ do_populate_sdk() {
# generate the SDK in all the desired container formats
if [ -n "${sdk_container_formats}" ] ; then
bbnote "Generating SDK container in ${sdk_container_formats} format"
- containerize_rootfs "${SDKCHROOT_DIR}" "sdk-${DISTRO}-${DISTRO_ARCH}" "${sdk_container_formats}"
+ containerize_rootfs "${SDKCHROOT_DIR}" "${sdk_container_formats}"
fi
}
--
2.31.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v2 4/4] classes: fix comment in container-img class
2021-08-02 8:40 [PATCH v2 0/4] Allow better control over container tags Henning Schild
` (2 preceding siblings ...)
2021-08-02 8:40 ` [PATCH v2 3/4] classes: allow more control over container image name and tag Henning Schild
@ 2021-08-02 8:40 ` Henning Schild
3 siblings, 0 replies; 9+ messages in thread
From: Henning Schild @ 2021-08-02 8:40 UTC (permalink / raw)
To: isar-users; +Cc: Silvano Cirujano Cuesta, Henning Schild
The task name is in fact a different one, the function sits in another
class.
Signed-off-by: Henning Schild <henning.schild@siemens.com>
---
meta/classes/container-img.bbclass | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/meta/classes/container-img.bbclass b/meta/classes/container-img.bbclass
index 9928a58ef53d..edd0e7f8f932 100644
--- a/meta/classes/container-img.bbclass
+++ b/meta/classes/container-img.bbclass
@@ -3,7 +3,7 @@
#
# SPDX-License-Identifier: MIT
#
-# This class provides the task 'containerize_rootfs'
+# This class provides the task 'container_image'
# to create container images containing the target rootfs.
do_container_image[stamp-extra-info] = "${DISTRO}-${MACHINE}"
--
2.31.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 3/4] classes: allow more control over container image name and tag
2021-08-02 8:40 ` [PATCH v2 3/4] classes: allow more control over container image name and tag Henning Schild
@ 2021-08-02 9:44 ` Silvano Cirujano Cuesta
2021-08-02 10:45 ` Henning Schild
0 siblings, 1 reply; 9+ messages in thread
From: Silvano Cirujano Cuesta @ 2021-08-02 9:44 UTC (permalink / raw)
To: Henning Schild, isar-users
On 02/08/2021 10:40, Henning Schild wrote:
> This patch allows more fine-grained control over how the resulting
> container will be tagged. Where the default name will be PN together
> with DISTRO and ARCH, and tag will be derived from PV and PR
>
> Signed-off-by: Henning Schild <henning.schild@siemens.com>
> ---
> RECIPE-API-CHANGELOG.md | 4 ++++
> meta/classes/container-img.bbclass | 4 +---
> meta/classes/image-container-extension.bbclass | 11 ++++++-----
> meta/classes/image-sdk-extension.bbclass | 2 +-
> 4 files changed, 12 insertions(+), 9 deletions(-)
>
> diff --git a/RECIPE-API-CHANGELOG.md b/RECIPE-API-CHANGELOG.md
> index 806c2914f13f..284583e28120 100644
> --- a/RECIPE-API-CHANGELOG.md
> +++ b/RECIPE-API-CHANGELOG.md
> @@ -292,3 +292,7 @@ Migrate your patches so they can be applied with "git am", or
>
> Kernel image name for arm64 platforms is vmlinux now. Image format was
> not changed (uncompressed executable) but now it is named correctly.
> +
> +### Change default "image_name:tag" when building container images
> +
> +The name used to be rather static and the tag was always "latest", now the values are derived from recipe variables PN, PV, PR.
> diff --git a/meta/classes/container-img.bbclass b/meta/classes/container-img.bbclass
> index 79ef3e8d756b..9928a58ef53d 100644
> --- a/meta/classes/container-img.bbclass
> +++ b/meta/classes/container-img.bbclass
> @@ -9,10 +9,8 @@
> do_container_image[stamp-extra-info] = "${DISTRO}-${MACHINE}"
> do_container_image[vardeps] += "CONTAINER_FORMATS"
> do_container_image(){
> - rootfs_id="${DISTRO}-${DISTRO_ARCH}"
> -
> bbdebug 1 "Generate container image in these formats: ${CONTAINER_FORMATS}"
> - containerize_rootfs "${IMAGE_ROOTFS}" "${rootfs_id}" "${CONTAINER_FORMATS}"
> + containerize_rootfs "${IMAGE_ROOTFS}" "${CONTAINER_FORMATS}"
> }
>
> addtask container_image before do_image after do_image_tools
> diff --git a/meta/classes/image-container-extension.bbclass b/meta/classes/image-container-extension.bbclass
> index 0e70ba9c1405..43b67f9d864d 100644
> --- a/meta/classes/image-container-extension.bbclass
> +++ b/meta/classes/image-container-extension.bbclass
> @@ -6,15 +6,16 @@
> # This class extends the image.bbclass for containerizing the root filesystem.
>
> CONTAINER_FORMATS ?= "docker-archive"
> +CONTAINER_IMAGE_NAME ?= "${PN}-${DISTRO}-${DISTRO_ARCH}"
> +CONTAINER_TAG ?= "${PV}-${PR}"
These new variables aren't documented anywhere. But they should, right?
Additionally I'd rather use CONTAINER_IMAGE_TAG (instead of CONTAINER_TAG) for correctness and consistency.
>
> containerize_rootfs() {
> local cmd="/bin/dash"
> local empty_tag="empty"
> - local tag="latest"
> + local tag="${CONTAINER_TAG}"
> local oci_img_dir="${WORKDIR}/oci-image"
> local rootfs="$1"
> - local rootfs_id="$2"
> - local container_formats="$3"
> + local container_formats="$2"
>
> # prepare OCI container image skeleton
> bbdebug 1 "prepare OCI container image skeleton"
> @@ -42,9 +43,9 @@ containerize_rootfs() {
> sudo chown --recursive $(id -u):$(id -g) "${oci_img_dir}"
>
> # convert the OCI container image to the desired format
> - image_name="isar-${rootfs_id}"
> + image_name="${CONTAINER_IMAGE_NAME}"
> for image_type in ${CONTAINER_FORMATS} ; do
> - image_archive="${DEPLOY_DIR_IMAGE}/${rootfs_id}-${image_type}.tar"
> + image_archive="${DEPLOY_DIR_IMAGE}/${image_name}-${tag}-${image_type}.tar"
> bbdebug 1 "Creating container image type: ${image_type}"
> case "${image_type}" in
> "docker-archive" | "oci-archive")
> diff --git a/meta/classes/image-sdk-extension.bbclass b/meta/classes/image-sdk-extension.bbclass
> index 426b92595554..fa15b588068c 100644
> --- a/meta/classes/image-sdk-extension.bbclass
> +++ b/meta/classes/image-sdk-extension.bbclass
> @@ -80,7 +80,7 @@ do_populate_sdk() {
> # generate the SDK in all the desired container formats
> if [ -n "${sdk_container_formats}" ] ; then
> bbnote "Generating SDK container in ${sdk_container_formats} format"
> - containerize_rootfs "${SDKCHROOT_DIR}" "sdk-${DISTRO}-${DISTRO_ARCH}" "${sdk_container_formats}"
> + containerize_rootfs "${SDKCHROOT_DIR}" "${sdk_container_formats}"
> fi
> }
>
>
--
Silvano Cirujano Cuesta
--
Siemens AG, T RDA IOT SES-DE
Corporate Competence Center Embedded Linux
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 3/4] classes: allow more control over container image name and tag
2021-08-02 9:44 ` Silvano Cirujano Cuesta
@ 2021-08-02 10:45 ` Henning Schild
2021-08-02 12:16 ` Silvano Cirujano Cuesta
0 siblings, 1 reply; 9+ messages in thread
From: Henning Schild @ 2021-08-02 10:45 UTC (permalink / raw)
To: Silvano Cirujano Cuesta; +Cc: isar-users
Am Mon, 2 Aug 2021 11:44:39 +0200
schrieb Silvano Cirujano Cuesta <silvano.cirujano-cuesta@siemens.com>:
> On 02/08/2021 10:40, Henning Schild wrote:
> > This patch allows more fine-grained control over how the resulting
> > container will be tagged. Where the default name will be PN together
> > with DISTRO and ARCH, and tag will be derived from PV and PR
> >
> > Signed-off-by: Henning Schild <henning.schild@siemens.com>
> > ---
> > RECIPE-API-CHANGELOG.md | 4 ++++
> > meta/classes/container-img.bbclass | 4 +---
> > meta/classes/image-container-extension.bbclass | 11 ++++++-----
> > meta/classes/image-sdk-extension.bbclass | 2 +-
> > 4 files changed, 12 insertions(+), 9 deletions(-)
> >
> > diff --git a/RECIPE-API-CHANGELOG.md b/RECIPE-API-CHANGELOG.md
> > index 806c2914f13f..284583e28120 100644
> > --- a/RECIPE-API-CHANGELOG.md
> > +++ b/RECIPE-API-CHANGELOG.md
> > @@ -292,3 +292,7 @@ Migrate your patches so they can be applied
> > with "git am", or
> > Kernel image name for arm64 platforms is vmlinux now. Image format
> > was not changed (uncompressed executable) but now it is named
> > correctly. +
> > +### Change default "image_name:tag" when building container images
> > +
> > +The name used to be rather static and the tag was always "latest",
> > now the values are derived from recipe variables PN, PV, PR. diff
> > --git a/meta/classes/container-img.bbclass
> > b/meta/classes/container-img.bbclass index
> > 79ef3e8d756b..9928a58ef53d 100644 ---
> > a/meta/classes/container-img.bbclass +++
> > b/meta/classes/container-img.bbclass @@ -9,10 +9,8 @@
> > do_container_image[stamp-extra-info] = "${DISTRO}-${MACHINE}"
> > do_container_image[vardeps] += "CONTAINER_FORMATS"
> > do_container_image(){
> > - rootfs_id="${DISTRO}-${DISTRO_ARCH}"
> > -
> > bbdebug 1 "Generate container image in these formats:
> > ${CONTAINER_FORMATS}"
> > - containerize_rootfs "${IMAGE_ROOTFS}" "${rootfs_id}"
> > "${CONTAINER_FORMATS}"
> > + containerize_rootfs "${IMAGE_ROOTFS}" "${CONTAINER_FORMATS}"
> > }
> >
> > addtask container_image before do_image after do_image_tools
> > diff --git a/meta/classes/image-container-extension.bbclass
> > b/meta/classes/image-container-extension.bbclass index
> > 0e70ba9c1405..43b67f9d864d 100644 ---
> > a/meta/classes/image-container-extension.bbclass +++
> > b/meta/classes/image-container-extension.bbclass @@ -6,15 +6,16 @@
> > # This class extends the image.bbclass for containerizing the root
> > filesystem.
> > CONTAINER_FORMATS ?= "docker-archive"
> > +CONTAINER_IMAGE_NAME ?= "${PN}-${DISTRO}-${DISTRO_ARCH}"
> > +CONTAINER_TAG ?= "${PV}-${PR}"
>
> These new variables aren't documented anywhere. But they should,
> right?
They could but probably do not need to. There are many things in Isar
that are not or not fully documented. But yes ... the documentation
probably still needs updating because you documented a lot.
> Additionally I'd rather use CONTAINER_IMAGE_TAG (instead of
> CONTAINER_TAG) for correctness and consistency.
The strings are inspired by "docker help tag". Where the one is
"TARGET_IMAGE" and the other is "TAG". But i will rename
CONTAINER_IMAGE_NAME to CONTAINER_TARGET_IMAGE because i will have to
touch those docs.
Henning
> >
> > containerize_rootfs() {
> > local cmd="/bin/dash"
> > local empty_tag="empty"
> > - local tag="latest"
> > + local tag="${CONTAINER_TAG}"
> > local oci_img_dir="${WORKDIR}/oci-image"
> > local rootfs="$1"
> > - local rootfs_id="$2"
> > - local container_formats="$3"
> > + local container_formats="$2"
> >
> > # prepare OCI container image skeleton
> > bbdebug 1 "prepare OCI container image skeleton"
> > @@ -42,9 +43,9 @@ containerize_rootfs() {
> > sudo chown --recursive $(id -u):$(id -g) "${oci_img_dir}"
> >
> > # convert the OCI container image to the desired format
> > - image_name="isar-${rootfs_id}"
> > + image_name="${CONTAINER_IMAGE_NAME}"
> > for image_type in ${CONTAINER_FORMATS} ; do
> > -
> > image_archive="${DEPLOY_DIR_IMAGE}/${rootfs_id}-${image_type}.tar"
> > +
> > image_archive="${DEPLOY_DIR_IMAGE}/${image_name}-${tag}-${image_type}.tar"
> > bbdebug 1 "Creating container image type: ${image_type}" case
> > "${image_type}" in "docker-archive" | "oci-archive")
> > diff --git a/meta/classes/image-sdk-extension.bbclass
> > b/meta/classes/image-sdk-extension.bbclass index
> > 426b92595554..fa15b588068c 100644 ---
> > a/meta/classes/image-sdk-extension.bbclass +++
> > b/meta/classes/image-sdk-extension.bbclass @@ -80,7 +80,7 @@
> > do_populate_sdk() { # generate the SDK in all the desired container
> > formats if [ -n "${sdk_container_formats}" ] ; then
> > bbnote "Generating SDK container in
> > ${sdk_container_formats} format"
> > - containerize_rootfs "${SDKCHROOT_DIR}"
> > "sdk-${DISTRO}-${DISTRO_ARCH}" "${sdk_container_formats}"
> > + containerize_rootfs "${SDKCHROOT_DIR}"
> > "${sdk_container_formats}" fi
> > }
> >
> >
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 3/4] classes: allow more control over container image name and tag
2021-08-02 10:45 ` Henning Schild
@ 2021-08-02 12:16 ` Silvano Cirujano Cuesta
2021-08-02 12:54 ` Henning Schild
0 siblings, 1 reply; 9+ messages in thread
From: Silvano Cirujano Cuesta @ 2021-08-02 12:16 UTC (permalink / raw)
To: Henning Schild; +Cc: isar-users
On 02/08/2021 12:45, Henning Schild wrote:
> Am Mon, 2 Aug 2021 11:44:39 +0200
> schrieb Silvano Cirujano Cuesta <silvano.cirujano-cuesta@siemens.com>:
>
>> On 02/08/2021 10:40, Henning Schild wrote:
>>> This patch allows more fine-grained control over how the resulting
>>> container will be tagged. Where the default name will be PN together
>>> with DISTRO and ARCH, and tag will be derived from PV and PR
>>>
>>> Signed-off-by: Henning Schild <henning.schild@siemens.com>
>>> ---
>>> RECIPE-API-CHANGELOG.md | 4 ++++
>>> meta/classes/container-img.bbclass | 4 +---
>>> meta/classes/image-container-extension.bbclass | 11 ++++++-----
>>> meta/classes/image-sdk-extension.bbclass | 2 +-
>>> 4 files changed, 12 insertions(+), 9 deletions(-)
>>>
>>> diff --git a/RECIPE-API-CHANGELOG.md b/RECIPE-API-CHANGELOG.md
>>> index 806c2914f13f..284583e28120 100644
>>> --- a/RECIPE-API-CHANGELOG.md
>>> +++ b/RECIPE-API-CHANGELOG.md
>>> @@ -292,3 +292,7 @@ Migrate your patches so they can be applied
>>> with "git am", or
>>> Kernel image name for arm64 platforms is vmlinux now. Image format
>>> was not changed (uncompressed executable) but now it is named
>>> correctly. +
>>> +### Change default "image_name:tag" when building container images
>>> +
>>> +The name used to be rather static and the tag was always "latest",
>>> now the values are derived from recipe variables PN, PV, PR. diff
>>> --git a/meta/classes/container-img.bbclass
>>> b/meta/classes/container-img.bbclass index
>>> 79ef3e8d756b..9928a58ef53d 100644 ---
>>> a/meta/classes/container-img.bbclass +++
>>> b/meta/classes/container-img.bbclass @@ -9,10 +9,8 @@
>>> do_container_image[stamp-extra-info] = "${DISTRO}-${MACHINE}"
>>> do_container_image[vardeps] += "CONTAINER_FORMATS"
>>> do_container_image(){
>>> - rootfs_id="${DISTRO}-${DISTRO_ARCH}"
>>> -
>>> bbdebug 1 "Generate container image in these formats:
>>> ${CONTAINER_FORMATS}"
>>> - containerize_rootfs "${IMAGE_ROOTFS}" "${rootfs_id}"
>>> "${CONTAINER_FORMATS}"
>>> + containerize_rootfs "${IMAGE_ROOTFS}" "${CONTAINER_FORMATS}"
>>> }
>>>
>>> addtask container_image before do_image after do_image_tools
>>> diff --git a/meta/classes/image-container-extension.bbclass
>>> b/meta/classes/image-container-extension.bbclass index
>>> 0e70ba9c1405..43b67f9d864d 100644 ---
>>> a/meta/classes/image-container-extension.bbclass +++
>>> b/meta/classes/image-container-extension.bbclass @@ -6,15 +6,16 @@
>>> # This class extends the image.bbclass for containerizing the root
>>> filesystem.
>>> CONTAINER_FORMATS ?= "docker-archive"
>>> +CONTAINER_IMAGE_NAME ?= "${PN}-${DISTRO}-${DISTRO_ARCH}"
>>> +CONTAINER_TAG ?= "${PV}-${PR}"
>>
>> These new variables aren't documented anywhere. But they should,
>> right?
>
> They could but probably do not need to. There are many things in Isar
> that are not or not fully documented. But yes ... the documentation
> probably still needs updating because you documented a lot.
>
>> Additionally I'd rather use CONTAINER_IMAGE_TAG (instead of
>> CONTAINER_TAG) for correctness and consistency.
>
> The strings are inspired by "docker help tag". Where the one is
> "TARGET_IMAGE" and the other is "TAG". But i will rename
> CONTAINER_IMAGE_NAME to CONTAINER_TARGET_IMAGE because i will have to
> touch those docs.
Docker was first there, but they weren't that good naming things ;-)
IMO all those parameters should have the prefix "CONTAINER_IMAGE_".
Silvano
>
> Henning
>
>>>
>>> containerize_rootfs() {
>>> local cmd="/bin/dash"
>>> local empty_tag="empty"
>>> - local tag="latest"
>>> + local tag="${CONTAINER_TAG}"
>>> local oci_img_dir="${WORKDIR}/oci-image"
>>> local rootfs="$1"
>>> - local rootfs_id="$2"
>>> - local container_formats="$3"
>>> + local container_formats="$2"
>>>
>>> # prepare OCI container image skeleton
>>> bbdebug 1 "prepare OCI container image skeleton"
>>> @@ -42,9 +43,9 @@ containerize_rootfs() {
>>> sudo chown --recursive $(id -u):$(id -g) "${oci_img_dir}"
>>>
>>> # convert the OCI container image to the desired format
>>> - image_name="isar-${rootfs_id}"
>>> + image_name="${CONTAINER_IMAGE_NAME}"
>>> for image_type in ${CONTAINER_FORMATS} ; do
>>> -
>>> image_archive="${DEPLOY_DIR_IMAGE}/${rootfs_id}-${image_type}.tar"
>>> +
>>> image_archive="${DEPLOY_DIR_IMAGE}/${image_name}-${tag}-${image_type}.tar"
>>> bbdebug 1 "Creating container image type: ${image_type}" case
>>> "${image_type}" in "docker-archive" | "oci-archive")
>>> diff --git a/meta/classes/image-sdk-extension.bbclass
>>> b/meta/classes/image-sdk-extension.bbclass index
>>> 426b92595554..fa15b588068c 100644 ---
>>> a/meta/classes/image-sdk-extension.bbclass +++
>>> b/meta/classes/image-sdk-extension.bbclass @@ -80,7 +80,7 @@
>>> do_populate_sdk() { # generate the SDK in all the desired container
>>> formats if [ -n "${sdk_container_formats}" ] ; then
>>> bbnote "Generating SDK container in
>>> ${sdk_container_formats} format"
>>> - containerize_rootfs "${SDKCHROOT_DIR}"
>>> "sdk-${DISTRO}-${DISTRO_ARCH}" "${sdk_container_formats}"
>>> + containerize_rootfs "${SDKCHROOT_DIR}"
>>> "${sdk_container_formats}" fi
>>> }
>>>
>>>
>
--
Silvano Cirujano Cuesta
--
Siemens AG, T RDA IOT SES-DE
Corporate Competence Center Embedded Linux
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 3/4] classes: allow more control over container image name and tag
2021-08-02 12:16 ` Silvano Cirujano Cuesta
@ 2021-08-02 12:54 ` Henning Schild
0 siblings, 0 replies; 9+ messages in thread
From: Henning Schild @ 2021-08-02 12:54 UTC (permalink / raw)
To: Silvano Cirujano Cuesta; +Cc: isar-users
Am Mon, 2 Aug 2021 14:16:56 +0200
schrieb Silvano Cirujano Cuesta <silvano.cirujano-cuesta@siemens.com>:
> On 02/08/2021 12:45, Henning Schild wrote:
> > Am Mon, 2 Aug 2021 11:44:39 +0200
> > schrieb Silvano Cirujano Cuesta
> > <silvano.cirujano-cuesta@siemens.com>:
> >> On 02/08/2021 10:40, Henning Schild wrote:
> >>> This patch allows more fine-grained control over how the resulting
> >>> container will be tagged. Where the default name will be PN
> >>> together with DISTRO and ARCH, and tag will be derived from PV
> >>> and PR
> >>>
> >>> Signed-off-by: Henning Schild <henning.schild@siemens.com>
> >>> ---
> >>> RECIPE-API-CHANGELOG.md | 4 ++++
> >>> meta/classes/container-img.bbclass | 4 +---
> >>> meta/classes/image-container-extension.bbclass | 11 ++++++-----
> >>> meta/classes/image-sdk-extension.bbclass | 2 +-
> >>> 4 files changed, 12 insertions(+), 9 deletions(-)
> >>>
> >>> diff --git a/RECIPE-API-CHANGELOG.md b/RECIPE-API-CHANGELOG.md
> >>> index 806c2914f13f..284583e28120 100644
> >>> --- a/RECIPE-API-CHANGELOG.md
> >>> +++ b/RECIPE-API-CHANGELOG.md
> >>> @@ -292,3 +292,7 @@ Migrate your patches so they can be applied
> >>> with "git am", or
> >>> Kernel image name for arm64 platforms is vmlinux now. Image
> >>> format was not changed (uncompressed executable) but now it is
> >>> named correctly. +
> >>> +### Change default "image_name:tag" when building container
> >>> images +
> >>> +The name used to be rather static and the tag was always
> >>> "latest", now the values are derived from recipe variables PN,
> >>> PV, PR. diff --git a/meta/classes/container-img.bbclass
> >>> b/meta/classes/container-img.bbclass index
> >>> 79ef3e8d756b..9928a58ef53d 100644 ---
> >>> a/meta/classes/container-img.bbclass +++
> >>> b/meta/classes/container-img.bbclass @@ -9,10 +9,8 @@
> >>> do_container_image[stamp-extra-info] = "${DISTRO}-${MACHINE}"
> >>> do_container_image[vardeps] += "CONTAINER_FORMATS"
> >>> do_container_image(){
> >>> - rootfs_id="${DISTRO}-${DISTRO_ARCH}"
> >>> -
> >>> bbdebug 1 "Generate container image in these formats:
> >>> ${CONTAINER_FORMATS}"
> >>> - containerize_rootfs "${IMAGE_ROOTFS}" "${rootfs_id}"
> >>> "${CONTAINER_FORMATS}"
> >>> + containerize_rootfs "${IMAGE_ROOTFS}" "${CONTAINER_FORMATS}"
> >>> }
> >>>
> >>> addtask container_image before do_image after do_image_tools
> >>> diff --git a/meta/classes/image-container-extension.bbclass
> >>> b/meta/classes/image-container-extension.bbclass index
> >>> 0e70ba9c1405..43b67f9d864d 100644 ---
> >>> a/meta/classes/image-container-extension.bbclass +++
> >>> b/meta/classes/image-container-extension.bbclass @@ -6,15 +6,16 @@
> >>> # This class extends the image.bbclass for containerizing the
> >>> root filesystem.
> >>> CONTAINER_FORMATS ?= "docker-archive"
> >>> +CONTAINER_IMAGE_NAME ?= "${PN}-${DISTRO}-${DISTRO_ARCH}"
> >>> +CONTAINER_TAG ?= "${PV}-${PR}"
> >>
> >> These new variables aren't documented anywhere. But they should,
> >> right?
> >
> > They could but probably do not need to. There are many things in
> > Isar that are not or not fully documented. But yes ... the
> > documentation probably still needs updating because you documented
> > a lot.
> >> Additionally I'd rather use CONTAINER_IMAGE_TAG (instead of
> >> CONTAINER_TAG) for correctness and consistency.
> >
> > The strings are inspired by "docker help tag". Where the one is
> > "TARGET_IMAGE" and the other is "TAG". But i will rename
> > CONTAINER_IMAGE_NAME to CONTAINER_TARGET_IMAGE because i will have
> > to touch those docs.
>
> Docker was first there, but they weren't that good naming things ;-)
>
> IMO all those parameters should have the prefix "CONTAINER_IMAGE_".
Good idea. But this would mean also touching CONTAINER_FORMATS for
consistency and having another interface break. But i will do that.
Henning
> Silvano
>
> >
> > Henning
> >
> >>>
> >>> containerize_rootfs() {
> >>> local cmd="/bin/dash"
> >>> local empty_tag="empty"
> >>> - local tag="latest"
> >>> + local tag="${CONTAINER_TAG}"
> >>> local oci_img_dir="${WORKDIR}/oci-image"
> >>> local rootfs="$1"
> >>> - local rootfs_id="$2"
> >>> - local container_formats="$3"
> >>> + local container_formats="$2"
> >>>
> >>> # prepare OCI container image skeleton
> >>> bbdebug 1 "prepare OCI container image skeleton"
> >>> @@ -42,9 +43,9 @@ containerize_rootfs() {
> >>> sudo chown --recursive $(id -u):$(id -g) "${oci_img_dir}"
> >>>
> >>> # convert the OCI container image to the desired format
> >>> - image_name="isar-${rootfs_id}"
> >>> + image_name="${CONTAINER_IMAGE_NAME}"
> >>> for image_type in ${CONTAINER_FORMATS} ; do
> >>> -
> >>> image_archive="${DEPLOY_DIR_IMAGE}/${rootfs_id}-${image_type}.tar"
> >>> +
> >>> image_archive="${DEPLOY_DIR_IMAGE}/${image_name}-${tag}-${image_type}.tar"
> >>> bbdebug 1 "Creating container image type: ${image_type}" case
> >>> "${image_type}" in "docker-archive" | "oci-archive")
> >>> diff --git a/meta/classes/image-sdk-extension.bbclass
> >>> b/meta/classes/image-sdk-extension.bbclass index
> >>> 426b92595554..fa15b588068c 100644 ---
> >>> a/meta/classes/image-sdk-extension.bbclass +++
> >>> b/meta/classes/image-sdk-extension.bbclass @@ -80,7 +80,7 @@
> >>> do_populate_sdk() { # generate the SDK in all the desired
> >>> container formats if [ -n "${sdk_container_formats}" ] ; then
> >>> bbnote "Generating SDK container in
> >>> ${sdk_container_formats} format"
> >>> - containerize_rootfs "${SDKCHROOT_DIR}"
> >>> "sdk-${DISTRO}-${DISTRO_ARCH}" "${sdk_container_formats}"
> >>> + containerize_rootfs "${SDKCHROOT_DIR}"
> >>> "${sdk_container_formats}" fi
> >>> }
> >>>
> >>>
> >
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2021-08-02 12:54 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-02 8:40 [PATCH v2 0/4] Allow better control over container tags Henning Schild
2021-08-02 8:40 ` [PATCH v2 1/4] classes: make sure container extension can run multiple times Henning Schild
2021-08-02 8:40 ` [PATCH v2 2/4] classes: simplify tag handling in container class Henning Schild
2021-08-02 8:40 ` [PATCH v2 3/4] classes: allow more control over container image name and tag Henning Schild
2021-08-02 9:44 ` Silvano Cirujano Cuesta
2021-08-02 10:45 ` Henning Schild
2021-08-02 12:16 ` Silvano Cirujano Cuesta
2021-08-02 12:54 ` Henning Schild
2021-08-02 8:40 ` [PATCH v2 4/4] classes: fix comment in container-img class Henning Schild
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox