From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christian Stewart Date: Wed, 16 Dec 2020 00:42:46 -0800 Subject: [Buildroot] [PATCH v1 1/1] package/balena-engine: new package Message-ID: <20201216084246.102616-1-christian@paral.in> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: buildroot@busybox.net Reviewed-by: Christian Stewart Signed-off-by: Tian Yuanhao Signed-off-by: Christian Stewart --- package/Config.in | 1 + package/balena-engine/Config.in | 27 ++++++ package/balena-engine/balena-engine.mk | 109 +++++++++++++++++++++++++ 3 files changed, 137 insertions(+) create mode 100644 package/balena-engine/Config.in create mode 100644 package/balena-engine/balena-engine.mk diff --git a/package/Config.in b/package/Config.in index dc7139a49a..0fe88511dd 100644 --- a/package/Config.in +++ b/package/Config.in @@ -2377,6 +2377,7 @@ menu "System tools" source "package/atop/Config.in" source "package/attr/Config.in" source "package/audit/Config.in" + source "package/balena-engine/Config.in" source "package/bubblewrap/Config.in" source "package/cgroupfs-mount/Config.in" source "package/circus/Config.in" diff --git a/package/balena-engine/Config.in b/package/balena-engine/Config.in new file mode 100644 index 0000000000..d7764c3f65 --- /dev/null +++ b/package/balena-engine/Config.in @@ -0,0 +1,27 @@ +config BR2_PACKAGE_BALENA_ENGINE + bool "balena-engine" + 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 + depends on BR2_USE_MMU + select BR2_PACKAGE_CGROUPFS_MOUNT if !BR2_PACKAGE_SYSTEMD + select BR2_PACKAGE_IPTABLES + select BR2_PACKAGE_SQLITE + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_BINARIES + select BR2_PACKAGE_UTIL_LINUX_PIVOT_ROOT + select BR2_PACKAGE_UTIL_LINUX_MOUNTPOINT + select BR2_PACKAGE_UTIL_LINUX_MOUNT + help + balenaEngine is a new container engine purpose-built for + embedded and IoT use cases and compatible with Docker + containers. + + https://github.com/balena-os/balena-engine + +comment "balena-engine 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_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_USES_UCLIBC + depends on BR2_USE_MMU diff --git a/package/balena-engine/balena-engine.mk b/package/balena-engine/balena-engine.mk new file mode 100644 index 0000000000..b3eb2ca75b --- /dev/null +++ b/package/balena-engine/balena-engine.mk @@ -0,0 +1,109 @@ +################################################################################ +# +# balena-engine +# +################################################################################ + +BALENA_ENGINE_VERSION = 19.03.14 +BALENA_ENGINE_SITE = $(call github,balena-os,balena-engine,v$(BALENA_ENGINE_VERSION)) + +BALENA_ENGINE_LICENSE = Apache-2.0 +BALENA_ENGINE_LICENSE_FILES = LICENSE + +BALENA_ENGINE_DEPENDENCIES = host-pkgconf +BALENA_ENGINE_GOMOD = github.com/docker/docker + +BALENA_ENGINE_LDFLAGS = \ + -X github.com/docker/cli/cli/version.Version=N/A \ + -X github.com/docker/cli/cli/version.GitCommit= \ + -X github.com/docker/cli/cli/version.BuildTime= \ + -X github.com/containerd/containerd/version.Version=N/A \ + -X github.com/opencontainers/runc.version=N/A + +BALENA_ENGINE_TAGS = \ + cgo \ + exclude_graphdriver_zfs \ + autogen \ + no_buildkit \ + no_btrfs \ + no_cri \ + no_devmapper \ + no_zfs \ + exclude_disk_quota \ + exclude_graphdriver_btrfs \ + exclude_graphdriver_devicemapper + +BALENA_ENGINE_BUILD_TARGETS = cmd/balena-engine + +ifeq ($(BR2_INIT_SYSTEMD),y) +BALENA_ENGINE_DEPENDENCIES += systemd +BALENA_ENGINE_TAGS += journald +endif + +define BALENA_ENGINE_RUN_AUTOGEN + cd $(@D) && \ + VERSION=$(BALENA_ENGINE_VERSION) \ + PKG_CONFIG=$(PKG_CONFIG_HOST_BINARY) \ + $(TARGET_MAKE_ENV) \ + $(SHELL) hack/make/.go-autogen +endef + +BALENA_ENGINE_POST_CONFIGURE_HOOKS += BALENA_ENGINE_RUN_AUTOGEN + +define BALENA_ENGINE_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 $(@D)/contrib/init/systemd/balena-engine.service \ + $(TARGET_DIR)/usr/lib/systemd/system/balena-engine.service + $(INSTALL) -D -m 644 $(@D)/contrib/init/systemd/balena-engine.socket \ + $(TARGET_DIR)/usr/lib/systemd/system/balena-engine.socket +endef + +define BALENA_ENGINE_USERS + - - balena-engine -1 * - - - balenaEngine daemon +endef + +define BALENA_ENGINE_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_POSIX_MQUEUE) + $(call KCONFIG_ENABLE_OPT,CONFIG_CGROUPS) + $(call KCONFIG_ENABLE_OPT,CONFIG_MEMCG) + $(call KCONFIG_ENABLE_OPT,CONFIG_CGROUP_SCHED) + $(call KCONFIG_ENABLE_OPT,CONFIG_CGROUP_FREEZER) + $(call KCONFIG_ENABLE_OPT,CONFIG_CPUSETS) + $(call KCONFIG_ENABLE_OPT,CONFIG_CGROUP_DEVICE) + $(call KCONFIG_ENABLE_OPT,CONFIG_CGROUP_CPUACCT) + $(call KCONFIG_ENABLE_OPT,CONFIG_NAMESPACES) + $(call KCONFIG_ENABLE_OPT,CONFIG_UTS_NS) + $(call KCONFIG_ENABLE_OPT,CONFIG_IPC_NS) + $(call KCONFIG_ENABLE_OPT,CONFIG_PID_NS) + $(call KCONFIG_ENABLE_OPT,CONFIG_NET_NS) + $(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER) + $(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_ADVANCED) + $(call KCONFIG_ENABLE_OPT,CONFIG_BRIDGE_NETFILTER) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK) + $(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_XT_MATCH_ADDRTYPE) + $(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_XT_MATCH_CONNTRACK) + $(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_XT_MATCH_IPVS) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_IPTABLES) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_FILTER) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_NAT) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_TARGET_MASQUERADE) + $(call KCONFIG_ENABLE_OPT,CONFIG_BRIDGE) + $(call KCONFIG_ENABLE_OPT,CONFIG_DUMMY) + $(call KCONFIG_ENABLE_OPT,CONFIG_MACVLAN) + $(call KCONFIG_ENABLE_OPT,CONFIG_VXLAN) + $(call KCONFIG_ENABLE_OPT,CONFIG_VETH) + $(call KCONFIG_ENABLE_OPT,CONFIG_OVERLAY_FS) + $(call KCONFIG_ENABLE_OPT,CONFIG_KEYS) +endef + +define BALENA_ENGINE_INSTALL_SYMLINK + ln -f -s balena-engine $(TARGET_DIR)/usr/bin/balena-engine-daemon + ln -f -s balena-engine $(TARGET_DIR)/usr/bin/balena-engine-containerd + ln -f -s balena-engine $(TARGET_DIR)/usr/bin/balena-engine-containerd-shim + ln -f -s balena-engine $(TARGET_DIR)/usr/bin/balena-engine-containerd-ctr + ln -f -s balena-engine $(TARGET_DIR)/usr/bin/balena-engine-runc + ln -f -s balena-engine $(TARGET_DIR)/usr/bin/balena-engine-proxy + $(if $(BR2_PACKAGE_TINI),ln -f -s tini $(TARGET_DIR)/usr/bin/balena-engine-init) +endef +BALENA_ENGINE_POST_INSTALL_TARGET_HOOKS += BALENA_ENGINE_INSTALL_SYMLINK + +$(eval $(golang-package)) -- 2.29.2