Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH] package/atop: fix musl build
@ 2026-09-30 21:18 Yegor Yefremov via buildroot
  2026-10-10 10:01 ` Thomas Perale via buildroot
  0 siblings, 1 reply; 3+ messages in thread
From: Yegor Yefremov via buildroot @ 2026-09-30 21:18 UTC (permalink / raw)
  To: buildroot; +Cc: chakrabortyshubham66, thomas.petazzoni, Ricardo Martincoski

From: Yegor Yefremov <yegorslists@googlemail.com>

Since the bump to version 2.13.0, 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/b91/b91ea0722202de0d1fdeeaeea167fd1b21b6d5d6

Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
---
 ...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 <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
+
-- 
2.34.1

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [Buildroot] [PATCH] package/atop: fix musl build
  2026-09-30 21:18 [Buildroot] [PATCH] package/atop: fix musl build Yegor Yefremov via buildroot
@ 2026-10-10 10:01 ` Thomas Perale via buildroot
  2026-10-10 16:26   ` Julien Olivain via buildroot
  0 siblings, 1 reply; 3+ messages in thread
From: Thomas Perale via buildroot @ 2026-10-10 10:01 UTC (permalink / raw)
  To: Yegor Yefremov
  Cc: Thomas Perale, buildroot, chakrabortyshubham66, thomas.petazzoni,
	Ricardo Martincoski

Hi,

Tested by modifying `support/testing/tests/package/test_atop.py` to use musl
library.

I would just add the reference to the buildroot commit that made the bump: 2110131cab2a613567c99491ba540bb33440e46c

Tested-By: Thomas Perale <thomas.perale@mind.be>

In reply of:
> Since the bump to version 2.13.0, 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/b91/b91ea0722202de0d1fdeeaeea167fd1b21b6d5d6
> 
> Assisted-by: Claude:claude-opus-5-5
> Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>

> ---
>  ...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 <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
> +
> -- 
> 2.34.1
> 
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [Buildroot] [PATCH] package/atop: fix musl build
  2026-10-10 10:01 ` Thomas Perale via buildroot
@ 2026-10-10 16:26   ` Julien Olivain via buildroot
  0 siblings, 0 replies; 3+ messages in thread
From: Julien Olivain via buildroot @ 2026-10-10 16:26 UTC (permalink / raw)
  To: Thomas Perale
  Cc: chakrabortyshubham66, buildroot, Ricardo Martincoski,
	thomas.petazzoni

Hi,

On 10/10/2026 12:01, Thomas Perale via buildroot wrote:
> Hi,
> 
> Tested by modifying `support/testing/tests/package/test_atop.py` to use 
> musl
> library.
> 
> I would just add the reference to the buildroot commit that made the 
> bump: 2110131cab2a613567c99491ba540bb33440e46c

I applied this patch after adding the reference to the commit, as 
suggested.

> Tested-By: Thomas Perale <thomas.perale@mind.be>
> 
> In reply of:
>> Since the bump to version 2.13.0, 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/b91/b91ea0722202de0d1fdeeaeea167fd1b21b6d5d6
>> 
>> Assisted-by: Claude:claude-opus-5-5
>> Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
> 
>> ---
>>  ...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 <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
>> +
>> --
>> 2.34.1

Best regards,

Julien.
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-10-10 16:26 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-30 21:18 [Buildroot] [PATCH] package/atop: fix musl build Yegor Yefremov via buildroot
2026-10-10 10:01 ` Thomas Perale via buildroot
2026-10-10 16:26   ` Julien Olivain via buildroot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox