<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/meta-virtualization.git/classes/container-bundle.bbclass, branch container-cross-install</title>
<subtitle>Mirror of git.yoctoproject.org/meta-virtualization</subtitle>
<id>https://git.enea.com/cgit/linux/meta-virtualization.git/atom?h=container-cross-install</id>
<link rel='self' href='https://git.enea.com/cgit/linux/meta-virtualization.git/atom?h=container-cross-install'/>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/'/>
<updated>2026-02-06T03:54:16+00:00</updated>
<entry>
<title>container-cross-install: add CONTAINER_SERVICE_FILE support</title>
<updated>2026-02-06T03:54:16+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=8c31b451c6f5a9d0bb526ee77f467e5b48846bb4'/>
<id>urn:sha1:8c31b451c6f5a9d0bb526ee77f467e5b48846bb4</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-01-21T23:00:26+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=2b1fa9e5a62f27186823539e748cc48718cd79e9'/>
<id>urn:sha1:2b1fa9e5a62f27186823539e748cc48718cd79e9</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-01-21T23:00:26+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=66fa069e4229b6202af24fb91cc81c0b27ecdfc4'/>
<id>urn:sha1:66fa069e4229b6202af24fb91cc81c0b27ecdfc4</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-01-21T23:00:26+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=33cbcc8310b846f964f7aa1829526a59c138e516'/>
<id>urn:sha1:33cbcc8310b846f964f7aa1829526a59c138e516</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-01-21T23:00:26+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=92efc22c26b15380350bce7d968740142ae948eb'/>
<id>urn:sha1:92efc22c26b15380350bce7d968740142ae948eb</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>
