Dear maintainer(s),
libpfm4 fails to build from source with glibc 2.43, currently in
experimental. From the build log:
| cc -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libpfm4-4.13.0+git106-g3e4031b=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -g -Wall -Werror -Wextra -Wno-unused-parameter -I. -I/build/reproducible-path/libpfm4-4.13.0+git106-g3e4031b/include -DCONFIG_PFMLIB_DEBUG -DCONFIG_PFMLIB_OS_LINUX -DCONFIG_PFMLIB_NOTRACEPOINT -g -Wall -Werror -Wextra -Wno-unused-parameter -I. -I/build/reproducible-path/libpfm4-4.13.0+git106-g3e4031b/lib/../include -DCONFIG_PFMLIB_DEBUG -DCONFIG_PFMLIB_OS_LINUX -DCONFIG_PFMLIB_NOTRACEPOINT -DHAS_OPENAT -D_REENTRANT -I. -fvisibility=hidden -DCONFIG_PFMLIB_ARCH_ARM64 -I. -c pfmlib_common.c
...
| cc -fPIC -DPIC -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libpfm4-4.13.0+git106-g3e4031b=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -g -Wall -Werror -Wextra -Wno-unused-parameter -I. -I/build/reproducible-path/libpfm4-4.13.0+git106-g3e4031b/include -DCONFIG_PFMLIB_DEBUG -DCONFIG_PFMLIB_OS_LINUX -DCONFIG_PFMLIB_NOTRACEPOINT -g -Wall -Werror -Wextra -Wno-unused-parameter -I. -I/build/reproducible-path/libpfm4-4.13.0+git106-g3e4031b/lib/../include -DCONFIG_PFMLIB_DEBUG -DCONFIG_PFMLIB_OS_LINUX -DCONFIG_PFMLIB_NOTRACEPOINT -DHAS_OPENAT -D_REENTRANT -I. -fvisibility=hidden -DCONFIG_PFMLIB_ARCH_ARM64 -I. -c pfmlib_common.c -o pfmlib_common.lo
...
| pfmlib_common.c: In function ‘pfmlib_parse_event’:
| pfmlib_common.c:1889:11: error: assignment discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers]
| 1889 | p = strpbrk(event, PFMLIB_EVENT_DELIM);
| | ^
| pfmlib_common.c: In function ‘pfmlib_parse_event’:
| pfmlib_common.c:1889:11: error: assignment discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers]
| 1889 | p = strpbrk(event, PFMLIB_EVENT_DELIM);
| | ^
| cc1: all warnings being treated as errors
| cc1: all warnings being treated as errors
| make[3]: *** [/build/reproducible-path/libpfm4-4.13.0+git106-g3e4031b/lib/../rules.mk:34: pfmlib_common.lo] Error 1
| make[3]: *** Waiting for unfinished jobs....
| make[3]: *** [/build/reproducible-path/libpfm4-4.13.0+git106-g3e4031b/lib/../rules.mk:30: pfmlib_common.o] Error 1
| make[3]: Leaving directory '/build/reproducible-path/libpfm4-4.13.0+git106-g3e4031b/lib'
| make[2]: *** [Makefile:49: all] Error 2
| make[2]: Leaving directory '/build/reproducible-path/libpfm4-4.13.0+git106-g3e4031b'
| dh_auto_build: error: make -j128 INSTALL="install --strip-program=true" ARCH=arm64 returned exit code 2
| make[1]: *** [debian/rules:30: override_dh_auto_build] Error 25
| make[1]: Leaving directory '/build/reproducible-path/libpfm4-4.13.0+git106-g3e4031b'
| make: *** [debian/rules:27: 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/libpfm4_arm64.build
[2] https://sourceware.org/git/?p=glibc.git;a=blob;f=NEWS;h=e271fb2e4d76903c77a302aaec1ca22ce31027d0;hb=f762ccf84f122d1354f103a151cba8bde797d521#l19