Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH v3 1/6] package/mender-update-modules: add banner module
@ 2026-10-28 11:33 Adam Duskett
  2026-10-28 11:33 ` [Buildroot] [PATCH v3 2/6] board/mender/x86_64/readme.txt: fix documentation Adam Duskett
                   ` (5 more replies)
  0 siblings, 6 replies; 9+ messages in thread
From: Adam Duskett @ 2026-10-28 11:33 UTC (permalink / raw)
  To: buildroot; +Cc: Adam Duskett, Angelo Compagnucci

Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
---
v2 -> v3: Fixed github link [Thomas]

 package/mender-update-modules/Config.in              | 12 ++++++++++++
 .../mender-update-modules/mender-update-modules.mk   |  4 ++++
 2 files changed, 16 insertions(+)

diff --git a/package/mender-update-modules/Config.in b/package/mender-update-modules/Config.in
index 0c00ce2933..01439b30a4 100644
--- a/package/mender-update-modules/Config.in
+++ b/package/mender-update-modules/Config.in
@@ -16,6 +16,18 @@ config BR2_PACKAGE_MENDER_UPDATE_MODULES
 
 if BR2_PACKAGE_MENDER_UPDATE_MODULES
 
+config BR2_PACKAGE_MENDER_UPDATE_MODULES_BANNER
+	bool "banner"
+	help
+	  The Banner Update Module manages the system's message of
+	  the day (MOTD) displayed when users log in via SSH or
+	  console. It uses metadata-driven updates to change the
+	  banner text without requiring any file payload, supports
+	  rollback functionality, and operates without requiring
+	  system reboots.
+
+	  https://github.com/mendersoftware/mender-update-modules/tree/master/banner
+
 config BR2_PACKAGE_MENDER_UPDATE_MODULES_DFU
 	bool "DFU"
 	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
diff --git a/package/mender-update-modules/mender-update-modules.mk b/package/mender-update-modules/mender-update-modules.mk
index c0b69de7e6..f3ea0e15cd 100644
--- a/package/mender-update-modules/mender-update-modules.mk
+++ b/package/mender-update-modules/mender-update-modules.mk
@@ -12,6 +12,10 @@ MENDER_UPDATE_MODULES_DEPENDENCIES = host-mender-artifact mender
 
 MENDER_UPDATE_MODULES_MODULES = script
 
+ifeq ($(BR2_PACKAGE_MENDER_UPDATE_MODULES_BANNER),y)
+MENDER_UPDATE_MODULES_MODULES += banner
+endif
+
 ifeq ($(BR2_PACKAGE_MENDER_UPDATE_MODULES_DFU),y)
 MENDER_UPDATE_MODULES_MODULES += dfu
 endif
-- 
2.56.0

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [Buildroot] [PATCH v3 2/6] board/mender/x86_64/readme.txt: fix documentation
  2026-10-28 11:33 [Buildroot] [PATCH v3 1/6] package/mender-update-modules: add banner module Adam Duskett
@ 2026-10-28 11:33 ` Adam Duskett
  2026-10-28 11:33 ` [Buildroot] [PATCH v3 3/6] board/mender/x86_64: add a udev rule to create /dev/root Adam Duskett
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 9+ messages in thread
From: Adam Duskett @ 2026-10-28 11:33 UTC (permalink / raw)
  To: buildroot; +Cc: Adam Duskett, Angelo Compagnucci

Starting with commit 073c81c8cd233fa6e3a7067e3542ef0f56f28621, the
${COMPATIBLE_TYPES} variable is no longer prepended to the artifact
name. Update the documentation accordingly.

Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
---
v2 -> v3: Added to the series
 board/mender/x86_64/readme.txt | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/board/mender/x86_64/readme.txt b/board/mender/x86_64/readme.txt
index 01a0254511..01cf4077b7 100644
--- a/board/mender/x86_64/readme.txt
+++ b/board/mender/x86_64/readme.txt
@@ -53,12 +53,12 @@ Optional arguments:
 
 The login prompt will appear in the serial window.
 
-Tested with QEMU 4.1.1 on Fedora 31
+Tested with QEMU 10.2.2 on Fedora 44
 
 Creating a mender-artifact
 ========================
 
-The mender artifact is created in output/images/buildroot-x86_64-1.0.mender
+The mender artifact is created in output/images/1.0.mender
 
 You may wish to change --artifact-name=1.0 to a name that best suits your
 particular needs, as this option changes the mender artifact name.
