Bugzilla – Bug 1221480
GCC 14: tracker package fails - broken meson test
Last modified: 2024-03-15 16:22:26 UTC
Building tracker with GCC 14 fails here: https://build.opensuse.org/package/live_build_log/openSUSE:Factory:Staging:Gcc7/tracker/standard/x86_64 Due to: meson.build:231:2: ERROR: Problem encountered: Libc implementation has broken 4-digit years implementation. ./tracker-3.6.0/x86_64-suse-linux/meson-logs/meson-log.txt: /home/abuild/rpmbuild/BUILD/tracker-3.6.0/x86_64-suse-linux/meson-private/tmpqt17smcw/testfile.c: In function 'main': ./tracker-3.6.0/x86_64-suse-linux/meson-logs/meson-log.txt: /home/abuild/rpmbuild/BUILD/tracker-3.6.0/x86_64-suse-linux/meson-private/tmpqt17smcw/testfile.c:16:17: error: passing argument 1 of 'strftime' from incompatible pointer type [-Wincompatible-pointer-types] ./tracker-3.6.0/x86_64-suse-linux/meson-logs/meson-log.txt: 16 | strftime (&buf, sizeof buf, modifiers[i], &tm); ./tracker-3.6.0/x86_64-suse-linux/meson-logs/meson-log.txt: | ^~~~ ./tracker-3.6.0/x86_64-suse-linux/meson-logs/meson-log.txt: | | ./tracker-3.6.0/x86_64-suse-linux/meson-logs/meson-log.txt: | char * (*)[100] ./tracker-3.6.0/x86_64-suse-linux/meson-logs/meson-log.txt: In file included from /home/abuild/rpmbuild/BUILD/tracker-3.6.0/x86_64-suse-linux/meson-private/tmpqt17smcw/testfile.c:6: ./tracker-3.6.0/x86_64-suse-linux/meson-logs/meson-log.txt: /usr/include/time.h:100:42: note: expected 'char * restrict' but argument is of type 'char * (*)[100]' ./tracker-3.6.0/x86_64-suse-linux/meson-logs/meson-log.txt: 100 | extern size_t strftime (char *__restrict __s, size_t __maxsize, ./tracker-3.6.0/x86_64-suse-linux/meson-logs/meson-log.txt: | ~~~~~~~~~~~~~~~~~^~~ ./tracker-3.6.0/x86_64-suse-linux/meson-logs/meson-log.txt: /home/abuild/rpmbuild/BUILD/tracker-3.6.0/x86_64-suse-linux/meson-private/tmpqt17smcw/testfile.c:17:19: error: passing argument 1 of 'strcmp' from incompatible pointer type [-Wincompatible-pointer-types] ./tracker-3.6.0/x86_64-suse-linux/meson-logs/meson-log.txt: 17 | if (strcmp (&buf, "0101") == 0) { ./tracker-3.6.0/x86_64-suse-linux/meson-logs/meson-log.txt: | ^~~~ ./tracker-3.6.0/x86_64-suse-linux/meson-logs/meson-log.txt: | | ./tracker-3.6.0/x86_64-suse-linux/meson-logs/meson-log.txt: | char * (*)[100] ./tracker-3.6.0/x86_64-suse-linux/meson-logs/meson-log.txt: In file included from /home/abuild/rpmbuild/BUILD/tracker-3.6.0/x86_64-suse-linux/meson-private/tmpqt17smcw/testfile.c:5: ./tracker-3.6.0/x86_64-suse-linux/meson-logs/meson-log.txt: /usr/include/string.h:156:32: note: expected 'const char *' but argument is of type 'char * (*)[100]' ./tracker-3.6.0/x86_64-suse-linux/meson-logs/meson-log.txt: 156 | extern int strcmp (const char *__s1, const char *__s2) ./tracker-3.6.0/x86_64-suse-linux/meson-logs/meson-log.txt: | ~~~~~~~~~~~~^~~~ Builds with: Index: tracker-3.6.0/meson.build =================================================================== --- tracker-3.6.0.orig/meson.build +++ tracker-3.6.0/meson.build @@ -211,13 +211,13 @@ result = cc.run(''' int main (int argc, char *argv[]) { char *modifiers[] = { "%Y", "%C%y", "%4Y", "%2C%y", NULL }; time_t timestamp = -58979923200; /* 0101-01-01T01:01:01Z */ - char *buf[100]; + char buf[100]; struct tm tm; int i; gmtime_r (×tamp, &tm); for (i = 0; modifiers[i]; i++) { - strftime (&buf, sizeof buf, modifiers[i], &tm); - if (strcmp (&buf, "0101") == 0) { + strftime (buf, sizeof buf, modifiers[i], &tm); + if (strcmp (buf, "0101") == 0) { printf ("%s", modifiers[i]); return 0; } See the meta bug#1220571 for more info.