diff options
| -rw-r--r-- | classes/image-oci-sloci-image.inc | 17 | ||||
| -rw-r--r-- | classes/image-oci-umoci.inc | 13 |
2 files changed, 28 insertions, 2 deletions
diff --git a/classes/image-oci-sloci-image.inc b/classes/image-oci-sloci-image.inc index 379f6fe0..9248489f 100644 --- a/classes/image-oci-sloci-image.inc +++ b/classes/image-oci-sloci-image.inc | |||
| @@ -65,10 +65,25 @@ IMAGE_CMD:oci() { | |||
| 65 | ${oci_image_port_options} \ | 65 | ${oci_image_port_options} \ |
| 66 | ${IMAGE_ROOTFS} ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}-oci:${OCI_IMAGE_TAG} | 66 | ${IMAGE_ROOTFS} ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}-oci:${OCI_IMAGE_TAG} |
| 67 | 67 | ||
| 68 | if [ -n "${OCI_IMAGE_TAR_OUTPUT}" ]; then | ||
| 69 | # if tar is specified, sloci-image is removing the directory that we need for a secondary | ||
| 70 | # tar format, so we need to restore it. | ||
| 71 | tar xf ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}-oci-${OCI_IMAGE_TAG}-${OCI_IMAGE_ARCH}-linux.oci-image.tar | ||
| 72 | fi | ||
| 73 | |||
| 68 | # create a convenience symlink | 74 | # create a convenience symlink |
| 69 | ln -sf ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}-oci ${IMAGE_BASENAME}-${OCI_IMAGE_TAG}-oci | 75 | ln -sf ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}-oci ${IMAGE_BASENAME}-${OCI_IMAGE_TAG}-oci |
| 70 | 76 | ||
| 71 | if [ -n "${OCI_IMAGE_TAR_OUTPUT}" ]; then | 77 | if [ -n "${OCI_IMAGE_TAR_OUTPUT}" ]; then |
| 72 | ln -sf ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}-oci-${OCI_IMAGE_TAG}-${OCI_IMAGE_ARCH}-linux.oci-image.tar ${IMAGE_BASENAME}-${OCI_IMAGE_TAG}-oci.tar | 78 | # move the sloci output to a naming convention that matches what we do with umoci, thie |
| 79 | # default creates a subdirectory, so it get the "-dir" in the name | ||
| 80 | mv ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}-oci-${OCI_IMAGE_TAG}-${OCI_IMAGE_ARCH}-linux.oci-image.tar ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}-oci-${OCI_IMAGE_TAG}-${OCI_IMAGE_ARCH}-linux.oci-dir.tar | ||
| 81 | ln -sf ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}-oci-${OCI_IMAGE_TAG}-${OCI_IMAGE_ARCH}-linux.oci-dir.tar ${IMAGE_BASENAME}-${OCI_IMAGE_TAG}-oci-dir.tar | ||
| 82 | |||
| 83 | ( | ||
| 84 | cd "${IMAGE_NAME}${IMAGE_NAME_SUFFIX}-oci" | ||
| 85 | tar -cf ../"${IMAGE_NAME}${IMAGE_NAME_SUFFIX}-oci-${OCI_IMAGE_TAG}-${OCI_IMAGE_ARCH}-linux.oci-image.tar" "." | ||
| 86 | ) | ||
| 87 | ln -sf "${IMAGE_NAME}${IMAGE_NAME_SUFFIX}-oci-${OCI_IMAGE_TAG}-${OCI_IMAGE_ARCH}-linux.oci-image.tar" ${IMAGE_BASENAME}-${OCI_IMAGE_TAG}-oci.tar | ||
| 73 | fi | 88 | fi |
| 74 | } | 89 | } |
diff --git a/classes/image-oci-umoci.inc b/classes/image-oci-umoci.inc index 38917d4f..58e46681 100644 --- a/classes/image-oci-umoci.inc +++ b/classes/image-oci-umoci.inc | |||
| @@ -106,14 +106,25 @@ IMAGE_CMD:oci() { | |||
| 106 | umoci config --image $image_name:${OCI_IMAGE_TAG} --author ${OCI_IMAGE_AUTHOR_EMAIL} | 106 | umoci config --image $image_name:${OCI_IMAGE_TAG} --author ${OCI_IMAGE_AUTHOR_EMAIL} |
| 107 | 107 | ||
| 108 | # make a tar version of the image direcotry | 108 | # make a tar version of the image direcotry |
| 109 | # 1) image_name.tar: compatible with oci tar format, blobs and rootfs | ||
| 110 | # are at the top level. Can load directly from something like podman | ||
| 111 | # 2) image_name-dir.tar: original format from meta-virt, is just a tar'd | ||
| 112 | # up oci image directory (compatible with skopeo :dir format) | ||
| 109 | if [ -n "${OCI_IMAGE_TAR_OUTPUT}" ]; then | 113 | if [ -n "${OCI_IMAGE_TAR_OUTPUT}" ]; then |
| 110 | tar -cf "$image_name.tar" "$image_name" | 114 | ( |
| 115 | cd "$image_name" | ||
| 116 | tar -cf ../"$image_name.tar" "." | ||
| 117 | ) | ||
| 118 | tar -cf "$image_name-dir.tar" "$image_name" | ||
| 119 | |||
| 111 | # create a convenience symlink | 120 | # create a convenience symlink |
| 112 | ln -sf "$image_name.tar" "${IMAGE_BASENAME}-${OCI_IMAGE_TAG}-oci.tar" | 121 | ln -sf "$image_name.tar" "${IMAGE_BASENAME}-${OCI_IMAGE_TAG}-oci.tar" |
| 122 | ln -sf "$image_name-dir.tar" "${IMAGE_BASENAME}-${OCI_IMAGE_TAG}-oci-dir.tar" | ||
| 113 | fi | 123 | fi |
| 114 | 124 | ||
| 115 | # We could make this optional, since the bundle is directly runnable via runc | 125 | # We could make this optional, since the bundle is directly runnable via runc |
| 116 | rm -rf $image_bundle_name | 126 | rm -rf $image_bundle_name |
| 117 | 127 | ||
| 128 | # This is the OCI image directory, which is technically the "image" as specified | ||
| 118 | ln -sf $image_name ${IMAGE_BASENAME}-${OCI_IMAGE_TAG}-oci | 129 | ln -sf $image_name ${IMAGE_BASENAME}-${OCI_IMAGE_TAG}-oci |
| 119 | } | 130 | } |