-- 
2.56.0

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [Buildroot] [PATCH v3 3/6] board/mender/x86_64: add a udev rule to create /dev/root
  2026-10-28 11:33 [Buildroot] [PATCH v3 1/6] package/mender-update-modules: add banner module Adam Duskett
  2026-10-28 11:33 ` [Buildroot] [PATCH v3 2/6] board/mender/x86_64/readme.txt: fix documentation Adam Duskett
@ 2026-10-28 11:33 ` Adam Duskett
  2026-10-28 11:33 ` [Buildroot] [PATCH v3 4/6] test_mender/post-build.sh: use /etc/mender/device_type Adam Duskett
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 9+ messages in thread
From: Adam Duskett @ 2026-10-28 11:33 UTC (permalink / raw)
  To: buildroot; +Cc: Adam Duskett, Angelo Compagnucci

As /dev/root does not appear automatically, add a rule to
create /dev/root. Without this rule, even running a simple command
such as `mender -version` outputs the following warning:

```
WARN[0000] Could not resolve path link: /dev/root Attempting to continue
WARN[0000] Could not resolve path link: /dev/root Attempting to continue
```

Note: This rule is only guaranteed to work properly with the
mender_x86_64_efi_defconfig example configuration.

Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
---
v2 -> v3: Added a comment that this change is only guaranteed to work
          with the mender_x86_64_efi_defconfig [Thomas]

 .../mender/x86_64/overlay/etc/udev/rules.d/99-root-symlink.rules | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 board/mender/x86_64/overlay/etc/udev/rules.d/99-root-symlink.rules

diff --git a/board/mender/x86_64/overlay/etc/udev/rules.d/99-root-symlink.rules b/board/mender/x86_64/overlay/etc/udev/rules.d/99-root-symlink.rules
new file mode 100644
index 0000000000..7d2ae8cb89
--- /dev/null
+++ b/board/mender/x86_64/overlay/etc/udev/rules.d/99-root-symlink.rules
@@ -0,0 +1 @@
+SUBSYSTEM=="block", ACTION=="add|change", PROGRAM="/bin/grep -q root=/dev/%k /proc/cmdline", SYMLINK+="root"
-- 
2.56.0

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [Buildroot] [PATCH v3 4/6] test_mender/post-build.sh: use /etc/mender/device_type
  2026-10-28 11:33 [Buildroot] [PATCH v3 1/6] package/mender-update-modules: add banner module Adam Duskett
  2026-10-28 11:33 ` [Buildroot] [PATCH v3 2/6] board/mender/x86_64/readme.txt: fix documentation Adam Duskett
  2026-10-28 11:33 ` [Buildroot] [PATCH v3 3/6] board/mender/x86_64: add a udev rule to create /dev/root Adam Duskett
@ 2026-10-28 11:33 ` Adam Duskett
  2026-10-28 11:33 ` [Buildroot] [PATCH v3 5/6] package/mender: bump to version 5.2.0 Adam Duskett
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 9+ messages in thread
From: Adam Duskett @ 2026-10-28 11:33 UTC (permalink / raw)
  To: buildroot; +Cc: Adam Duskett, Angelo Compagnucci

To keep parity with board/mender/x86_64/overlay/etc/mender/mender.conf,
change /var/lib/mender/device_type to /etc/mender/device_type and
add a /etc/mender/mender.conf file.

Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
---
V2 -> V3: s/parody/parity/ [Thomas]

 .../testing/tests/package/test_mender/post-build.sh   |  3 +--
 .../test_mender/rootfs-overlay/etc/mender/mender.conf | 11 +++++++++++
 2 files changed, 12 insertions(+), 2 deletions(-)
 create mode 100644 support/testing/tests/package/test_mender/rootfs-overlay/etc/mender/mender.conf

diff --git a/support/testing/tests/package/test_mender/post-build.sh b/support/testing/tests/package/test_mender/post-build.sh
index db075628e0..f27b0f9417 100755
--- a/support/testing/tests/package/test_mender/post-build.sh
+++ b/support/testing/tests/package/test_mender/post-build.sh
@@ -21,8 +21,7 @@ generate_mender_bootstrap_artifact() {
 function mender_fixup() {
   rm -rf "${TARGET_DIR}"/var/lib/mender
   mkdir -p "${TARGET_DIR}"/var/lib/mender
-  echo "device_type=${COMPATIBLE_TYPE}" > "${TARGET_DIR}"/var/lib/mender/device_type
-
+  echo "device_type=${COMPATIBLE_TYPE}" > "${TARGET_DIR}"/etc/mender/device_type
 }
 
 mender_fixup
diff --git a/support/testing/tests/package/test_mender/rootfs-overlay/etc/mender/mender.conf b/support/testing/tests/package/test_mender/rootfs-overlay/etc/mender/mender.conf
new file mode 100644
index 0000000000..5f423fb2cb
--- /dev/null
+++ b/support/testing/tests/package/test_mender/rootfs-overlay/etc/mender/mender.conf
@@ -0,0 +1,11 @@
+{
+  "InventoryPollIntervalSeconds": 1800,
+  "UpdatePollIntervalSeconds": 1800,
+  "RetryPollIntervalSeconds": 300,
+  "RootfsPartA": "/dev/vda2",
+  "RootfsPartB": "/dev/vda3",
+  "ServerCertificate": "/etc/mender/server.crt",
+  "ServerURL": "https://docker.mender.io",
+  "TenantToken": "dummy",
+  "DeviceTypeFile": "/etc/mender/device_type"
+}
-- 
2.56.0

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [Buildroot] [PATCH v3 5/6] package/mender: bump to version 5.2.0
  2026-10-28 11:33 [Buildroot] [PATCH v3 1/6] package/mender-update-modules: add banner module Adam Duskett
                   ` (2 preceding siblings ...)
  2026-10-28 11:33 ` [Buildroot] [PATCH v3 4/6] test_mender/post-build.sh: use /etc/mender/device_type Adam Duskett
@ 2026-10-28 11:33 ` Adam Duskett
  2026-10-28 14:23   ` Adam Duskett
  2026-10-28 11:33 ` [Buildroot] [PATCH v3 6/6] package/mender-connect: depend on mender, drop sysvinit file Adam Duskett
  2026-11-05  7:31 ` [Buildroot] [PATCH v3 1/6] package/mender-update-modules: add banner module Thomas Petazzoni via buildroot
  5 siblings, 1 reply; 9+ messages in thread
From: Adam Duskett @ 2026-10-28 11:33 UTC (permalink / raw)
  To: buildroot; +Cc: Adam Duskett, Angelo Compagnucci

Starting with Mender version 4, the program is rewritten from Go to C++ using
CMake.

The current package provided by Buildroot is 3.5.3, which is quite old, having
been released on 12/6/2024. Since then, several changes have occurred,
necessitating a substantially large patch with many changes all at once.

The following is a list of changes:

MAJOR:
  - Mender is now a C++ project
  - Mender depends on systemd
  - Drops sysvinit support
  - Mender is split into two binaries:
      - mender-authd
      - mender-updated

MINOR:

  - Drop the 0001-openssl-v4-update.patch.
  - Add 0001-src-common-crypto-platform-openssl-crypto.cpp-fix-bu.patch
    Which allowd building without OpenSSL engine support.

    This patch is tested against OpenSSL 4.0.2 which is not yet applied
    to the master branch.

  - The following busyboxy options are required by the rootfs module and are
    enabled by default:
    - flock
    - stat
    - stat_format
    - sync_fancy
    - wget
    - wget_https
    - wget_openssl
      Note: While sync_fancy isn't strictly necessary, enabling this feature
            prevents several messages about sync ignoring all arguments.

  - New dependencies are as follows:
    - boost
    - dbus
    - libarchive
    - libglib2
    - lmdb
    - openssl
    - systemd
    - yaml-cpp

The configs/mender_x86_64_efi_defconfig file is updated to
use systemd by default.

Mender is configured with -DBUILD_SHARED_LIBS=OFF as the bundled
libyaml and tiny-process-library .so files are not installed when
-DBUILD_SHARED_LIBS=ON is selected.

The support/testing/tests/package/test_mender.py is updated:
  - Uses systemd
  - Bumped kernel version to 6.18.59
  - Adds a simple network as mender-authd requires network-online.target
  - Drops sysvinit tests

Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
---
v2 -> v3:
  - Removed documentation update (see first patch in this series)
  - Use an external toolchain for mender_x86_64_efi_defconfig [Thomas]
  - Dropped jq selection for mender_x86_64_efi_defconfig [Thomas]
  - Dropped yaml-cpp selection (bundled and linked statically in mender source code)
  - Cleaned up various make commands [Thomas]
  - Removed kernel fragment used during debugging [Thomas]
  - Add 0001-src-common-crypto-platform-openssl-crypto.cpp-fix-bu.patch [Thomas]

 board/mender/x86_64/linux.config              |  11 +
 configs/mender_x86_64_efi_defconfig           |   7 +-
 package/mender/0001-openssl-v4-update.patch   | 191 ------------------
 ...o-platform-openssl-crypto.cpp-fix-bu.patch |  69 +++++++
 package/mender/Config.in                      |  39 ++--
 package/mender/S42mender                      |  44 ----
 package/mender/mender-client.service          |  13 --
 package/mender/mender.hash                    |  52 ++---
 package/mender/mender.mk                      | 146 ++++++-------
 package/mender/server.crt                     |  22 --
 support/testing/tests/package/test_mender.py  |  96 ++++-----
 11 files changed, 249 insertions(+), 441 deletions(-)
 delete mode 100644 package/mender/0001-openssl-v4-update.patch
 create mode 100644 package/mender/0001-src-common-crypto-platform-openssl-crypto.cpp-fix-bu.patch
 delete mode 100644 package/mender/S42mender
 delete mode 100644 package/mender/mender-client.service
 delete mode 100644 package/mender/server.crt

diff --git a/board/mender/x86_64/linux.config b/board/mender/x86_64/linux.config
index b758c6d45a..f980ec39ab 100644
--- a/board/mender/x86_64/linux.config
+++ b/board/mender/x86_64/linux.config
@@ -1,4 +1,8 @@
 CONFIG_SYSVIPC=y
+CONFIG_CGROUPS=y
+CONFIG_CGROUP_SCHED=y
+CONFIG_CFS_BANDWIDTH=y
+CONFIG_USER_NS=y
 CONFIG_SMP=y
 CONFIG_HYPERVISOR_GUEST=y
 CONFIG_PARAVIRT=y
@@ -15,18 +19,22 @@ CONFIG_NETFILTER_XTABLES_LEGACY=y
 CONFIG_IP_NF_IPTABLES_LEGACY=y
 CONFIG_IP_NF_IPTABLES=y
 CONFIG_IP_NF_FILTER=y
+CONFIG_NET_SCHED=y
+CONFIG_NET_SCH_FQ_CODEL=y
 CONFIG_CFG80211=m
 CONFIG_CFG80211_WEXT=y
 CONFIG_MAC80211=m
 CONFIG_PCI=y
 CONFIG_DEVTMPFS=y
 CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_DMI_SYSFS=y
 CONFIG_VIRTIO_BLK=y
 CONFIG_BLK_DEV_SD=y
 CONFIG_SCSI_VIRTIO=y
 CONFIG_ATA=y
 CONFIG_NETDEVICES=y
 CONFIG_VIRTIO_NET=y
+CONFIG_E1000E=y
 CONFIG_ATH9K=m
 CONFIG_ATH9K_HTC=m
 CONFIG_CARL9170=m
@@ -57,8 +65,11 @@ CONFIG_VIRTIO_INPUT=y
 CONFIG_VIRTIO_MMIO=y
 CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y
 CONFIG_EXT4_FS=y
+CONFIG_AUTOFS_FS=y
 CONFIG_FUSE_FS=y
 CONFIG_VFAT_FS=y
+CONFIG_TMPFS=y
+CONFIG_TMPFS_POSIX_ACL=y
 CONFIG_SQUASHFS=y
 CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_ISO8859_1=y
diff --git a/configs/mender_x86_64_efi_defconfig b/configs/mender_x86_64_efi_defconfig
index f10a461770..9cd68e5f62 100644
--- a/configs/mender_x86_64_efi_defconfig
+++ b/configs/mender_x86_64_efi_defconfig
@@ -1,7 +1,6 @@
 BR2_x86_64=y
-BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_18=y
-BR2_INIT_SYSV=y
-BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_INIT_SYSTEMD=y
 BR2_TARGET_GENERIC_GETTY_PORT="ttyS0"
 BR2_ROOTFS_OVERLAY="board/mender/x86_64/overlay"
 BR2_ROOTFS_POST_BUILD_SCRIPT="board/mender/x86_64/post-build.sh"
@@ -42,7 +41,7 @@ BR2_PACKAGE_MENDER_GRUBENV=y
 BR2_PACKAGE_MENDER_GRUBENV_DEFINES="board/mender/x86_64/mender_grubenv_defines"
 BR2_TARGET_ROOTFS_EXT2=y
 BR2_TARGET_ROOTFS_EXT2_4=y
-BR2_TARGET_ROOTFS_EXT2_SIZE="128M"
+BR2_TARGET_ROOTFS_EXT2_SIZE="256M"
 # BR2_TARGET_ROOTFS_TAR is not set
 BR2_TARGET_GRUB2=y
 BR2_TARGET_GRUB2_X86_64_EFI=y
diff --git a/package/mender/0001-openssl-v4-update.patch b/package/mender/0001-openssl-v4-update.patch
deleted file mode 100644
index 65443614d5..0000000000
--- a/package/mender/0001-openssl-v4-update.patch
+++ /dev/null
@@ -1,191 +0,0 @@
-Description: Fix build compatibility with OpenSSL 4.0
- Include <openssl/x509v3.h> in hostname.c and hostname.go before checking
- #ifndef X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT, preventing fallback to
- legacy OpenSSL < 1.0.2 code that attempts to directly access opaque
- ASN1_STRING fields.
- Also add preprocessor guards around deprecated protocol methods
- (SSLv3_method, TLSv1_method, TLSv1_1_method, TLSv1_2_method) in shim.c
- and ENGINE functions (ENGINE_by_id, ENGINE_init, ENGINE_free,
- ENGINE_finish, ENGINE_load_private_key, ENGINE_load_builtin_engines)
- in shim.c, shim.h, engine.go, key.go to prevent implicit declaration
- and undefined reference errors when building against OpenSSL 4.0.
-Author: Frank Heimes <frank.heimes@canonical.com>
-
-Downloaded from Ubuntu:
-https://git.launchpad.net/ubuntu/+source/golang-github-mendersoftware-openssl/tree/debian/patches/0004-openssl-v4-update.patch?h=applied/ubuntu/stonking-devel
-
-Upstream: not applicable, upstream moved to c++ in newer versions
-
-[Bernd: rebased for vendored download by buildroot infra]
-Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
-
-diff -uNr mender-3.5.3.orig/vendor/github.com/mendersoftware/openssl/engine.go mender-3.5.3/vendor/github.com/mendersoftware/openssl/engine.go
---- mender-3.5.3.orig/vendor/github.com/mendersoftware/openssl/engine.go	2024-05-24 12:07:27.000000000 +0200
-+++ mender-3.5.3/vendor/github.com/mendersoftware/openssl/engine.go	2026-09-20 18:37:50.270612314 +0200
-@@ -15,6 +15,7 @@
- package openssl
- 
- /*
-+#include "shim.h"
- #include "openssl/engine.h"
- */
- import "C"
-@@ -33,18 +34,18 @@
- 	cname := C.CString(name)
- 	defer C.free(unsafe.Pointer(cname))
- 	e := &Engine{
--		e: C.ENGINE_by_id(cname),
-+		e: C.X_ENGINE_by_id(cname),
- 	}
- 	if e.e == nil {
- 		return nil, fmt.Errorf("engine %s missing", name)
- 	}
--	if C.ENGINE_init(e.e) == 0 {
--		C.ENGINE_free(e.e)
-+	if C.X_ENGINE_init(e.e) == 0 {
-+		C.X_ENGINE_free(e.e)
- 		return nil, fmt.Errorf("engine %s not initialized", name)
- 	}
- 	runtime.SetFinalizer(e, func(e *Engine) {
--		C.ENGINE_finish(e.e)
--		C.ENGINE_free(e.e)
-+		C.X_ENGINE_finish(e.e)
-+		C.X_ENGINE_free(e.e)
- 	})
- 	return e, nil
- }
-diff -uNr mender-3.5.3.orig/vendor/github.com/mendersoftware/openssl/hostname.c mender-3.5.3/vendor/github.com/mendersoftware/openssl/hostname.c
---- mender-3.5.3.orig/vendor/github.com/mendersoftware/openssl/hostname.c	2024-05-24 12:07:27.000000000 +0200
-+++ mender-3.5.3/vendor/github.com/mendersoftware/openssl/hostname.c	2026-09-20 18:32:37.854514981 +0200
-@@ -6,6 +6,7 @@
-  */
- 
- #include <openssl/x509.h>
-+#include <openssl/x509v3.h>
- 
- #ifndef X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT
- 
-diff -uNr mender-3.5.3.orig/vendor/github.com/mendersoftware/openssl/key.go mender-3.5.3/vendor/github.com/mendersoftware/openssl/key.go
---- mender-3.5.3.orig/vendor/github.com/mendersoftware/openssl/key.go	2024-05-24 12:07:27.000000000 +0200
-+++ mender-3.5.3/vendor/github.com/mendersoftware/openssl/key.go	2026-09-20 18:38:13.462370202 +0200
-@@ -303,7 +303,7 @@
- 	keyID := C.CString(id)
- 	defer C.free(unsafe.Pointer(keyID))
- 
--	key := C.ENGINE_load_private_key(e.e, keyID, nil, nil)
-+	key := C.X_ENGINE_load_private_key(e.e, keyID, nil, nil)
- 	if key == nil {
- 		return nil, errors.New("cannot load private key, ENGINE_load_private_key error")
- 	}
-diff -uNr mender-3.5.3.orig/vendor/github.com/mendersoftware/openssl/shim.c mender-3.5.3/vendor/github.com/mendersoftware/openssl/shim.c
---- mender-3.5.3.orig/vendor/github.com/mendersoftware/openssl/shim.c	2024-05-24 12:07:27.000000000 +0200
-+++ mender-3.5.3/vendor/github.com/mendersoftware/openssl/shim.c	2026-09-20 18:36:02.855038372 +0200
-@@ -382,7 +382,9 @@
- 	int rc = 0;
- 
- 	OPENSSL_config(NULL);
-+#if OPENSSL_VERSION_NUMBER < 0x40000000L && !defined(OPENSSL_NO_ENGINE)
- 	ENGINE_load_builtin_engines();
-+#endif
- 	SSL_load_error_strings();
- 	SSL_library_init();
- 	OpenSSL_add_all_algorithms();
-@@ -403,6 +405,46 @@
- 	return 0;
- }
- 
-+ENGINE *X_ENGINE_by_id(const char *id) {
-+#if OPENSSL_VERSION_NUMBER < 0x40000000L && !defined(OPENSSL_NO_ENGINE)
-+	return ENGINE_by_id(id);
-+#else
-+	return NULL;
-+#endif
-+}
-+
-+int X_ENGINE_init(ENGINE *e) {
-+#if OPENSSL_VERSION_NUMBER < 0x40000000L && !defined(OPENSSL_NO_ENGINE)
-+	return ENGINE_init(e);
-+#else
-+	return 0;
-+#endif
-+}
-+
-+int X_ENGINE_free(ENGINE *e) {
-+#if OPENSSL_VERSION_NUMBER < 0x40000000L && !defined(OPENSSL_NO_ENGINE)
-+	return ENGINE_free(e);
-+#else
-+	return 0;
-+#endif
-+}
-+
-+int X_ENGINE_finish(ENGINE *e) {
-+#if OPENSSL_VERSION_NUMBER < 0x40000000L && !defined(OPENSSL_NO_ENGINE)
-+	return ENGINE_finish(e);
-+#else
-+	return 0;
-+#endif
-+}
-+
-+EVP_PKEY *X_ENGINE_load_private_key(ENGINE *e, const char *key_id, UI_METHOD *ui_method, void *callback_data) {
-+#if OPENSSL_VERSION_NUMBER < 0x40000000L && !defined(OPENSSL_NO_ENGINE)
-+	return ENGINE_load_private_key(e, key_id, ui_method, callback_data);
-+#else
-+	return NULL;
-+#endif
-+}
-+
- void * X_OPENSSL_malloc(size_t size) {
- 	return OPENSSL_malloc(size);
- }
-@@ -480,7 +522,7 @@
- }
- 
- const SSL_METHOD *X_SSLv3_method() {
--#ifndef OPENSSL_NO_SSL3_METHOD
-+#if OPENSSL_VERSION_NUMBER < 0x40000000L && !defined(OPENSSL_NO_SSL3_METHOD) && !defined(OPENSSL_NO_DEPRECATED_1_1_0) && !defined(OPENSSL_NO_DEPRECATED_3_0)
- 	return SSLv3_method();
- #else
- 	return NULL;
-@@ -488,11 +530,15 @@
- }
- 
- const SSL_METHOD *X_TLSv1_method() {
-+#if OPENSSL_VERSION_NUMBER < 0x40000000L && !defined(OPENSSL_NO_TLS1_METHOD) && !defined(OPENSSL_NO_DEPRECATED_1_1_0) && !defined(OPENSSL_NO_DEPRECATED_3_0)
- 	return TLSv1_method();
-+#else
-+	return NULL;
-+#endif
- }
- 
- const SSL_METHOD *X_TLSv1_1_method() {
--#if defined(TLS1_1_VERSION) && !defined(OPENSSL_SYSNAME_MACOSX)
-+#if OPENSSL_VERSION_NUMBER < 0x40000000L && defined(TLS1_1_VERSION) && !defined(OPENSSL_SYSNAME_MACOSX) && !defined(OPENSSL_NO_TLS1_1_METHOD) && !defined(OPENSSL_NO_DEPRECATED_1_1_0) && !defined(OPENSSL_NO_DEPRECATED_3_0)
- 	return TLSv1_1_method();
- #else
- 	return NULL;
-@@ -500,7 +546,7 @@
- }
- 
- const SSL_METHOD *X_TLSv1_2_method() {
--#if defined(TLS1_2_VERSION) && !defined(OPENSSL_SYSNAME_MACOSX)
-+#if OPENSSL_VERSION_NUMBER < 0x40000000L && defined(TLS1_2_VERSION) && !defined(OPENSSL_SYSNAME_MACOSX) && !defined(OPENSSL_NO_TLS1_2_METHOD) && !defined(OPENSSL_NO_DEPRECATED_1_1_0) && !defined(OPENSSL_NO_DEPRECATED_3_0)
- 	return TLSv1_2_method();
- #else
- 	return NULL;
-diff -uNr mender-3.5.3.orig/vendor/github.com/mendersoftware/openssl/shim.h mender-3.5.3/vendor/github.com/mendersoftware/openssl/shim.h
---- mender-3.5.3.orig/vendor/github.com/mendersoftware/openssl/shim.h	2024-05-24 12:07:27.000000000 +0200
-+++ mender-3.5.3/vendor/github.com/mendersoftware/openssl/shim.h	2026-09-20 18:38:33.117854985 +0200
-@@ -40,6 +40,13 @@
- /* shim  methods */
- extern int X_shim_init();
- 
-+/* Engine methods */
-+extern ENGINE *X_ENGINE_by_id(const char *id);
-+extern int X_ENGINE_init(ENGINE *e);
-+extern int X_ENGINE_free(ENGINE *e);
-+extern int X_ENGINE_finish(ENGINE *e);
-+extern EVP_PKEY *X_ENGINE_load_private_key(ENGINE *e, const char *key_id, UI_METHOD *ui_method, void *callback_data);
-+
- /* Library methods */
- extern void X_OPENSSL_free(void *ref);
- extern void *X_OPENSSL_malloc(size_t size);
diff --git a/package/mender/0001-src-common-crypto-platform-openssl-crypto.cpp-fix-bu.patch b/package/mender/0001-src-common-crypto-platform-openssl-crypto.cpp-fix-bu.patch
new file mode 100644
index 0000000000..e596f1b5f3
--- /dev/null
+++ b/package/mender/0001-src-common-crypto-platform-openssl-crypto.cpp-fix-bu.patch
@@ -0,0 +1,69 @@
+From dcc218c6857e080e760b4a9c04acc79390151eb3 Mon Sep 17 00:00:00 2001
+From: Adam Duskett <adam.duskett@amarulasolutions.com>
+Date: Wed, 28 Oct 2026 12:07:07 +0100
+Subject: [PATCH] src/common/crypto/platform/openssl/crypto.cpp: fix build
+ without engine support
+
+OpenSSL 4.0 removed ENGINE support entirely and always defines
+OPENSSL_NO_ENGINE. Its engine.h still declares the ENGINE_* functions
+for source compatibility, but only provides stub definitions when
+OPENSSL_ENGINE_STUBS is defined, so linking mender-auth fails with:
+
+  undefined reference to `ENGINE_by_id'
+  undefined reference to `ENGINE_free'
+  undefined reference to `ENGINE_init'
+  undefined reference to `ENGINE_load_builtin_engines'
+  undefined reference to `ENGINE_load_private_key'
+
+The same happens with OpenSSL 3.x configured with no-engine.
+
+Guard the ENGINE calls with OPENSSL_NO_ENGINE, and return an error
+from LoadFromHSMEngine() when an SSL engine is configured but not
+available.
+
+Upstream: https://github.com/mendersoftware/mender/pull/2037
+Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
+---
+ src/common/crypto/platform/openssl/crypto.cpp | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/src/common/crypto/platform/openssl/crypto.cpp b/src/common/crypto/platform/openssl/crypto.cpp
+index b31e6c8..5f6a4b9 100644
+--- a/src/common/crypto/platform/openssl/crypto.cpp
++++ b/src/common/crypto/platform/openssl/crypto.cpp
+@@ -103,9 +103,11 @@ auto bn_free = [](BIGNUM *bn) {
+ 	}
+ };
+ auto engine_free_func = [](ENGINE *e) {
++#ifndef OPENSSL_NO_ENGINE
+ 	if (e) {
+ 		ENGINE_free(e);
+ 	}
++#endif // OPENSSL_NO_ENGINE
+ };
+ 
+ auto password_callback = [](char *buf, int size, int rwflag, void *u) {
+@@ -153,6 +155,12 @@ string GetOpenSSLErrorMessage() {
+ }
+ 
+ ExpectedPrivateKey LoadFromHSMEngine(const Args &args) {
++#ifdef OPENSSL_NO_ENGINE
++	return expected::unexpected(MakeError(
++		SetupError,
++		"Failed to get the " + args.ssl_engine
++			+ " engine. OpenSSL was built without engine support"));
++#else
+ 	log::Trace("Loading the private key from HSM");
+ 
+ 	ENGINE_load_builtin_engines();
+@@ -190,6 +198,7 @@ ExpectedPrivateKey LoadFromHSMEngine(const Args &args) {
+ 	auto handle = unique_ptr<OpenSSLResourceHandle, void (*)(OpenSSLResourceHandle *)>(
+ 		new OpenSSLResourceHandle {std::move(engine)}, resource_handle_free_func);
+ 	return std::make_unique<PrivateKey>(std::move(private_key), std::move(handle));
++#endif // OPENSSL_NO_ENGINE
+ }
+ 
+ #ifdef MENDER_CRYPTO_OPENSSL_LEGACY
+-- 
+2.56.0
+
diff --git a/package/mender/Config.in b/package/mender/Config.in
index c9b9d0b757..8f16e2312f 100644
--- a/package/mender/Config.in
+++ b/package/mender/Config.in
@@ -1,9 +1,20 @@
 config BR2_PACKAGE_MENDER
 	bool "mender"
-	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
-	select BR2_PACKAGE_HOST_GO
+	depends on BR2_INSTALL_LIBSTDCPP
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # (bundled yaml-cpp)
+	depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # boost-log
+	depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-log
+	depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-log
+	depends on BR2_USE_MMU # libglib2
+	depends on BR2_USE_WCHAR # boost, libarchive, libglib2
+	depends on BR2_PACKAGE_SYSTEMD
+	select BR2_PACKAGE_BOOST
+	select BR2_PACKAGE_BOOST_FILESYSTEM
+	select BR2_PACKAGE_BOOST_LOG
+	select BR2_PACKAGE_CA_CERTIFICATES
+	select BR2_PACKAGE_LIBARCHIVE
+	select BR2_PACKAGE_LIBGLIB2
+	select BR2_PACKAGE_LMDB
 	select BR2_PACKAGE_OPENSSL
 	select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL
 	select BR2_PACKAGE_LIBOPENSSL_ENGINES
@@ -21,16 +32,13 @@ config BR2_PACKAGE_MENDER
 	    - uboot-tools must be selected.
 	    - fw_printenv must be functional on the device.
 	  The Mender Uboot patches are at:
-	  https://github.com/mendersoftware/meta-mender/
+	  https://github.com/mendersoftware/meta-mender/tree/master/meta-mender-core/recipes-bsp/u-boot/patches
 
 	  For more information on Manual U-Boot integration, see:
-	  https://docs.mender.io/2.6/system-updates-yocto-project/board-integration/bootloader-support/u-boot/manual-u-boot-integration
+	  https://docs.mender.io/3.4/system-updates-yocto-project/board-integration/bootloader-support/u-boot/manual-u-boot-integration
 
 	  For systems using Grub2 as the bootloader:
 	    - Mender depends on the mender-grubenv package.
-	    - The mender-grubenv package provides a fw_printenv script,
-	      which is not compatible with the uboot-tools fw_printenv
-	      script.
 
 	  The mender project recommends using uboot to load Grub2 as a
 	  secondary bootloader whenever possible. Using Grub2 as a
@@ -39,7 +47,12 @@ config BR2_PACKAGE_MENDER
 
 	  https://github.com/mendersoftware/mender
 
-comment "mender needs a 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
+comment "mender needs systemd"
+	depends on !BR2_PACKAGE_SYSTEMD
+
+comment "mender needs a toolchain w/ C++, NPTL, wchar, not affected by GCC bug 64735"
+	depends on BR2_USE_MMU
+	depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS
+	depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735
+	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \
+		!BR2_TOOLCHAIN_HAS_THREADS_NPTL
diff --git a/package/mender/S42mender b/package/mender/S42mender
deleted file mode 100644
index 70116ed4eb..0000000000
--- a/package/mender/S42mender
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/bin/sh
-#
-# Starts mender service.
-#
-DAEMON="mender"
-DAEMON_PATH="/usr/bin/mender"
-PIDFILE="/var/run/${DAEMON}.pid"
-DAEMON_ARGS="daemon"
-
-start() {
-	printf "Starting mender service: "
-	umask 077
-	start-stop-daemon -bmSqp "$PIDFILE" -x ${DAEMON_PATH} -- ${DAEMON_ARGS}
-	status=$?
-	[ "${status}" = 0 ] && echo "OK" || echo "FAIL"
-}
-
-stop() {
-	printf "Stopping mender service: "
-	start-stop-daemon -Kqp "$PIDFILE"
-	status=$?
-	[ "${status}" = 0 ] && echo "OK" || echo "FAIL"
-}
-restart() {
-	stop
-	start
-}
-
-case "$1" in
-	start)
-		start
-		;;
-	stop)
-		stop
-		;;
-	restart|reload)
-		restart
-		;;
-	*)
-		echo "Usage: $0 {start|stop|reload|restart}"
-		exit 1
-esac
-
-exit $?
diff --git a/package/mender/mender-client.service b/package/mender/mender-client.service
deleted file mode 100644
index 47e439993c..0000000000
--- a/package/mender/mender-client.service
+++ /dev/null
@@ -1,13 +0,0 @@
-[Unit]
-Description=Mender OTA update service
-After=systemd-resolved.service
-
-[Service]
-Type=idle
-User=root
-Group=root
-ExecStart=/usr/bin/mender daemon
-Restart=on-abort
-
-[Install]
-WantedBy=multi-user.target
diff --git a/package/mender/mender.hash b/package/mender/mender.hash
index 17fe08c827..1aa8fb63bd 100644
--- a/package/mender/mender.hash
+++ b/package/mender/mender.hash
@@ -1,47 +1,27 @@
 # Locally computed:
