From 039c1ae13ec12f7cebddf86f37080d0a1fee28e6 Mon Sep 17 00:00:00 2001 From: Chen Pei Date: Tue, 10 Mar 2026 16:18:49 +0800 Subject: [PATCH 1/4] package/ndctl: new package A "device memory" enabling project encompassing tools and libraries for CXL, NVDIMMs, DAX, memory tiering and other platform memory device topics. ndctl is using __struct_group() [1] which was introduced in kernel headers in upstream commit [2], first included in v5.16. The commit [2] was backported in v5.15.54 in [3] and v5.10.156 in [4]. Therefore, this commits sets the minimal toolchain headers version requirement to 5.10. [1] https://github.com/pmem/ndctl/blob/v83/cxl/fwctl/features.h#L108 [2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=50d7bd38c3aafc4749e05e8d7fcb616979143602 [3] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=d57ab893cdf8046cbe4d49746f9418020f788b1f [4] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=9fd7bdaffe0e89833f4b1c1d3abd43023e951ec1 Signed-off-by: Chen Pei [Julien: - add commit log info about __struct_group() - add __struct_group() comment in Config.in - relax toolchain headers requirements to 5.10 - sort BR2_PACKAGE_ blocks in .mk alphabetically ] Signed-off-by: Julien Olivain --- package/Config.in | 1 + package/ndctl/Config.in | 25 ++++++++++++++++++++ package/ndctl/ndctl.hash | 7 ++++++ package/ndctl/ndctl.mk | 51 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 84 insertions(+) create mode 100644 package/ndctl/Config.in create mode 100644 package/ndctl/ndctl.hash create mode 100644 package/ndctl/ndctl.mk diff --git a/package/Config.in b/package/Config.in index d7791bdd3d4..b98a89abdb6 100644 --- a/package/Config.in +++ b/package/Config.in @@ -2838,6 +2838,7 @@ menu "System tools" source "package/monit/Config.in" source "package/multipath-tools/Config.in" source "package/ncdu/Config.in" + source "package/ndctl/Config.in" source "package/nerdctl/Config.in" source "package/netifrc/Config.in" source "package/numactl/Config.in" diff --git a/package/ndctl/Config.in b/package/ndctl/Config.in new file mode 100644 index 00000000000..9f7f5f1c9bc --- /dev/null +++ b/package/ndctl/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_NDCTL + bool "ndctl" + depends on BR2_PACKAGE_HAS_UDEV + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_10 # __struct_group() + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU + select BR2_PACKAGE_INIPARSER + select BR2_PACKAGE_JSON_C + select BR2_PACKAGE_KEYUTILS + select BR2_PACKAGE_KMOD + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBS + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + A "device memory" enabling project encompassing tools and + libraries for CXL, NVDIMMs, DAX, memory tiering and other + platform memory device topics. + + https://github.com/pmem/ndctl + +comment "ndctl needs udev /dev management, a toolchain headers >= 5.10" + depends on BR2_USE_MMU + depends on !BR2_PACKAGE_HAS_UDEV \ + || !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_10 diff --git a/package/ndctl/ndctl.hash b/package/ndctl/ndctl.hash new file mode 100644 index 00000000000..f731fb7263e --- /dev/null +++ b/package/ndctl/ndctl.hash @@ -0,0 +1,7 @@ +# locally computed +sha256 dd4b9b9a9dc0a15e980670b6f889e910a80ad60f2309e03bfd9cc6071d14dd30 ndctl-83.tar.gz +sha256 1334f22048052d69647860fe9fb24997dc3b33737cb494297d68949f589fa1cf COPYING +sha256 5c37e41135091a39821cfb306ad8516625b0bb49510ce56ad85c347bbc46df29 LICENSES/other/CC0-1.0 +sha256 89807acf2309bd285f033404ee78581602f3cd9b819a16ac2f0e5f60ff4a473e LICENSES/other/MIT +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 LICENSES/preferred/GPL-2.0 +sha256 9397d01be0ec93d29384447ba18e532ab7b01af8c8b582ece9f10ad45b9568db LICENSES/preferred/LGPL-2.1 diff --git a/package/ndctl/ndctl.mk b/package/ndctl/ndctl.mk new file mode 100644 index 00000000000..ceb01d633fb --- /dev/null +++ b/package/ndctl/ndctl.mk @@ -0,0 +1,51 @@ +################################################################################ +# +# ndctl +# +################################################################################ + +NDCTL_VERSION = 83 +NDCTL_SITE = $(call github,pmem,ndctl,v$(NDCTL_VERSION)) +NDCTL_LICENSE = \ + CC0-1.0 (helper routines), \ + GPL-2.0+ (tools), \ + LGPL-2.1+ (libraries), \ + MIT (helper routines) +NDCTL_LICENSE_FILES = \ + COPYING \ + LICENSES/other/CC0-1.0 \ + LICENSES/other/MIT \ + LICENSES/preferred/GPL-2.0 \ + LICENSES/preferred/LGPL-2.1 + +NDCTL_DEPENDENCIES = \ + iniparser \ + json-c \ + keyutils \ + kmod \ + udev \ + util-linux-libs + +# Currently, disabling keyutils or fwctl support will cause builds to +# fail. Therefore, always pass the -Dfwctl=enabled and -Dkeyutils=enabled. +NDCTL_CONF_OPTS = \ + -Ddocs=disabled \ + -Dfwctl=enabled \ + -Dkeyutils=enabled \ + -Diniparserdir=$(STAGING_DIR)/usr/include/iniparser + +ifeq ($(BR2_PACKAGE_LIBTRACEFS)$(BR2_PACKAGE_LIBTRACEEVENT),yy) +NDCTL_CONF_OPTS += -Dlibtracefs=enabled +NDCTL_DEPENDENCIES += libtraceevent libtracefs +else +NDCTL_CONF_OPTS += -Dlibtracefs=disabled +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +NDCTL_CONF_OPTS += -Dsystemd=enabled +NDCTL_DEPENDENCIES += systemd +else +NDCTL_CONF_OPTS += -Dsystemd=disabled +endif + +$(eval $(meson-package)) From 01a5a8be468db1489d97b77380ef56ff842dbb33 Mon Sep 17 00:00:00 2001 From: Chen Pei Date: Tue, 10 Mar 2026 16:18:50 +0800 Subject: [PATCH 2/4] DEVELOPERS: Add Chen Pei to ndctl Signed-off-by: Chen Pei Signed-off-by: Julien Olivain --- DEVELOPERS | 1 + 1 file changed, 1 insertion(+) diff --git a/DEVELOPERS b/DEVELOPERS index 6f5008ab892..0c51a1db035 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -612,6 +612,7 @@ F: package/qoriq-cadence-dp-firmware/ N: Chen Pei F: package/iniparser/ +F: package/ndctl/ N: Chris Packham F: package/coremark/ From f163d200022e72aa8d9f9d37332cc7e2663503de Mon Sep 17 00:00:00 2001 From: Julien Olivain Date: Wed, 18 Mar 2026 22:38:05 +0100 Subject: [PATCH 3/4] support/testing: test_aichat: improve test reliability Since llama.cpp update in Buildroot commit [1], the test_aichat can fail for several reasons: The loop checking for the llama-server availability can fail if curl succeed, but the returned json data is not formatted as expected. This can happen if the server is ready but the model is not completely loaded. In that case, the server returns: {"error":{"message":"Loading model","type":"unavailable_error","code":503}} This commit ignore Python KeyError exceptions while doing the server test, to avoid failing if this message is received. Also, this new llama-server version introduced a prompt caching, which uses too much memory. This commit completely disable this prompt caching by adding "--cache-ram 0" in the llama-server options. [1] https://gitlab.com/buildroot.org/buildroot/-/commit/05c36d5d875713521f99b7bad48be316dcde2510 Signed-off-by: Julien Olivain --- support/testing/tests/package/test_aichat.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/support/testing/tests/package/test_aichat.py b/support/testing/tests/package/test_aichat.py index 5fc554bbb5d..50c07f87dc1 100644 --- a/support/testing/tests/package/test_aichat.py +++ b/support/testing/tests/package/test_aichat.py @@ -70,6 +70,8 @@ def test_run(self): llama_opts = "--log-file /tmp/llama-server.log" # We set a fixed seed, to reduce variability of the test llama_opts += " --seed 123456789" + # We disable prompt caching to reduce RAM usage + llama_opts += " --cache-ram 0" llama_opts += f" --hf-repo {hf_model}" # We start a llama-server in background, which will expose an @@ -91,9 +93,12 @@ def test_run(self): if ret == 0: models_json = "".join(out) models = json.loads(models_json) - model_name = models['models'][0]['name'] - if model_name == hf_model: - break + try: + model_name = models['models'][0]['name'] + if model_name == hf_model: + break + except KeyError: + pass else: self.fail("Timeout while waiting for llama-server.") From d5ff9792ab60ff00ba824fcca00f9985c465068a Mon Sep 17 00:00:00 2001 From: Giulio Benetti Date: Thu, 19 Mar 2026 19:38:14 +0100 Subject: [PATCH 4/4] package/harfbuzz: bump version to 13.2.1 https://github.com/harfbuzz/harfbuzz/blob/13.2.1/NEWS Signed-off-by: Giulio Benetti Signed-off-by: Julien Olivain --- package/harfbuzz/harfbuzz.hash | 4 ++-- package/harfbuzz/harfbuzz.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/harfbuzz/harfbuzz.hash b/package/harfbuzz/harfbuzz.hash index e9683f19b0b..8642387392f 100644 --- a/package/harfbuzz/harfbuzz.hash +++ b/package/harfbuzz/harfbuzz.hash @@ -1,4 +1,4 @@ -# From https://github.com/harfbuzz/harfbuzz/releases/tag/13.1.1 -sha256 e7f3b8bac3fdcc529985be8e84fbd65c675ac47ee58512b15a5dd620c79ffe2a harfbuzz-13.1.1.tar.xz +# From https://github.com/harfbuzz/harfbuzz/releases/tag/13.2.1 +sha256 6695da3eb7e1be0aa3092fe4d81433a33b47f4519259c759d729e3a9a55c1429 harfbuzz-13.2.1.tar.xz # Locally computed sha256 ba8f810f2455c2f08e2d56bb49b72f37fcf68f1f4fade38977cfd7372050ad64 COPYING diff --git a/package/harfbuzz/harfbuzz.mk b/package/harfbuzz/harfbuzz.mk index 6cedcc0fd83..df05596b1d5 100644 --- a/package/harfbuzz/harfbuzz.mk +++ b/package/harfbuzz/harfbuzz.mk @@ -4,7 +4,7 @@ # ################################################################################ -HARFBUZZ_VERSION = 13.1.1 +HARFBUZZ_VERSION = 13.2.1 HARFBUZZ_SITE = https://github.com/harfbuzz/harfbuzz/releases/download/$(HARFBUZZ_VERSION) HARFBUZZ_SOURCE = harfbuzz-$(HARFBUZZ_VERSION).tar.xz HARFBUZZ_LICENSE = MIT, ISC (ucdn library)