From e83974e2f9f5b7380e78f417b1ef5e0d919d724c Mon Sep 17 00:00:00 2001 From: Sergio Prado Date: Fri, 27 Aug 2021 15:54:28 -0500 Subject: [PATCH] package/sloci-image: new host package sloci-image is a simple CLI tool for packing rootfs into a single-layer OCI image. Signed-off-by: Sergio Prado Signed-off-by: Matthew Weber [Arnout: correctly set PREFIX, add Matt to DEVELOPERS, add additional patch] Signed-off-by: Arnout Vandecappelle (Essensium/Mind) --- DEVELOPERS | 2 + package/Config.in.host | 1 + ...-from-the-contents-of-working-folder.patch | 37 ++++++++++++++++++ ...002-oci_arch-fix-arch-arm64-argument.patch | 39 +++++++++++++++++++ package/sloci-image/Config.in.host | 7 ++++ package/sloci-image/sloci-image.hash | 5 +++ package/sloci-image/sloci-image.mk | 19 +++++++++ 7 files changed, 110 insertions(+) create mode 100644 package/sloci-image/0001-create-OCI-tar-from-the-contents-of-working-folder.patch create mode 100644 package/sloci-image/0002-oci_arch-fix-arch-arm64-argument.patch create mode 100644 package/sloci-image/Config.in.host create mode 100644 package/sloci-image/sloci-image.hash create mode 100644 package/sloci-image/sloci-image.mk diff --git a/DEVELOPERS b/DEVELOPERS index 9498d9ce36..8473f51726 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -1835,6 +1835,7 @@ F: package/raptor/ F: package/rng-tools/ F: package/rsyslog/ F: package/setools/ +F: package/sloci-image/ F: package/smcroute/ F: package/tclap/ F: package/tini/ @@ -2435,6 +2436,7 @@ F: package/curlpp/ F: package/daq/ F: package/libgdiplus/ F: package/pimd/ +F: package/sloci-image/ F: package/snort/ F: package/stella/ F: package/tio/ diff --git a/package/Config.in.host b/package/Config.in.host index 551352482e..a0ec9bc1ab 100644 --- a/package/Config.in.host +++ b/package/Config.in.host @@ -79,6 +79,7 @@ menu "Host utilities" source "package/s6-rc/Config.in.host" source "package/sam-ba/Config.in.host" source "package/sdbusplus/Config.in.host" + source "package/sloci-image/Config.in.host" source "package/squashfs/Config.in.host" source "package/sunxi-tools/Config.in.host" source "package/swig/Config.in.host" diff --git a/package/sloci-image/0001-create-OCI-tar-from-the-contents-of-working-folder.patch b/package/sloci-image/0001-create-OCI-tar-from-the-contents-of-working-folder.patch new file mode 100644 index 0000000000..3d048e3843 --- /dev/null +++ b/package/sloci-image/0001-create-OCI-tar-from-the-contents-of-working-folder.patch @@ -0,0 +1,37 @@ +From 66c73c2ba3057634f19f37d3cfbbe752638c9f9f Mon Sep 17 00:00:00 2001 +From: Matthew Weber +Date: Fri, 27 Aug 2021 12:24:19 -0500 +Subject: [PATCH] create OCI tar from the contents of working folder + +When testing with containerd, it was found that the tarfile +created with sloci can't import because the contents are inside +a folder. Looking around online, it seems that the an oci tar +should container the blob/index.json/oci-layout in the . of the +tarfile. + +Upstream: https://github.com/jirutka/sloci-image/pull/3 + +Refs: +https://snyk.io/blog/container-image-formats/ +https://github.com/opencontainers/image-spec/blob/main/image-layout.md + +Signed-off-by: Matthew Weber +--- + sloci-image | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/sloci-image b/sloci-image +index 90dba26..7f3c775 100755 +--- a/sloci-image ++++ b/sloci-image +@@ -425,6 +425,6 @@ if [ "$OUT_TYPE" = tar ]; then + file_name="$IMAGE_NAME-$CFG_REF_NAME-$CFG_ARCH" + file_name="$file_name${CFG_ARCH_VARIANT:+"-$CFG_ARCH_VARIANT"}-$CFG_OS.oci-image" + +- tar ${DEBUG:+-v} -cf "$file_name.tar" "$IMAGE_NAME" ++ tar ${DEBUG:+-v} -cf "$file_name.tar" -C "$IMAGE_NAME" . + rm -Rf "$IMAGE_NAME" + fi +-- +2.17.1 + diff --git a/package/sloci-image/0002-oci_arch-fix-arch-arm64-argument.patch b/package/sloci-image/0002-oci_arch-fix-arch-arm64-argument.patch new file mode 100644 index 0000000000..27c4ab8c16 --- /dev/null +++ b/package/sloci-image/0002-oci_arch-fix-arch-arm64-argument.patch @@ -0,0 +1,39 @@ +From 67b16c65cdf0f654275802d6d12451a81a4d2796 Mon Sep 17 00:00:00 2001 +From: "Arnout Vandecappelle (Essensium/Mind)" +Date: Sat, 11 Sep 2021 14:37:20 +0200 +Subject: [PATCH] oci_arch: fix "--arch arm64" argument + +The --arch argument presumably should take the appropriate GOARCH-type +string. The oci_arch() function does some conversion on it, which is +needed because without --arch the architecture is taken from "uname -m", +which yields something different than a GOARCH-type string. + +However, oci_arch() converts arm* into arm, which is wrong for arm64. +Since arm64 is a proper GOARCH-type string, it shouldn't be converted at +all. + +Upate the case statement to convert arm64 to arm64 (i.e., do nothing). +Since the arm64 match comes before arm*, it takes precedence. + +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +Upstream: https://github.com/jirutka/sloci-image/pull/4 +--- + sloci-image | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/sloci-image b/sloci-image +index 7f3c775..6844023 100755 +--- a/sloci-image ++++ b/sloci-image +@@ -214,7 +214,7 @@ oci_arch() { + case "$1" in + x86_64) echo amd64;; + x86) echo 386;; +- aarch64) echo arm64;; ++ aarch64|arm64) echo arm64;; + arm*) echo arm;; + *) echo "$1";; + esac +-- +2.31.1 + diff --git a/package/sloci-image/Config.in.host b/package/sloci-image/Config.in.host new file mode 100644 index 0000000000..d809f1f3c7 --- /dev/null +++ b/package/sloci-image/Config.in.host @@ -0,0 +1,7 @@ +config BR2_PACKAGE_HOST_SLOCI_IMAGE + bool "host sloci-image" + help + A simple CLI tool for packing rootfs into a single-layer OCI + image. + + https://github.com/jirutka/sloci-image diff --git a/package/sloci-image/sloci-image.hash b/package/sloci-image/sloci-image.hash new file mode 100644 index 0000000000..117f0ba6e0 --- /dev/null +++ b/package/sloci-image/sloci-image.hash @@ -0,0 +1,5 @@ +# Locally computed +sha256 56fbc335c193eccc3992f0a723c6dabe762f6d4854fc52059be074bdf5060d9e sloci-image-0.1.1.tar.gz + +# Hash for license files: +sha256 8ea53673b084576813fc40cd63817c5a1619438942b5e6c30dac1d10707c27e4 LICENSE diff --git a/package/sloci-image/sloci-image.mk b/package/sloci-image/sloci-image.mk new file mode 100644 index 0000000000..232127bfa2 --- /dev/null +++ b/package/sloci-image/sloci-image.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# sloci-image +# +################################################################################ + +SLOCI_IMAGE_VERSION = 0.1.1 +SLOCI_IMAGE_SITE = $(call github,jirutka,sloci-image,v$(SLOCI_IMAGE_VERSION)) + +SLOCI_IMAGE_LICENSE = MIT +SLOCI_IMAGE_LICENSE_FILES = LICENSE + +HOST_SLOCI_IMAGE_DEPENDENCIES = host-gawk + +define HOST_SLOCI_IMAGE_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) PREFIX=$(HOST_DIR) -C $(@D) install +endef + +$(eval $(host-generic-package)) -- 2.30.2