-sha256  35e369759b8d4f012153e538b5daf1e0cebe842205811e708332c5a092270ac5  mender-3.5.3-go2.tar.gz
+sha256  436ae559358f29c672b98ca77b953936ba6ef51455466fb5ed0ced7ae77fc226  mender-5.2.0.tar.gz
+sha256  4d3409e4f8f7f3b9de5da7fee7c03e36a2381a02b2e318702485fc993a735cc9  LIC_FILES_CHKSUM.sha256
 
 # Vendor licenses
 # Generated with sed '/^[A-Za-z0-9_]/s/^/sha256  /' LIC_FILES_CHKSUM.sha256
 
 # Apache-2.0 license.
-sha256  d0f406b04e7901e6b4076bdf5fd20f9d7f04fc41681069fd8954413ac6295688  LICENSE
-sha256  52b2497ce07650b825015e80ca7a5d40c360c04c530234ca6d950b0f98bca23a  vendor/github.com/mendersoftware/mender-artifact/LICENSE
-sha256  73ba74dfaa520b49a401b5d21459a8523a146f3b7518a833eea5efa85130bf68  vendor/github.com/mendersoftware/openssl/LICENSE
-sha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  vendor/github.com/minio/sha256-simd/LICENSE
-sha256  8f5d89b47d7a05a199b77b7e0f362dad391d451ebda4ef48ba11c50c071564c7  vendor/github.com/mendersoftware/progressbar/LICENSE
+sha256  d7e8fd4ad05371007d60285c309ba7a7ce3e61029b843f949fbb9ec79dc9eb47  LICENSE
 #
-# BSD 2 Clause license.
-sha256  8d427fd87bc9579ea368fde3d49f9ca22eac857f91a9dec7e3004bdfab7dee86  vendor/github.com/pkg/errors/LICENSE
-sha256  e4646a82a976369d7ae8f6ed5c11d35dc0af18433a8ccc24c85b459ad8b95128  vendor/github.com/godbus/dbus/LICENSE
-sha256  2be1b548b0387ca8948e1bb9434e709126904d15f622cc2d0d8e7f186e4d122d  vendor/github.com/gorilla/websocket/LICENSE
+# MIT clause license
+sha256  d64d1b4d948aa7751cfb613c02dc246aab7b358d760053e6580f01affe946906  src/common/vendor/json/LICENSE.MIT
+sha256  7920c8620b1e073a79a667c44f9149c25724eb9f0f6b220b3c8d9564e2d40a43  src/common/vendor/json/docs/mkdocs/docs/home/license.md
+sha256  2aefa40fa7e1c0fab18fbad5b15b02406eea1399d3cca42cc1012b65b4a56f74  src/common/vendor/tiny-process-library/LICENSE
+sha256  aa6fcc27be034e41e21dd832f9175bfe694a48491d9e14ff0fa278e19ad14f1b  src/common/vendor/yaml-cpp/LICENSE
 #
-# BSD 3 Clause license.
-sha256  0d9e582ee4bff57bf1189c9e514e6da7ce277f9cd3bc2d488b22fbb39a6d87cf  vendor/github.com/klauspost/compress/LICENSE
-sha256  2eb550be6801c1ea434feba53bf6d12e7c71c90253e0a9de4a4f46cf88b56477  vendor/github.com/pmezard/go-difflib/LICENSE
-sha256  2d36597f7117c38b006835ae7f537487207d8ec407aa9d9980794b2030cbc067  vendor/golang.org/x/sys/LICENSE
-sha256  0634b008cee55ca01f0888d2f5aba2d34e66c3f52c31a4e16a5d5d33d0c2a03e  vendor/github.com/bmatsuo/lmdb-go/LICENSE.md
-sha256  87640bc4df2ceb1559f268a3db1ba859ab780f7ba5b1b4545173d4680a3d918b  vendor/github.com/remyoudompheng/go-liblzma/LICENSE
-sha256  2d36597f7117c38b006835ae7f537487207d8ec407aa9d9980794b2030cbc067  vendor/golang.org/x/term/LICENSE
+# UNLICENSE
+sha256  7e12e5df4bae12cb21581ba157ced20e1986a0508dd10d0e8a4ab9a4cf94e85c  src/common/vendor/lmdbxx/UNLICENSE
 #
-# ISC license.
-sha256  1b93a317849ee09d3d7e4f1d20c2b78ddb230b4becb12d7c224c927b9d470251  vendor/github.com/davecgh/go-spew/LICENSE
+# CC0 1.0 Universal
+sha256  a2010f343487d3f7618affe54f789f5487602331c0a8d03f49e9a7c547cf0499  src/common/vendor/expected/COPYING
 #
-# MIT license.
-sha256  6d2de1cde19c4d2bd8bcd9aaa1d581f4cfa3db9cf71896140330eaa2f2687685  vendor/github.com/klauspost/pgzip/LICENSE
-sha256  f69f157b0be75da373605dbc8bbf142e8924ee82d8f44f11bcaf351335bf98cf  vendor/github.com/klauspost/compress/internal/snapref/LICENSE
-sha256  f566a9f97bacdaf00d9f21dd991e81dc11201c4e016c86b470799429a1c9a79c  vendor/github.com/klauspost/compress/zstd/internal/xxhash/LICENSE.txt
-sha256  5d966570d7a442d4e969892860a914e542c97f262c873baee8f0aa48e1f40212  vendor/github.com/klauspost/cpuid/v2/LICENSE
-sha256  51a0c9ec7f8b7634181b8d4c03e5b5d204ac21d6e72f46c313973424664b2e6b  vendor/github.com/sirupsen/logrus/LICENSE
-sha256  f8e536c1c7b695810427095dc85f5f80d44ff7c10535e8a9486cf393e2599189  vendor/github.com/stretchr/testify/LICENSE
-sha256  ffa15bdce332058a03a1d923910864fb6e58bf6df66a0e3914284725b327183e  vendor/github.com/ungerik/go-sysfs/LICENSE
-sha256  da277af11b85227490377fbcac6afccc68be560c4fff36ac05ca62de55345fd7  vendor/github.com/urfave/cli/v2/LICENSE
-sha256  b2663894033a05fd80261176cd8da1d72546e25842d5c1abcc852ca23b6b61b0  vendor/github.com/stretchr/objx/LICENSE
-sha256  d18f6323b71b0b768bb5e9616e36da390fbd39369a81807cca352de4e4e6aa0b  vendor/gopkg.in/yaml.v3/LICENSE
-sha256  08eab1118c80885fa1fa6a6dd7303f65a379fcb3733e063d20d1bbc2c76e6fa1  vendor/github.com/mattn/go-isatty/LICENSE
+# Boost Software License
+sha256  c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566  src/common/vendor/optional-lite/LICENSE.txt
 #
-# OpenLDAP Public License
-sha256  310fe25c858a9515fc8c8d7d1f24a67c9496f84a91e0a0e41ea9975b1371e569  vendor/github.com/bmatsuo/lmdb-go/LICENSE.mdb.md
-
-# sha256 of all the vendor licenses combined
-sha256  86407bd98d5ea7fb0f09ab771c3333e975d06565b809a2dd95f864dc1e3a09b3  LIC_FILES_CHKSUM.sha256
+# BSD-3
+sha256  9702de7e4117a8e2b20dafab11ffda58c198aede066406496bef670d40a22138  src/common/vendor/yaml-cpp/test/googletest-1.16.0/LICENSE
diff --git a/package/mender/mender.mk b/package/mender/mender.mk
index 76dc28d547..e20fec8aa9 100644
--- a/package/mender/mender.mk
+++ b/package/mender/mender.mk
@@ -4,107 +4,107 @@
 #
 ################################################################################
 
-MENDER_VERSION = 3.5.3
-MENDER_SITE = $(call github,mendersoftware,mender,$(MENDER_VERSION))
-MENDER_LICENSE = Apache-2.0, BSD-2-Clause, BSD-3-Clause, ISC, MIT, OLDAP-2.8
+MENDER_VERSION = 5.2.0
+MENDER_SITE = https://github.com/mendersoftware/mender/releases/download/$(MENDER_VERSION)
+MENDER_LICENSE = Apache-2.0, BSL-1.0, BSD-3-Clause, CC0-1.0, MIT, Unlicense
 MENDER_CPE_ID_VENDOR = northern.tech
-# CVE-2024-46948 only affects mender-server
-MENDER_IGNORE_CVES = CVE-2024-46948
 
 # 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/mender-artifact/LICENSE \
