<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/meta-virtualization.git/classes/container-bundle.bbclass, branch master-next</title>
<subtitle>Mirror of git.yoctoproject.org/meta-virtualization</subtitle>
<id>https://git.enea.com/cgit/linux/meta-virtualization.git/atom?h=master-next</id>
<link rel='self' href='https://git.enea.com/cgit/linux/meta-virtualization.git/atom?h=master-next'/>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/'/>
<updated>2026-03-12T19:59:59+00:00</updated>
<entry>
<title>container-bundle: add explicit do_fetch dependency on skopeo-native</title>
<updated>2026-03-12T19:59:59+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-03-12T19:59:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=e390223891b11c13c005a5183cf3bbb6d105d6c9'/>
<id>urn:sha1:e390223891b11c13c005a5183cf3bbb6d105d6c9</id>
<content type='text'>
do_fetch_containers runs as a postfunc of do_fetch and needs skopeo
from the native sysroot. However, DEPENDS only gates
do_prepare_recipe_sysroot which runs after do_fetch, so with a clean
tmp/ directory skopeo-native may not be built when do_fetch runs.

Add an explicit do_fetch[depends] on skopeo-native:do_populate_sysroot
when remote containers are configured so the ordering is correct.

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>container tasks: move network access out of build chain</title>
<updated>2026-02-10T21:04:20+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-02-10T19:10:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=5ca92e99dc0706c1dcda0edd29aec46a3ccdd851'/>
<id>urn:sha1:5ca92e99dc0706c1dcda0edd29aec46a3ccdd851</id>
<content type='text'>
yocto-check-layer reports an error for any task between do_fetch and
do_build that has network enabled. Two changes fix this:

container-bundle.bbclass: Move do_fetch_containers from a standalone
task into a do_fetch postfunc. When remote containers are configured,
the anonymous function adds extend_recipe_sysroot as a do_fetch
prefunc (so skopeo-native is available) and do_fetch_containers as a
postfunc. Network access during do_fetch is permitted by the QA check.

container-registry-index: Remove do_container_registry_index from the
build dependency chain (drop "before do_build"). Registry push is a
deployment action requiring explicit invocation:
  bitbake container-registry-index -c container_registry_index
The default do_build task now prints usage instructions.

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>vcontainer: fix yocto-check-layer mcdepends parse error</title>
<updated>2026-02-09T20:03:27+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-02-09T19:58:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=d79d3d2a449054b700f66fe04532f11c1c72c65a'/>
<id>urn:sha1:d79d3d2a449054b700f66fe04532f11c1c72c65a</id>
<content type='text'>
Fix yocto-check-layer failure:

  ERROR: Multiconfig dependency mc::vruntime-x86-64:vpdmn-initramfs-create:do_deploy
  depends on nonexistent multiconfig configuration named configuration vruntime-x86-64

Several recipes and classes declared static mcdepends referencing
vruntime-aarch64 and vruntime-x86-64 multiconfigs. When parsed without
BBMULTICONFIG set (e.g. yocto-check-layer), BitBake validates these and
fails because the referenced multiconfigs don't exist.

Move mcdepends into anonymous python functions and only set them when
the target multiconfig exists in BBMULTICONFIG, following the pattern
established in meta/classes-recipe/kernel-fit-image.bbclass.

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>container-cross-install: add CONTAINER_SERVICE_FILE support</title>
<updated>2026-02-09T03:34:12+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-02-06T03:54:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=cd5081a5e9ff1c6f5eb74ab90326d602142248f9'/>
<id>urn:sha1:cd5081a5e9ff1c6f5eb74ab90326d602142248f9</id>
<content type='text'>
Add support for custom systemd service files (Docker) or Quadlet
container files (Podman) instead of auto-generated ones for container
autostart.

For containers requiring specific startup configuration (ports, volumes,
capabilities, dependencies), users can now provide custom service files
using the CONTAINER_SERVICE_FILE varflag:

  CONTAINER_SERVICE_FILE[container-name] = "${UNPACKDIR}/myservice.service"

For BUNDLED_CONTAINERS in image recipes:
  SRC_URI += "file://myapp.service"
  BUNDLED_CONTAINERS = "myapp-container:docker:autostart"
  CONTAINER_SERVICE_FILE[myapp-container] = "${UNPACKDIR}/myapp.service"

For container-bundle packages:
  SRC_URI = "file://myapp.service"
  CONTAINER_BUNDLES = "myapp-container:autostart"
  CONTAINER_SERVICE_FILE[myapp-container] = "${UNPACKDIR}/myapp.service"

Implementation:
- container-cross-install.bbclass: Add get_container_service_file_map()
  to build varflag map, install_custom_service() for BUNDLED_CONTAINERS,
  and install_custom_service_from_bundle() for bundle packages
