[Buildroot] [PATCH v8 1/1] docker-engine: split docker-{cli, engine}, bump to v18.06.1-ce
Matthew Weber
matthew.weber at rockwellcollins.com
Wed Nov 14 03:36:11 UTC 2018
Christian,
On Wed, Nov 7, 2018 at 9:25 PM Christian Stewart <christian at paral.in> wrote:
>
> Docker upstream has split the Docker daemon and CLI into separate codebases:
>
> - github.com/docker/engine: daemon, "dockerd" binary
> - github.com/docker/cli: "docker" command line interface
>
> This commit splits the docker-engine package into docker-engine and docker-cli.
> Conveniently, the Docker project has begun maintaining two separate
> release-tagged repositories for the CLI and daemon as of v18.06-ce-rc1. Previous
> versions were tagged in a common "docker-ce" repository which makes compilation
> awkward for Buildroot, especially due to some limitations in the new Go package
> infrastructure.
>
> Docker repositories "engine" and "cli" recently started tagging releases as
> recent as the latest stable v18.06.1.
>
> The CLI is no longer automatically included with the engine. Users will need to
> select BR2_PACKAGE_DOCKER_CLI to produce a both docker and dockerd target
> binaries.
>
> Docker CLI can be statically compiled. This enables usage of the system docker
> client binary to access the parent daemon API from within containers, where
> shared libraries are not available.
I've started to test this series and wondered what the most minimal BR
config would look like for the host /parent build? Just systemd and
docker-engine? Or are there dependencies on full core-utils /
util-linux items? I did look at your SkiffOS project and when I merge
a config together their were a good amount of packages and a ~150MB
rootfs. Just curious what a minimal build might look like.
>
> Signed-off-by: Christian Stewart <christian at paral.in>
>
> ---
>
> Changes since v4:
>
> - Use latest stable release v18.06.1
>
> Changes since v5:
>
> - Clarify commit message
> - Move legacy option to 2018.11 segment and clarify helptext
> - Daemon no longer automatically selects CLI
> - Remove duplicate journald build tag merge artifact in docker-engine
> - Remove unnecessary IAMSTATIC declaration
> - Remove unnecessary containerd -> docker-containerd link
>
> Changes since v6:
>
> - Remove static docker client option, causes SIGILL on thumb2 arm
>
> Changes since v7:
>
> - Re-introduce static compilation option for client by disabling cgo
> - Without cgo, there are no shared-linked dependencies for the docker cli
> ---
> Config.in.legacy | 9 +++++++
> package/Config.in | 1 +
> package/docker-cli/Config.in | 25 +++++++++++++++++++
> package/docker-cli/docker-cli.hash | 2 ++
> package/docker-cli/docker-cli.mk | 31 ++++++++++++++++++++++++
> package/docker-engine/Config.in | 6 -----
> package/docker-engine/docker-engine.hash | 2 +-
> package/docker-engine/docker-engine.mk | 25 ++++---------------
> 8 files changed, 74 insertions(+), 27 deletions(-)
> create mode 100644 package/docker-cli/Config.in
> create mode 100644 package/docker-cli/docker-cli.hash
> create mode 100644 package/docker-cli/docker-cli.mk
>
> diff --git a/Config.in.legacy b/Config.in.legacy
> index c3df37ddd9..3ceefc98b1 100644
> --- a/Config.in.legacy
> +++ b/Config.in.legacy
> @@ -145,6 +145,15 @@ endif
> ###############################################################################
> comment "Legacy options removed in 2018.11"
>
> +config BR2_PACKAGE_DOCKER_ENGINE_STATIC_CLIENT
> + bool "docker-engine static client option renamed"
> + select BR2_LEGACY
> + select BR2_PACKAGE_DOCKER_CLI_STATIC
> + help
> + BR2_PACKAGE_DOCKER_ENGINE_STATIC_CLIENT has been renamed to
> + BR2_PACKAGE_DOCKER_CLI_STATIC, following the package split of
> + docker-engine and docker-cli.
> +
> config BR2_TARGET_XLOADER
> bool "xloader has been removed"
> select BR2_LEGACY
> diff --git a/package/Config.in b/package/Config.in
> index 712e360402..8ca88e7d28 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -2105,6 +2105,7 @@ menu "System tools"
> source "package/dcron/Config.in"
> source "package/ddrescue/Config.in"
> source "package/debianutils/Config.in"
> + source "package/docker-cli/Config.in"
> source "package/docker-compose/Config.in"
> source "package/docker-containerd/Config.in"
> source "package/docker-engine/Config.in"
> diff --git a/package/docker-cli/Config.in b/package/docker-cli/Config.in
> new file mode 100644
> index 0000000000..82c35c453d
> --- /dev/null
> +++ b/package/docker-cli/Config.in
> @@ -0,0 +1,25 @@
> +config BR2_PACKAGE_DOCKER_CLI
> + bool "docker-cli"
> + depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS
> + depends on BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS
> + depends on BR2_TOOLCHAIN_HAS_THREADS
> + help
> + Docker is a platform to build, ship,
> + and run applications as lightweight containers.
> +
> + https://github.com/docker/cli
> +
> +if BR2_PACKAGE_DOCKER_CLI
> +
> +config BR2_PACKAGE_DOCKER_CLI_STATIC
> + bool "build static client"
> + depends on !BR2_STATIC_LIBS
> + help
> + Build a static docker client.
> +
> +endif
> +
> +comment "docker-cli needs a toolchain w/ threads"
> + depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS
> + depends on BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS
> + depends on !BR2_TOOLCHAIN_HAS_THREADS
> diff --git a/package/docker-cli/docker-cli.hash b/package/docker-cli/docker-cli.hash
> new file mode 100644
> index 0000000000..50a81792d0
> --- /dev/null
> +++ b/package/docker-cli/docker-cli.hash
> @@ -0,0 +1,2 @@
> +# Locally calculated
> +sha256 47eda354afc199693aa338f5b2bb87e4511354c02561ddc6520a06d169921bdf docker-cli-v18.06.1-ce.tar.gz
Please add license file hashes for both packages.
> diff --git a/package/docker-cli/docker-cli.mk b/package/docker-cli/docker-cli.mk
> new file mode 100644
> index 0000000000..46449fa058
> --- /dev/null
> +++ b/package/docker-cli/docker-cli.mk
> @@ -0,0 +1,31 @@
> +###############################################################################
> +#
> +# docker-cli
> +#
> +################################################################################
> +
> +DOCKER_CLI_VERSION = v18.06.1-ce
> +DOCKER_CLI_SITE = $(call github,docker,cli,$(DOCKER_CLI_VERSION))
> +DOCKER_CLI_WORKSPACE = gopath
> +
> +DOCKER_CLI_LICENSE = Apache-2.0
> +DOCKER_CLI_LICENSE_FILES = LICENSE
> +
> +DOCKER_CLI_DEPENDENCIES = host-go host-pkgconf
> +
> +DOCKER_CLI_TAGS = cgo autogen
> +DOCKER_CLI_BUILD_TARGETS = cmd/docker
> +
> +DOCKER_CLI_LDFLAGS = \
> + -X github.com/docker/cli/cli.GitCommit=$(DOCKER_CLI_VERSION) \
> + -X github.com/docker/cli/cli.Version=$(DOCKER_CLI_VERSION)
> +
> +ifeq ($(BR2_PACKAGE_DOCKER_CLI_STATIC),y)
> +DOCKER_CLI_LDFLAGS += -extldflags '-static'
> +DOCKER_CLI_TAGS += osusergo netgo
> +DOCKER_CLI_GO_ENV = CGO_ENABLED=no
> +endif
> +
> +DOCKER_CLI_INSTALL_BINS = $(notdir $(DOCKER_CLI_BUILD_TARGETS))
> +
> +$(eval $(golang-package))
> diff --git a/package/docker-engine/Config.in b/package/docker-engine/Config.in
> index 8feb11b48c..11f17820a7 100644
> --- a/package/docker-engine/Config.in
> +++ b/package/docker-engine/Config.in
> @@ -26,12 +26,6 @@ config BR2_PACKAGE_DOCKER_ENGINE_DAEMON
> config BR2_PACKAGE_DOCKER_ENGINE_EXPERIMENTAL
> bool "build experimental features"
>
> -config BR2_PACKAGE_DOCKER_ENGINE_STATIC_CLIENT
> - bool "build static client"
> - depends on !BR2_STATIC_LIBS
> - help
> - Build a static docker client.
> -
> if BR2_PACKAGE_DOCKER_ENGINE_DAEMON
>
> config BR2_PACKAGE_DOCKER_ENGINE_DRIVER_BTRFS
> diff --git a/package/docker-engine/docker-engine.hash b/package/docker-engine/docker-engine.hash
> index 6c0ed338a5..d5167a41a0 100644
> --- a/package/docker-engine/docker-engine.hash
> +++ b/package/docker-engine/docker-engine.hash
> @@ -1,2 +1,2 @@
> # Locally calculated
> -sha256 4716df117d867b82ddab2e82395cd40aa3d0925a689eedcec8919729e4c9f121 docker-engine-v17.05.0-ce.tar.gz
> +sha256 df4a3d2100d9b55c36288e721277dc61e4ceded5738423b09fe0d5ed42369f54 docker-engine-v18.06.1-ce.tar.gz
> diff --git a/package/docker-engine/docker-engine.mk b/package/docker-engine/docker-engine.mk
> index ba84b4cf0a..7023d40f58 100644
> --- a/package/docker-engine/docker-engine.mk
> +++ b/package/docker-engine/docker-engine.mk
> @@ -4,25 +4,21 @@
> #
> ################################################################################
>
> -DOCKER_ENGINE_VERSION = v17.05.0-ce
> -DOCKER_ENGINE_COMMIT = 89658bed64c2a8fe05a978e5b87dbec409d57a0f
> -DOCKER_ENGINE_SITE = $(call github,docker,docker,$(DOCKER_ENGINE_VERSION))
> +DOCKER_ENGINE_VERSION = v18.06.1-ce
> +DOCKER_ENGINE_SITE = $(call github,docker,engine,$(DOCKER_ENGINE_VERSION))
>
> DOCKER_ENGINE_LICENSE = Apache-2.0
> DOCKER_ENGINE_LICENSE_FILES = LICENSE
>
> DOCKER_ENGINE_DEPENDENCIES = host-go host-pkgconf
> +DOCKER_ENGINE_SRC_SUBDIR = github.com/docker/docker
>
> DOCKER_ENGINE_LDFLAGS = \
> -X main.GitCommit=$(DOCKER_ENGINE_VERSION) \
> -X main.Version=$(DOCKER_ENGINE_VERSION)
>
> -ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_STATIC_CLIENT),y)
> -DOCKER_ENGINE_LDFLAGS += -extldflags '-static'
> -endif
> -
> DOCKER_ENGINE_TAGS = cgo exclude_graphdriver_zfs autogen
> -DOCKER_ENGINE_BUILD_TARGETS = cmd/docker
> +DOCKER_ENGINE_BUILD_TARGETS = cmd/dockerd
>
> ifeq ($(BR2_PACKAGE_LIBSECCOMP),y)
> DOCKER_ENGINE_TAGS += seccomp
> @@ -30,15 +26,9 @@ DOCKER_ENGINE_DEPENDENCIES += libseccomp
> endif
>
> ifeq ($(BR2_INIT_SYSTEMD),y)
> -DOCKER_ENGINE_TAGS += journald
> DOCKER_ENGINE_DEPENDENCIES += systemd
> +DOCKER_ENGINE_TAGS += systemd journald
> endif
> -
> -ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_DAEMON),y)
> -DOCKER_ENGINE_TAGS += daemon
> -DOCKER_ENGINE_BUILD_TARGETS += cmd/dockerd
> -endif
> -
> ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_EXPERIMENTAL),y)
> DOCKER_ENGINE_TAGS += experimental
> endif
> @@ -65,7 +55,6 @@ DOCKER_ENGINE_INSTALL_BINS = $(notdir $(DOCKER_ENGINE_BUILD_TARGETS))
>
> define DOCKER_ENGINE_RUN_AUTOGEN
> cd $(@D) && \
> - GITCOMMIT="$$(echo $(DOCKER_ENGINE_COMMIT) | head -c7)" \
> BUILDTIME="$$(date)" \
> VERSION="$(patsubst v%,%,$(DOCKER_ENGINE_VERSION))" \
> PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" $(TARGET_MAKE_ENV) \
> @@ -74,8 +63,6 @@ endef
>
> DOCKER_ENGINE_POST_CONFIGURE_HOOKS += DOCKER_ENGINE_RUN_AUTOGEN
>
> -ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_DAEMON),y)
> -
> define DOCKER_ENGINE_INSTALL_INIT_SYSTEMD
> $(INSTALL) -D -m 0644 $(@D)/contrib/init/systemd/docker.service \
> $(TARGET_DIR)/usr/lib/systemd/system/docker.service
> @@ -90,6 +77,4 @@ define DOCKER_ENGINE_USERS
> - - docker -1 * - - - Docker Application Container Framework
> endef
>
> -endif
> -
> $(eval $(golang-package))
> --
> 2.18.1
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
--
Matthew L Weber / Pr Software Engineer
Airborne Information Systems / RC Linux Secure Platforms
MS 131-100, C Ave NE, Cedar Rapids, IA, 52498, USA
www.rockwellcollins.com
Note: Any Export License Required Information and License Restricted
Third Party Intellectual Property (TPIP) content must be encrypted and
sent to matthew.weber at corp.rockwellcollins.com.
More information about the buildroot
mailing list