[Buildroot] [PATCH v3 1/3] package/sloci-image: new host package

Arnout Vandecappelle arnout at mind.be
Fri Sep 10 17:47:50 UTC 2021



On 27/08/2021 22:54, Matthew Weber via buildroot wrote:
> From: Sergio Prado <sergio.prado at e-labworks.com>
> 
> 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>
> ---
>  DEVELOPERS                                    |  1 +
>  package/Config.in.host                        |  2 +
>  ...-from-the-contents-of-working-folder.patch | 37 +++++++++++++++++++
>  package/sloci-image/Config.in.host            |  7 ++++
>  package/sloci-image/sloci-image.hash          |  5 +++
>  package/sloci-image/sloci-image.mk            | 19 ++++++++++
>  6 files changed, 71 insertions(+)
>  create mode 100644 package/sloci-image/0001-create-OCI-tar-from-the-contents-of-working-folder.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 53448dd100..af684021f4 100644
> --- a/DEVELOPERS
> +++ b/DEVELOPERS
> @@ -2425,6 +2425,7 @@ F:	package/curlpp/
>  F:	package/daq/
>  F:	package/libgdiplus/
>  F:	package/pimd/
> +F:	package/sloci-image/

 Matt, I took the liberty of adding sloci-image to your entry as well.

>  F:	package/snort/
>  F:	package/stella/
>  F:	package/tio/
> diff --git a/package/Config.in.host b/package/Config.in.host
> index 551352482e..209b1ff138 100644
> --- a/package/Config.in.host
> +++ b/package/Config.in.host
> @@ -78,7 +78,9 @@ menu "Host utilities"
>  	source "package/rustc/Config.in.host"
>  	source "package/s6-rc/Config.in.host"
>  	source "package/sam-ba/Config.in.host"
> +

 Spurious empty line.

>  	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

 It was accepted, great!

> +
> +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/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..f6db7e2060
> --- /dev/null
> +++ b/package/sloci-image/sloci-image.mk
> @@ -0,0 +1,19 @@
> +################################################################################
> +#
> +# sloci-image
> +#
> +################################################################################
> +
> +SLOCI_IMAGE_VERSION = 0.1.1

 It doesn't look like upstream is going to make a release any time soon, so you
could just as well update to the most recent sha1 and drop the patch. Oh well,
I've applied as is.

> +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) DESTDIR=$(HOST_DIR) PREFIX=/usr -C $(@D) install

 This is wrong! For host packages, DESTDIR should be empty and PREFIX should be
set to $(HOST_DIR) without /usr. It doesn't make a difference in practice
because PREFIX is only used to construct the install path and the usr symlink
makes it work, but it's the principle!


 I fixed all of the above and applied to master, thanks.

 Regards,
 Arnout

> +endef
> +
> +$(eval $(host-generic-package))
> 


More information about the buildroot mailing list