kumquat-buildroot/package/mender/mender.mk
Adam Duskett 48c127aea1 package/mender: add support for update modules
Mender has support for performing other types of updates other than
just overwriting the rootfs partition that isn't currently in use on
the target.

Some of the default provided modules provide support for:
  - Updating a docker container.
  - Running a script.
  - Installing an RPM.
  - Overwriting a directory.
  - Updating a single-file.

The single-file update module is used by upstream for onboarding a new
device to a server, and this fails with Buildroot devices because the
modules are currently not installed.

Install the directory, script, and single-file modules by default, and
install the docker or rpm script if their respective packages are
selected.

Signed-off-by: Adam Duskett <Aduskett@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2020-07-15 23:46:40 +02:00

90 lines
3.0 KiB
Makefile

################################################################################
#
# mender
#
################################################################################
MENDER_VERSION = 2.3.0
MENDER_SITE = https://github.com/mendersoftware/mender/archive
MENDER_SOURCE = $(MENDER_VERSION).tar.gz
MENDER_LICENSE = Apache-2.0, BSD-2-Clause, BSD-3-Clause, ISC, MIT, OLDAP-2.8
# Vendor license paths generated with:
# awk '{print $2}' LIC_FILES_CHKSUM.sha256 | grep vendor
MENDER_LICENSE_FILES = \
LICENSE \
LIC_FILES_CHKSUM.sha256 \
vendor/github.com/mendersoftware/mendertesting/LICENSE \
vendor/github.com/mendersoftware/mender-artifact/LICENSE \
vendor/github.com/pkg/errors/LICENSE \
vendor/github.com/pmezard/go-difflib/LICENSE \
vendor/golang.org/x/crypto/LICENSE \
vendor/golang.org/x/sys/LICENSE \
vendor/golang.org/x/net/LICENSE \
vendor/github.com/bmatsuo/lmdb-go/LICENSE.md \
vendor/golang.org/x/text/LICENSE \
vendor/github.com/remyoudompheng/go-liblzma/LICENSE \
vendor/github.com/davecgh/go-spew/LICENSE \
vendor/github.com/sirupsen/logrus/LICENSE \
vendor/github.com/stretchr/testify/LICENSE \
vendor/github.com/stretchr/testify/LICENCE.txt \
vendor/github.com/stretchr/objx/LICENSE.md \
vendor/github.com/ungerik/go-sysfs/LICENSE \
vendor/github.com/urfave/cli/LICENSE \
vendor/github.com/bmatsuo/lmdb-go/LICENSE.mdb.md
MENDER_DEPENDENCIES = xz
MENDER_LDFLAGS = -X main.Version=$(MENDER_VERSION)
MENDER_UPDATE_MODULES_FILES = \
directory \
script \
single-file
$(if $(BR2_PACKAGE_DOCKER_CLI),docker) \
$(if $(BR2_PACKAGE_RPM),rpm)
define MENDER_INSTALL_CONFIG_FILES
$(INSTALL) -d -m 755 $(TARGET_DIR)/etc/mender/scripts
echo -n "3" > $(TARGET_DIR)/etc/mender/scripts/version
$(INSTALL) -D -m 0644 $(MENDER_PKGDIR)/mender.conf \
$(TARGET_DIR)/etc/mender/mender.conf
$(INSTALL) -D -m 0644 $(MENDER_PKGDIR)/server.crt \
$(TARGET_DIR)/etc/mender/server.crt
$(INSTALL) -D -m 0755 $(@D)/support/mender-device-identity \
$(TARGET_DIR)/usr/share/mender/identity/mender-device-identity
$(foreach f,hostinfo network os rootfs-type, \
$(INSTALL) -D -m 0755 $(@D)/support/mender-inventory-$(f) \
$(TARGET_DIR)/usr/share/mender/inventory/mender-inventory-$(f)
)
$(INSTALL) -D -m 0755 package/mender/artifact_info \
$(TARGET_DIR)/etc/mender/artifact_info
$(INSTALL) -D -m 0755 package/mender/device_type \
$(TARGET_DIR)/etc/mender/device_type
mkdir -p $(TARGET_DIR)/var/lib
ln -snf /var/run/mender $(TARGET_DIR)/var/lib/mender
$(foreach f,$(MENDER_UPDATE_MODULES_FILES), \
$(INSTALL) -D -m 0755 $(@D)/support/modules/$(notdir $(f)) \
$(TARGET_DIR)/usr/share/mender/modules/v3/$(notdir $(f))
)
endef
MENDER_POST_INSTALL_TARGET_HOOKS += MENDER_INSTALL_CONFIG_FILES
define MENDER_INSTALL_INIT_SYSTEMD
$(INSTALL) -D -m 0644 $(MENDER_PKGDIR)/mender.service \
$(TARGET_DIR)/usr/lib/systemd/system/mender.service
endef
define MENDER_INSTALL_INIT_SYSV
$(INSTALL) -D -m 755 package/mender/S42mender \
$(TARGET_DIR)/etc/init.d/S42mender
endef
$(eval $(golang-package))