[Buildroot] [git commit] package/sloci-image: new host package

Arnout Vandecappelle (Essensium/Mind) arnout at mind.be
Sat Sep 11 12:52:33 UTC 2021


commit: https://git.buildroot.net/buildroot/commit/?id=e83974e2f9f5b7380e78f417b1ef5e0d919d724c
branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master

sloci-image is a simple CLI tool for packing rootfs into a single-layer
OCI image.

Signed-off-by: Sergio Prado <sergio.prado at e-labworks.com>
Signed-off-by: Matthew Weber <matthew.weber at collins.com>
[Arnout: correctly set PREFIX, add Matt to DEVELOPERS, add additional
         patch]
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout at mind.be>
---
 DEVELOPERS                                         |  2 ++
 package/Config.in.host                             |  1 +
 ...I-tar-from-the-contents-of-working-folder.patch | 37 ++++++++++++++++++++
 .../0002-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(+)

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 <matthew.weber at collins.com>
+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 <matthew.weber at collins.com>
+---
+ 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)" <arnout at mind.be>
+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) <arnout at mind.be>
+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))


More information about the buildroot mailing list