<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/meta-virtualization.git/recipes-containers/vcontainer/vcontainer-tarball.bb, 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-06-13T03:35:33+00:00</updated>
<entry>
<title>vcontainer-tarball: unset OECORE_NATIVE_SYSROOT in CI</title>
<updated>2026-06-13T03:35:33+00:00</updated>
<author>
<name>Tim Orling</name>
<email>ticotimo@gmail.com</email>
</author>
<published>2026-06-12T20:11:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=5ebb6ee6c1db9d77e029a13f84c75216acdbeee6'/>
<id>urn:sha1:5ebb6ee6c1db9d77e029a13f84c75216acdbeee6</id>
<content type='text'>
Add 'unset OECORE_NATIVE_SYSROOT' to the end of environment-setup-ci
for the same reasons it needed to be in environment-setup-none.

This fixes issues seen on AutoBuilder workers which use buildtools-tarball
and also usage of oe-run-native (e.g. for skopeo-native or cosign-native).

Signed-off-by: Tim Orling &lt;tim.orling@konsulko.com&gt;
Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>vcontainer-tarball: track rootfs hash via explicit mcdepends</title>
<updated>2026-06-12T13:35:03+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-06-12T03:12:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=6fc1aa83552713dc03933115890badebb297e4ae'/>
<id>urn:sha1:6fc1aa83552713dc03933115890badebb297e4ae</id>
<content type='text'>
vcontainer-tarball bundles vdkr and vpdmn rootfs images alongside
the helper scripts into a single-shot SDK tarball. Those rootfs
images live in the vruntime-x86-64 / vruntime-aarch64 multiconfigs
and are pulled into the tarball at do_populate_sdk time from
tmp-&lt;mc&gt;/deploy/images/&lt;machine&gt;/&lt;tool&gt;/&lt;arch&gt;/rootfs.img. For
sstate to behave correctly, the tarball task's hash must reflect
the actual rootfs content.

In practice it didn't. A rootfs content change — adding netavark
to the image, switching the runtime from iptables to nftables —
left consumers of the SDK with a stale runtime even though their
config asked for the new behaviour. Cleansstate of vcontainer-tarball
alone didn't help: the path through the cached intermediates was
serving the old image back.

The recipe was relying on the chain

  rootfs-image:do_build
    -&gt; initramfs-create:do_compile
    -&gt; initramfs-create:do_deploy
    -&gt; mcdepends -&gt; tarball:do_populate_sdk

to propagate the rootfs hash. The break is at do_deploy: it reads
its rootfs.img out of DEPLOY_DIR, which is a known sstate sharp edge.
do_deploy can sstate-hit on its own hash while the file it deploys
came from a stale prior run, after which the downstream tarball task
hash is computed against the stale content and also hits cache.

Add a direct mcdepends from do_populate_sdk to
{vdkr,vpdmn}-rootfs-image:do_image_complete for each enabled vruntime
multiconfig. The rootfs-image task's hash now feeds the tarball hash
directly, independent of the intermediate do_deploy step. If a rootfs
content change moves the rootfs-image hash, the tarball is forced to
rebuild. When the chain was already healthy this dep adds nothing
new and costs nothing.

Verified end-to-end:

  bitbake vcontainer-tarball -c cleansstate
  bitbake vcontainer-tarball
  sha256sum tmp/deploy/sdk/vcontainer-standalone.sh
  # -&gt; f8e75f947a506202d88a6eb196a3616f5088b11247207beab589e91fb6f2bba7

  echo 'IMAGE_INSTALL:append:pn-vpdmn-rootfs-image = " bash"' \
      &gt;&gt; conf/local.conf
  bitbake vcontainer-tarball
  sha256sum tmp/deploy/sdk/vcontainer-standalone.sh
  # -&gt; 1e89554500b2a4aaabc149a01f85fad2e78ba35796977469e7fcb1ecf15a856f

Hashes differ — the rootfs content change correctly invalidated the
tarball's sstate hash and produced a fresh build.

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>vcontainer-tarball: add CI-safe environment script for autobuilder</title>
<updated>2026-04-28T19:37:47+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-04-28T19:37:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=751b99dc32d7d439031df42730a8ed65e82b3e95'/>
<id>urn:sha1:751b99dc32d7d439031df42730a8ed65e82b3e95</id>
<content type='text'>
The existing environment-setup-* script uses BASH_SOURCE to derive
VCONTAINER_DIR, which is empty when parsed by yocto-autobuilder-helper's
enable_tools_tarball() since it doesn't evaluate shell expressions.

Generate a separate environment-setup-ci with flat export lines using
baked-in absolute paths from ${SDKPATH}/${SDKPATHNATIVE}. The AB parser
picks these up directly. SDK relocation rewrites the paths at install
time. The interactive bash script is unchanged.

Co-Authored-By: Claude Opus 4.6 (1M context) &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>vcontainer-tarball: fix PACKAGE_ARCH for SPDX do_create_spdx</title>
<updated>2026-04-12T13:53:29+00:00</updated>
<author>
<name>Tim Orling</name>
<email>tim.orling@konsulko.com</email>
</author>
<published>2026-04-07T20:42:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=168afc8354c12bce93f4f916e87580e01ea83f4d'/>
<id>urn:sha1:168afc8354c12bce93f4f916e87580e01ea83f4d</id>
<content type='text'>
PACKAGE_ARCH must be "${SDK_ARCH}-${SDKPKGSUFFIX}" (e.g. x86_64-nativesdk)
to match the pattern explicitly listed in SSTATE_ARCHS in
meta/classes-global/sstate.bbclass.

