mirror of
https://gitlab.com/buildroot.org/buildroot.git
synced 2026-10-19 07:11:55 -09:00
package/atop: fix musl build
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 <features.h>,
which curses.h pulls in through <stdio.h> 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] 2110131cab
Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
Tested-By: Thomas Perale <thomas.perale@mind.be>
[Julien: add link to Buildroot commit introducing the issue]
Signed-off-by: Julien Olivain <ju.o@free.fr>
This commit is contained in:
committed by
Julien Olivain
parent
d7fa5c2d01
commit
99909a8a95
@@ -0,0 +1,48 @@
|
||||
From 54799216beac63a195cd6d34b22476fc15a80295 Mon Sep 17 00:00:00 2001
|
||||
From: Yegor Yefremov <yegorslists@googlemail.com>
|
||||
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 <features.h>
|
||||
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 <yegorslists@googlemail.com>
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user