- container-bundle.bbclass: Install custom service files to
  ${datadir}/container-bundles/${runtime}/services/

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>container-bundle: add CONTAINER_BUNDLE_DEPLOY for base layer use</title>
<updated>2026-02-09T03:32:52+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-01-14T04:46:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=9a010bea48a75b17ae64cb534de913e7cdd7ac99'/>
<id>urn:sha1:9a010bea48a75b17ae64cb534de913e7cdd7ac99</id>
<content type='text'>
Add CONTAINER_BUNDLE_DEPLOY variable to enable dual-use of container-bundle:

1. Target packages (existing): Creates installable packages for target
   container storage (Docker/Podman)

2. Base layer source (new): When CONTAINER_BUNDLE_DEPLOY = "1", also
   deploys the fetched OCI image to DEPLOY_DIR_IMAGE for use as a base
   layer via OCI_BASE_IMAGE

This enables fetching external images (docker.io, quay.io) and using them
as base layers for Yocto-built container images.

Example usage:
  # recipes-containers/oci-base-images/alpine-oci-base_3.19.bb
  inherit container-bundle
  CONTAINER_BUNDLES = "docker.io/library/alpine:3.19"
  CONTAINER_DIGESTS[docker.io_library_alpine_3.19] = "sha256:..."
  CONTAINER_BUNDLE_DEPLOY = "1"

  # Then in your app container recipe:
  OCI_BASE_IMAGE = "alpine-oci-base"
  IMAGE_INSTALL = "myapp"

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>docs: fix dead references to vdkr-native and obsolete test classes</title>
<updated>2026-02-09T03:32:52+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-01-05T18:05:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=7584611eec5562cfc3a69af7bb8e753d93579ee5'/>
<id>urn:sha1:7584611eec5562cfc3a69af7bb8e753d93579ee5</id>
<content type='text'>
Update references to reflect the current architecture:
- Change vdkr-native/vpdmn-native to vcontainer-native in comments
- Remove TestContainerCrossTools and TestContainerCrossInitramfs from README
- Fix build command: vdkr-native → vcontainer-tarball

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>classes: factor out shared functions to container-common.bbclass</title>
<updated>2026-02-09T03:32:52+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-01-05T15:40:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=f93abf869ad49e80889487de168e101cfee8a35b'/>
<id>urn:sha1:f93abf869ad49e80889487de168e101cfee8a35b</id>
<content type='text'>
Create container-common.bbclass with shared Python functions used by both
container-bundle.bbclass and container-cross-install.bbclass:

- get_vruntime_multiconfig(d): Maps TARGET_ARCH to multiconfig name
- get_vruntime_machine(d): Maps TARGET_ARCH to MACHINE for deploy path
- get_blob_arch(d): Maps TARGET_ARCH to blob directory name

This removes ~55 lines of duplicated code and ensures consistency between
the two bbclass files.

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>container-bundle: add package-based container bundling support</title>
<updated>2026-02-09T03:32:52+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-01-01T17:14:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=79d03d5350c446223c847135c7115a656adc01d9'/>
<id>urn:sha1:79d03d5350c446223c847135c7115a656adc01d9</id>
<content type='text'>
This class creates installable packages that bundle pre-processed
container images. When installed via IMAGE_INSTALL, containers are
automatically merged into the target image's container storage.

Component relationships for bundling a local container:

  1. Application Recipe (builds the software)
     recipes-demo/myapp/myapp_1.0.bb
     - Compiles application binaries
     - Creates installable package (myapp)

  2. Container Image Recipe (creates OCI image containing the app)
     recipes-demo/images/myapp-container.bb
     - inherit image image-oci
     - IMAGE_INSTALL = "myapp"
     - Produces: ${DEPLOY_DIR_IMAGE}/myapp-container-latest-oci/

  3. Bundle Recipe (packages container images for deployment)
     recipes-demo/bundles/my-bundle_1.0.bb
     - inherit container-bundle
     - CONTAINER_BUNDLES = "myapp-container:autostart"
     - Creates installable package with OCI data

Flow: application recipe -&gt; container image recipe -&gt; bundle recipe
      -&gt; IMAGE_INSTALL in host image -&gt; container deployed on target

Usage:
    inherit container-bundle
    CONTAINER_BUNDLES = "myapp-container:autostart redis-container"

CONTAINER_BUNDLES format: source[:autostart-policy]
  - source: Container IMAGE recipe name or remote registry URL
  - autostart-policy: Optional (autostart, always, unless-stopped, on-failure)

Features:
- Auto-generates dependencies on container image recipes (do_image_complete)
- Supports remote containers via skopeo (requires CONTAINER_DIGESTS)
- Runtime auto-detected from CONTAINER_PROFILE (docker/podman)
- Produces OCI directories and metadata for container-cross-install

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
</feed>
