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