Dear maintainer(s),
collectd fails to build from source with glibc 2.43, currently in
experimental. From the build log:
| /bin/bash ./libtool --tag=CC --mode=compile aarch64-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I./src -I./src -I./src/daemon -DPREFIX='"/usr"' -DCONFIGFILE='"/etc/collectd.conf"' -DLOCALSTATEDIR='"/var"' -DPKGLOCALSTATEDIR='"/var/lib/collectd"' -DPLUGINDIR='"/usr/lib/collectd"' -DPKGDATADIR='"/usr/share/collectd"' -Wdate-time -D_FORTIFY_SOURCE=2 -I/build/reproducible-path/collectd-5.12.0/debian/include -UCONFIGFILE -DCONFIGFILE='"/etc/collectd/collectd.conf"' -Wall -Werror -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/collectd-5.12.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wall -Wno-error=deprecated-declarations -Wno-error=address-of-packed-member -Wno-stringop-truncation -Wno-cpp -Wno-error=format-truncation -MT src/redis_la-redis.lo -MD -MP -MF src/.deps/redis_la-redis.Tpo -c -o src/redis_la-redis.lo `test -f 'src/redis.c' || echo './'`src/redis.c
...
| src/redis.c: In function 'redis_get_info_value':
| src/redis.c:364:15: error: initialization discards 'const' qualifier from pointer target type [-Werror=discarded-qualifiers]
| 364 | char *str = strstr(info_line, field_name);
| | ^~~~~~
| src/redis.c: In function 'redis_db_stats':
| src/redis.c:492:9: error: assignment discards 'const' qualifier from pointer target type [-Werror=discarded-qualifiers]
| 492 | str = strstr(info_line, field_name);
| | ^
...
| make[1]: *** [Makefile:5467: all] Error 2
| make[1]: Leaving directory '/build/reproducible-path/collectd-5.12.0'
| dh_auto_build: error: make -j128 returned exit code 2
| make: *** [debian/rules:281: binary] 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/collectd_arm64.build
[2] https://sourceware.org/git/?p=glibc.git;a=blob;f=NEWS;h=e271fb2e4d76903c77a302aaec1ca22ce31027d0;hb=f762ccf84f122d1354f103a151cba8bde797d521#l19