Bug 1221480 - GCC 14: tracker package fails - broken meson test
Summary: GCC 14: tracker package fails - broken meson test
Status: NEW
Alias: None
Product: openSUSE Tumbleweed
Classification: openSUSE
Component: GNOME (show other bugs)
Version: Current
Hardware: Other Other
: P5 - None : Normal (vote)
Target Milestone: ---
Assignee: E-mail List
QA Contact: E-mail List
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: modern_C
  Show dependency treegraph
 
Reported: 2024-03-15 16:22 UTC by Michal Jireš
Modified: 2024-03-15 16:22 UTC (History)
1 user (show)

See Also:
Found By: ---
Services Priority:
Business Priority:
Blocker: ---
Marketing QA Status: ---
IT Deployment: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Michal Jireš 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 (&timestamp, &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.