#1128763 links2: FTBFS with glibc 2.43 due to ISO C23 const return types

Package:
src:links2
Source:
src:links2
Submitter:
Aurelien Jarno
Date:
2026-02-22 16:29:02 UTC
Severity:
normal
Tags:
#1128763#5
Date:
2026-02-22 16:27:16 UTC
From:
To:
Dear maintainer(s),

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

| ../ftp.c: In function ‘got_something_from_data_connection’:
| ../ftp.c:771:99: error: assignment of read-only location ‘*(const char *)strchr((const char *)ud, 1)’
|   771 |                 if (strchr(cast_const_char ud, POST_CHAR)) *strchr(cast_const_char ud, POST_CHAR) = 0;
|       |                                                                                                   ^
| ../compress.c: In function ‘decode_zstd’:
| ../compress.c:390:17: warning: ‘ZSTD_getDecompressedSize’ is deprecated [-Wdeprecated-declarations]
|   390 |                 dec_size = ZSTD_getDecompressedSize(f->data, f->length);
|       |                 ^~~~~~~~
| In file included from ../compress.c:357:
| /usr/include/zstd.h:214:32: note: declared here
|   214 | ZSTDLIB_API unsigned long long ZSTD_getDecompressedSize(const void* src, size_t srcSize);
|       |                                ^~~~~~~~~~~~~~~~~~~~~~~~
| make[2]: *** [Makefile:604: ftp.o] Error 1
| make[2]: *** Waiting for unfinished jobs....
| ../svg.c: In function ‘svg_finish’:
| ../svg.c:154:9: warning: ‘rsvg_handle_get_dimensions’ is deprecated: Use 'rsvg_handle_get_intrinsic_size_in_pixels' instead [-Wdeprecated-declarations]
|   154 |         rsvg_handle_get_dimensions(deco->handle, &dim);
|       |         ^~~~~~~~~~~~~~~~~~~~~~~~~~
| In file included from ../svg.c:9:
| /usr/include/librsvg-2.0/librsvg/rsvg.h:666:6: note: declared here
|   666 | void rsvg_handle_get_dimensions (RsvgHandle *handle, RsvgDimensionData *dimension_data);
|       |      ^~~~~~~~~~~~~~~~~~~~~~~~~~
| ../svg.c:181:9: warning: ‘rsvg_handle_render_cairo’ is deprecated: Use 'rsvg_handle_render_document' instead [-Wdeprecated-declarations]
|   181 |         rsvg_handle_render_cairo(deco->handle, cairo);
|       |         ^~~~~~~~~~~~~~~~~~~~~~~~
| In file included from /usr/include/librsvg-2.0/librsvg/rsvg.h:1334:
| /usr/include/librsvg-2.0/librsvg/rsvg-cairo.h:90:10: note: declared here
|    90 | gboolean rsvg_handle_render_cairo (RsvgHandle *handle, cairo_t *cr);
|       |          ^~~~~~~~~~~~~~~~~~~~~~~~
| make[2]: Leaving directory '/build/reproducible-path/links2-2.29/build-links2'
| dh_auto_install: error: cd build-links2 && make -j128 install DESTDIR=/build/reproducible-path/links2-2.29/debian/tmp AM_UPDATE_INFO_DIR=no returned exit code 2
| make[1]: *** [debian/rules:41: override_dh_auto_install] Error 25
| make[1]: Leaving directory '/build/reproducible-path/links2-2.29'
| make: *** [debian/rules:19: binary] Error 2
| 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/links2_arm64.build
[2] https://sourceware.org/git/?p=glibc.git;a=blob;f=NEWS;h=e271fb2e4d76903c77a302aaec1ca22ce31027d0;hb=f762ccf84f122d1354f103a151cba8bde797d521#l19