From 66eaacb941092a8a83fa9db34b79a994a1d5b8a9 Mon Sep 17 00:00:00 2001 From: Yegor Yefremov Date: Wed, 30 Sep 2026 23:18:26 +0200 Subject: [PATCH] package/atop: fix musl build MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since the bump to version 2.13.0 in Buildroot commit [1], atop fails to build with musl: drawbar.c:2336:33: error: implicit declaration of function 'waddwstr'; did you mean 'waddstr'? [-Wimplicit-function-declaration] (Before 2.13.0, the same configurations already failed earlier on uClibc because _POSIX_C_SOURCE was defined without a value. Upstream fixed that in 2.13.0 by giving it an explicit value, but the same pattern remains for _XOPEN_SOURCE.) ncurses only declares its wide-character API, including waddwstr(), when NCURSES_WIDECHAR is set. If the application does not set it, curses.h derives it from the feature test macros: #if defined(_XOPEN_SOURCE_EXTENDED) || \ (defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE - 0 >= 500)) drawbar.c defines _XOPEN_SOURCE with an empty value, which makes the check evaluate as 0 >= 500 and fail. This only breaks with musl because of the C library's , which curses.h pulls in through before doing the check. glibc and uClibc both redefine _XOPEN_SOURCE to 700 and define _XOPEN_SOURCE_EXTENDED whenever _GNU_SOURCE is set, which drawbar.c does, so the empty definition gets fixed up. musl never modifies the application's feature test macros, so the empty value reaches curses.h and the wide-character prototypes are left out. Add a patch that defines _XOPEN_SOURCE as 700, matching the _POSIX_C_SOURCE value of 200809L that is already used. Fixes: - https://autobuild.buildroot.org/results/914c1d8fa0fc8bbef64e4a64d58e5941d0077a3e - https://autobuild.buildroot.org/results/b91ea0722202de0d1fdeeaeea167fd1b21b6d5d6 [1] https://gitlab.com/buildroot.org/buildroot/-/commit/2110131cab2a613567c99491ba540bb33440e46c Assisted-by: Claude:claude-opus-5-5 Signed-off-by: Yegor Yefremov Tested-By: Thomas Perale [Julien: add link to Buildroot commit introducing the issue] Signed-off-by: Julien Olivain (cherry picked from commit 99909a8a955dc6ba89aaa72e488e8c262ad2f469) Signed-off-by: Raphaël Mélotte --- ...xplicit-value-for-_XOPEN_SOURCE-macr.patch | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 package/atop/0001-drawbar-define-explicit-value-for-_XOPEN_SOURCE-macr.patch diff --git a/package/atop/0001-drawbar-define-explicit-value-for-_XOPEN_SOURCE-macr.patch b/package/atop/0001-drawbar-define-explicit-value-for-_XOPEN_SOURCE-macr.patch new file mode 100644 index 0000000000..d526d58433 --- /dev/null +++ b/package/atop/0001-drawbar-define-explicit-value-for-_XOPEN_SOURCE-macr.patch @@ -0,0 +1,48 @@ +From 54799216beac63a195cd6d34b22476fc15a80295 Mon Sep 17 00:00:00 2001 +From: Yegor Yefremov +Date: Wed, 30 Sep 2026 10:59:49 +0200 +Subject: [PATCH] drawbar: define explicit value for _XOPEN_SOURCE macro + +drawbar.c uses the wide-character curses function waddwstr(). ncurses +only declares its wide-character API when NCURSES_WIDECHAR is set, +which curses.h derives from the feature test macros: + + #if defined(_XOPEN_SOURCE_EXTENDED) || \ + (defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE - 0 >= 500)) + +drawbar.c defines _XOPEN_SOURCE without a value, so _XOPEN_SOURCE - 0 +evaluates to 0 and the check fails. + +With glibc and uClibc this goes unnoticed, because their +redefines _XOPEN_SOURCE to 700 (and defines _XOPEN_SOURCE_EXTENDED) +whenever _GNU_SOURCE is set. musl does not touch the application's +feature test macros, so the empty definition reaches curses.h +unchanged and the build fails: + +drawbar.c:2336:33: error: implicit declaration of function 'waddwstr'; did you mean 'waddstr'? [-Wimplicit-function-declaration] + +Define _XOPEN_SOURCE as 700, which matches the already explicit +_POSIX_C_SOURCE value of 200809L (both refer to POSIX.1-2008). + +Signed-off-by: Yegor Yefremov +Upstream: https://github.com/Atoptool/atop/pull/415 +--- + drawbar.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drawbar.c b/drawbar.c +index 651a81e..e4db0d6 100644 +--- a/drawbar.c ++++ b/drawbar.c +@@ -104,7 +104,7 @@ + // the other. + ///////////////////////////////////////////////////////////////////////////// + #define _POSIX_C_SOURCE 200809L +-#define _XOPEN_SOURCE ++#define _XOPEN_SOURCE 700 + #define _GNU_SOURCE + #define _DEFAULT_SOURCE + +-- +2.34.1 +