do_create_recipe_spdx writes the static SPDX document under
  DEPLOY_DIR_SPDX/${SSTATE_PKGARCH}/static/

where SSTATE_PKGARCH = PACKAGE_ARCH.  do_create_spdx then calls
find_jsonld() which searches only the arch directories listed in
SPDX_MULTILIB_SSTATE_ARCHS (derived from SSTATE_ARCHS via
all_multilib_tune_values).

The previous value "${SDK_ARCH}_${SDK_OS}" evaluates to "x86_64_linux"
which is NOT listed in SSTATE_ARCHS, so the static document was written
to a directory never searched, causing the fatal:

  ERROR: Could not find a static SPDX document named static-vcontainer-tarball

The correct value "${SDK_ARCH}-${SDKPKGSUFFIX}" evaluates to
"x86_64-nativesdk" which IS listed in SSTATE_ARCHS as the literal
"${SDK_ARCH}-${SDKPKGSUFFIX}" entry, and matches the pattern used by
buildtools-tarball.bb (the reference for host-only SDK tarballs with
TARGET_ARCH = "none" / TARGET_OS = "none").

Signed-off-by: Tim Orling &lt;tim.orling@konsulko.com&gt;
</content>
</entry>
<entry>
<title>vcontainer-tarball: set S to UNPACKDIR for do_qa_unpack check</title>
<updated>2026-03-16T21:04:42+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-03-16T20:51:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=f505ae07df8d8350b715fe20bdacfe3bcf1bf8c6'/>
<id>urn:sha1:f505ae07df8d8350b715fe20bdacfe3bcf1bf8c6</id>
<content type='text'>
The recipe only has file:// SRC_URI entries which unpack directly into
UNPACKDIR, not a ${BP} subdirectory. The new do_qa_unpack QA check in
insane.bbclass warns when S doesn't exist after unpack. Set S explicitly
to satisfy the check.

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>vcontainer: add QEMU hypervisor backend and register in recipes</title>
<updated>2026-02-26T01:05:01+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-02-19T19:07:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=5c84f660f7f717765b5662fd69c52cacf0ab64d9'/>
<id>urn:sha1:5c84f660f7f717765b5662fd69c52cacf0ab64d9</id>
<content type='text'>
Add vrunner-backend-qemu.sh implementing the hypervisor interface for
QEMU (arch setup, KVM detection, disk/network/9p options, VM lifecycle,
QMP control). Register backend scripts in vcontainer-native and
vcontainer-tarball recipes so they are available in both build-time
and standalone tarball contexts.

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>vcontainer-tarball: remove parse-time banner</title>
<updated>2026-02-11T20:49:49+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-02-11T20:34:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=30c5d74db7489b5938453bfcd3ef9151704e2bd0'/>
<id>urn:sha1:30c5d74db7489b5938453bfcd3ef9151704e2bd0</id>
<content type='text'>
The anonymous python function prints a banner unconditionally at
parse time, which means it appears when building any recipe (e.g.
xen-image-minimal), not just vcontainer-tarball. Remove the
parse-time banner since the post-build banner in
do_populate_sdk:append() already provides the same information
and only fires when actually building the tarball.

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>vcontainer: add secure registry support with virtio-9p CA transport</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-09T03:17:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=7297ba3aeba2cef546c9245b2b6ae1139568cf40'/>
<id>urn:sha1:7297ba3aeba2cef546c9245b2b6ae1139568cf40</id>
<content type='text'>
Enable vdkr/vcontainer to pull from TLS-secured registries by
transporting the CA certificate via virtio-9p shared folder.

vcontainer-common.sh: Add --secure-registry, --ca-cert, --registry-user,
--registry-password CLI options. Auto-detect bundled CA cert at
registry/ca.crt in the tarball and enable secure mode automatically.

vrunner.sh: Copy CA cert to the virtio-9p shared folder for both
daemon and non-daemon modes. Fix daemon mode missing _9p=1 kernel
cmdline parameter which prevented the init script from mounting the
shared folder.

vdkr-init.sh: Read CA cert from /mnt/share/ca.crt (virtio-9p) instead
of base64-decoding from kernel cmdline (which caused truncation for
large certificates). Install cert to /etc/docker/certs.d/{host}/ca.crt
for Docker TLS verification. Support optional credential passing for
authenticated registries.

vcontainer-tarball.bb: Add script files to SRC_URI for proper file
tracking and rebuild triggers.

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>vcontainer: enable incremental builds by default</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-05T20:44:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=bcddeedc6f657841bf0cbb9cf06e9de1633bbe6d'/>
<id>urn:sha1:bcddeedc6f657841bf0cbb9cf06e9de1633bbe6d</id>
<content type='text'>
Previously, vcontainer recipes had [nostamp] flags that forced all
tasks to rebuild on every bitbake invocation, even when nothing changed.
This was added as a workaround for dependency tracking issues but caused
slow rebuild times.

Changes:
- Make [nostamp] conditional on VCONTAINER_FORCE_BUILD variable
- Default to normal stamp-based caching for faster incremental builds
- file-checksums on do_rootfs still tracks init script changes
- Add VCONTAINER_FORCE_BUILD status to the tarball build banner

To enable the old always-rebuild behavior (for debugging dependency
issues), set in local.conf:
  VCONTAINER_FORCE_BUILD = "1"

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