#1128757 tuxpaint: FTBFS with glibc 2.43 due to ISO C23 const return types

Package:
src:tuxpaint
Source:
src:tuxpaint
Submitter:
Aurelien Jarno
Date:
2026-08-16 07:07:01 UTC
Severity:
normal
Tags:
#1128757#5
Date:
2026-02-22 16:18:32 UTC
From:
To:
Dear maintainer(s),

tuxpaint fails to build from source with glibc 2.43, currently in
experimental. From the build log:

| src/i18n.c: In function ‘set_current_language’:
| src/i18n.c:1239:37: error: assignment of read-only location ‘*(const char *)strchr(short_lang_prefix, 95)’
|  1239 |     *strchr(short_lang_prefix, '_') = '\0';
|       |                                     ^
| msgfmt -o trans/ach.mo src/po/ach.po
| msgfmt -o trans/af.mo src/po/af.po
| msgfmt -o trans/ak.mo src/po/ak.po
| make[1]: *** [Makefile:1320: obj/i18n.o] Error 1
| make[1]: *** Waiting for unfinished jobs....
| msgfmt -o trans/am.mo src/po/am.po
| msgfmt -o trans/an.mo src/po/an.po
| In file included from src/fill.c:43:
| src/rgblinear.h:82:3: warning: initializer-string for array of ‘unsigned char’ truncates NUL terminator but destination lacks ‘nonstring’ attribute (4097 chars into 4096 available) [-Wunterminated-string-initialization]
|    82 |   "\x00\x01\x02\x03\x03\x04\x05\x06\x07\x08\x08\x09\x0a\x0b\x0b\x0c\x0d\x0d"
|       |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| make[1]: Leaving directory '/build/reproducible-path/tuxpaint-0.9.35'
| dh_auto_build: error: make -j128 INSTALL="install --strip-program=true" all PREFIX=/usr DEBUG_FLAGS=-g VER_DATE=2025-08-12 returned exit code 2
| make: *** [debian/rules:39: build-arch-stamp] Error 25
| dpkg-buildpackage: error: debian/rules binary subprocess failed with exit status 2

The full build log is available here [1].

The issue is due to ISO C23 declaration of bsearch, memchr, strchr,
strpbrk, strrchr, strstr, wcschr, wcspbrk, wcsrchr, wcsstr and wmemchr,
which now returns a pointer to a const-qualified type when the input
argument is a pointer to a const-qualified type [2].

I would like to thanks Emanuele Rocca for doing the archive rebuild on
a fast arm64 server.

Regards
Aurelien

[1] https://people.debian.org/~ema/glibc-2.43-rebuilds/output-1/tuxpaint_arm64.build
[2] https://sourceware.org/git/?p=glibc.git;a=blob;f=NEWS;h=e271fb2e4d76903c77a302aaec1ca22ce31027d0;hb=f762ccf84f122d1354f103a151cba8bde797d521#l19

#1128757#12
Date:
2026-08-10 12:44:53 UTC
From:
To:
control: severity 1127629 serious
control: severity 1128547 serious
control: severity 1128734 serious
control: severity 1128740 serious
control: severity 1128528 serious
control: severity 1128532 serious
control: severity 1128534 serious
control: severity 1128541 serious
control: severity 1128544 serious
control: severity 1128545 serious
control: severity 1128548 serious
control: severity 1128549 serious
control: severity 1128551 serious
control: severity 1128615 serious
control: severity 1128678 serious
control: severity 1128680 serious
control: severity 1128681 serious
control: severity 1128697 serious
control: severity 1128736 serious
control: severity 1128737 serious
control: severity 1128738 serious
control: severity 1128741 serious
control: severity 1128742 serious
control: severity 1128743 serious
control: severity 1128750 serious
control: severity 1128757 serious
control: severity 1128761 serious
control: severity 1128763 serious
control: severity 1128764 serious
control: severity 1128875 serious
control: severity 1128952 serious
control: severity 1128542 serious
control: severity 1128679 serious
control: severity 1128682 serious
control: severity 1128744 serious
control: severity 1128748 serious
control: severity 1128867 serious

Hi,

With the upload of glibc 2.43 to unstable, the packages now FTBFS in
unstable, hence upgrading the severity to serious.

Note that as a quick workaround, it is possible to roll back to C/C++17
standard using -std=c17, -std=gnu17, std=c++17 or std=gnu++17. This was
the default up to GCC 14, and GCC 15 changed it to C/C23.

Regards
Aurelien

#1128757#17
Date:
2026-08-16 07:04:57 UTC
From:
To:
Control: tags -1 fixed-upstream

This was fixed upstream as per
https://sourceforge.net/p/tuxpaint/tuxpaint/ci/6271edececef2a3720e5a5b4e245407cf909f034/
| Make short_lang_prefix non-const
|
| - Glibc-2.43 does not allow assigning
| to const char pointer anymore, requiring to make
| short_lang_prefix non-const
| - See: https://bugs.gentoo.org/969855
so now tagging accordingly.

HTH,
Flo