diff mbox series

[v3,1/1] package/nerdctl: new package

Message ID 20220311044816.3222673-1-christian@paral.in
State Accepted
Headers show
Series [v3,1/1] package/nerdctl: new package | expand

Commit Message

Christian Stewart March 11, 2022, 4:48 a.m. UTC
nerdctl is a CLI for containerd (package docker-containerd) which is drop-in
compatible with the Docker Daemon CLI.

This allows using the lighter weight containerd daemon directly, instead of via
the additional docker daemon. It also implements rootless mode.

https://github.com/containerd/nerdctl

Signed-off-by: Christian Stewart <christian@paral.in>

---

v1:

 - pkg-golang does not support main.go at root of project
 - https://bugs.busybox.net/show_bug.cgi?id=13651
 - override the build command instead

v2:

 - bump to 0.8.0
 - go now works fine with /. targets, remove command override
 - docker-containerd was renamed to containerd

v3:

 - bump to version 0.17.1 from 0.8.0
 - add correct build targets

Signed-off-by: Christian Stewart <christian@paral.in>
---
 package/Config.in            |  1 +
 package/nerdctl/Config.in    | 24 ++++++++++++++++++++++++
 package/nerdctl/nerdctl.hash |  3 +++
 package/nerdctl/nerdctl.mk   | 20 ++++++++++++++++++++
 4 files changed, 48 insertions(+)
 create mode 100644 package/nerdctl/Config.in
 create mode 100644 package/nerdctl/nerdctl.hash
 create mode 100644 package/nerdctl/nerdctl.mk

Comments

Thomas Petazzoni July 28, 2022, 6:49 a.m. UTC | #1
Hello,

On Thu, 10 Mar 2022 20:48:16 -0800
Christian Stewart via buildroot <buildroot@buildroot.org> wrote:

> nerdctl is a CLI for containerd (package docker-containerd) which is drop-in
> compatible with the Docker Daemon CLI.
> 
> This allows using the lighter weight containerd daemon directly, instead of via
> the additional docker daemon. It also implements rootless mode.
> 
> https://github.com/containerd/nerdctl
> 
> Signed-off-by: Christian Stewart <christian@paral.in>

I have finally applied this patch, with a number of changes. See below.

>  package/Config.in            |  1 +
>  package/nerdctl/Config.in    | 24 ++++++++++++++++++++++++
>  package/nerdctl/nerdctl.hash |  3 +++
>  package/nerdctl/nerdctl.mk   | 20 ++++++++++++++++++++

Entry in DEVELOPERS file was missing.

> diff --git a/package/nerdctl/Config.in b/package/nerdctl/Config.in
> new file mode 100644
> index 0000000000..51a2919d9d
> --- /dev/null
> +++ b/package/nerdctl/Config.in
> @@ -0,0 +1,24 @@
> +config BR2_PACKAGE_NERDCTL
> +	bool "nerdctl"
> +	depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS
> +	depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS
> +	depends on BR2_TOOLCHAIN_HAS_THREADS
> +	depends on !BR2_TOOLCHAIN_USES_UCLIBC # containerd
> +	depends on BR2_USE_MMU # util-linux
> +	select BR2_PACKAGE_CONTAINERD # containerd runtime dependency
> +	select BR2_PACKAGE_RUNC # containerd runtime dependency
> +	select BR2_PACKAGE_UTIL_LINUX # runtime dependency
> +	select BR2_PACKAGE_UTIL_LINUX_BINARIES # containerd
> +	select BR2_PACKAGE_UTIL_LINUX_PIVOT_ROOT # containerd
> +	select BR2_PACKAGE_UTIL_LINUX_MOUNTPOINT # containerd
> +	select BR2_PACKAGE_UTIL_LINUX_MOUNT # containerd

It seems you got confused here with the propagation of the
select/depends on. You replicated all "selects" from containerd, but
this is useless. selecting containerd is sufficient, as it will itself
select runc and util-linux with all its sub-options.

What needs to be replicated are the "depends on" of the things you are
selecting.

