Dear maintainer(s),
faketime fails to build from source with glibc 2.43, currently in
experimental. From the build log:
make -C src all
| make[2]: Entering directory '/build/reproducible-path/faketime-0.9.10+2024-06-05+gba9ed5b2/src'
| cc -o libfaketime.o -c -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/faketime-0.9.10+2024-06-05+gba9ed5b2=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -DMULTI_ARCH -DFAKE_RANDOM -DFAKE_PID -std=gnu99 -Wall -Wextra -Werror -DFAKE_PTHREAD -DFAKE_STAT -DFAKE_UTIME -DFAKE_SLEEP -DFAKE_TIMERS -DFAKE_INTERNAL_CALLS -fPIC -DPREFIX='"'/usr'"' -DLIBDIRNAME='"'/lib/faketime'"' -Wno-nonnull-compare -Wdate-time -D_FORTIFY_SOURCE=2 libfaketime.c
| cc -o libfaketimeMT.o -c -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/faketime-0.9.10+2024-06-05+gba9ed5b2=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -DMULTI_ARCH -DFAKE_RANDOM -DFAKE_PID -std=gnu99 -Wall -Wextra -Werror -DFAKE_PTHREAD -DFAKE_STAT -DFAKE_UTIME -DFAKE_SLEEP -DFAKE_TIMERS -DFAKE_INTERNAL_CALLS -fPIC -DPREFIX='"'/usr'"' -DLIBDIRNAME='"'/lib/faketime'"' -Wno-nonnull-compare -Wdate-time -D_FORTIFY_SOURCE=2 -DPTHREAD_SINGLETHREADED_TIME libfaketime.c
| cc -o faketime -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/faketime-0.9.10+2024-06-05+gba9ed5b2=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -DMULTI_ARCH -DFAKE_RANDOM -DFAKE_PID -std=gnu99 -Wall -Wextra -Werror -DFAKE_PTHREAD -DFAKE_STAT -DFAKE_UTIME -DFAKE_SLEEP -DFAKE_TIMERS -DFAKE_INTERNAL_CALLS -fPIC -DPREFIX='"'/usr'"' -DLIBDIRNAME='"'/lib/faketime'"' -Wno-nonnull-compare -Wdate-time -D_FORTIFY_SOURCE=2 faketime.c -Wl,-z,relro -Wl,-z,now -Wl,--version-script=libfaketime.map -lrt -lpthread
| libfaketime.c: In function ‘parse_ft_string’:
| libfaketime.c:2675:38: error: assignment discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers]
| 2675 | else if (NULL != (tmp_time_fmt = strchr(user_faked_time, 'i')))
| | ^
| libfaketime.c: In function ‘str_array_contains’:
| libfaketime.c: In function ‘parse_ft_string’:
| libfaketime.c:2675:38: error: assignment discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers]
| 2675 | else if (NULL != (tmp_time_fmt = strchr(user_faked_time, 'i')))
| | ^
| libfaketime.c:3203:15: error: initialization discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers]
| 3203 | char *pos = strstr(haystack, needle);
| | ^~~~~~
| libfaketime.c: In function ‘str_array_contains’:
| libfaketime.c:3203:15: error: initialization discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers]
| 3203 | char *pos = strstr(haystack, needle);
| | ^~~~~~
| cc1: all warnings being treated as errors
| cc1: all warnings being treated as errors
| make[2]: *** [Makefile:161: libfaketime.o] Error 1
| make[2]: *** Waiting for unfinished jobs....
| make[2]: *** [Makefile:161: libfaketimeMT.o] Error 1
| make[2]: Leaving directory '/build/reproducible-path/faketime-0.9.10+2024-06-05+gba9ed5b2/src'
| make[1]: *** [Makefile:8: all] Error 2
| make[1]: Leaving directory '/build/reproducible-path/faketime-0.9.10+2024-06-05+gba9ed5b2'
| dh_auto_build: error: make -j128 INSTALL="install --strip-program=true" returned exit code 2
| make: *** [debian/rules:33: 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/faketime_arm64.build
[2] https://sourceware.org/git/?p=glibc.git;a=blob;f=NEWS;h=e271fb2e4d76903c77a302aaec1ca22ce31027d0;hb=f762ccf84f122d1354f103a151cba8bde797d521#l19