package/mender-update-modules: new package
Contains community supported Update Modules. An Update Module is an extension to the Mender client for supporting a new type of software update, such as a package manager, container, bootloader or even updates of nearby microcontrollers. An Update Module can be tailored to a specific device or environment (e.g. update a proprietary bootloader), or be more general-purpose (e.g. install a set of .rpm packages.). Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
This commit is contained in:
committed by
Thomas Petazzoni
parent
8c4a96e52f
commit
a474642fdc
@@ -43,6 +43,7 @@ F: package/flutter-pi/
|
||||
F: package/flutter-sdk-bin/
|
||||
F: package/ivi-homescreen/
|
||||
F: package/libutempter/
|
||||
F: package/mender-update-modules/
|
||||
F: package/tllist/
|
||||
F: support/testing/tests/package/test_flutter.py
|
||||
|
||||
|
||||
@@ -2881,6 +2881,7 @@ menu "System tools"
|
||||
source "package/mender/Config.in"
|
||||
source "package/mender-connect/Config.in"
|
||||
source "package/mender-grubenv/Config.in"
|
||||
source "package/mender-update-modules/Config.in"
|
||||
source "package/mfoc/Config.in"
|
||||
source "package/moby-buildkit/Config.in"
|
||||
source "package/mokutil/Config.in"
|
||||
|
||||
183
package/mender-update-modules/Config.in
Normal file
183
package/mender-update-modules/Config.in
Normal file
@@ -0,0 +1,183 @@
|
||||
config BR2_PACKAGE_MENDER_UPDATE_MODULES
|
||||
bool "mender-update-modules"
|
||||
depends on BR2_PACKAGE_HOST_GO_HOST_ARCH_SUPPORTS
|
||||
depends on BR2_PACKAGE_MENDER
|
||||
select BR2_PACKAGE_HOST_MENDER_ARTIFACT
|
||||
help
|
||||
community supported Update Modules. An Update Module is an
|
||||
extension to the Mender client for supporting a new type of
|
||||
software update, such as a package manager, container,
|
||||
bootloader or even updates of nearby microcontrollers.
|
||||
An Update Module can be tailored to a specific device or
|
||||
environment (e.g. update a proprietary bootloader), or be
|
||||
more general-purpose (e.g. install a set of .deb packages.).
|
||||
|
||||
https://github.com/mendersoftware/mender-update-modules
|
||||
|
||||
if BR2_PACKAGE_MENDER_UPDATE_MODULES
|
||||
|
||||
config BR2_PACKAGE_MENDER_UPDATE_MODULES_DFU
|
||||
bool "DFU"
|
||||
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
|
||||
select BR2_PACKAGE_DFU_UTIL
|
||||
help
|
||||
The DFU Update Module is able to update peripheral devices
|
||||
connected to the device running Mender.
|
||||
Example use-cases:
|
||||
- Deploy firmware updates to peripheral devices using the
|
||||
USB Device Firmware Update (DFU) protocol
|
||||
|
||||
https://github.com/mendersoftware/mender-update-modules/tree/master/dfu
|
||||
|
||||
config BR2_PACKAGE_MENDER_UPDATE_MODULES_DIR_OVERLAY
|
||||
bool "dir-overlay"
|
||||
help
|
||||
The Directory Overlay Update Module installs a user defined
|
||||
file tree structure into a given destination directory in the
|
||||
target.
|
||||
|
||||
Before the deploy into the destination folder on the device,
|
||||
the Update Module will take a backup copy of the current
|
||||
contents, allowing restore of it using the rollback mechanism
|
||||
of the Mender client if something goes wrong. The Update
|
||||
Module will also delete the current installed content that was
|
||||
previously installed using the same module, this means that
|
||||
each deployment is self contained and there is no residues
|
||||
left on the system from the previous deployment.
|
||||
|
||||
Example use-cases:
|
||||
- Deploy root filesystem overlays
|
||||
|
||||
https://github.com/mendersoftware/mender-update-modules/tree/master/dir-overlay
|
||||
|
||||
config BR2_PACKAGE_MENDER_UPDATE_MODULES_DIRTY
|
||||
bool "dirty"
|
||||
help
|
||||
The dirty Update Module: modify your device state without
|
||||
installing an artifact
|
||||
Example use-cases:
|
||||
- You have a specific action on the device that you want to
|
||||
run multiple times
|
||||
|
||||
- You want to avoid re-creating artifacts just for the sake
|
||||
of a new version/name
|
||||
|
||||
- You don't want the artifact the show up in the list of
|
||||
installed artifacts
|
||||
|
||||
- The module will always fail the update process, which
|
||||
means it can never be marked as installed. So it can be
|
||||
attempted any number of times without having to recreate
|
||||
newly versioned artifacts.
|
||||
|
||||
https://github.com/mendersoftware/mender-update-modules/tree/master/dirty
|
||||
|
||||
config BR2_PACKAGE_MENDER_UPDATE_MODULES_IPK
|
||||
bool "ipk"
|
||||
select BR2_PACKAGE_OPKG
|
||||
help
|
||||
The IPK Update Module allows opkg-based packages to be
|
||||
installed on a device
|
||||
|
||||
Example use-cases:
|
||||
- Deploy any ipk package
|
||||
|
||||
https://github.com/mendersoftware/mender-update-modules/tree/master/ipk
|
||||
|
||||
config BR2_PACKAGE_MENDER_UPDATE_MODULES_PODMAN
|
||||
bool "podman"
|
||||
depends on BR2_USE_MMU # podman
|
||||
depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS # podman
|
||||
depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # podman
|
||||
depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # podman
|
||||
depends on BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS # podman
|
||||
depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 # podman
|
||||
depends on BR2_TOOLCHAIN_HAS_THREADS # podman
|
||||
depends on BR2_USE_WCHAR # podman
|
||||
select BR2_PACKAGE_JQ # runtime
|
||||
select BR2_PACKAGE_PODMAN
|
||||
help
|
||||
The Podman Update Module handles the Podman container images
|
||||
that shall be running on the target device. A deployment with
|
||||
this module will stop all currently running Podman containers
|
||||
on the device and start new containers based on the list of
|
||||
Podman images provided in the Mender Artifact.
|
||||
|
||||
In case of any unforeseen error during the process, the module
|
||||
will trigger the rollback mechanism of the Mender client to
|
||||
restore the previously running Podman containers.
|
||||
|
||||
https://github.com/mendersoftware/mender-update-modules/tree/master/podman
|
||||
|
||||
comment "podman support needs a toolchain w/ headers >= 3.17, threads, wchar"
|
||||
depends on BR2_USE_MMU
|
||||
depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS
|
||||
depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS
|
||||
depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS
|
||||
depends on BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS
|
||||
depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 \
|
||||
|| !BR2_TOOLCHAIN_HAS_THREADS \
|
||||
|| !BR2_USE_WCHAR
|
||||
|
||||
config BR2_PACKAGE_MENDER_UPDATE_MODULES_REBOOT
|
||||
bool "reboot"
|
||||
help
|
||||
The reboot Update Module: reboot your device remotely.
|
||||
|
||||
Example use-cases:
|
||||
- Something went wrong and you have to reboot your device
|
||||
remotely, and all access to the device you have is Mender.
|
||||
|
||||
https://github.com/mendersoftware/mender-update-modules/tree/master/reboot
|
||||
|
||||
config BR2_PACKAGE_MENDER_UPDATE_MODULES_ROOTFS_VERSION_CHECK
|
||||
bool "rootfs version check"
|
||||
depends on BR2_TOOLCHAIN_HAS_THREADS # python3
|
||||
depends on !BR2_STATIC_LIBS # python3
|
||||
select BR2_PACKAGE_PYTHON3 # runtime
|
||||
help
|
||||
The rootfs-version-check Update Module implements a full image
|
||||
update with additional checks to protect against replay
|
||||
attacks.
|
||||
|
||||
This is functionally equivalent to the built-in full image
|
||||
update with an extra check to ensure the artifact name
|
||||
follows a specific format and that installing "older" images
|
||||
is rejected. For this reference implementaton, we simply use
|
||||
a numeric identifier and ensure that it is larger than the
|
||||
version installed. For actual device fleet use, you may need
|
||||
to customize this based on your artifact naming scheme.
|
||||
|
||||
Example use-cases:
|
||||
- Deploy root filesystem updates and ensure only newer
|
||||
artifacts are installed
|
||||
|
||||
https://github.com/mendersoftware/mender-update-modules/tree/master/rootfs-version-check
|
||||
|
||||
comment "rootfs version check needs a toolchain w/ threads"
|
||||
depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS
|
||||
|
||||
config BR2_PACKAGE_MENDER_UPDATE_MODULES_SWU
|
||||
bool "swupdate"
|
||||
depends on !BR2_STATIC_LIBS
|
||||
depends on BR2_TOOLCHAIN_HAS_SYNC_4 # swupdate
|
||||
select BR2_PACKAGE_JQ # runtime
|
||||
select BR2_PACKAGE_SWUPDATE
|
||||
help
|
||||
The SWU Update Module allows deploying an SWUpdate-based
|
||||
artifact to the device.
|
||||
|
||||
Example use-cases:
|
||||
- Extend an existing platform using SWUpdate with OTA.
|
||||
|
||||
https://github.com/mendersoftware/mender-update-modules/tree/master/swu
|
||||
|
||||
comment "swupdate support needs a toolchain w/ dynamic library"
|
||||
depends on BR2_TOOLCHAIN_HAS_SYNC_4
|
||||
depends on BR2_STATIC_LIBS
|
||||
|
||||
endif
|
||||
|
||||
comment "mender-update-modules needs mender"
|
||||
depends on BR2_PACKAGE_HOST_GO_HOST_ARCH_SUPPORTS
|
||||
depends on !BR2_PACKAGE_MENDER
|
||||
3
package/mender-update-modules/mender-update-modules.hash
Normal file
3
package/mender-update-modules/mender-update-modules.hash
Normal file
@@ -0,0 +1,3 @@
|
||||
# Locally calculated
|
||||
sha256 4846f39abc254ad2ae2a9f3d5479b064bc1bae5034b9d276ebdb09d8c60f4541 mender-update-modules-d8c4683e6660af6c65069e10ee4b8ee50ec1af46.tar.gz
|
||||
sha256 d0f406b04e7901e6b4076bdf5fd20f9d7f04fc41681069fd8954413ac6295688 LICENSE
|
||||
67
package/mender-update-modules/mender-update-modules.mk
Normal file
67
package/mender-update-modules/mender-update-modules.mk
Normal file
@@ -0,0 +1,67 @@
|
||||
################################################################################
|
||||
#
|
||||
# mender-update-modules
|
||||
#
|
||||
################################################################################
|
||||
|
||||
MENDER_UPDATE_MODULES_VERSION = d8c4683e6660af6c65069e10ee4b8ee50ec1af46
|
||||
MENDER_UPDATE_MODULES_SITE = $(call github,mendersoftware,mender-update-modules,$(MENDER_UPDATE_MODULES_VERSION))
|
||||
MENDER_UPDATE_MODULES_LICENSE = Apache-2.0
|
||||
MENDER_UPDATE_MODULES_LICENSE_FILES = LICENSE
|
||||
MENDER_UPDATE_MODULES_DEPENDENCIES = host-mender-artifact mender
|
||||
|
||||
ifeq ($(BR2_PACKAGE_MENDER_UPDATE_MODULES_DFU),y)
|
||||
MENDER_UPDATE_MODULES_MODULES += dfu
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_MENDER_UPDATE_MODULES_DIR_OVERLAY),y)
|
||||
MENDER_UPDATE_MODULES_MODULES += dir-overlay
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_MENDER_UPDATE_MODULES_DIRTY),y)
|
||||
MENDER_UPDATE_MODULES_MODULES += dirty
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_MENDER_UPDATE_MODULES_IPK),y)
|
||||
MENDER_UPDATE_MODULES_MODULES += ipk
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_MENDER_UPDATE_MODULES_PODMAN),y)
|
||||
MENDER_UPDATE_MODULES_MODULES += podman
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_MENDER_UPDATE_MODULES_REBOOT),y)
|
||||
MENDER_UPDATE_MODULES_MODULES += reboot
|
||||
define MENDER_UPDATE_MODULES_INSTALL_MENDER_REBOOT_GEN
|
||||
$(INSTALL) -D -m 0755 $(@D)/reboot/reboot-gen \
|
||||
$(HOST_DIR)/bin/reboot-artifact-gen
|
||||
endef
|
||||
MENDER_UPDATE_MODULES_POST_INSTALL_TARGET_HOOKS += MENDER_UPDATE_MODULES_INSTALL_MENDER_REBOOT_GEN
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_MENDER_UPDATE_MODULES_ROOTFS_VERSION_CHECK),y)
|
||||
MENDER_UPDATE_MODULES_DEPENDENCIES += python3
|
||||
MENDER_UPDATE_MODULES_MODULES += rootfs-version-check
|
||||
define MENDER_UPDATE_MODULES_INSTALL_MENDER_COMPARE_VERSIONS
|
||||
$(INSTALL) -D -m 0755 $(@D)/rootfs-version-check/mender-compare-versions \
|
||||
$(TARGET_DIR)/usr/bin/mender-compare-versions
|
||||
endef
|
||||
MENDER_UPDATE_MODULES_POST_INSTALL_TARGET_HOOKS += MENDER_UPDATE_MODULES_INSTALL_MENDER_COMPARE_VERSIONS
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_MENDER_UPDATE_MODULES_SWU),y)
|
||||
MENDER_UPDATE_MODULES_MODULES += swu
|
||||
endif
|
||||
|
||||
define MENDER_UPDATE_MODULES_INSTALL_TARGET_CMDS
|
||||
$(foreach f,$(MENDER_UPDATE_MODULES_MODULES), \
|
||||
$(INSTALL) -D -m 0775 $(@D)/$(f)/module/$(f) \
|
||||
$(TARGET_DIR)/usr/share/mender/modules/v3/$(f); \
|
||||
if [ -d $(@D)/$(f)/module-artifact-gen ]; then \
|
||||
$(INSTALL) -D -m 0775 $(@D)/$(f)/module-artifact-gen/$(f)-artifact-gen \
|
||||
$(HOST_DIR)/bin/$(f)-artifact-gen; \
|
||||
fi; \
|
||||
)
|
||||
endef
|
||||
|
||||
$(eval $(generic-package))
|
||||
Reference in New Issue
Block a user