-	vendor/github.com/mendersoftware/openssl/LICENSE \
-	vendor/github.com/minio/sha256-simd/LICENSE \
-	vendor/github.com/mendersoftware/progressbar/LICENSE \
-	vendor/github.com/pkg/errors/LICENSE \
-	vendor/github.com/godbus/dbus/LICENSE \
-	vendor/github.com/gorilla/websocket/LICENSE \
-	vendor/github.com/klauspost/compress/LICENSE \
-	vendor/github.com/pmezard/go-difflib/LICENSE \
-	vendor/golang.org/x/sys/LICENSE \
-	vendor/github.com/bmatsuo/lmdb-go/LICENSE.md \
-	vendor/github.com/remyoudompheng/go-liblzma/LICENSE \
-	vendor/golang.org/x/term/LICENSE \
-	vendor/github.com/davecgh/go-spew/LICENSE \
-	vendor/github.com/klauspost/pgzip/LICENSE \
-	vendor/github.com/klauspost/compress/internal/snapref/LICENSE \
-	vendor/github.com/klauspost/compress/zstd/internal/xxhash/LICENSE.txt \
-	vendor/github.com/klauspost/cpuid/v2/LICENSE \
-	vendor/github.com/sirupsen/logrus/LICENSE \
-	vendor/github.com/stretchr/testify/LICENSE \
-	vendor/github.com/ungerik/go-sysfs/LICENSE \
-	vendor/github.com/urfave/cli/v2/LICENSE \
-	vendor/github.com/stretchr/objx/LICENSE \
-	vendor/gopkg.in/yaml.v3/LICENSE \
-	vendor/github.com/mattn/go-isatty/LICENSE \
-	vendor/github.com/bmatsuo/lmdb-go/LICENSE.mdb.md
-
-MENDER_DEPENDENCIES = host-pkgconf openssl
-
-MENDER_LDFLAGS = -X github.com/mendersoftware/mender/conf.Version=$(MENDER_VERSION)
-
-MENDER_UPDATE_MODULES_FILES = directory single-file
+	src/common/vendor/json/LICENSE.MIT \
+	src/common/vendor/json/docs/mkdocs/docs/home/license.md \
+	src/common/vendor/tiny-process-library/LICENSE \
+	src/common/vendor/yaml-cpp/LICENSE \
+	src/common/vendor/lmdbxx/UNLICENSE \
+	src/common/vendor/expected/COPYING \
+	src/common/vendor/optional-lite/LICENSE.txt \
+	src/common/vendor/yaml-cpp/test/googletest-1.16.0/LICENSE
+
+MENDER_DEPENDENCIES += \
+	host-pkgconf \
+	boost \
+	dbus \
+	libarchive \
+	libglib2 \
+	lmdb \
+	openssl \
+	systemd
+
+MENDER_INSTALL_TARGET_OPTS = \
+	install-bin \
+	install-dbus \
+	install-dbus-service-files \
+	install-identity-scripts \
+	install-inventory-network-scripts \
+	install-inventory-scripts \
+	install-modules \
+	install-rootfs-image-module \
+	install-systemd
 
 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,bootloader-integration 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 0644 $(@D)/support/demo.crt \
+		$(TARGET_DIR)/etc/mender/server.crt
 
 	$(INSTALL) -D -m 0755 $(MENDER_PKGDIR)/device_type \
 			$(TARGET_DIR)/etc/mender/device_type
 
-	mkdir -p $(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))
-	)
+	mkdir -p $(TARGET_DIR)/var/lib
 endef
-
 MENDER_POST_INSTALL_TARGET_HOOKS += MENDER_INSTALL_CONFIG_FILES
 
+# The vendored tiny-process-library and yaml-cpp are built as part of
+# mender but never installed, so always link them statically.
+MENDER_CONF_OPTS += \
+	-DBUILD_SHARED_LIBS=OFF \
+	-DMENDER_EMBED_MENDER_AUTH=OFF \
+	-DMENDER_USE_DBUS=ON \
+	-DMENDER_VERSION=$(MENDER_VERSION)
+
+ifeq ($(BR2_PACKAGE_GZIP),y)
+MENDER_DEPENDENCIES += gzip
+MENDER_CONF_OPTS += -DMENDER_ARTIFACT_GZIP_COMPRESSION=ON
+else
+MENDER_CONF_OPTS += -DMENDER_ARTIFACT_GZIP_COMPRESSION=OFF
+endif
+
 ifeq ($(BR2_PACKAGE_XZ),y)
 MENDER_DEPENDENCIES += xz
+MENDER_CONF_OPTS += -DMENDER_ARTIFACT_LZMA_COMPRESSION=ON
 else
-MENDER_TAGS += nolzma
+MENDER_CONF_OPTS += -DMENDER_ARTIFACT_LZMA_COMPRESSION=OFF
 endif
 
-ifeq ($(BR2_PACKAGE_DBUS)$(BR2_PACKAGE_LIBGLIB2),yy)
-MENDER_DEPENDENCIES += libglib2
-define MENDER_INSTALL_DBUS_AUTHENTICATION_MANAGER_CONF
-	$(INSTALL) -D -m 0755 $(@D)/support/dbus/io.mender.AuthenticationManager.conf \
-		$(TARGET_DIR)/etc/dbus-1/system.d/io.mender.AuthenticationManager.conf
-
-	$(INSTALL) -D -m 0755 $(@D)/support/dbus/io.mender.UpdateManager.conf \
-		$(TARGET_DIR)/etc/dbus-1/system.d/io.mender.UpdateManager.conf
-endef
-MENDER_POST_INSTALL_TARGET_HOOKS += MENDER_INSTALL_DBUS_AUTHENTICATION_MANAGER_CONF
+ifeq ($(BR2_PACKAGE_ZSTD),y)
+MENDER_DEPENDENCIES += zstd
+MENDER_CONF_OPTS += -DMENDER_ARTIFACT_ZSTD_COMPRESSION=ON
 else
-MENDER_TAGS += nodbus
+MENDER_CONF_OPTS += -DMENDER_ARTIFACT_ZSTD_COMPRESSION=OFF
 endif
 
-define MENDER_INSTALL_INIT_SYSTEMD
-	$(INSTALL) -D -m 0644 $(MENDER_PKGDIR)/mender-client.service \
-		$(TARGET_DIR)/usr/lib/systemd/system/mender-client.service
+define MENDER_INSTALL_MODULES_GEN
+	$(MAKE) -C $(@D) DESTDIR=$(HOST_DIR) install-modules-gen
+endef
+MENDER_POST_INSTALL_TARGET_HOOKS += MENDER_INSTALL_MODULES_GEN
+
+define MENDER_INSTALL_TARGET_CMDS
+	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) $(MENDER_INSTALL_TARGET_OPTS)
 endef
 
-define MENDER_INSTALL_INIT_SYSV
-	$(INSTALL) -D -m 755 $(MENDER_PKGDIR)/S42mender \
-		$(TARGET_DIR)/etc/init.d/S42mender
+# Needed for rootfs-image-module
+define  MENDER_BUSYBOX_CONFIG_FIXUPS
+	$(call KCONFIG_ENABLE_OPT,CONFIG_FLOCK)
+	$(call KCONFIG_ENABLE_OPT,CONFIG_STAT)
+	$(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_STAT_FORMAT)
+	$(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_SYNC_FANCY)
+	$(call KCONFIG_ENABLE_OPT,CONFIG_WGET)
+	$(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_WGET_HTTPS)
+	$(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_WGET_OPENSSL)
 endef
 
-$(eval $(golang-package))
+$(eval $(cmake-package))
diff --git a/package/mender/server.crt b/package/mender/server.crt
deleted file mode 100644
index 79a57e15e7..0000000000
--- a/package/mender/server.crt
+++ /dev/null
@@ -1,22 +0,0 @@
------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-----
diff --git a/support/testing/tests/package/test_mender.py b/support/testing/tests/package/test_mender.py
index 14440c9527..44196d6a96 100644
--- a/support/testing/tests/package/test_mender.py
+++ b/support/testing/tests/package/test_mender.py
@@ -3,45 +3,69 @@ import os
 import infra.basetest
 
 
+# gitlab-runner: large
 class TestMenderInfra(infra.basetest.BRTest):
-    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \
-             """
-             BR2_PACKAGE_MENDER=y
-             BR2_PACKAGE_HOST_MENDER_ARTIFACT=y
-             BR2_TARGET_ROOTFS_CPIO=y
-             BR2_ROOTFS_POST_BUILD_SCRIPT="{}"
-             BR2_ROOTFS_OVERLAY="{}"
-             """.format(
-                 infra.filepath("tests/package/test_mender/post-build.sh"),
-                 # overlay to add a fake 'fw_printenv', used by Mender
-                 infra.filepath("tests/package/test_mender/rootfs-overlay"))
+    # infra.basetest.BASIC_TOOLCHAIN_CONFIG cannot be used as it does
+    # not include BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS
+    # needed by mender. This config also uses an ext4 rootfs as
+    # the default 128MB is too small for an image with mender and systemd.
+    config = \
+        """
+        BR2_x86_64=y
+        BR2_x86_corei7=y
+        BR2_TOOLCHAIN_EXTERNAL=y
+        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_GLIBC_STABLE=y
+        BR2_INIT_SYSTEMD=y
+        BR2_SYSTEM_DHCP="eth0"
+        BR2_LINUX_KERNEL=y
+        BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+        BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.18.59"
+        BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
+        BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/mender/x86_64/linux.config"
+        BR2_PACKAGE_MENDER=y
+        BR2_ROOTFS_POST_BUILD_SCRIPT="{}"
+        BR2_ROOTFS_OVERLAY="{}"
+        BR2_PACKAGE_HOST_MENDER_ARTIFACT=y
+        BR2_TARGET_ROOTFS_EXT2=y
+        BR2_TARGET_ROOTFS_EXT2_4=y
+        BR2_TARGET_ROOTFS_EXT2_SIZE="256M"
+        # BR2_TARGET_ROOTFS_TAR is not set
+        """.format(
+           infra.filepath("tests/package/test_mender/post-build.sh"),
+           # overlay to add a fake 'fw_printenv', used by Mender
+           infra.filepath("tests/package/test_mender/rootfs-overlay"))
 
     def base_test_run(self):
-        cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio")
-        self.emulator.boot(arch="armv5", kernel="builtin",
-                           options=["-initrd", cpio_file])
+        drive = os.path.join(self.builddir, "images", "rootfs.ext4")
+        kern = os.path.join(self.builddir, "images", "bzImage")
+        self.emulator.boot(arch="x86_64",
+                           kernel=kern,
+                           kernel_cmdline=["root=/dev/vda console=ttyS0 net.ifnames=0"],
+                           options=["-cpu", "Nehalem",
+                                    "-m", "256M",
+                                    "-net", "nic,model=virtio",
+                                    "-net", "user",
+                                    "-drive", f"file={drive},if=virtio,format=raw"])
         self.emulator.login()
 
     def run_mender_test(self):
-        self.assertRunOk("ps aux | egrep [m]ender")
+
+        # mender-authd requires systemd-resolved.service to be up,
+        # so wait for eth0 to get its DHCP address before querying.
+        cmd = "while ! ifconfig eth0 | grep -q 'inet addr'; do sleep 1; done"
+        self.assertRunOk(cmd, timeout=30)
+
+        output, _ = self.emulator.run("systemctl is-active mender-updated")
+        self.assertEqual(output[0], "active")
 
         # Check if a simple Mender command is correctly executed
-        self.assertRunOk("mender -log-level debug show-artifact")
-        self.assertRunOk("mender -log-level debug show-artifact | grep 'RUNTIME_TEST_ARTIFACT_NAME'")
-        cmd = "mender show-artifact 2>&1 | grep -i 'err'"  # Check if no 'error' among the traces
+        self.assertRunOk("mender-update --log-level debug show-artifact")
+        self.assertRunOk("mender-update --log-level debug show-artifact | grep 'RUNTIME_TEST_ARTIFACT_NAME'")
+        cmd = "mender-update show-artifact 2>&1 | grep -i 'err'"  # Check if no 'error' among the traces
         _, exit_code = self.emulator.run(cmd)
         self.assertEqual(exit_code, 1)
 
 
