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 <cp0613@linux.alibaba.com>
[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 <ju.o@free.fr>
This commit is contained in:
Chen Pei
2026-03-10 16:18:49 +08:00
committed by Julien Olivain
parent 67e982e782
commit 039c1ae13e
4 changed files with 84 additions and 0 deletions

View File

@@ -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"

25
package/ndctl/Config.in Normal file
View File

@@ -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

7
package/ndctl/ndctl.hash Normal file
View File

@@ -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

51
package/ndctl/ndctl.mk Normal file
View File

@@ -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))