aboutsummaryrefslogtreecommitdiffstats
path: root/classes/image-oci-umoci.inc
diff options
context:
space:
mode:
Diffstat (limited to 'classes/image-oci-umoci.inc')
-rw-r--r--classes/image-oci-umoci.inc60
1 files changed, 42 insertions, 18 deletions
diff --git a/classes/image-oci-umoci.inc b/classes/image-oci-umoci.inc
index 4fe96ea0..c77750fb 100644
--- a/classes/image-oci-umoci.inc
+++ b/classes/image-oci-umoci.inc
@@ -58,54 +58,78 @@ IMAGE_CMD:oci() {
bbdebug 1 "OCI: configuring image"
if [ -n "${OCI_IMAGE_LABELS}" ]; then
for l in ${OCI_IMAGE_LABELS}; do
- bbdebug 1 "OCI: umoci config --image $image_name --config.label $l"
- umoci config --image $image_name --config.label $l
+ bbdebug 1 "OCI: umoci config --image $image_name:${OCI_IMAGE_TAG} --config.label \"$l\""
+ umoci config --image $image_name:${OCI_IMAGE_TAG} --config.label "$l"
done
fi
if [ -n "${OCI_IMAGE_ENV_VARS}" ]; then
for l in ${OCI_IMAGE_ENV_VARS}; do
- bbdebug 1 "umoci config --image $image_name --config.env $l"
- umoci config --image $image_name --config.env $l
+ bbdebug 1 "umoci config --image $image_name:${OCI_IMAGE_TAG} --config.env \"$l\""
+ umoci config --image $image_name:${OCI_IMAGE_TAG} --config.env "$l"
done
fi
if [ -n "${OCI_IMAGE_PORTS}" ]; then
for l in ${OCI_IMAGE_PORTS}; do
- bbdebug 1 "umoci config --image $image_name --config.exposedports $l"
- umoci config --image $image_name --config.exposedports $l
+ bbdebug 1 "umoci config --image $image_name:${OCI_IMAGE_TAG} --config.exposedports $l"
+ umoci config --image $image_name:${OCI_IMAGE_TAG} --config.exposedports $l
done
fi
if [ -n "${OCI_IMAGE_RUNTIME_UID}" ]; then
- bbdebug 1 "umoci config --image $image_name --config.user ${OCI_IMAGE_RUNTIME_UID}"
- umoci config --image $image_name --config.user ${OCI_IMAGE_RUNTIME_UID}
+ bbdebug 1 "umoci config --image $image_name:${OCI_IMAGE_TAG} --config.user ${OCI_IMAGE_RUNTIME_UID}"
+ umoci config --image $image_name:${OCI_IMAGE_TAG} --config.user ${OCI_IMAGE_RUNTIME_UID}
fi
if [ -n "${OCI_IMAGE_WORKINGDIR}" ]; then
- bbdebug 1 "umoci config --image $image_name --config.workingdir ${OCI_IMAGE_WORKINGDIR}"
- umoci config --image $image_name --config.workingdir ${OCI_IMAGE_WORKINGDIR}
+ bbdebug 1 "umoci config --image $image_name:${OCI_IMAGE_TAG} --config.workingdir ${OCI_IMAGE_WORKINGDIR}"
+ umoci config --image $image_name:${OCI_IMAGE_TAG} --config.workingdir ${OCI_IMAGE_WORKINGDIR}
+ fi
+ if [ -n "${OCI_IMAGE_STOPSIGNAL}" ]; then
+ bbdebug 1 "umoci config --image $image_name:${OCI_IMAGE_TAG} --config.stopsignal ${OCI_IMAGE_STOPSIGNAL}"
+ umoci config --image $image_name:${OCI_IMAGE_TAG} --config.stopsignal ${OCI_IMAGE_STOPSIGNAL}
fi
if [ -n "${OCI_IMAGE_OS}" ]; then
- bbdebug 1 "umoci config --image $image_name --os ${OCI_IMAGE_OS}"
- umoci config --image $image_name --os ${OCI_IMAGE_OS}
+ bbdebug 1 "umoci config --image $image_name:${OCI_IMAGE_TAG} --os ${OCI_IMAGE_OS}"
+ umoci config --image $image_name:${OCI_IMAGE_TAG} --os ${OCI_IMAGE_OS}
fi
- bbdebug 1 "umoci config --image $image_name --architecture ${OCI_IMAGE_ARCH}"
- umoci config --image $image_name --architecture ${OCI_IMAGE_ARCH}
+ bbdebug 1 "umoci config --image $image_name:${OCI_IMAGE_TAG} --architecture ${OCI_IMAGE_ARCH}"
+ umoci config --image $image_name:${OCI_IMAGE_TAG} --architecture ${OCI_IMAGE_ARCH}
# NOTE: umoci doesn't currently expose setting the architecture variant,
# so if you need it use sloci instead
if [ -n "${OCI_IMAGE_SUBARCH}" ]; then
bbnote "OCI: image subarch is set to: ${OCI_IMAGE_SUBARCH}, but umoci does not"
bbnote " expose variants. use sloci instead if this is important"
fi
- umoci config --image $image_name --config.entrypoint ${OCI_IMAGE_ENTRYPOINT}
+ umoci config --image $image_name:${OCI_IMAGE_TAG} \
+ ${@" ".join("--config.entrypoint %s" % s for s in d.getVar("OCI_IMAGE_ENTRYPOINT").split())}
if [ -n "${OCI_IMAGE_ENTRYPOINT_ARGS}" ]; then
- umoci config --image $image_name --config.cmd "${OCI_IMAGE_ENTRYPOINT_ARGS}"
+ umoci config --image $image_name:${OCI_IMAGE_TAG} ${@" ".join("--config.cmd %s" % s for s in d.getVar("OCI_IMAGE_ENTRYPOINT_ARGS").split())}
fi
- umoci config --image $image_name --author ${OCI_IMAGE_AUTHOR_EMAIL}
+ umoci config --image $image_name:${OCI_IMAGE_TAG} --author ${OCI_IMAGE_AUTHOR_EMAIL}
+
+ # OCI_IMAGE_TAG may contain ":", but these are not allowed in OCI file
+ # names so replace them
+ image_tag="${@d.getVar("OCI_IMAGE_TAG").replace(":", "_")}"
# make a tar version of the image direcotry
+ # 1) image_name.tar: compatible with oci tar format, blobs and rootfs
+ # are at the top level. Can load directly from something like podman
+ # 2) image_name-dir.tar: original format from meta-virt, is just a tar'd
+ # up oci image directory (compatible with skopeo :dir format)
if [ -n "${OCI_IMAGE_TAR_OUTPUT}" ]; then
- tar -cf "$image_name.tar" "$image_name"
+ (
+ cd "$image_name"
+ tar -cf ../"$image_name.tar" "."
+ )
+ tar -cf "$image_name-dir.tar" "$image_name"
+
+ # create a convenience symlink
+ ln -sf "$image_name.tar" "${IMAGE_BASENAME}-$image_tag-oci.tar"
+ ln -sf "$image_name-dir.tar" "${IMAGE_BASENAME}-$image_tag-oci-dir.tar"
fi
# We could make this optional, since the bundle is directly runnable via runc
rm -rf $image_bundle_name
+
+ # This is the OCI image directory, which is technically the "image" as specified
+ ln -sf $image_name ${IMAGE_BASENAME}-$image_tag-oci
}