-class TestMenderRW(TestMenderInfra):
-    def test_run(self):
-        TestMenderInfra.base_test_run(self)
-
-        # Check if the Daemon is running
-        self.assertRunOk("ls /var/run/mender.pid")
-        self.run_mender_test()
-
-
 class TestMenderRO(TestMenderInfra):
     config = \
         """
@@ -51,22 +75,4 @@ class TestMenderRO(TestMenderInfra):
 
     def test_run(self):
         TestMenderInfra.base_test_run(self)
-
-        # Check if the Daemon is running
-        self.assertRunOk("ls /var/run/mender.pid")
-        self.run_mender_test()
-
-
-# gitlab-runner: large
-class TestMenderSystemd(TestMenderInfra):
-    config = \
-        """
-        {}
-        BR2_INIT_SYSTEMD=y
-        """.format(TestMenderInfra.config)
-
-    def test_run(self):
-        TestMenderInfra.base_test_run(self)
-        output, _ = self.emulator.run("systemctl is-active mender-client")
-        self.assertEqual(output[0], "active")
         self.run_mender_test()
-- 
2.56.0

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [Buildroot] [PATCH v3 6/6] package/mender-connect: depend on mender, drop sysvinit file
  2026-10-28 11:33 [Buildroot] [PATCH v3 1/6] package/mender-update-modules: add banner module Adam Duskett
                   ` (3 preceding siblings ...)
  2026-10-28 11:33 ` [Buildroot] [PATCH v3 5/6] package/mender: bump to version 5.2.0 Adam Duskett
@ 2026-10-28 11:33 ` Adam Duskett
  2026-11-05  7:33   ` Thomas Petazzoni via buildroot
  2026-11-05  7:31 ` [Buildroot] [PATCH v3 1/6] package/mender-update-modules: add banner module Thomas Petazzoni via buildroot
  5 siblings, 1 reply; 9+ messages in thread
From: Adam Duskett @ 2026-10-28 11:33 UTC (permalink / raw)
  To: buildroot; +Cc: Adam Duskett, Angelo Compagnucci

Much like the mender-update-modules package, have the mender-connect
package depend on the mender package. Also, as mender no longer supports
sysvinit, it's safe to remove S43mender-connect

Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
---
 package/mender-connect/Config.in         | 20 +++------
 package/mender-connect/S43mender-connect | 53 ------------------------
 package/mender-connect/mender-connect.mk |  5 ---
 3 files changed, 5 insertions(+), 73 deletions(-)
 delete mode 100644 package/mender-connect/S43mender-connect

diff --git a/package/mender-connect/Config.in b/package/mender-connect/Config.in
index d478e468c2..b8f3770509 100644
--- a/package/mender-connect/Config.in
+++ b/package/mender-connect/Config.in
@@ -1,15 +1,7 @@
 config BR2_PACKAGE_MENDER_CONNECT
 	bool "mender-connect"
-	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 # libglib2, mender
-	depends on BR2_USE_WCHAR # libglib2 -> gettext
-	depends on BR2_USE_MMU # dbus -> fork()
-	select BR2_PACKAGE_DBUS # runtime
-	select BR2_PACKAGE_HOST_GO
-	select BR2_PACKAGE_LIBGLIB2
-	select BR2_PACKAGE_MENDER # runtime
-	select BR2_PACKAGE_OPENSSL
+	depends on BR2_PACKAGE_HOST_GO_HOST_ARCH_SUPPORTS
+	depends on BR2_PACKAGE_MENDER
 	help
 	  mender-connect is a daemon responsible for handling
 	  bidirectional (websocket) communication with the Mender
@@ -27,8 +19,6 @@ config BR2_PACKAGE_MENDER_CONNECT
 
 	  https://github.com/mendersoftware/mender-connect
 
-comment "mender-connect needs a toolchain w/ threads, wchar"
-	depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS
-	depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS
-	depends on BR2_USE_MMU
-	depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR
+comment "mender-connect needs mender"
+	depends on BR2_PACKAGE_HOST_GO_HOST_ARCH_SUPPORTS
+	depends on !BR2_PACKAGE_MENDER
diff --git a/package/mender-connect/S43mender-connect b/package/mender-connect/S43mender-connect
deleted file mode 100644
index 4cc21510c4..0000000000
--- a/package/mender-connect/S43mender-connect
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/bin/sh
-DAEMON="mender-connect"
-DAEMON_PATH="/usr/bin/mender-connect"
-PIDFILE="/var/run/${DAEMON}.pid"
-
-MENDER_CONNECT_ARGS=""
-
-# shellcheck source=/dev/null
-[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON"
-
-start() {
-	printf 'Starting %s: ' "${DAEMON}"
-	umask 077
-	# shellcheck disable=SC2086 # we need the word splitting
-	start-stop-daemon -bmSqp "$PIDFILE" -x ${DAEMON_PATH} \
-		-- -daemon ${DAEMON_ARGS}
-	status=$?
-	if [ "$status" -eq 0 ]; then
-		echo "OK"
-	else
-		echo "FAIL"
-	fi
-	return "$status"
-}
-
-stop() {
-	printf 'Stopping %s: ' "${DAEMON}"
-	start-stop-daemon -K -q -p "$PIDFILE"
-	status=$?
-	if [ "$status" -eq 0 ]; then
-		echo "OK"
-	else
-		echo "FAIL"
-	fi
-	return "$status"
-}
-
-restart() {
-	stop
-	sleep 1
-	start
-}
-
-case "$1" in
-	start|stop|restart)
-		"$1";;
-	reload)
-		# Restart, since there is no true "reload" feature.
-		restart;;
-	*)
-		echo "Usage: $0 {start|stop|restart|reload}"
-		exit 1
-esac
diff --git a/package/mender-connect/mender-connect.mk b/package/mender-connect/mender-connect.mk
index ae9094f3b4..91b2c9354b 100644
--- a/package/mender-connect/mender-connect.mk
+++ b/package/mender-connect/mender-connect.mk
@@ -54,9 +54,4 @@ define MENDER_CONNECT_INSTALL_INIT_SYSTEMD
 		$(TARGET_DIR)/usr/lib/systemd/system/mender-connect.service
 endef
 
-define MENDER_CONNECT_INSTALL_INIT_SYSV
-	$(INSTALL) -D -m 0755 $(MENDER_CONNECT_PKGDIR)/S43mender-connect \
-		$(TARGET_DIR)/etc/init.d/S43mender-connect
-endef
-
 $(eval $(golang-package))
-- 
2.56.0

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [Buildroot] [PATCH v3 5/6] package/mender: bump to version 5.2.0
  2026-10-28 11:33 ` [Buildroot] [PATCH v3 5/6] package/mender: bump to version 5.2.0 Adam Duskett
@ 2026-10-28 14:23   ` Adam Duskett
  0 siblings, 0 replies; 9+ messages in thread
From: Adam Duskett @ 2026-10-28 14:23 UTC (permalink / raw)
  To: buildroot; +Cc: Angelo Compagnucci


[-- Attachment #1.1: Type: text/plain, Size: 44796 bytes --]

All;

This was tested against libopenssl 4.0.2 using Bernd's patch here:
https://patchwork.buildroot.org/project/buildroot/patch/20261011130058.3443432-53-bernd@kuhls.net/

With a boost update patches applied from this series:
https://patchwork.buildroot.org/project/buildroot/list/?series=1112&archive=both&state=*

Testing went as follows:
  - make mender_x86_64_efi_defconfig
  - Add openssh to the image
  - Boot using the following command:

```
qemu-system-x86_64 \
    -enable-kvm \
    -display gtk,gl=on,show-cursor=on \
    -m 512M \
    -M q35,accel=kvm \
    -cpu host \
    -netdev
bridge,br=virbr0,id=net0,helper="/usr/libexec/qemu-bridge-helper" \
    -device virtio-net-pci,netdev=net0 \
    -net user \
    -drive file=output/images/disk.img,if=virtio,format=raw \
    -bios /usr/share/edk2/ovmf/OVMF_CODE.fd
```

Modify the ServerURL entry in /etc/mender/mender.conf to point to my local
mender server with
the address of "https://192.168.178.243"

Replace /etc/mender/server.crt with my local development certificate.

The qemu device appears properly on my local testing server and I am able
to push updates
to the running virtual image.




On Wed, 28 Oct 2026 at 12:33, Adam Duskett <
adam.duskett@amarulasolutions.com> wrote:

> Starting with Mender version 4, the program is rewritten from Go to C++
> using
> CMake.
>
> The current package provided by Buildroot is 3.5.3, which is quite old,
> having
> been released on 12/6/2024. Since then, several changes have occurred,
> necessitating a substantially large patch with many changes all at once.
>
> The following is a list of changes:
>
> MAJOR:
>   - Mender is now a C++ project
>   - Mender depends on systemd
>   - Drops sysvinit support
>   - Mender is split into two binaries:
>       - mender-authd
>       - mender-updated
>
> MINOR:
>
>   - Drop the 0001-openssl-v4-update.patch.
>   - Add 0001-src-common-crypto-platform-openssl-crypto.cpp-fix-bu.patch
>     Which allowd building without OpenSSL engine support.
>
>     This patch is tested against OpenSSL 4.0.2 which is not yet applied
>     to the master branch.
>
>   - The following busyboxy options are required by the rootfs module and
> are
>     enabled by default:
>     - flock
>     - stat
>     - stat_format
>     - sync_fancy
>     - wget
>     - wget_https
>     - wget_openssl
>       Note: While sync_fancy isn't strictly necessary, enabling this
> feature
>             prevents several messages about sync ignoring all arguments.
>
>   - New dependencies are as follows:
>     - boost
>     - dbus
>     - libarchive
>     - libglib2
>     - lmdb
>     - openssl
>     - systemd
>     - yaml-cpp
>
> The configs/mender_x86_64_efi_defconfig file is updated to
> use systemd by default.
>
> Mender is configured with -DBUILD_SHARED_LIBS=OFF as the bundled
> libyaml and tiny-process-library .so files are not installed when
> -DBUILD_SHARED_LIBS=ON is selected.
>
> The support/testing/tests/package/test_mender.py is updated:
>   - Uses systemd
>   - Bumped kernel version to 6.18.59
>   - Adds a simple network as mender-authd requires network-online.target
>   - Drops sysvinit tests
>
> Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
> ---
> v2 -> v3:
>   - Removed documentation update (see first patch in this series)
>   - Use an external toolchain for mender_x86_64_efi_defconfig [Thomas]
>   - Dropped jq selection for mender_x86_64_efi_defconfig [Thomas]
>   - Dropped yaml-cpp selection (bundled and linked statically in mender
> source code)
>   - Cleaned up various make commands [Thomas]
>   - Removed kernel fragment used during debugging [Thomas]
>   - Add 0001-src-common-crypto-platform-openssl-crypto.cpp-fix-bu.patch
> [Thomas]
>
>  board/mender/x86_64/linux.config              |  11 +
>  configs/mender_x86_64_efi_defconfig           |   7 +-
>  package/mender/0001-openssl-v4-update.patch   | 191 ------------------
>  ...o-platform-openssl-crypto.cpp-fix-bu.patch |  69 +++++++
>  package/mender/Config.in                      |  39 ++--
>  package/mender/S42mender                      |  44 ----
>  package/mender/mender-client.service          |  13 --
>  package/mender/mender.hash                    |  52 ++---
>  package/mender/mender.mk                      | 146 ++++++-------
>  package/mender/server.crt                     |  22 --
>  support/testing/tests/package/test_mender.py  |  96 ++++-----
>  11 files changed, 249 insertions(+), 441 deletions(-)
>  delete mode 100644 package/mender/0001-openssl-v4-update.patch
>  create mode 100644
> package/mender/0001-src-common-crypto-platform-openssl-crypto.cpp-fix-bu.patch
>  delete mode 100644 package/mender/S42mender
>  delete mode 100644 package/mender/mender-client.service
>  delete mode 100644 package/mender/server.crt
>
> diff --git a/board/mender/x86_64/linux.config
> b/board/mender/x86_64/linux.config
> index b758c6d45a..f980ec39ab 100644
> --- a/board/mender/x86_64/linux.config
> +++ b/board/mender/x86_64/linux.config
> @@ -1,4 +1,8 @@
>  CONFIG_SYSVIPC=y
> +CONFIG_CGROUPS=y
> +CONFIG_CGROUP_SCHED=y
> +CONFIG_CFS_BANDWIDTH=y
> +CONFIG_USER_NS=y
>  CONFIG_SMP=y
>  CONFIG_HYPERVISOR_GUEST=y
>  CONFIG_PARAVIRT=y
> @@ -15,18 +19,22 @@ CONFIG_NETFILTER_XTABLES_LEGACY=y
>  CONFIG_IP_NF_IPTABLES_LEGACY=y
>  CONFIG_IP_NF_IPTABLES=y
>  CONFIG_IP_NF_FILTER=y
> +CONFIG_NET_SCHED=y
> +CONFIG_NET_SCH_FQ_CODEL=y
>  CONFIG_CFG80211=m
>  CONFIG_CFG80211_WEXT=y
>  CONFIG_MAC80211=m
>  CONFIG_PCI=y
>  CONFIG_DEVTMPFS=y
>  CONFIG_DEVTMPFS_MOUNT=y
> +CONFIG_DMI_SYSFS=y
>  CONFIG_VIRTIO_BLK=y
>  CONFIG_BLK_DEV_SD=y
>  CONFIG_SCSI_VIRTIO=y
>  CONFIG_ATA=y
>  CONFIG_NETDEVICES=y
>  CONFIG_VIRTIO_NET=y
> +CONFIG_E1000E=y
>  CONFIG_ATH9K=m
>  CONFIG_ATH9K_HTC=m
>  CONFIG_CARL9170=m
> @@ -57,8 +65,11 @@ CONFIG_VIRTIO_INPUT=y
>  CONFIG_VIRTIO_MMIO=y
>  CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y
>  CONFIG_EXT4_FS=y
> +CONFIG_AUTOFS_FS=y
>  CONFIG_FUSE_FS=y
>  CONFIG_VFAT_FS=y
> +CONFIG_TMPFS=y
> +CONFIG_TMPFS_POSIX_ACL=y
>  CONFIG_SQUASHFS=y
>  CONFIG_NLS_CODEPAGE_437=y
>  CONFIG_NLS_ISO8859_1=y
> diff --git a/configs/mender_x86_64_efi_defconfig
> b/configs/mender_x86_64_efi_defconfig
> index f10a461770..9cd68e5f62 100644
> --- a/configs/mender_x86_64_efi_defconfig
> +++ b/configs/mender_x86_64_efi_defconfig
> @@ -1,7 +1,6 @@
>  BR2_x86_64=y
> -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_18=y
> -BR2_INIT_SYSV=y
> -BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
> +BR2_TOOLCHAIN_EXTERNAL=y
> +BR2_INIT_SYSTEMD=y
>  BR2_TARGET_GENERIC_GETTY_PORT="ttyS0"
>  BR2_ROOTFS_OVERLAY="board/mender/x86_64/overlay"
>  BR2_ROOTFS_POST_BUILD_SCRIPT="board/mender/x86_64/post-build.sh"
> @@ -42,7 +41,7 @@ BR2_PACKAGE_MENDER_GRUBENV=y
>
>  BR2_PACKAGE_MENDER_GRUBENV_DEFINES="board/mender/x86_64/mender_grubenv_defines"
>  BR2_TARGET_ROOTFS_EXT2=y
>  BR2_TARGET_ROOTFS_EXT2_4=y
> -BR2_TARGET_ROOTFS_EXT2_SIZE="128M"
> +BR2_TARGET_ROOTFS_EXT2_SIZE="256M"
>  # BR2_TARGET_ROOTFS_TAR is not set
>  BR2_TARGET_GRUB2=y
>  BR2_TARGET_GRUB2_X86_64_EFI=y
> diff --git a/package/mender/0001-openssl-v4-update.patch
> b/package/mender/0001-openssl-v4-update.patch
> deleted file mode 100644
> index 65443614d5..0000000000
> --- a/package/mender/0001-openssl-v4-update.patch
> +++ /dev/null
> @@ -1,191 +0,0 @@
> -Description: Fix build compatibility with OpenSSL 4.0
> - Include <openssl/x509v3.h> in hostname.c and hostname.go before checking
> - #ifndef X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT, preventing fallback to
> - legacy OpenSSL < 1.0.2 code that attempts to directly access opaque
> - ASN1_STRING fields.
> - Also add preprocessor guards around deprecated protocol methods
> - (SSLv3_method, TLSv1_method, TLSv1_1_method, TLSv1_2_method) in shim.c
> - and ENGINE functions (ENGINE_by_id, ENGINE_init, ENGINE_free,
> - ENGINE_finish, ENGINE_load_private_key, ENGINE_load_builtin_engines)
> - in shim.c, shim.h, engine.go, key.go to prevent implicit declaration
> - and undefined reference errors when building against OpenSSL 4.0.
> -Author: Frank Heimes <frank.heimes@canonical.com>
> -
> -Downloaded from Ubuntu:
> -
> https://git.launchpad.net/ubuntu/+source/golang-github-mendersoftware-openssl/tree/debian/patches/0004-openssl-v4-update.patch?h=applied/ubuntu/stonking-devel
> -
> -Upstream: not applicable, upstream moved to c++ in newer versions
> -
> -[Bernd: rebased for vendored download by buildroot infra]
> -Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
> -
> -diff -uNr mender-3.5.3.orig/vendor/
> github.com/mendersoftware/openssl/engine.go mender-3.5.3/vendor/
> github.com/mendersoftware/openssl/engine.go
> ---- mender-3.5.3.orig/vendor/github.com/mendersoftware/openssl/engine.go
>      2024-05-24 12:07:27.000000000 +0200
> -+++ mender-3.5.3/vendor/github.com/mendersoftware/openssl/engine.go
> 2026-09-20 18:37:50.270612314 +0200
> -@@ -15,6 +15,7 @@
> - package openssl
> -
> - /*
> -+#include "shim.h"
> - #include "openssl/engine.h"
> - */
> - import "C"
> -@@ -33,18 +34,18 @@
> -       cname := C.CString(name)
> -       defer C.free(unsafe.Pointer(cname))
> -       e := &Engine{
> --              e: C.ENGINE_by_id(cname),
> -+              e: C.X_ENGINE_by_id(cname),
> -       }
> -       if e.e == nil {
> -               return nil, fmt.Errorf("engine %s missing", name)
> -       }
> --      if C.ENGINE_init(e.e) == 0 {
> --              C.ENGINE_free(e.e)
> -+      if C.X_ENGINE_init(e.e) == 0 {
> -+              C.X_ENGINE_free(e.e)
> -               return nil, fmt.Errorf("engine %s not initialized", name)
> -       }
> -       runtime.SetFinalizer(e, func(e *Engine) {
> --              C.ENGINE_finish(e.e)
> --              C.ENGINE_free(e.e)
> -+              C.X_ENGINE_finish(e.e)
> -+              C.X_ENGINE_free(e.e)
> -       })
> -       return e, nil
> - }
> -diff -uNr mender-3.5.3.orig/vendor/
> github.com/mendersoftware/openssl/hostname.c mender-3.5.3/vendor/
> github.com/mendersoftware/openssl/hostname.c
> ---- mender-3.5.3.orig/vendor/github.com/mendersoftware/openssl/hostname.c
>     2024-05-24 12:07:27.000000000 +0200
> -+++ mender-3.5.3/vendor/github.com/mendersoftware/openssl/hostname.c
>  2026-09-20 18:32:37.854514981 +0200
> -@@ -6,6 +6,7 @@
> -  */
> -
> - #include <openssl/x509.h>
> -+#include <openssl/x509v3.h>
> -
> - #ifndef X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT
> -
> -diff -uNr mender-3.5.3.orig/vendor/
> github.com/mendersoftware/openssl/key.go mender-3.5.3/vendor/
> github.com/mendersoftware/openssl/key.go
> ---- mender-3.5.3.orig/vendor/github.com/mendersoftware/openssl/key.go
> 2024-05-24 12:07:27.000000000 +0200
> -+++ mender-3.5.3/vendor/github.com/mendersoftware/openssl/key.go
>  2026-09-20 18:38:13.462370202 +0200
> -@@ -303,7 +303,7 @@
> -       keyID := C.CString(id)
> -       defer C.free(unsafe.Pointer(keyID))
> -
> --      key := C.ENGINE_load_private_key(e.e, keyID, nil, nil)
> -+      key := C.X_ENGINE_load_private_key(e.e, keyID, nil, nil)
> -       if key == nil {
> -               return nil, errors.New("cannot load private key,
> ENGINE_load_private_key error")
> -       }
> -diff -uNr mender-3.5.3.orig/vendor/
> github.com/mendersoftware/openssl/shim.c mender-3.5.3/vendor/
> github.com/mendersoftware/openssl/shim.c
> ---- mender-3.5.3.orig/vendor/github.com/mendersoftware/openssl/shim.c
> 2024-05-24 12:07:27.000000000 +0200
> -+++ mender-3.5.3/vendor/github.com/mendersoftware/openssl/shim.c
>  2026-09-20 18:36:02.855038372 +0200
> -@@ -382,7 +382,9 @@
> -       int rc = 0;
> -
> -       OPENSSL_config(NULL);
> -+#if OPENSSL_VERSION_NUMBER < 0x40000000L && !defined(OPENSSL_NO_ENGINE)
> -       ENGINE_load_builtin_engines();
> -+#endif
> -       SSL_load_error_strings();
> -       SSL_library_init();
> -       OpenSSL_add_all_algorithms();
> -@@ -403,6 +405,46 @@
> -       return 0;
> - }
> -
> -+ENGINE *X_ENGINE_by_id(const char *id) {
> -+#if OPENSSL_VERSION_NUMBER < 0x40000000L && !defined(OPENSSL_NO_ENGINE)
> -+      return ENGINE_by_id(id);
> -+#else
> -+      return NULL;
> -+#endif
> -+}
> -+
> -+int X_ENGINE_init(ENGINE *e) {
> -+#if OPENSSL_VERSION_NUMBER < 0x40000000L && !defined(OPENSSL_NO_ENGINE)
> -+      return ENGINE_init(e);
> -+#else
> -+      return 0;
> -+#endif
> -+}
> -+
> -+int X_ENGINE_free(ENGINE *e) {
> -+#if OPENSSL_VERSION_NUMBER < 0x40000000L && !defined(OPENSSL_NO_ENGINE)
> -+      return ENGINE_free(e);
> -+#else
> -+      return 0;
> -+#endif
> -+}
> -+
> -+int X_ENGINE_finish(ENGINE *e) {
> -+#if OPENSSL_VERSION_NUMBER < 0x40000000L && !defined(OPENSSL_NO_ENGINE)
> -+      return ENGINE_finish(e);
> -+#else
> -+      return 0;
> -+#endif
> -+}
> -+
> -+EVP_PKEY *X_ENGINE_load_private_key(ENGINE *e, const char *key_id,
> UI_METHOD *ui_method, void *callback_data) {
> -+#if OPENSSL_VERSION_NUMBER < 0x40000000L && !defined(OPENSSL_NO_ENGINE)
> -+      return ENGINE_load_private_key(e, key_id, ui_method,
> callback_data);
> -+#else
> -+      return NULL;
> -+#endif
> -+}
> -+
> - void * X_OPENSSL_malloc(size_t size) {
> -       return OPENSSL_malloc(size);
> - }
> -@@ -480,7 +522,7 @@
> - }
> -
> - const SSL_METHOD *X_SSLv3_method() {
> --#ifndef OPENSSL_NO_SSL3_METHOD
> -+#if OPENSSL_VERSION_NUMBER < 0x40000000L &&
> !defined(OPENSSL_NO_SSL3_METHOD) && !defined(OPENSSL_NO_DEPRECATED_1_1_0)
> && !defined(OPENSSL_NO_DEPRECATED_3_0)
> -       return SSLv3_method();
> - #else
> -       return NULL;
> -@@ -488,11 +530,15 @@
> - }
> -
> - const SSL_METHOD *X_TLSv1_method() {
> -+#if OPENSSL_VERSION_NUMBER < 0x40000000L &&
> !defined(OPENSSL_NO_TLS1_METHOD) && !defined(OPENSSL_NO_DEPRECATED_1_1_0)
> && !defined(OPENSSL_NO_DEPRECATED_3_0)
> -       return TLSv1_method();
> -+#else
> -+      return NULL;
> -+#endif
> - }
> -
> - const SSL_METHOD *X_TLSv1_1_method() {
> --#if defined(TLS1_1_VERSION) && !defined(OPENSSL_SYSNAME_MACOSX)
> -+#if OPENSSL_VERSION_NUMBER < 0x40000000L && defined(TLS1_1_VERSION) &&
> !defined(OPENSSL_SYSNAME_MACOSX) && !defined(OPENSSL_NO_TLS1_1_METHOD) &&
> !defined(OPENSSL_NO_DEPRECATED_1_1_0) && !defined(OPENSSL_NO_DEPRECATED_3_0)
> -       return TLSv1_1_method();
> - #else
> -       return NULL;
> -@@ -500,7 +546,7 @@
> - }
> -
> - const SSL_METHOD *X_TLSv1_2_method() {
> --#if defined(TLS1_2_VERSION) && !defined(OPENSSL_SYSNAME_MACOSX)
> -+#if OPENSSL_VERSION_NUMBER < 0x40000000L && defined(TLS1_2_VERSION) &&
> !defined(OPENSSL_SYSNAME_MACOSX) && !defined(OPENSSL_NO_TLS1_2_METHOD) &&
> !defined(OPENSSL_NO_DEPRECATED_1_1_0) && !defined(OPENSSL_NO_DEPRECATED_3_0)
> -       return TLSv1_2_method();
> - #else
> -       return NULL;
> -diff -uNr mender-3.5.3.orig/vendor/
> github.com/mendersoftware/openssl/shim.h mender-3.5.3/vendor/
> github.com/mendersoftware/openssl/shim.h
> ---- mender-3.5.3.orig/vendor/github.com/mendersoftware/openssl/shim.h
> 2024-05-24 12:07:27.000000000 +0200
> -+++ mender-3.5.3/vendor/github.com/mendersoftware/openssl/shim.h
>  2026-09-20 18:38:33.117854985 +0200
> -@@ -40,6 +40,13 @@
> - /* shim  methods */
> - extern int X_shim_init();
> -
> -+/* Engine methods */
> -+extern ENGINE *X_ENGINE_by_id(const char *id);
> -+extern int X_ENGINE_init(ENGINE *e);
> -+extern int X_ENGINE_free(ENGINE *e);
> -+extern int X_ENGINE_finish(ENGINE *e);
> -+extern EVP_PKEY *X_ENGINE_load_private_key(ENGINE *e, const char
> *key_id, UI_METHOD *ui_method, void *callback_data);
> -+
> - /* Library methods */
> - extern void X_OPENSSL_free(void *ref);
> - extern void *X_OPENSSL_malloc(size_t size);
> diff --git
> a/package/mender/0001-src-common-crypto-platform-openssl-crypto.cpp-fix-bu.patch
> b/package/mender/0001-src-common-crypto-platform-openssl-crypto.cpp-fix-bu.patch
> new file mode 100644
> index 0000000000..e596f1b5f3
> --- /dev/null
> +++
> b/package/mender/0001-src-common-crypto-platform-openssl-crypto.cpp-fix-bu.patch
> @@ -0,0 +1,69 @@
> +From dcc218c6857e080e760b4a9c04acc79390151eb3 Mon Sep 17 00:00:00 2001
> +From: Adam Duskett <adam.duskett@amarulasolutions.com>
> +Date: Wed, 28 Oct 2026 12:07:07 +0100
> +Subject: [PATCH] src/common/crypto/platform/openssl/crypto.cpp: fix build
> + without engine support
> +
> +OpenSSL 4.0 removed ENGINE support entirely and always defines
> +OPENSSL_NO_ENGINE. Its engine.h still declares the ENGINE_* functions
> +for source compatibility, but only provides stub definitions when
> +OPENSSL_ENGINE_STUBS is defined, so linking mender-auth fails with:
> +
> +  undefined reference to `ENGINE_by_id'
> +  undefined reference to `ENGINE_free'
> +  undefined reference to `ENGINE_init'
> +  undefined reference to `ENGINE_load_builtin_engines'
> +  undefined reference to `ENGINE_load_private_key'
> +
> +The same happens with OpenSSL 3.x configured with no-engine.
> +
> +Guard the ENGINE calls with OPENSSL_NO_ENGINE, and return an error
> +from LoadFromHSMEngine() when an SSL engine is configured but not
> +available.
> +
> +Upstream: https://github.com/mendersoftware/mender/pull/2037
> +Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
> +---
> + src/common/crypto/platform/openssl/crypto.cpp | 9 +++++++++
> + 1 file changed, 9 insertions(+)
> +
> +diff --git a/src/common/crypto/platform/openssl/crypto.cpp
> b/src/common/crypto/platform/openssl/crypto.cpp
> +index b31e6c8..5f6a4b9 100644
> +--- a/src/common/crypto/platform/openssl/crypto.cpp
> ++++ b/src/common/crypto/platform/openssl/crypto.cpp
> +@@ -103,9 +103,11 @@ auto bn_free = [](BIGNUM *bn) {
> +       }
> + };
> + auto engine_free_func = [](ENGINE *e) {
> ++#ifndef OPENSSL_NO_ENGINE
> +       if (e) {
> +               ENGINE_free(e);
> +       }
> ++#endif // OPENSSL_NO_ENGINE
> + };
> +
> + auto password_callback = [](char *buf, int size, int rwflag, void *u) {
> +@@ -153,6 +155,12 @@ string GetOpenSSLErrorMessage() {
> + }
> +
> + ExpectedPrivateKey LoadFromHSMEngine(const Args &args) {
> ++#ifdef OPENSSL_NO_ENGINE
> ++      return expected::unexpected(MakeError(
> ++              SetupError,
> ++              "Failed to get the " + args.ssl_engine
> ++                      + " engine. OpenSSL was built without engine
> support"));
> ++#else
> +       log::Trace("Loading the private key from HSM");
> +
> +       ENGINE_load_builtin_engines();
> +@@ -190,6 +198,7 @@ ExpectedPrivateKey LoadFromHSMEngine(const Args
> &args) {
> +       auto handle = unique_ptr<OpenSSLResourceHandle, void
> (*)(OpenSSLResourceHandle *)>(
> +               new OpenSSLResourceHandle {std::move(engine)},
> resource_handle_free_func);
> +       return std::make_unique<PrivateKey>(std::move(private_key),
> std::move(handle));
> ++#endif // OPENSSL_NO_ENGINE
> + }
> +
> + #ifdef MENDER_CRYPTO_OPENSSL_LEGACY
> +--
> +2.56.0
> +
> diff --git a/package/mender/Config.in b/package/mender/Config.in
> index c9b9d0b757..8f16e2312f 100644
> --- a/package/mender/Config.in
> +++ b/package/mender/Config.in
> @@ -1,9 +1,20 @@
>  config BR2_PACKAGE_MENDER
>         bool "mender"
> -       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
> -       select BR2_PACKAGE_HOST_GO
> +       depends on BR2_INSTALL_LIBSTDCPP
> +       depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # (bundled yaml-cpp)
> +       depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # boost-log
> +       depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS #
> boost-log
> +       depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-log
> +       depends on BR2_USE_MMU # libglib2
> +       depends on BR2_USE_WCHAR # boost, libarchive, libglib2
> +       depends on BR2_PACKAGE_SYSTEMD
> +       select BR2_PACKAGE_BOOST
> +       select BR2_PACKAGE_BOOST_FILESYSTEM
> +       select BR2_PACKAGE_BOOST_LOG
> +       select BR2_PACKAGE_CA_CERTIFICATES
> +       select BR2_PACKAGE_LIBARCHIVE
> +       select BR2_PACKAGE_LIBGLIB2
> +       select BR2_PACKAGE_LMDB
>         select BR2_PACKAGE_OPENSSL
>         select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL
>         select BR2_PACKAGE_LIBOPENSSL_ENGINES
> @@ -21,16 +32,13 @@ config BR2_PACKAGE_MENDER
>             - uboot-tools must be selected.
>             - fw_printenv must be functional on the device.
>           The Mender Uboot patches are at:
> -         https://github.com/mendersoftware/meta-mender/
> +
> https://github.com/mendersoftware/meta-mender/tree/master/meta-mender-core/recipes-bsp/u-boot/patches
>
>           For more information on Manual U-Boot integration, see:
> -
> https://docs.mender.io/2.6/system-updates-yocto-project/board-integration/bootloader-support/u-boot/manual-u-boot-integration
> +
> https://docs.mender.io/3.4/system-updates-yocto-project/board-integration/bootloader-support/u-boot/manual-u-boot-integration
>
>           For systems using Grub2 as the bootloader:
>             - Mender depends on the mender-grubenv package.
> -           - The mender-grubenv package provides a fw_printenv script,
> -             which is not compatible with the uboot-tools fw_printenv
> -             script.
>
>           The mender project recommends using uboot to load Grub2 as a
>           secondary bootloader whenever possible. Using Grub2 as a
> @@ -39,7 +47,12 @@ config BR2_PACKAGE_MENDER
>
>           https://github.com/mendersoftware/mender
>
> -comment "mender needs a 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
> +comment "mender needs systemd"
> +       depends on !BR2_PACKAGE_SYSTEMD
> +
> +comment "mender needs a toolchain w/ C++, NPTL, wchar, not affected by
> GCC bug 64735"
> +       depends on BR2_USE_MMU
> +       depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS
> +       depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735
> +       depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \
> +               !BR2_TOOLCHAIN_HAS_THREADS_NPTL
> diff --git a/package/mender/S42mender b/package/mender/S42mender
> deleted file mode 100644
> index 70116ed4eb..0000000000
> --- a/package/mender/S42mender
> +++ /dev/null
> @@ -1,44 +0,0 @@
> -#!/bin/sh
> -#
> -# Starts mender service.
> -#
> -DAEMON="mender"
> -DAEMON_PATH="/usr/bin/mender"
> -PIDFILE="/var/run/${DAEMON}.pid"
> -DAEMON_ARGS="daemon"
> -
> -start() {
> -       printf "Starting mender service: "
> -       umask 077
> -       start-stop-daemon -bmSqp "$PIDFILE" -x ${DAEMON_PATH} --
> ${DAEMON_ARGS}
> -       status=$?
> -       [ "${status}" = 0 ] && echo "OK" || echo "FAIL"
> -}
> -
> -stop() {
> -       printf "Stopping mender service: "
> -       start-stop-daemon -Kqp "$PIDFILE"
> -       status=$?
> -       [ "${status}" = 0 ] && echo "OK" || echo "FAIL"
> -}
> -restart() {
> -       stop
> -       start
> -}
> -
> -case "$1" in
> -       start)
> -               start
> -               ;;
> -       stop)
> -               stop
> -               ;;
> -       restart|reload)
> -               restart
> -               ;;
> -       *)
> -               echo "Usage: $0 {start|stop|reload|restart}"
> -               exit 1
> -esac
> -
> -exit $?
> diff --git a/package/mender/mender-client.service
> b/package/mender/mender-client.service
> deleted file mode 100644
> index 47e439993c..0000000000
> --- a/package/mender/mender-client.service
> +++ /dev/null
> @@ -1,13 +0,0 @@
> -[Unit]
> -Description=Mender OTA update service
> -After=systemd-resolved.service
> -
> -[Service]
> -Type=idle
> -User=root
> -Group=root
> -ExecStart=/usr/bin/mender daemon
> -Restart=on-abort
> -
> -[Install]
> -WantedBy=multi-user.target
> diff --git a/package/mender/mender.hash b/package/mender/mender.hash
> index 17fe08c827..1aa8fb63bd 100644
> --- a/package/mender/mender.hash
> +++ b/package/mender/mender.hash
> @@ -1,47 +1,27 @@
>  # Locally computed:
> -sha256  35e369759b8d4f012153e538b5daf1e0cebe842205811e708332c5a092270ac5
> mender-3.5.3-go2.tar.gz
> +sha256  436ae559358f29c672b98ca77b953936ba6ef51455466fb5ed0ced7ae77fc226
> mender-5.2.0.tar.gz
> +sha256  4d3409e4f8f7f3b9de5da7fee7c03e36a2381a02b2e318702485fc993a735cc9
> LIC_FILES_CHKSUM.sha256
>
>  # Vendor licenses
>  # Generated with sed '/^[A-Za-z0-9_]/s/^/sha256  /'
> LIC_FILES_CHKSUM.sha256
>
>  # Apache-2.0 license.
> -sha256  d0f406b04e7901e6b4076bdf5fd20f9d7f04fc41681069fd8954413ac6295688
> LICENSE
> -sha256  52b2497ce07650b825015e80ca7a5d40c360c04c530234ca6d950b0f98bca23a
> vendor/github.com/mendersoftware/mender-artifact/LICENSE
> -sha256 <http://github.com/mendersoftware/mender-artifact/LICENSE-sha256>
> 73ba74dfaa520b49a401b5d21459a8523a146f3b7518a833eea5efa85130bf68  vendor/
> github.com/mendersoftware/openssl/LICENSE
> -sha256 <http://github.com/mendersoftware/openssl/LICENSE-sha256>
> cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  vendor/
> github.com/minio/sha256-simd/LICENSE
> -sha256 <http://github.com/minio/sha256-simd/LICENSE-sha256>
> 8f5d89b47d7a05a199b77b7e0f362dad391d451ebda4ef48ba11c50c071564c7  vendor/
> github.com/mendersoftware/progressbar/LICENSE
> +sha256 <http://github.com/mendersoftware/progressbar/LICENSE+sha256>
> d7e8fd4ad05371007d60285c309ba7a7ce3e61029b843f949fbb9ec79dc9eb47  LICENSE
>  #
> -# BSD 2 Clause license.
> -sha256  8d427fd87bc9579ea368fde3d49f9ca22eac857f91a9dec7e3004bdfab7dee86
> vendor/github.com/pkg/errors/LICENSE
> -sha256 <http://github.com/pkg/errors/LICENSE-sha256>
> e4646a82a976369d7ae8f6ed5c11d35dc0af18433a8ccc24c85b459ad8b95128  vendor/
> github.com/godbus/dbus/LICENSE
> -sha256 <http://github.com/godbus/dbus/LICENSE-sha256>
> 2be1b548b0387ca8948e1bb9434e709126904d15f622cc2d0d8e7f186e4d122d  vendor/
> github.com/gorilla/websocket/LICENSE
> +# MIT clause license
> +sha256  d64d1b4d948aa7751cfb613c02dc246aab7b358d760053e6580f01affe946906
> src/common/vendor/json/LICENSE.MIT
> +sha256  7920c8620b1e073a79a667c44f9149c25724eb9f0f6b220b3c8d9564e2d40a43
> src/common/vendor/json/docs/mkdocs/docs/home/license.md
> +sha256  2aefa40fa7e1c0fab18fbad5b15b02406eea1399d3cca42cc1012b65b4a56f74
> src/common/vendor/tiny-process-library/LICENSE
> +sha256  aa6fcc27be034e41e21dd832f9175bfe694a48491d9e14ff0fa278e19ad14f1b
> src/common/vendor/yaml-cpp/LICENSE
>  #
> -# BSD 3 Clause license.
> -sha256  0d9e582ee4bff57bf1189c9e514e6da7ce277f9cd3bc2d488b22fbb39a6d87cf
> vendor/github.com/klauspost/compress/LICENSE
> -sha256 <http://github.com/klauspost/compress/LICENSE-sha256>
> 2eb550be6801c1ea434feba53bf6d12e7c71c90253e0a9de4a4f46cf88b56477  vendor/
> github.com/pmezard/go-difflib/LICENSE
> -sha256 <http://github.com/pmezard/go-difflib/LICENSE-sha256>
> 2d36597f7117c38b006835ae7f537487207d8ec407aa9d9980794b2030cbc067  vendor/
> golang.org/x/sys/LICENSE
> -sha256 <http://golang.org/x/sys/LICENSE-sha256>
> 0634b008cee55ca01f0888d2f5aba2d34e66c3f52c31a4e16a5d5d33d0c2a03e  vendor/
> github.com/bmatsuo/lmdb-go/LICENSE.md
> -sha256 <http://github.com/bmatsuo/lmdb-go/LICENSE.md-sha256>
> 87640bc4df2ceb1559f268a3db1ba859ab780f7ba5b1b4545173d4680a3d918b  vendor/
> github.com/remyoudompheng/go-liblzma/LICENSE
> -sha256 <http://github.com/remyoudompheng/go-liblzma/LICENSE-sha256>
> 2d36597f7117c38b006835ae7f537487207d8ec407aa9d9980794b2030cbc067  vendor/
> golang.org/x/term/LICENSE
> +# UNLICENSE
> +sha256  7e12e5df4bae12cb21581ba157ced20e1986a0508dd10d0e8a4ab9a4cf94e85c
> src/common/vendor/lmdbxx/UNLICENSE
>  #
> -# ISC license.
> -sha256  1b93a317849ee09d3d7e4f1d20c2b78ddb230b4becb12d7c224c927b9d470251
> vendor/github.com/davecgh/go-spew/LICENSE
> +# CC0 1.0 Universal
> +sha256  a2010f343487d3f7618affe54f789f5487602331c0a8d03f49e9a7c547cf0499
> src/common/vendor/expected/COPYING
>  #
> -# MIT license.
> -sha256  6d2de1cde19c4d2bd8bcd9aaa1d581f4cfa3db9cf71896140330eaa2f2687685
> vendor/github.com/klauspost/pgzip/LICENSE
> -sha256 <http://github.com/klauspost/pgzip/LICENSE-sha256>
> f69f157b0be75da373605dbc8bbf142e8924ee82d8f44f11bcaf351335bf98cf  vendor/
> github.com/klauspost/compress/internal/snapref/LICENSE
> -sha256
> <http://github.com/klauspost/compress/internal/snapref/LICENSE-sha256>
> f566a9f97bacdaf00d9f21dd991e81dc11201c4e016c86b470799429a1c9a79c  vendor/
> github.com/klauspost/compress/zstd/internal/xxhash/LICENSE.txt
> -sha256  5d966570d7a442d4e969892860a914e542c97f262c873baee8f0aa48e1f40212
> vendor/github.com/klauspost/cpuid/v2/LICENSE
> -sha256 <http://github.com/klauspost/cpuid/v2/LICENSE-sha256>
> 51a0c9ec7f8b7634181b8d4c03e5b5d204ac21d6e72f46c313973424664b2e6b  vendor/
> github.com/sirupsen/logrus/LICENSE
> -sha256 <http://github.com/sirupsen/logrus/LICENSE-sha256>
> f8e536c1c7b695810427095dc85f5f80d44ff7c10535e8a9486cf393e2599189  vendor/
> github.com/stretchr/testify/LICENSE
> -sha256 <http://github.com/stretchr/testify/LICENSE-sha256>
> ffa15bdce332058a03a1d923910864fb6e58bf6df66a0e3914284725b327183e  vendor/
> github.com/ungerik/go-sysfs/LICENSE
> -sha256 <http://github.com/ungerik/go-sysfs/LICENSE-sha256>
> da277af11b85227490377fbcac6afccc68be560c4fff36ac05ca62de55345fd7  vendor/
> github.com/urfave/cli/v2/LICENSE
> -sha256 <http://github.com/urfave/cli/v2/LICENSE-sha256>
> b2663894033a05fd80261176cd8da1d72546e25842d5c1abcc852ca23b6b61b0  vendor/
> github.com/stretchr/objx/LICENSE
> -sha256 <http://github.com/stretchr/objx/LICENSE-sha256>
> d18f6323b71b0b768bb5e9616e36da390fbd39369a81807cca352de4e4e6aa0b  vendor/
> gopkg.in/yaml.v3/LICENSE
> -sha256 <http://gopkg.in/yaml.v3/LICENSE-sha256>
> 08eab1118c80885fa1fa6a6dd7303f65a379fcb3733e063d20d1bbc2c76e6fa1  vendor/
> github.com/mattn/go-isatty/LICENSE
> +# Boost Software License
> +sha256  c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566
> src/common/vendor/optional-lite/LICENSE.txt
>  #
> -# OpenLDAP Public License
> -sha256  310fe25c858a9515fc8c8d7d1f24a67c9496f84a91e0a0e41ea9975b1371e569
> vendor/github.com/bmatsuo/lmdb-go/LICENSE.mdb.md
> -
> -# sha256 of all the vendor licenses combined
> -sha256  86407bd98d5ea7fb0f09ab771c3333e975d06565b809a2dd95f864dc1e3a09b3
> LIC_FILES_CHKSUM.sha256
> +# BSD-3
> +sha256  9702de7e4117a8e2b20dafab11ffda58c198aede066406496bef670d40a22138
> src/common/vendor/yaml-cpp/test/googletest-1.16.0/LICENSE
> diff --git a/package/mender/mender.mk b/package/mender/mender.mk
> index 76dc28d547..e20fec8aa9 100644
> --- a/package/mender/mender.mk
> +++ b/package/mender/mender.mk
> @@ -4,107 +4,107 @@
>  #
>
>  ################################################################################
>
> -MENDER_VERSION = 3.5.3
> -MENDER_SITE = $(call github,mendersoftware,mender,$(MENDER_VERSION))
> -MENDER_LICENSE = Apache-2.0, BSD-2-Clause, BSD-3-Clause, ISC, MIT,
> OLDAP-2.8
> +MENDER_VERSION = 5.2.0
> +MENDER_SITE =
> https://github.com/mendersoftware/mender/releases/download/$(MENDER_VERSION)
> +MENDER_LICENSE = Apache-2.0, BSL-1.0, BSD-3-Clause, CC0-1.0, MIT,
> Unlicense
>  MENDER_CPE_ID_VENDOR = northern.tech
> -# CVE-2024-46948 only affects mender-server
> -MENDER_IGNORE_CVES = CVE-2024-46948
>
>  # 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/mender-artifact/LICENSE \
> -       vendor/github.com/mendersoftware/openssl/LICENSE \
> -       vendor/github.com/minio/sha256-simd/LICENSE \
> -       vendor/github.com/mendersoftware/progressbar/LICENSE \
> -       vendor/github.com/pkg/errors/LICENSE \
> -       vendor/github.com/godbus/dbus/LICENSE \
> -       vendor/github.com/gorilla/websocket/LICENSE \
> -       vendor/github.com/klauspost/compress/LICENSE \
> -       vendor/github.com/pmezard/go-difflib/LICENSE \
> -       vendor/golang.org/x/sys/LICENSE \
> -       vendor/github.com/bmatsuo/lmdb-go/LICENSE.md \
> -       vendor/github.com/remyoudompheng/go-liblzma/LICENSE \
> -       vendor/golang.org/x/term/LICENSE \
> -       vendor/github.com/davecgh/go-spew/LICENSE \
> -       vendor/github.com/klauspost/pgzip/LICENSE \
> -       vendor/github.com/klauspost/compress/internal/snapref/LICENSE \
> -       vendor/
> github.com/klauspost/compress/zstd/internal/xxhash/LICENSE.txt \
> -       vendor/github.com/klauspost/cpuid/v2/LICENSE \
> -       vendor/github.com/sirupsen/logrus/LICENSE \
> -       vendor/github.com/stretchr/testify/LICENSE \
> -       vendor/github.com/ungerik/go-sysfs/LICENSE \
> -       vendor/github.com/urfave/cli/v2/LICENSE \
> -       vendor/github.com/stretchr/objx/LICENSE \
> -       vendor/gopkg.in/yaml.v3/LICENSE \
> -       vendor/github.com/mattn/go-isatty/LICENSE \
> -       vendor/github.com/bmatsuo/lmdb-go/LICENSE.mdb.md
> -
> -MENDER_DEPENDENCIES = host-pkgconf openssl
> -
> -MENDER_LDFLAGS = -X
> github.com/mendersoftware/mender/conf.Version=$(MENDER_VERSION)
> -
> -MENDER_UPDATE_MODULES_FILES = directory single-file
> +       src/common/vendor/json/LICENSE.MIT \
> +       src/common/vendor/json/docs/mkdocs/docs/home/license.md \
> +       src/common/vendor/tiny-process-library/LICENSE \
> +       src/common/vendor/yaml-cpp/LICENSE \
> +       src/common/vendor/lmdbxx/UNLICENSE \
> +       src/common/vendor/expected/COPYING \
> +       src/common/vendor/optional-lite/LICENSE.txt \
> +       src/common/vendor/yaml-cpp/test/googletest-1.16.0/LICENSE
> +
> +MENDER_DEPENDENCIES += \
> +       host-pkgconf \
> +       boost \
> +       dbus \
> +       libarchive \
> +       libglib2 \
> +       lmdb \
> +       openssl \
> +       systemd
> +
> +MENDER_INSTALL_TARGET_OPTS = \
> +       install-bin \
> +       install-dbus \
> +       install-dbus-service-files \
> +       install-identity-scripts \
> +       install-inventory-network-scripts \
> +       install-inventory-scripts \
> +       install-modules \
> +       install-rootfs-image-module \
> +       install-systemd
>
>  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,bootloader-integration 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 0644 $(@D)/support/demo.crt \
> +               $(TARGET_DIR)/etc/mender/server.crt
>
>         $(INSTALL) -D -m 0755 $(MENDER_PKGDIR)/device_type \
>                         $(TARGET_DIR)/etc/mender/device_type
>
> -       mkdir -p $(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))
> -       )
> +       mkdir -p $(TARGET_DIR)/var/lib
>  endef
> -
>  MENDER_POST_INSTALL_TARGET_HOOKS += MENDER_INSTALL_CONFIG_FILES
>
> +# The vendored tiny-process-library and yaml-cpp are built as part of
> +# mender but never installed, so always link them statically.
> +MENDER_CONF_OPTS += \
> +       -DBUILD_SHARED_LIBS=OFF \
> +       -DMENDER_EMBED_MENDER_AUTH=OFF \
> +       -DMENDER_USE_DBUS=ON \
> +       -DMENDER_VERSION=$(MENDER_VERSION)
> +
> +ifeq ($(BR2_PACKAGE_GZIP),y)
> +MENDER_DEPENDENCIES += gzip
> +MENDER_CONF_OPTS += -DMENDER_ARTIFACT_GZIP_COMPRESSION=ON
> +else
> +MENDER_CONF_OPTS += -DMENDER_ARTIFACT_GZIP_COMPRESSION=OFF
> +endif
> +
>  ifeq ($(BR2_PACKAGE_XZ),y)
>  MENDER_DEPENDENCIES += xz
> +MENDER_CONF_OPTS += -DMENDER_ARTIFACT_LZMA_COMPRESSION=ON
>  else
> -MENDER_TAGS += nolzma
> +MENDER_CONF_OPTS += -DMENDER_ARTIFACT_LZMA_COMPRESSION=OFF
>  endif
>
> -ifeq ($(BR2_PACKAGE_DBUS)$(BR2_PACKAGE_LIBGLIB2),yy)
> -MENDER_DEPENDENCIES += libglib2
> -define MENDER_INSTALL_DBUS_AUTHENTICATION_MANAGER_CONF
> -       $(INSTALL) -D -m 0755
> $(@D)/support/dbus/io.mender.AuthenticationManager.conf \
> -
>  $(TARGET_DIR)/etc/dbus-1/system.d/io.mender.AuthenticationManager.conf
> -
> -       $(INSTALL) -D -m 0755
> $(@D)/support/dbus/io.mender.UpdateManager.conf \
> -
>  $(TARGET_DIR)/etc/dbus-1/system.d/io.mender.UpdateManager.conf
> -endef
> -MENDER_POST_INSTALL_TARGET_HOOKS +=
> MENDER_INSTALL_DBUS_AUTHENTICATION_MANAGER_CONF
> +ifeq ($(BR2_PACKAGE_ZSTD),y)
> +MENDER_DEPENDENCIES += zstd
> +MENDER_CONF_OPTS += -DMENDER_ARTIFACT_ZSTD_COMPRESSION=ON
>  else
> -MENDER_TAGS += nodbus
> +MENDER_CONF_OPTS += -DMENDER_ARTIFACT_ZSTD_COMPRESSION=OFF
>  endif
>
> -define MENDER_INSTALL_INIT_SYSTEMD
> -       $(INSTALL) -D -m 0644 $(MENDER_PKGDIR)/mender-client.service \
> -               $(TARGET_DIR)/usr/lib/systemd/system/mender-client.service
> +define MENDER_INSTALL_MODULES_GEN
> +       $(MAKE) -C $(@D) DESTDIR=$(HOST_DIR) install-modules-gen
> +endef
> +MENDER_POST_INSTALL_TARGET_HOOKS += MENDER_INSTALL_MODULES_GEN
> +
> +define MENDER_INSTALL_TARGET_CMDS
> +       $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR)
> $(MENDER_INSTALL_TARGET_OPTS)
>  endef
>
> -define MENDER_INSTALL_INIT_SYSV
> -       $(INSTALL) -D -m 755 $(MENDER_PKGDIR)/S42mender \
> -               $(TARGET_DIR)/etc/init.d/S42mender
> +# Needed for rootfs-image-module
> +define  MENDER_BUSYBOX_CONFIG_FIXUPS
> +       $(call KCONFIG_ENABLE_OPT,CONFIG_FLOCK)
> +       $(call KCONFIG_ENABLE_OPT,CONFIG_STAT)
> +       $(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_STAT_FORMAT)
> +       $(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_SYNC_FANCY)
> +       $(call KCONFIG_ENABLE_OPT,CONFIG_WGET)
> +       $(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_WGET_HTTPS)
> +       $(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_WGET_OPENSSL)
>  endef
>
> -$(eval $(golang-package))
> +$(eval $(cmake-package))
> diff --git a/package/mender/server.crt b/package/mender/server.crt
> deleted file mode 100644
> index 79a57e15e7..0000000000
> --- a/package/mender/server.crt
> +++ /dev/null
> @@ -1,22 +0,0 @@
> ------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-----
> diff --git a/support/testing/tests/package/test_mender.py
> b/support/testing/tests/package/test_mender.py
> index 14440c9527..44196d6a96 100644
> --- a/support/testing/tests/package/test_mender.py
> +++ b/support/testing/tests/package/test_mender.py
> @@ -3,45 +3,69 @@ import os
>  import infra.basetest
>
>
> +# gitlab-runner: large
>  class TestMenderInfra(infra.basetest.BRTest):
> -    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \
> -             """
> -             BR2_PACKAGE_MENDER=y
> -             BR2_PACKAGE_HOST_MENDER_ARTIFACT=y
> -             BR2_TARGET_ROOTFS_CPIO=y
> -             BR2_ROOTFS_POST_BUILD_SCRIPT="{}"
> -             BR2_ROOTFS_OVERLAY="{}"
> -             """.format(
> -
>  infra.filepath("tests/package/test_mender/post-build.sh"),
> -                 # overlay to add a fake 'fw_printenv', used by Mender
> -
>  infra.filepath("tests/package/test_mender/rootfs-overlay"))
> +    # infra.basetest.BASIC_TOOLCHAIN_CONFIG cannot be used as it does
> +    # not include BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS
> +    # needed by mender. This config also uses an ext4 rootfs as
> +    # the default 128MB is too small for an image with mender and systemd.
> +    config = \
> +        """
> +        BR2_x86_64=y
> +        BR2_x86_corei7=y
> +        BR2_TOOLCHAIN_EXTERNAL=y
> +        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_GLIBC_STABLE=y
> +        BR2_INIT_SYSTEMD=y
> +        BR2_SYSTEM_DHCP="eth0"
> +        BR2_LINUX_KERNEL=y
> +        BR2_LINUX_KERNEL_CUSTOM_VERSION=y
> +        BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.18.59"
> +        BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
> +
> BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/mender/x86_64/linux.config"
> +        BR2_PACKAGE_MENDER=y
> +        BR2_ROOTFS_POST_BUILD_SCRIPT="{}"
> +        BR2_ROOTFS_OVERLAY="{}"
> +        BR2_PACKAGE_HOST_MENDER_ARTIFACT=y
> +        BR2_TARGET_ROOTFS_EXT2=y
> +        BR2_TARGET_ROOTFS_EXT2_4=y
> +        BR2_TARGET_ROOTFS_EXT2_SIZE="256M"
> +        # BR2_TARGET_ROOTFS_TAR is not set
> +        """.format(
> +           infra.filepath("tests/package/test_mender/post-build.sh"),
> +           # overlay to add a fake 'fw_printenv', used by Mender
> +           infra.filepath("tests/package/test_mender/rootfs-overlay"))
>
>      def base_test_run(self):
> -        cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio")
> -        self.emulator.boot(arch="armv5", kernel="builtin",
> -                           options=["-initrd", cpio_file])
> +        drive = os.path.join(self.builddir, "images", "rootfs.ext4")
> +        kern = os.path.join(self.builddir, "images", "bzImage")
> +        self.emulator.boot(arch="x86_64",
> +                           kernel=kern,
> +                           kernel_cmdline=["root=/dev/vda console=ttyS0
> net.ifnames=0"],
> +                           options=["-cpu", "Nehalem",
> +                                    "-m", "256M",
> +                                    "-net", "nic,model=virtio",
> +                                    "-net", "user",
> +                                    "-drive",
> f"file={drive},if=virtio,format=raw"])
>          self.emulator.login()
>
>      def run_mender_test(self):
> -        self.assertRunOk("ps aux | egrep [m]ender")
> +
> +        # mender-authd requires systemd-resolved.service to be up,
> +        # so wait for eth0 to get its DHCP address before querying.
> +        cmd = "while ! ifconfig eth0 | grep -q 'inet addr'; do sleep 1;
> done"
> +        self.assertRunOk(cmd, timeout=30)
> +
> +        output, _ = self.emulator.run("systemctl is-active
> mender-updated")
> +        self.assertEqual(output[0], "active")
>
>          # Check if a simple Mender command is correctly executed
> -        self.assertRunOk("mender -log-level debug show-artifact")
> -        self.assertRunOk("mender -log-level debug show-artifact | grep
> 'RUNTIME_TEST_ARTIFACT_NAME'")
> -        cmd = "mender show-artifact 2>&1 | grep -i 'err'"  # Check if no
> 'error' among the traces
> +        self.assertRunOk("mender-update --log-level debug show-artifact")
> +        self.assertRunOk("mender-update --log-level debug show-artifact |
> grep 'RUNTIME_TEST_ARTIFACT_NAME'")
> +        cmd = "mender-update show-artifact 2>&1 | grep -i 'err'"  # Check
> if no 'error' among the traces
>          _, exit_code = self.emulator.run(cmd)
>          self.assertEqual(exit_code, 1)
>
>
> -class TestMenderRW(TestMenderInfra):
> -    def test_run(self):
> -        TestMenderInfra.base_test_run(self)
> -
> -        # Check if the Daemon is running
> -        self.assertRunOk("ls /var/run/mender.pid")
> -        self.run_mender_test()
> -
> -
>  class TestMenderRO(TestMenderInfra):
>      config = \
>          """
> @@ -51,22 +75,4 @@ class TestMenderRO(TestMenderInfra):
>
>      def test_run(self):
>          TestMenderInfra.base_test_run(self)
> -
> -        # Check if the Daemon is running
> -        self.assertRunOk("ls /var/run/mender.pid")
> -        self.run_mender_test()
> -
> -
> -# gitlab-runner: large
> -class TestMenderSystemd(TestMenderInfra):
> -    config = \
> -        """
> -        {}
> -        BR2_INIT_SYSTEMD=y
> -        """.format(TestMenderInfra.config)
> -
> -    def test_run(self):
> -        TestMenderInfra.base_test_run(self)
> -        output, _ = self.emulator.run("systemctl is-active mender-client")
> -        self.assertEqual(output[0], "active")
>          self.run_mender_test()
> --
> 2.56.0
>
>

