package/procps-ng: fix pidfd_open checking
Fixes: http://autobuild.buildroot.net/results/02a2b1d9ece040c529308800403f0230ead4ed3e/ The previous build setup would check for pidfd_open using AC_CHECK_FUNC and would be incorrectly reported as true. Backport patch from upstream: [1]2507bc4757
[2]587efb47df
[3]5acbb5dc15
Signed-off-by: Scott Fan <fancp2007@gmail.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com> (cherry picked from commit fee18cca535f6f08e8d94bb13450e65adbcb7a27) Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
This commit is contained in:
parent
17fedf85c5
commit
b4554306d2
@ -0,0 +1,99 @@
|
||||
From f37d178d5c25c547835d054fbb1eda32c25034b3 Mon Sep 17 00:00:00 2001
|
||||
From: Craig Small <csmall@dropbear.xyz>
|
||||
Date: Mon, 30 Sep 2024 17:26:01 +1000
|
||||
Subject: [PATCH] build-sys: Fix pidfd_open checking
|
||||
|
||||
The previous build setup would check for pidfd_open using
|
||||
AC_CHECK_FUNC and would be incorrectly reported as true.
|
||||
|
||||
Also, if pidfd_open() and __NR_pidfd_open were not present,
|
||||
pidwait would silently not be built.
|
||||
|
||||
So, changes:
|
||||
compile a small programin using pidfd_open to test it properly
|
||||
conditionally try to find NR_pidfd_open if the function fails
|
||||
complain if neither are present
|
||||
have --disable-pidwait configure option so you are explicit in
|
||||
not wanting and knowing you wont get pidwait
|
||||
|
||||
References:
|
||||
#352
|
||||
commit d9c3e3676d86094abaa239b3218f57bf49d70b4f
|
||||
commit 17f94796a9b3c4f1ff28829107a82107dcb362b4
|
||||
|
||||
Signed-off-by: Craig Small <csmall@dropbear.xyz>
|
||||
|
||||
Upstream: https://gitlab.com/procps-ng/procps/-/commit/2507bc475782ff5e0541d37c780dff1e293c9553
|
||||
|
||||
Signed-off-by: Scott Fan <fancp2007@gmail.com>
|
||||
[Scott: backported to version 4.0.4]
|
||||
---
|
||||
configure.ac | 45 ++++++++++++++++++++++++++++++---------------
|
||||
1 file changed, 30 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index fec27e3f..0719fcd1 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -170,21 +170,6 @@ AC_TRY_COMPILE([#include <errno.h>],
|
||||
AC_MSG_RESULT(yes),
|
||||
AC_MSG_RESULT(no))
|
||||
|
||||
-AC_CHECK_FUNC([pidfd_open], [enable_pidwait=yes], [
|
||||
- AC_MSG_CHECKING([for __NR_pidfd_open])
|
||||
- AC_COMPILE_IFELSE([AC_LANG_SOURCE([
|
||||
-#include <sys/syscall.h>
|
||||
-#ifndef __NR_pidfd_open
|
||||
-#error __NR_pidfd_open not defined
|
||||
-#endif
|
||||
- ])], [enable_pidwait=yes], [enable_pidwait=no])
|
||||
- AC_MSG_RESULT([$enable_pidwait])
|
||||
-])
|
||||
-if test "$enable_pidwait" = yes; then
|
||||
- AC_DEFINE([ENABLE_PIDWAIT], [1], [Enable pidwait])
|
||||
-fi
|
||||
-AM_CONDITIONAL([BUILD_PIDWAIT], [test x$enable_pidwait = xyes])
|
||||
-
|
||||
dnl watch8bit must be before the AC_ARG_WITH set as it sets up ncurses
|
||||
AC_SUBST([WITH_WATCH8BIT])
|
||||
AC_ARG_ENABLE([watch8bit],
|
||||
@@ -321,6 +306,36 @@ AC_ARG_ENABLE([pidof],
|
||||
)
|
||||
AM_CONDITIONAL(BUILD_PIDOF, test "x$enable_pidof" = xyes)
|
||||
|
||||
+# If pidwait is enabled, we need either pidfd_open() or __NR_pidfd_open need to be defined
|
||||
+# Cannot use AC_CHECK_FUNC as it (incorrectly) passes with pidfd_open missing
|
||||
+AC_ARG_ENABLE([pidwait],
|
||||
+ AS_HELP_STRING([--disable-pidwait], [do not build pidwait]),
|
||||
+ [], [
|
||||
+ enable_pidwait=yes
|
||||
+ AC_DEFINE(ENABLE_PIDWAIT, 1, [enable pidwait])
|
||||
+ ]
|
||||
+)
|
||||
+AM_CONDITIONAL(BUILD_PIDWAIT, test "x$enable_pidwait" = xyes)
|
||||
+AC_MSG_CHECKING([for pidfd_open()])
|
||||
+AC_LINK_IFELSE([AC_LANG_PROGRAM([], [[ [pidfd_open(1,1)]]])],
|
||||
+ have_pidfd_open=yes; AC_MSG_RESULT([yes]) ,
|
||||
+ have_pidfd_open=no; AC_MSG_RESULT([no])
|
||||
+ )
|
||||
+
|
||||
+AS_IF([[test "x$enable_pidwait" = xyes -a "x$have_pidfd_open" = xno]],
|
||||
+ AC_MSG_CHECKING([for __NR_pidfd_open])
|
||||
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([
|
||||
+#include <sys/syscall.h>
|
||||
+#ifndef __NR_pidfd_open
|
||||
+#error __NR_pidfd_open not defined
|
||||
+#endif
|
||||
+ ])],
|
||||
+ AC_MSG_RESULT([yes]),
|
||||
+ AC_MSG_RESULT([no])
|
||||
+ AC_MSG_ERROR([Neither pidfd_open or __NR_pidfd_open found. Disable pidwait with configure option --disable-pidwait])
|
||||
+ )
|
||||
+ ,[])
|
||||
+
|
||||
AC_ARG_ENABLE([kill],
|
||||
AS_HELP_STRING([--disable-kill], [do not build kill]),
|
||||
[], [enable_kill=yes]
|
||||
--
|
||||
2.43.0
|
||||
|
@ -0,0 +1,37 @@
|
||||
From 1e2d53e1d86cb75e8f39b42b9a5c409e5d3261ed Mon Sep 17 00:00:00 2001
|
||||
From: oli-ben <24815225-oli-ben@users.noreply.gitlab.com>
|
||||
Date: Wed, 27 Nov 2024 20:17:11 +0000
|
||||
Subject: [PATCH] build-sys: Fix define of HAVE_PIDFD_OPEN
|
||||
|
||||
Fix cross-compilation issues when using GCC-12.3
|
||||
* configure fails to detect that the sysroot does support the pidfd_open
|
||||
syscall wrapper
|
||||
* configure fails to define HAVE_PIDFD_OPEN which is used in pgrep.c,
|
||||
so it fails building, because __NR_pidfd_open is then undefined
|
||||
|
||||
Upstream: https://gitlab.com/procps-ng/procps/-/commit/587efb47df7ddbfda4e6abdd1e7792a2531a238f
|
||||
|
||||
Signed-off-by: Scott Fan <fancp2007@gmail.com>
|
||||
[Scott: backported to version 4.0.4]
|
||||
---
|
||||
configure.ac | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 0719fcd1..6242a8f8 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -317,8 +317,8 @@ AC_ARG_ENABLE([pidwait],
|
||||
)
|
||||
AM_CONDITIONAL(BUILD_PIDWAIT, test "x$enable_pidwait" = xyes)
|
||||
AC_MSG_CHECKING([for pidfd_open()])
|
||||
-AC_LINK_IFELSE([AC_LANG_PROGRAM([], [[ [pidfd_open(1,1)]]])],
|
||||
- have_pidfd_open=yes; AC_MSG_RESULT([yes]) ,
|
||||
+AC_LINK_IFELSE([AC_LANG_PROGRAM([], [[pidfd_open(1,1)]])],
|
||||
+ have_pidfd_open=yes; AC_DEFINE(HAVE_PIDFD_OPEN, 1, [pidfd_open is defined]) AC_MSG_RESULT([yes]),
|
||||
have_pidfd_open=no; AC_MSG_RESULT([no])
|
||||
)
|
||||
|
||||
--
|
||||
2.43.0
|
||||
|
@ -0,0 +1,41 @@
|
||||
From 81ded587d2484b6f470f2d5c837c5591491377ce Mon Sep 17 00:00:00 2001
|
||||
From: Craig Small <csmall@dropbear.xyz>
|
||||
Date: Thu, 28 Nov 2024 07:20:42 +1100
|
||||
Subject: [PATCH] pgrep: Include sys/syscall.h if making pidwait
|
||||
|
||||
sys/syscall.h would only be included if pidwait was made
|
||||
and we found pidfd_open() The previous commit fixed the
|
||||
finding part, but in fact we want sys/syscall.h either
|
||||
way because syscall() is defined there too.
|
||||
|
||||
Most of the time the header is included by other headers
|
||||
but adding it explicitly means if that header is removed or
|
||||
changed it still works.
|
||||
|
||||
Signed-off-by: Craig Small <csmall@dropbear.xyz>
|
||||
|
||||
Upstream: https://gitlab.com/procps-ng/procps/-/commit/5acbb5dc1587d688de646d739a97251eb893bbb0
|
||||
|
||||
Signed-off-by: Scott Fan <fancp2007@gmail.com>
|
||||
[Scott: backported to version 4.0.4]
|
||||
---
|
||||
src/pgrep.c | 2 --
|
||||
1 file changed, 2 deletions(-)
|
||||
|
||||
diff --git a/src/pgrep.c b/src/pgrep.c
|
||||
index d8e57dff..a2607532 100644
|
||||
--- a/src/pgrep.c
|
||||
+++ b/src/pgrep.c
|
||||
@@ -44,9 +44,7 @@
|
||||
|
||||
#ifdef ENABLE_PIDWAIT
|
||||
#include <sys/epoll.h>
|
||||
-#ifndef HAVE_PIDFD_OPEN
|
||||
#include <sys/syscall.h>
|
||||
-#endif /* !HAVE_PIDFD_OPEN */
|
||||
#endif
|
||||
|
||||
/* EXIT_SUCCESS is 0 */
|
||||
--
|
||||
2.43.0
|
||||
|
@ -16,6 +16,8 @@ PROCPS_NG_CONF_OPTS = LIBS=$(TARGET_NLS_LIBS)
|
||||
|
||||
# Applying 0001-build-sys-Add-systemd-elogind-to-w.patch touches Makefile.am
|
||||
# Applying 0002-fix-ncurses-h-include.patch touches configure.ac
|
||||
# Applying 0003-build-sys-Fix-pidfd_open-checking.patch touches configure.ac
|
||||
# Applying 0004-build-sys-Fix-define-of-HAVE_PIDFD_OPEN.patch touches configure.ac
|
||||
PROCPS_NG_AUTORECONF = YES
|
||||
|
||||
ifeq ($(BR2_PACKAGE_SYSTEMD),y)
|
||||
|
Loading…
Reference in New Issue
Block a user