package/procps-ng: fix build with missing pidfd_open

port back patch introduced shortly after the 4.0.5 release.

Fixes:
  checking for __NR_pidfd_open... no
  configure: error: Neither pidfd_open or __NR_pidfd_open found. Disable pidwait with configure option --disable-pidwait

happening with this defconfig:

BR2_arm=y
BR2_cortex_a15_a7=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_INIT_SYSTEMD=y
BR2_PACKAGE_PROCPS_NG=y

Signed-off-by: Michael Nosthoff <buildroot@heine.tech>
Signed-off-by: Julien Olivain <ju.o@free.fr>
This commit is contained in:
Michael Nosthoff
2025-02-25 16:50:38 +01:00
committed by Julien Olivain
parent c73fb46fea
commit 0aa1b043df
2 changed files with 60 additions and 0 deletions

View File

@@ -0,0 +1,57 @@
From 90a0ddcd64c2d43dc2c2c856b1b42b5cae6b8a44 Mon Sep 17 00:00:00 2001
From: Markus Mayer <mmayer@broadcom.com>
Date: Wed, 11 Dec 2024 14:53:33 -0800
Subject: [PATCH] pgrep: provide definition for __NR_pidfd_open if needed
We already implement pidfd_open() ourselves if libc doesn't provide it.
Let's also provide our own definition of __NR_pidfd_open in case the
kernel headers don't contain it.
This way, pgrep can provide its full capabilities after being built
against older kernel headers (for increased compatibility) but being run
on systems with newer kernels.
Signed-off-by: Markus Mayer <mmayer@broadcom.com>
Upstream: https://gitlab.com/procps-ng/procps/-/commit/90a0ddcd64c2d43dc2c2c856b1b42b5cae6b8a44
Signed-off: Michael Nosthoff <buildroot@heine.tech>
---
configure.ac | 2 +-
src/pgrep.c | 9 +++++++++
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index 1e984b12..14ba3ad7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -325,7 +325,7 @@ AS_IF([[test "x$enable_pidwait" = xyes -a "x$have_pidfd_open" = xno]],
AC_COMPILE_IFELSE([AC_LANG_SOURCE([
#include <sys/syscall.h>
#ifndef __NR_pidfd_open
-#error __NR_pidfd_open not defined
+#warning __NR_pidfd_open not defined; using our definition
#endif
])],
AC_MSG_RESULT([yes]),
diff --git a/src/pgrep.c b/src/pgrep.c
index 2c6b06b8..6fc25dd4 100644
--- a/src/pgrep.c
+++ b/src/pgrep.c
@@ -874,6 +874,15 @@ static int signal_option(int *argc, char **argv)
}
#if defined(ENABLE_PIDWAIT) && !defined(HAVE_PIDFD_OPEN)
+
+#ifndef __NR_pidfd_open
+#ifdef __alpha__
+#define __NR_pidfd_open 544
+#else
+#define __NR_pidfd_open 434
+#endif
+#endif
+
static int pidfd_open (pid_t pid, unsigned int flags)
{
return syscall(__NR_pidfd_open, pid, flags);
--
GitLab

View File

@@ -14,6 +14,9 @@ PROCPS_NG_INSTALL_STAGING = YES
PROCPS_NG_DEPENDENCIES = ncurses host-pkgconf $(TARGET_NLS_DEPENDENCIES)
PROCPS_NG_CONF_OPTS = LIBS=$(TARGET_NLS_LIBS)
# Applying 0001-pgrep-provide-definition-for-nr-pidfd_open.patch touches configure.ac
PROCPS_NG_AUTORECONF = YES
ifeq ($(BR2_PACKAGE_SYSTEMD),y)
PROCPS_NG_DEPENDENCIES += systemd
PROCPS_NG_CONF_OPTS += --with-systemd