[-- Attachment #1.2: Type: text/html, Size: 59592 bytes --]

[-- Attachment #2: Type: text/plain, Size: 150 bytes --]

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Buildroot] [PATCH v3 1/6] package/mender-update-modules: add banner module
  2026-10-28 11:33 [Buildroot] [PATCH v3 1/6] package/mender-update-modules: add banner module Adam Duskett
                   ` (4 preceding siblings ...)
  2026-10-28 11:33 ` [Buildroot] [PATCH v3 6/6] package/mender-connect: depend on mender, drop sysvinit file Adam Duskett
@ 2026-11-05  7:31 ` Thomas Petazzoni via buildroot
  5 siblings, 0 replies; 9+ messages in thread
From: Thomas Petazzoni via buildroot @ 2026-11-05  7:31 UTC (permalink / raw)
  To: Adam Duskett; +Cc: buildroot, Angelo Compagnucci

Hello Adam,

On Wed, Oct 28, 2026 at 12:33:26PM +0100, Adam Duskett wrote:
> Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
> ---
> v2 -> v3: Fixed github link [Thomas]

Thanks for this v3, I've applied patches 1 to 5 to master. I haven't
applied patch 6 as I have questions about it, I'll reply to it
separately.

A quick suggestion: when you send an updated version (like this v3)
which had comments from someone, don't hesitate to add this reviewer
in Cc: of the new iteration. Indeed, in the overwhelming stream of
incoming patches, I can very easily miss that someone is sending a new
iteration of something I looked at before. If you Cc: me on the new
iteration when I've reviewed a previous one, then there's a much
bigger chance I'll have a look at it quickly and apply. It's not a
hard rule/requirement, just a suggestion that can potentially help.

Thanks a lot!

Thomas
-- 
Thomas Petazzoni, co-owner and CEO, Bootlin
Embedded Linux and Kernel engineering and training
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Buildroot] [PATCH v3 6/6] package/mender-connect: depend on mender, drop sysvinit file
  2026-10-28 11:33 ` [Buildroot] [PATCH v3 6/6] package/mender-connect: depend on mender, drop sysvinit file Adam Duskett
@ 2026-11-05  7:33   ` Thomas Petazzoni via buildroot
  0 siblings, 0 replies; 9+ messages in thread
From: Thomas Petazzoni via buildroot @ 2026-11-05  7:33 UTC (permalink / raw)
  To: Adam Duskett; +Cc: buildroot, Angelo Compagnucci

On Wed, Oct 28, 2026 at 12:33:31PM +0100, Adam Duskett wrote:
> Much like the mender-update-modules package, have the mender-connect
> package depend on the mender package. Also, as mender no longer supports
> sysvinit, it's safe to remove S43mender-connect
> 
> Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
> ---
>  package/mender-connect/Config.in         | 20 +++------
>  package/mender-connect/S43mender-connect | 53 ------------------------
>  package/mender-connect/mender-connect.mk |  5 ---
>  3 files changed, 5 insertions(+), 73 deletions(-)
>  delete mode 100644 package/mender-connect/S43mender-connect
> 
> diff --git a/package/mender-connect/Config.in b/package/mender-connect/Config.in
> index d478e468c2..b8f3770509 100644
> --- a/package/mender-connect/Config.in
> +++ b/package/mender-connect/Config.in
> @@ -1,15 +1,7 @@
>  config BR2_PACKAGE_MENDER_CONNECT
>  	bool "mender-connect"
> -	depends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS
> -	depends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS

Are you sure this dependency is no longer needed?

> -	depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2, mender
> -	depends on BR2_USE_WCHAR # libglib2 -> gettext
> -	depends on BR2_USE_MMU # dbus -> fork()
> -	select BR2_PACKAGE_DBUS # runtime
> -	select BR2_PACKAGE_HOST_GO
> -	select BR2_PACKAGE_LIBGLIB2
> -	select BR2_PACKAGE_MENDER # runtime
> -	select BR2_PACKAGE_OPENSSL

And why are all those selects gone? For the BR2_PACKAGE_MENDER select,
I understand it has been changed to a "depends on", which is a very
good idea. But since mender-connect.mk has all these other packages
(dbus, libglib2, openssl) in its DEPENDENCIES variable, then those
select should stick, and therefore perhaps the related "depends on" as
well (threads, wchar, mmu).

Thanks a lot!

Thomas
-- 
Thomas Petazzoni, co-owner and CEO, Bootlin
Embedded Linux and Kernel engineering and training
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2026-11-05  7:33 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-28 11:33 [Buildroot] [PATCH v3 1/6] package/mender-update-modules: add banner module Adam Duskett
2026-10-28 11:33 ` [Buildroot] [PATCH v3 2/6] board/mender/x86_64/readme.txt: fix documentation Adam Duskett
2026-10-28 11:33 ` [Buildroot] [PATCH v3 3/6] board/mender/x86_64: add a udev rule to create /dev/root Adam Duskett
2026-10-28 11:33 ` [Buildroot] [PATCH v3 4/6] test_mender/post-build.sh: use /etc/mender/device_type Adam Duskett
2026-10-28 11:33 ` [Buildroot] [PATCH v3 5/6] package/mender: bump to version 5.2.0 Adam Duskett
2026-10-28 14:23   ` Adam Duskett
2026-10-28 11:33 ` [Buildroot] [PATCH v3 6/6] package/mender-connect: depend on mender, drop sysvinit file Adam Duskett
2026-11-05  7:33   ` Thomas Petazzoni via buildroot
2026-11-05  7:31 ` [Buildroot] [PATCH v3 1/6] package/mender-update-modules: add banner module Thomas Petazzoni via buildroot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox