New infrastructure for golang packages
v2 cover New infrastructure for golang packages
This series add a new pkg-golang infrastructure and converts some of the packages based on go.
Version 2:
* Completed the conversion of all golang packages to the new infrastructure adding docker-engine
* Added a new package. mender
Angelo Compagnucci (7):
package/pkg-golang: new package infrastructure docs/manual: adding documentation for the golang infrastructure package/flannel: converting to golang infrastructure package/runc: converting to golang infrastructure package/docker-containerd: converting to golang infrastructure package/docker-engine: converting to golang infrastructure package/mender: new package
docs/manual/adding-packages-golang.txt | 116 ++++++++++++++++++++++++ docs/manual/adding-packages.txt | 2 + package/Config.in | 1 + package/Makefile.in | 1 + package/docker-containerd/docker-containerd.mk | 37 +++----- package/docker-engine/docker-engine.mk | 53 ++++------- package/flannel/flannel.mk | 32 +------ package/mender/Config.in | 14 +++ package/mender/mender-device-identity | 52 +++++++++++ package/mender/mender-inventory-hostinfo | 21 +++++ package/mender/mender-inventory-network | 47 ++++++++++ package/mender/mender.conf | 14 +++ package/mender/mender.hash | 2 + package/mender/mender.mk | 31 +++++++ package/mender/mender.service | 15 +++ package/mender/server.crt | 22 +++++ package/mender/tenant.conf | 0 package/pkg-golang.mk | 121 +++++++++++++++++++++++++ package/runc/runc.mk | 37 +------- 19 files changed, 500 insertions(+), 118 deletions(-) create mode 100644 docs/manual/adding-packages-golang.txt create mode 100644 package/mender/Config.in create mode 100644 package/mender/mender-device-identity create mode 100644 package/mender/mender-inventory-hostinfo create mode 100644 package/mender/mender-inventory-network create mode 100644 package/mender/mender.conf create mode 100644 package/mender/mender.hash create mode 100644 package/mender/mender.mk create mode 100644 package/mender/mender.service create mode 100644 package/mender/server.crt create mode 100644 package/mender/tenant.conf create mode 100644 package/pkg-golang.mk
Signature · 1 line
2.7.4
PATCH v2 1/7 package/pkg-golang: new package infrastructure
From: Angelo Compagnucci <[email protected]>
This patch adds a new infrastructure for golang based packages.
---
Changes:
v1 -> v2: Renamed GOBIN to GO_BIN for clarity
package/Makefile.in | 1 + package/pkg-golang.mk | 121 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 122 insertions(+) create mode 100644 package/pkg-golang.mk
package/Makefile.in +1 -0
@@ -429,3 +429,4 @@ include package/pkg-kconfig.mk include package/pkg-rebar.mk include package/pkg-kernel-module.mk include package/pkg-waf.mk +include package/pkg-golang.mk
package/pkg-golang.mk new file +121 -0
121 lines not on this page · raw message
Signature · 1 line
2.7.4
PATCH v2 2/7 docs/manual: adding documentation for the golang infrastructure
In reply to Angelo CompagnucciFrom: Angelo Compagnucci <[email protected]>
This patch adds the documentation for the golang infrastructure.
---
Changes:
v1 -> v2: Adding documentation for go TAGS
docs/manual/adding-packages-golang.txt | 116 +++++++++++++++++++++++++++++++++ docs/manual/adding-packages.txt | 2 + 2 files changed, 118 insertions(+) create mode 100644 docs/manual/adding-packages-golang.txt
docs/manual/adding-packages-golang.txt new file +116 -0
@@ -0,0 +1,116 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Infrastructure for Go packages + +This infrastructure applies to Go packages that use the standard +build system and use bundled dependencies. + +[[golang-package-tutorial]] + +==== +golang-package+ tutorial + +First, let's see how to write a +.mk+ file for a go package, +with an example : + +------------------------ +01: ################################################################################ +02: # +03: # go-foo +04: # +05: ################################################################################ +06: +07: GO_FOO_VERSION = 1.0 +08: GO_FOO_SOURCE = go-foo-$(GO_FOO_VERSION).tar.xz +09: GO_FOO_SITE = http://www.foosoftware.org/download +10: GO_FOO_LICENSE = BSD-3-Clause +11: GO_FOO_LICENSE_FILES = LICENSE +12: +13: $(eval $(golang-package)) +------------------------ + +On line 7, we declare the version of the package. + +On line 8 and 9, we declare the name of the tarball (xz-ed tarball +recommended) and the location of the tarball on the Web. Buildroot +will automatically download the tarball from this location. + +On line 10 and 11, we give licensing details about the package (its +license on line 10, and the file containing the license text on line +11). + +Finally, on line 13, we invoke the +golang-package+ macro that +generates all the Makefile rules that actually allow the package to be +built. + +[[golang-package-reference]] + +==== +golang-package+ reference + +As a policy packages can freely choose their name (existing example in +Buildroot is +flannel+). + +In their +Config.in+ file, they should depend on ++BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS+ and ++BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS+ cause host-go will compile when Buildroot will add the +dependency automatically. + +The main macro of the Go package infrastructure is ++golang-package+. It is similar to the +generic-package+ macro. + +Just like the generic infrastructure, the Go infrastructure works +by defining a number of variables before calling the +golang-package+. + +All the package metadata information variables that exist in the +xref:generic-package-reference[generic package infrastructure] also +exist in the Go infrastructure: +GO_FOO_VERSION+, ++GO_FOO_SOURCE+, +GO_FOO_PATCH+, +GO_FOO_SITE+, ++GO_FOO_SUBDIR+, +GO_FOO_DEPENDENCIES+, +GO_FOO_LICENSE+, ++GO_FOO_LICENSE_FILES+, +GO_FOO_INSTALL_STAGING+, etc. + +Note that: + + * It is not necessary to add +go+ or +host-go+ in the + +GO_FOO_DEPENDENCIES+ variable of a package, since these basic + dependencies are automatically added as needed by the Go + package infrastructure. + +A few additional variables, specific to the Go infrastructure, can +optionally be defined, depending on the package's needs. Many of them +are only useful in very specific cases, typical packages will +therefore only use a few of them, or none. + +* If your package need a custom GOPATH to be compiled in, you can use the + +GO_FOO_GOPATH+. + +* +GO_FOO_GO_SRC_PATH+ is the path where your source will be compiled + relatively to the GOPATH. + The golang package infrastructure tries to guess the correct + sub folder to compile in but if guessing is not correct for you or your + package behaves differently, you can use this variable to + redefine the path. + +* +GOO_FOO_GO_LDFLAGS+ and +GO_FOO_GO_TAGS+ can be used to pass + respectively the LDFLAGS or the TAGS to the build command. + +GOO_FOO_GO_LDFLAGS+ and +GO_FOO_GO_TAGS+ will be combined into + the proper command line options to be passed to the compiler. + +* If you need to customize the install location for you binaries, you + can use +GOO_FOO_BINDIR+ to know where the binaries are. + +* If you need to customize the building tags you can use GOO_FOO_GO_TAGS + +With the Go infrastructure, all the steps required to build and +install the packages are already defined, and they generally work well +for most Go-based packages. However, when required, it is still +possible to customize what is done in any particular step: + +* By adding a post-operation hook (after extract, patch, configure, + build or install). See xref:hooks[] for details. + +* By overriding one of the steps. For example, even if the Go + infrastructure is used, if the package +.mk+ file defines its own + +GO_FOO_BUILD_CMDS+ variable, it will be used instead of the + default Go one. However, using this method should be restricted + to very specific cases. Do not use it in the general case. +
docs/manual/adding-packages.txt +2 -0
@@ -36,6 +36,8 @@ include::adding-packages-waf.txt[] include::adding-packages-meson.txt[] +include::adding-packages-golang.txt[] + include::adding-packages-kernel-module.txt[] include::adding-packages-asciidoc.txt[]
Signature · 1 line
2.7.4
PATCH v2 3/7 package/flannel: converting to golang infrastructure
In reply to Angelo CompagnucciFrom: Angelo Compagnucci <[email protected]>
This patch converts the flannel package to the new golang infrastructure.
--- package/flannel/flannel.mk | 32 ++++---------------------------- 1 file changed, 4 insertions(+), 28 deletions(-)
package/flannel/flannel.mk +4 -28
@@ -11,36 +11,12 @@ FLANNEL_SOURCE = $(FLANNEL_VERSION).tar.gz FLANNEL_LICENSE = Apache-2.0 FLANNEL_LICENSE_FILES = LICENSE -FLANNEL_DEPENDENCIES = host-go - -FLANNEL_MAKE_ENV = \ - $(HOST_GO_TARGET_ENV) \ - GOBIN="$(@D)/bin" \ - GOPATH="$(@D)/gopath" \ - CGO_ENABLED=1 - -FLANNEL_GLDFLAGS = \ - -X github.com/coreos/flannel/version.Version=$(FLANNEL_VERSION) - -ifeq ($(BR2_STATIC_LIBS),y) -FLANNEL_GLDFLAGS += -extldflags '-static' -endif - -define FLANNEL_CONFIGURE_CMDS - # Put sources at prescribed GOPATH location. - mkdir -p $(@D)/gopath/src/github.com/coreos - ln -s $(@D) $(@D)/gopath/src/github.com/coreos/flannel -endef - -define FLANNEL_BUILD_CMDS - cd $(@D) && $(FLANNEL_MAKE_ENV) $(HOST_DIR)/bin/go \ - build -v -o $(@D)/bin/flanneld -ldflags "$(FLANNEL_GLDFLAGS)" . -endef +FLANNEL_GO_LDFLAGS = -X github.com/coreos/flannel/version.Version=$(FLANNEL_VERSION) +# Install flannel to its well known location. define FLANNEL_INSTALL_TARGET_CMDS - # Install flannel to its well known location. - $(INSTALL) -D -m 0755 $(@D)/bin/flanneld $(TARGET_DIR)/opt/bin/flanneld + $(INSTALL) -D -m 0755 $(@D)/$(FLANNEL_BINDIR)/flannel $(TARGET_DIR)/opt/bin/flanneld $(INSTALL) -D -m 0755 $(@D)/dist/mk-docker-opts.sh $(TARGET_DIR)/opt/bin/mk-docker-opts.sh endef -$(eval $(generic-package)) +$(eval $(golang-package))
Signature · 1 line
2.7.4
PATCH v2 4/7 package/runc: converting to golang infrastructure
In reply to Angelo CompagnucciFrom: Angelo Compagnucci <[email protected]>
This patch converts the runc package to the new golang infrastructure.
--- package/runc/runc.mk | 37 +++++-------------------------------- 1 file changed, 5 insertions(+), 32 deletions(-)
package/runc/runc.mk +5 -32
@@ -9,42 +9,15 @@ RUNC_SITE = $(call github,opencontainers,runc,$(RUNC_VERSION)) RUNC_LICENSE = Apache-2.0 RUNC_LICENSE_FILES = LICENSE -RUNC_DEPENDENCIES = host-go +RUNC_GOPATH = Godeps/_workspace -RUNC_GOPATH = "$(@D)/Godeps/_workspace" -RUNC_MAKE_ENV = $(HOST_GO_TARGET_ENV) \ - CGO_ENABLED=1 \ - GOBIN="$(@D)/bin" \ - GOPATH="$(RUNC_GOPATH)" \ - PATH=$(BR_PATH) +RUNC_GO_LDFLAGS = -X main.gitCommit=$(RUNC_VERSION) -RUNC_GLDFLAGS = \ - -X main.gitCommit=$(RUNC_VERSION) - -ifeq ($(BR2_STATIC_LIBS),y) -RUNC_GLDFLAGS += -extldflags '-static' -endif - -RUNC_GOTAGS = cgo static_build +RUNC_GO_TAGS = cgo static_build ifeq ($(BR2_PACKAGE_LIBSECCOMP),y) -RUNC_GOTAGS += seccomp +RUNC_GO_TAGS += seccomp RUNC_DEPENDENCIES += libseccomp host-pkgconf endif -define RUNC_CONFIGURE_CMDS - mkdir -p $(RUNC_GOPATH)/src/github.com/opencontainers - ln -s $(@D) $(RUNC_GOPATH)/src/github.com/opencontainers/runc -endef - -define RUNC_BUILD_CMDS - cd $(@D) && $(RUNC_MAKE_ENV) $(HOST_DIR)/bin/go \ - build -v -o $(@D)/bin/runc \ - -tags "$(RUNC_GOTAGS)" -ldflags "$(RUNC_GLDFLAGS)" . -endef - -define RUNC_INSTALL_TARGET_CMDS - $(INSTALL) -D -m 0755 $(@D)/bin/runc $(TARGET_DIR)/usr/bin/runc -endef - -$(eval $(generic-package)) +$(eval $(golang-package))
Signature · 1 line
2.7.4
PATCH v2 5/7 package/docker-containerd: converting to golang infrastructure
In reply to Angelo CompagnucciFrom: Angelo Compagnucci <[email protected]>
This patch converts the docker-containerd package to the new golang infrastructure.
---
Changes:
v1 -> v2: Updated GO_BIN definition
package/docker-containerd/docker-containerd.mk | 37 +++++++++++--------------- 1 file changed, 15 insertions(+), 22 deletions(-)
package/docker-containerd/docker-containerd.mk +15 -22
@@ -9,39 +9,32 @@ DOCKER_CONTAINERD_SITE = $(call github,docker,containerd,$(DOCKER_CONTAINERD_VER DOCKER_CONTAINERD_LICENSE = Apache-2.0 DOCKER_CONTAINERD_LICENSE_FILES = LICENSE.code -DOCKER_CONTAINERD_DEPENDENCIES = host-go +DOCKER_CONTAINERD_GOPATH = vendor -DOCKER_CONTAINERD_GOPATH = "$(@D)/vendor" -DOCKER_CONTAINERD_MAKE_ENV = $(HOST_GO_TARGET_ENV) \ - CGO_ENABLED=1 \ - GOBIN="$(@D)/bin" \ - GOPATH="$(DOCKER_CONTAINERD_GOPATH)" - -DOCKER_CONTAINERD_GLDFLAGS = \ +DOCKER_CONTAINERD_GO_LDFLAGS = \ -X github.com/docker/containerd.GitCommit=$(DOCKER_CONTAINERD_VERSION) -ifeq ($(BR2_STATIC_LIBS),y) -DOCKER_CONTAINERD_GLDFLAGS += -extldflags '-static' -endif - -define DOCKER_CONTAINERD_CONFIGURE_CMDS - mkdir -p $(DOCKER_CONTAINERD_GOPATH)/src/github.com/docker - ln -s $(@D) $(DOCKER_CONTAINERD_GOPATH)/src/github.com/docker/containerd - mkdir -p $(DOCKER_CONTAINERD_GOPATH)/src/github.com/opencontainers - ln -s $(RUNC_SRCDIR) $(DOCKER_CONTAINERD_GOPATH)/src/github.com/opencontainers/runc +define DOCKER_CONTAINERD_LINK_DIR + ln -sf $(@D) $(@D)/$(DOCKER_CONTAINERD_GOPATH)/src/github.com/docker/containerd + mkdir -p $(@D)/$(DOCKER_CONTAINERD_GOPATH)/src/github.com/opencontainers + ln -s $(RUNC_SRCDIR) $(@D)/$(DOCKER_CONTAINERD_GOPATH)/src/github.com/opencontainers/runc endef +DOCKER_CONTAINERD_POST_CONFIGURE_HOOKS += DOCKER_CONTAINERD_LINK_DIR + define DOCKER_CONTAINERD_BUILD_CMDS $(foreach d,ctr containerd containerd-shim,\ - cd $(@D); $(DOCKER_CONTAINERD_MAKE_ENV) $(HOST_DIR)/bin/go build \ - -v -o $(@D)/bin/$(d) -ldflags "$(DOCKER_CONTAINERD_GLDFLAGS)" ./$(d)$(sep)) + cd $(@D)/$(DOCKER_CONTAINERD_GOPATH)/src/github.com/docker/containerd; \ + $(DOCKER_CONTAINERD_GO_ENV) \ + $(GO_BIN) install -v \ + $(DOCKER_CONTAINERD_BUILD_OPTS) ./$(d)$(sep)) endef define DOCKER_CONTAINERD_INSTALL_TARGET_CMDS ln -fs runc $(TARGET_DIR)/usr/bin/docker-runc - $(INSTALL) -D -m 0755 $(@D)/bin/containerd $(TARGET_DIR)/usr/bin/docker-containerd - $(INSTALL) -D -m 0755 $(@D)/bin/containerd-shim $(TARGET_DIR)/usr/bin/containerd-shim + $(INSTALL) -D -m 0755 $(@D)/$(DOCKER_CONTAINERD_BINDIR)/containerd $(TARGET_DIR)/usr/bin/docker-containerd + $(INSTALL) -D -m 0755 $(@D)/$(DOCKER_CONTAINERD_BINDIR)/containerd-shim $(TARGET_DIR)/usr/bin/containerd-shim ln -fs containerd-shim $(TARGET_DIR)/usr/bin/docker-containerd-shim endef -$(eval $(generic-package)) +$(eval $(golang-package))
Signature · 1 line
2.7.4
PATCH v2 6/7 package/docker-engine: converting to golang infrastructure
In reply to Angelo CompagnucciThis patch converts the docker-engine package to the new golang infrastructure.
--- package/docker-engine/docker-engine.mk | 53 +++++++++++----------------------- 1 file changed, 17 insertions(+), 36 deletions(-)
package/docker-engine/docker-engine.mk +17 -36
@@ -13,70 +13,53 @@ DOCKER_ENGINE_LICENSE_FILES = LICENSE DOCKER_ENGINE_DEPENDENCIES = host-go host-pkgconf -DOCKER_ENGINE_GOPATH = "$(@D)/gopath" -DOCKER_ENGINE_MAKE_ENV = $(HOST_GO_TARGET_ENV) \ - CGO_ENABLED=1 \ - CGO_NO_EMULATION=1 \ - GOBIN="$(@D)/bin" \ - GOPATH="$(DOCKER_ENGINE_GOPATH)" \ - PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \ - $(TARGET_MAKE_ENV) - -DOCKER_ENGINE_GLDFLAGS = \ +DOCKER_ENGINE_GO_LDFLAGS = \ -X main.GitCommit=$(DOCKER_ENGINE_VERSION) \ -X main.Version=$(DOCKER_ENGINE_VERSION) -ifeq ($(BR2_STATIC_LIBS),y) -DOCKER_ENGINE_GLDFLAGS += -extldflags '-static' -else -ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_STATIC_CLIENT),y) -DOCKER_ENGINE_GLDFLAGS_DOCKER += -extldflags '-static' -endif -endif - -DOCKER_ENGINE_BUILD_TAGS = cgo exclude_graphdriver_zfs autogen +DOCKER_ENGINE_GO_TAGS = cgo exclude_graphdriver_zfs autogen DOCKER_ENGINE_BUILD_TARGETS = docker ifeq ($(BR2_PACKAGE_LIBSECCOMP),y) -DOCKER_ENGINE_BUILD_TAGS += seccomp +DOCKER_ENGINE_GO_TAGS += seccomp DOCKER_ENGINE_DEPENDENCIES += libseccomp endif ifeq ($(BR2_INIT_SYSTEMD),y) -DOCKER_ENGINE_BUILD_TAGS += journald +DOCKER_ENGINE_GO_TAGS += journald DOCKER_ENGINE_DEPENDENCIES += systemd endif ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_DAEMON),y) -DOCKER_ENGINE_BUILD_TAGS += daemon +DOCKER_ENGINE_GO_TAGS += daemon DOCKER_ENGINE_BUILD_TARGETS += dockerd endif ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_EXPERIMENTAL),y) -DOCKER_ENGINE_BUILD_TAGS += experimental +DOCKER_ENGINE_GO_TAGS += experimental endif ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_DRIVER_BTRFS),y) DOCKER_ENGINE_DEPENDENCIES += btrfs-progs else -DOCKER_ENGINE_BUILD_TAGS += exclude_graphdriver_btrfs +DOCKER_ENGINE_GO_TAGS += exclude_graphdriver_btrfs endif ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_DRIVER_DEVICEMAPPER),y) DOCKER_ENGINE_DEPENDENCIES += lvm2 else -DOCKER_ENGINE_BUILD_TAGS += exclude_graphdriver_devicemapper +DOCKER_ENGINE_GO_TAGS += exclude_graphdriver_devicemapper endif ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_DRIVER_VFS),y) DOCKER_ENGINE_DEPENDENCIES += gvfs else -DOCKER_ENGINE_BUILD_TAGS += exclude_graphdriver_vfs +DOCKER_ENGINE_GO_TAGS += exclude_graphdriver_vfs endif define DOCKER_ENGINE_CONFIGURE_CMDS - mkdir -p $(DOCKER_ENGINE_GOPATH)/src/github.com/docker - ln -fs $(@D) $(DOCKER_ENGINE_GOPATH)/src/github.com/docker/docker + mkdir -p $(@D)/$(DOCKER_ENGINE_GOPATH)/src/github.com/docker + ln -s $(@D) $(@D)/$(DOCKER_ENGINE_GOPATH)/src/github.com/docker/docker cd $(@D) && \ GITCOMMIT="$$(echo $(DOCKER_ENGINE_COMMIT) | head -c7)" \ BUILDTIME="$$(date)" \
@@ -105,20 +88,18 @@ endif define DOCKER_ENGINE_BUILD_CMDS $(foreach target,$(DOCKER_ENGINE_BUILD_TARGETS), \ - cd $(@D)/gopath/src/github.com/docker/docker; \ - $(DOCKER_ENGINE_MAKE_ENV) \ - $(HOST_DIR)/bin/go build -v \ - -o $(@D)/bin/$(target) \ - -tags "$(DOCKER_ENGINE_BUILD_TAGS)" \ - -ldflags "$(DOCKER_ENGINE_GLDFLAGS) $(DOCKER_ENGINE_GLDFLAGS_$(call UPPERCASE,$(target)))" \ + cd $(DOCKER_ENGINE_SRC_PATH); \ + $(DOCKER_ENGINE_GO_ENV) \ + $(GO_BIN) install -v \ + $(DOCKER_ENGINE_BUILD_OPTS) \ github.com/docker/docker/cmd/$(target) ) endef define DOCKER_ENGINE_INSTALL_TARGET_CMDS $(foreach target,$(DOCKER_ENGINE_BUILD_TARGETS), \ - $(INSTALL) -D -m 0755 $(@D)/bin/$(target) $(TARGET_DIR)/usr/bin/$(target) + $(INSTALL) -D -m 0755 $(@D)/$(DOCKER_ENGINE_BINDIR)/$(target) $(TARGET_DIR)/usr/bin/$(target) ) endef -$(eval $(generic-package)) +$(eval $(golang-package))
Signature · 1 line
2.7.4
PATCH v2 7/7 package/mender: new package
In reply to Angelo CompagnucciFrom: Angelo Compagnucci <[email protected]>
This patch add mender, an open source over-the-air (OTA) software updater for embedded Linux devices.
--- package/Config.in | 1 + package/mender/Config.in | 14 +++++++++ package/mender/mender-device-identity | 52 ++++++++++++++++++++++++++++++++ package/mender/mender-inventory-hostinfo | 21 +++++++++++++ package/mender/mender-inventory-network | 47 +++++++++++++++++++++++++++++ package/mender/mender.conf | 14 +++++++++ package/mender/mender.hash | 2 ++ package/mender/mender.mk | 31 +++++++++++++++++++ package/mender/mender.service | 15 +++++++++ package/mender/server.crt | 22 ++++++++++++++ package/mender/tenant.conf | 0 11 files changed, 219 insertions(+) create mode 100644 package/mender/Config.in create mode 100644 package/mender/mender-device-identity create mode 100644 package/mender/mender-inventory-hostinfo create mode 100644 package/mender/mender-inventory-network create mode 100644 package/mender/mender.conf create mode 100644 package/mender/mender.hash create mode 100644 package/mender/mender.mk create mode 100644 package/mender/mender.service create mode 100644 package/mender/server.crt create mode 100644 package/mender/tenant.conf
package/Config.in +1 -0
@@ -1941,6 +1941,7 @@ menu "System tools" source "package/kvmtool/Config.in" source "package/libostree/Config.in" source "package/lxc/Config.in" + source "package/mender/Config.in" source "package/monit/Config.in" source "package/ncdu/Config.in" source "package/numactl/Config.in"
package/mender/Config.in new file +14 -0
@@ -0,0 +1,14 @@ +config BR2_PACKAGE_MENDER + bool "mender" + depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INIT_SYSTEMD + + help + Mender is an open source over-the-air (OTA) software updater for + embedded Linux devices. Mender comprises a client running at the + embedded device, as well as a server that manages deployments + across many devices. + + https://github.com/mendersoftware/mender
package/mender/mender-device-identity new file +52 -0
52 lines not on this page · raw message
package/mender/mender-inventory-hostinfo new file +21 -0
@@ -0,0 +1,21 @@ +#!/bin/sh +# +# The example script collects information about current host +# + +set -ue + +LC_ALL=C +export LC_ALL + +grep 'model name' /proc/cpuinfo | uniq | awk -F': ' ' + // { printf("cpu_model=%s\n", $2);} +' +echo "kernel=$(cat /proc/version)" + +cat /proc/meminfo | awk ' +/MemTotal/ {printf("mem_total_kB=%d\n", $2)} +' + +echo "hostname=$(cat /etc/hostname)" +
package/mender/mender-inventory-network new file +47 -0
47 lines not on this page · raw message
package/mender/mender.conf new file +14 -0
@@ -0,0 +1,14 @@ +{ + "ClientProtocol": "http", + "HttpsClient": { + "Certificate": "", + "Key": "" + }, + "RootfsPartA": "@MENDER_ROOTFS_PART_A@", + "RootfsPartB": "@MENDER_ROOTFS_PART_B@", + "UpdatePollIntervalSeconds": @MENDER_UPDATE_POLL_INTERVAL_SECONDS@, + "InventoryPollIntervalSeconds": @MENDER_INVENTORY_POLL_INTERVAL_SECONDS@, + "RetryPollIntervalSeconds": @MENDER_RETRY_POLL_INTERVAL_SECONDS@, + "ServerURL": "@MENDER_SERVER_URL@", + "ServerCertificate": "@MENDER_CERT_LOCATION@" +}
package/mender/mender.hash new file +2 -0
@@ -0,0 +1,2 @@ +# Locally computed: +sha256 a2fd103185431946c3455fef0c08909d13413a09638463266e5b6889df8163c5 mender-1.2.1.tar.gz
package/mender/mender.mk new file +31 -0
@@ -0,0 +1,31 @@ +################################################################################ +# +# mender +# +################################################################################ + +MENDER_VERSION = 1.2.1 +MENDER_SOURCE = mender-$(MENDER_VERSION).tar.gz +MENDER_SITE = $(call github,mendersoftware,mender,$(MENDER_VERSION)) + +define MENDER_INSTALL_TARGET_CMDS + $(INSTALL) -dm 0755 $(TARGET_DIR)/etc/mender/ + $(INSTALL) -dm 0755 $(TARGET_DIR)/var/share/mender/identity/ + $(INSTALL) -dm 0755 $(TARGET_DIR)/var/share/mender/inventory/ + $(INSTALL) -D -m 0644 package/mender/mender.conf \ + $(TARGET_DIR)/etc/mender/mender.conf + $(INSTALL) -D -m 0644 package/mender/tenant.conf \ + $(TARGET_DIR)/etc/mender/mender.conf + $(INSTALL) -D -m 0644 package/mender/server.crt \ + $(TARGET_DIR)/etc/mender/server.crt + $(INSTALL) -D -m 0755 package/mender/mender-device-identity \ + $(TARGET_DIR)/var/share/mender/identity/mender-device-identity + $(INSTALL) -D -m 0755 package/mender/mender-inventory-network \ + $(TARGET_DIR)/var/share/mender/inventory/mender-inventory-network + $(INSTALL) -D -m 0755 package/mender/mender-inventory-hostinfo \ + $(TARGET_DIR)/var/share/mender/inventory/mender-inventory-hostinfo + $(INSTALL) -D -m 0644 package/mender/mender.service \ + $(TARGET_DIR)/usr/lib/systemd/system/mender.service +endef + +$(eval $(golang-package))
package/mender/mender.service new file +15 -0
@@ -0,0 +1,15 @@ +[Unit] +Description=Mender OTA update service +After=systemd-resolved.service + +[Service] +Type=idle +User=root +Group=root +ExecStartPre=/bin/mkdir -p -m 0700 /data/mender +ExecStartPre=/bin/ln -sf /etc/mender/tenant.conf /var/lib/mender/authtentoken +ExecStart=/usr/bin/mender -daemon +Restart=on-abort + +[Install] +WantedBy=multi-user.target
package/mender/server.crt new file +22 -0
@@ -0,0 +1,22 @@ +-----BEGIN CERTIFICATE----- +MIIBfTCCASOgAwIBAgIJAJOS76a0qWuZMAoGCCqGSM49BAMCMBsxGTAXBgNVBAMM +EGRvY2tlci5tZW5kZXIuaW8wHhcNMTYxMjE0MTk1MjQ2WhcNMjYxMjEyMTk1MjQ2 +WjAbMRkwFwYDVQQDDBBkb2NrZXIubWVuZGVyLmlvMFkwEwYHKoZIzj0CAQYIKoZI +zj0DAQcDQgAE7AVYis6MWGPGQYU1/tlLEnskRifDIhvkRb8Y4nQPekRkLkiBYYT3 +iJ46wHrnejbHaLstU9GRdKWOmOuU6HGdO6NQME4wHQYDVR0OBBYEFGOIU4q++Vz8 +9HuT1jg9V+wFeJcyMB8GA1UdIwQYMBaAFGOIU4q++Vz89HuT1jg9V+wFeJcyMAwG +A1UdEwQFMAMBAf8wCgYIKoZIzj0EAwIDSAAwRQIhAPLnEeWPNeN7eDCEYRitBfyO +X1yf2kzOm4ohBE5GY9gzAiBCq7HOSkzQDkelmQCCCpGXf/UwYNgQJjSoeGfk0j1a +TQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIBhDCCASmgAwIBAgIJALQrf4QDot4IMAoGCCqGSM49BAMCMB4xHDAaBgNVBAMM +E3MzLmRvY2tlci5tZW5kZXIuaW8wHhcNMTYxMjE0MTk1MjQ2WhcNMjYxMjEyMTk1 +MjQ2WjAeMRwwGgYDVQQDDBNzMy5kb2NrZXIubWVuZGVyLmlvMFkwEwYHKoZIzj0C +AQYIKoZIzj0DAQcDQgAEEc/Y3T+l3DvINePkpvVZORMIdHVs29jgsl48ia7z/NRX +HlKtKxVGJyFN5Y7sBZeLgBYH3F4Bo3KfmxI7ad0tI6NQME4wHQYDVR0OBBYEFIUm +cip00QZYpe4ULflbGNJan+Y9MB8GA1UdIwQYMBaAFIUmcip00QZYpe4ULflbGNJa +n+Y9MAwGA1UdEwQFMAMBAf8wCgYIKoZIzj0EAwIDSQAwRgIhANHij9VZBDHOUPaC +pFiagnWnYL2HBR72W1xTKQbrLLTXAiEAvpwA4HzSnGmLd3010+jqQuMRHArN5WaX +h0fy7niBbIQ= +-----END CERTIFICATE-----
package/mender/tenant.conf new file +0 -0
Signature · 1 line
2.7.4