> diff --git a/package/nerdctl/nerdctl.hash b/package/nerdctl/nerdctl.hash
> new file mode 100644
> index 0000000000..a31b12b26d
> --- /dev/null
> +++ b/package/nerdctl/nerdctl.hash
> @@ -0,0 +1,3 @@
> +# Computed locally
> +sha256  be41804ef139a3f92b774edc8439678e56b44033d7ab3fcf4389f0865c1fe069  nerdctl-0.17.1.tar.gz
> +sha256  4bbe3b885e8cd1907ab4cf9a41e862e74e24b5422297a4f2fe524e6a30ada2b4  LICENSE

The hash of the license file was wrong. I checked, the license file is
indeed Apache-2.0, so I don't know why you had a bogus hash here.

Applied with those changes. Thanks again!

Best regards,

Thomas
diff mbox series

Patch

diff --git a/package/Config.in b/package/Config.in
index 0d5d763180..8f68c464db 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -2554,6 +2554,7 @@  menu "System tools"
 	source "package/monit/Config.in"
 	source "package/multipath-tools/Config.in"
 	source "package/ncdu/Config.in"
+	source "package/nerdctl/Config.in"
 	source "package/netifrc/Config.in"
 	source "package/numactl/Config.in"
 	source "package/nut/Config.in"
diff --git a/package/nerdctl/Config.in b/package/nerdctl/Config.in
new file mode 100644
index 0000000000..51a2919d9d
--- /dev/null
+++ b/package/nerdctl/Config.in
@@ -0,0 +1,24 @@ 
+config BR2_PACKAGE_NERDCTL
+	bool "nerdctl"
+	depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS
+	depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS
+	depends on BR2_TOOLCHAIN_HAS_THREADS
+	depends on !BR2_TOOLCHAIN_USES_UCLIBC # containerd
+	depends on BR2_USE_MMU # util-linux
+	select BR2_PACKAGE_CONTAINERD # containerd runtime dependency
+	select BR2_PACKAGE_RUNC # containerd runtime dependency
+	select BR2_PACKAGE_UTIL_LINUX # runtime dependency
+	select BR2_PACKAGE_UTIL_LINUX_BINARIES # containerd
+	select BR2_PACKAGE_UTIL_LINUX_PIVOT_ROOT # containerd
+	select BR2_PACKAGE_UTIL_LINUX_MOUNTPOINT # containerd
+	select BR2_PACKAGE_UTIL_LINUX_MOUNT # containerd
+	help
+	  Docker-compatible CLI for containerd, controlling runc.
+
+	  https://github.com/containerd/nerdctl
+
+comment "nerdctl needs a glibc or musl toolchain w/ threads"
+	depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS
+	depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS
+	depends on BR2_USE_MMU
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_USES_UCLIBC
diff --git a/package/nerdctl/nerdctl.hash b/package/nerdctl/nerdctl.hash
new file mode 100644
index 0000000000..a31b12b26d
--- /dev/null
+++ b/package/nerdctl/nerdctl.hash
@@ -0,0 +1,3 @@ 
+# Computed locally
+sha256  be41804ef139a3f92b774edc8439678e56b44033d7ab3fcf4389f0865c1fe069  nerdctl-0.17.1.tar.gz
+sha256  4bbe3b885e8cd1907ab4cf9a41e862e74e24b5422297a4f2fe524e6a30ada2b4  LICENSE
diff --git a/package/nerdctl/nerdctl.mk b/package/nerdctl/nerdctl.mk
new file mode 100644
index 0000000000..3f3c04aa11
--- /dev/null
+++ b/package/nerdctl/nerdctl.mk
@@ -0,0 +1,20 @@ 
+################################################################################
+#
+# nerdctl
+#
+################################################################################
+
+NERDCTL_VERSION = 0.17.1
+NERDCTL_SITE = $(call github,containerd,nerdctl,v$(NERDCTL_VERSION))
+
+NERDCTL_LICENSE = Apache-2.0
+NERDCTL_LICENSE_FILES = LICENSE
+
+NERDCTL_GOMOD = github.com/containerd/nerdctl
+
+NERDCTL_LDFLAGS = \
+	-X $(NERDCTL_GOMOD)/pkg/version.Version=$(NERDCTL_VERSION)
+
+NERDCTL_BUILD_TARGETS = cmd/nerdctl
+
+$(eval $(golang-package))