diff options
Diffstat (limited to 'classes/image-oci-umoci.inc')
-rw-r--r-- | classes/image-oci-umoci.inc | 60 |
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 } |