From patchwork Wed Dec 16 08:42:46 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Stewart X-Patchwork-Id: 1416942 Return-Path: X-Original-To: incoming-buildroot@patchwork.ozlabs.org Delivered-To: patchwork-incoming-buildroot@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=busybox.net (client-ip=140.211.166.136; helo=silver.osuosl.org; envelope-from=buildroot-bounces@busybox.net; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=paral.in Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4CwpYJ2VjRz9sSs for ; Wed, 16 Dec 2020 19:43:00 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id 0F5D920119; Wed, 16 Dec 2020 08:42:58 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id nqslr0keFRlp; Wed, 16 Dec 2020 08:42:54 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by silver.osuosl.org (Postfix) with ESMTP id F00CB2012D; Wed, 16 Dec 2020 08:42:53 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by ash.osuosl.org (Postfix) with ESMTP id 3AF3D1BF338 for ; Wed, 16 Dec 2020 08:42:52 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id 2B8022012D for ; Wed, 16 Dec 2020 08:42:52 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ejG9NjDFiDMn for ; Wed, 16 Dec 2020 08:42:51 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-pf1-f169.google.com (mail-pf1-f169.google.com [209.85.210.169]) by silver.osuosl.org (Postfix) with ESMTPS id 004DA20119 for ; Wed, 16 Dec 2020 08:42:50 +0000 (UTC) Received: by mail-pf1-f169.google.com with SMTP id q22so16136547pfk.12 for ; Wed, 16 Dec 2020 00:42:50 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=Ip+Px6LOm7Z9FrSwOy5BD1FUC1WoJ0I3K7XycvxUx7A=; b=URY4jdrs3hFshFtDbbmTmM18ItUgqvObbmQGc2Zr06/yrLWK1FC7ikH04Cxh3NbBto BX+1cyg6Ou19tAztigMsmvm1OLoAFg8aCutCgIhc8FP8a+8K8aLALdSvoTvgPUYMvdx8 zplizdDNO2EN0VxFa7HOAV2t14QkUgLMBnh7SUmeekg2Bh4dyobPqVpSWUshML8ouli4 kMkGASaOVcDx8i6G20hdUkuWXZ132dyDQxCeKJWJ0PnxrSv2pUTIKIuoZH8Xg2MSEoEO Mhq+urqABKHWrUtO8seQBKk/NyzlKUVz5DJA47Y/T/vMOdq8zPoKeFD68GQdO9HAd64X FOnw== X-Gm-Message-State: AOAM533Oq2PWsZBKdBrWRSIFqvvKmxF1WPWrK4pYGhBNdluJYmoVdJob QAZiAaR5rCJWoYu5PuRqo4th9VvCTabjm4eUd8g= X-Google-Smtp-Source: ABdhPJyIGyncCpJfluck617k42/y/3fmMundedurhLSNkTl1Aa5Ar735l/sUJ3Jzk8RJw7CCIQME0A== X-Received: by 2002:a63:fa0d:: with SMTP id y13mr5838007pgh.82.1608108170272; Wed, 16 Dec 2020 00:42:50 -0800 (PST) Received: from localhost.localdomain (ip70-191-80-27.sb.sd.cox.net. [70.191.80.27]) by smtp.gmail.com with ESMTPSA id n28sm1592291pfq.61.2020.12.16.00.42.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Dec 2020 00:42:49 -0800 (PST) From: Christian Stewart To: buildroot@buildroot.org Date: Wed, 16 Dec 2020 00:42:46 -0800 Message-Id: <20201216084246.102616-1-christian@paral.in> X-Mailer: git-send-email 2.29.2 MIME-Version: 1.0 Subject: [Buildroot] [PATCH v1 1/1] package/balena-engine: new package X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Korsgaard , Christian Stewart , Tian Yuanhao , Asaf Kahlon , Peter Seiderer , Thomas Petazzoni , "Yann E . MORIN" , Adam Duskett , Angelo Compagnucci Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" 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))