forked from buildroot/buildroot
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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] https://gitlab.com/procps-ng/procps/-/commit/2507bc475782ff5e0541d37c780dff1e293c9553 [2] https://gitlab.com/procps-ng/procps/-/commit/587efb47df7ddbfda4e6abdd1e7792a2531a238f [3] https://gitlab.com/procps-ng/procps/-/commit/5acbb5dc1587d688de646d739a97251eb893bbb0 Signed-off-by: Scott Fan <[email protected]> Signed-off-by: Peter Korsgaard <[email protected]>
- Loading branch information
Showing
4 changed files
with
179 additions
and
0 deletions.
There are no files selected for viewing
99 changes: 99 additions & 0 deletions
99
package/procps-ng/0003-build-sys-Fix-pidfd_open-checking.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
From f37d178d5c25c547835d054fbb1eda32c25034b3 Mon Sep 17 00:00:00 2001 | ||
From: Craig Small <[email protected]> | ||
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 <[email protected]> | ||
|
||
Upstream: https://gitlab.com/procps-ng/procps/-/commit/2507bc475782ff5e0541d37c780dff1e293c9553 | ||
|
||
Signed-off-by: Scott Fan <[email protected]> | ||
[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 | ||
|
37 changes: 37 additions & 0 deletions
37
package/procps-ng/0004-build-sys-Fix-define-of-HAVE_PIDFD_OPEN.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
From 1e2d53e1d86cb75e8f39b42b9a5c409e5d3261ed Mon Sep 17 00:00:00 2001 | ||
From: oli-ben <[email protected]> | ||
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 <[email protected]> | ||
[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 | ||
|
41 changes: 41 additions & 0 deletions
41
package/procps-ng/0005-pgrep-Include-sys-syscall.h-if-making-pidwait.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
From 81ded587d2484b6f470f2d5c837c5591491377ce Mon Sep 17 00:00:00 2001 | ||
From: Craig Small <[email protected]> | ||
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 <[email protected]> | ||
|
||
Upstream: https://gitlab.com/procps-ng/procps/-/commit/5acbb5dc1587d688de646d739a97251eb893bbb0 | ||
|
||
Signed-off-by: Scott Fan <[email protected]> | ||
[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 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters