[Buildroot] [PATCH v2 1/1] package/docker-cli-buildx: new package

Christian Stewart christian at aperture.us
Tue Jul 11 22:45:36 UTC 2023


buildx is a docker CLI plugin implementing extended build features.

buildx is the default builder as of Docker v23.x, and if the plugin is not
present, the CLI will output an error warning that it is using the deprecated
built-in builder instead of the buildx builder.

However, buildx is a separate repository from docker-cli: it is a plugin that
needs to be installed at /usr/lib/docker/cli-plugins on the target.

https://github.com/docker/buildx

Signed-off-by: Christian Stewart <christian at aperture.us>

---

v1 -> v2:

 - buildx: bump version to v0.11.1
 - https://github.com/docker/buildx/releases/tag/v0.11.1
 - NOTE: docker-cli-buildx requires language features from go1.20!
 - Depends on bump to go1.20.x:
   - https://patchwork.ozlabs.org/project/buildroot/patch/20230711220849.1702358-3-christian@aperture.us/

Signed-off-by: Christian Stewart <christian at aperture.us>
---
 package/Config.in                             |  1 +
 package/docker-cli-buildx/Config.in           | 16 +++++++++
 .../docker-cli-buildx/docker-cli-buildx.hash  |  3 ++
 .../docker-cli-buildx/docker-cli-buildx.mk    | 36 +++++++++++++++++++
 4 files changed, 56 insertions(+)
 create mode 100644 package/docker-cli-buildx/Config.in
 create mode 100644 package/docker-cli-buildx/docker-cli-buildx.hash
 create mode 100644 package/docker-cli-buildx/docker-cli-buildx.mk

diff --git a/package/Config.in b/package/Config.in
index e6ed56a811..9284f024d2 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -2648,6 +2648,7 @@ menu "System tools"
 	source "package/ddrescue/Config.in"
 	source "package/debianutils/Config.in"
 	source "package/docker-cli/Config.in"
+	source "package/docker-cli-buildx/Config.in"
 	source "package/docker-compose/Config.in"
 	source "package/docker-engine/Config.in"
 	source "package/earlyoom/Config.in"
diff --git a/package/docker-cli-buildx/Config.in b/package/docker-cli-buildx/Config.in
new file mode 100644
index 0000000000..486f1196c3
--- /dev/null
+++ b/package/docker-cli-buildx/Config.in
@@ -0,0 +1,16 @@
+config BR2_PACKAGE_DOCKER_CLI_BUILDX
+	bool "docker-cli-buildx"
+	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
+	select BR2_PACKAGE_DOCKER_CLI
+	help
+	  buildx is a Docker CLI plugin for extended build
+	  capabilities with BuildKit.
+
+	  https://github.com/docker/buildx
+
+comment "docker-cli-buildx needs a 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_TOOLCHAIN_HAS_THREADS
diff --git a/package/docker-cli-buildx/docker-cli-buildx.hash b/package/docker-cli-buildx/docker-cli-buildx.hash
new file mode 100644
index 0000000000..c6a33d468c
--- /dev/null
+++ b/package/docker-cli-buildx/docker-cli-buildx.hash
@@ -0,0 +1,3 @@
+# Locally calculated
+sha256  34172c3d8bafd084668146fee415fd231c2d6aab52e0e223c97a630227d8e2ae  docker-cli-buildx-0.11.1.tar.gz
+sha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE
diff --git a/package/docker-cli-buildx/docker-cli-buildx.mk b/package/docker-cli-buildx/docker-cli-buildx.mk
new file mode 100644
index 0000000000..ff09b752d3
--- /dev/null
+++ b/package/docker-cli-buildx/docker-cli-buildx.mk
@@ -0,0 +1,36 @@
+################################################################################
+#
+# docker-cli-buildx
+#
+################################################################################
+
+DOCKER_CLI_BUILDX_VERSION = 0.11.1
+DOCKER_CLI_BUILDX_SITE = $(call github,docker,buildx,v$(DOCKER_CLI_BUILDX_VERSION))
+
+DOCKER_CLI_BUILDX_LICENSE = Apache-2.0
+DOCKER_CLI_BUILDX_LICENSE_FILES = LICENSE
+
+DOCKER_CLI_BUILDX_DEPENDENCIES = host-pkgconf
+
+DOCKER_CLI_BUILDX_BUILD_TARGETS = cmd/buildx
+DOCKER_CLI_BUILDX_GOMOD = github.com/docker/buildx
+
+DOCKER_CLI_BUILDX_LDFLAGS = \
+	-X $(DOCKER_CLI_BUILDX_GOMOD)/version.Revision=$(DOCKER_CLI_BUILDX_VERSION) \
+	-X $(DOCKER_CLI_BUILDX_GOMOD)/version.Version=$(DOCKER_CLI_BUILDX_VERSION)
+
+# create the go.mod file with required language version go1.20
+# remove the conflicting vendor/modules.txt
+# https://github.com/moby/moby/issues/44618#issuecomment-1343565705
+define DOCKER_CLI_BUILDX_FIX_VENDORING
+	printf "module $(DOCKER_CLI_BUILDX_GOMOD)\n\ngo 1.20\n" > $(@D)/go.mod
+	rm -f $(@D)/vendor/modules.txt
+endef
+DOCKER_CLI_BUILDX_POST_EXTRACT_HOOKS += DOCKER_CLI_BUILDX_FIX_VENDORING
+
+define DOCKER_CLI_BUILDX_INSTALL_TARGET_CMDS
+	$(INSTALL) -m 0755 -D $(@D)/bin/buildx \
+		$(TARGET_DIR)/usr/lib/docker/cli-plugins/buildx
+endef
+
+$(eval $(golang-package))
-- 
2.41.0




More information about the buildroot mailing list