Fix time_t check on 32bit platforms

This commit is contained in:
David King 2023-05-18 08:44:47 +01:00
parent dc5d9e7d2a
commit aa041abbce
2 changed files with 92 additions and 0 deletions

View File

@ -0,0 +1,89 @@
From 4fc04fea1755c3c4f8913877c2c1889779d3d4d1 Mon Sep 17 00:00:00 2001
From: Brahmajit Das <brahmajit.xyz@gmail.com>
Date: Sun, 14 May 2023 09:59:58 +0530
Subject: [PATCH] build: Define _GNU_SOURCE for gmtime_r
Found while building tracker 3.5.2 with clang 16, which enable
Wimplicit-function-declaration by default.
Without _GNU_SOURCE defined, tracker would fail in the configure phase
with Checking if "strftime 4-digit year modifier" runs: DID NOT
COMPILE error. And investigating the meson log we see
Compiler stderr:
/var/tmp/portage/app-misc/tracker-3.5.2/work/tracker-3.5.2-build/meson-private/tmplr2vm6b0/testfile.c:12:5: error: call to undeclared function 'gmtime_r'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
gmtime_r (&timestamp, &tm);
And a little further up
Command line: clang /var/tmp/portage/app-misc/tracker-3.5.2/work/tracker-3.5.2-build/meson-private/tmplr2vm6b0/testfile.c -o /var/tmp/portage/app-misc/tracker-3.5.2/work/tracker-3.5.2-build/meson-private/tmplr2vm6b0/output.exe -O2 -pipe -march=native -DTRACKER_DEBUG -DG_DISABLE_CAST_CHECKS -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -std=c99 -Wl,-O1 -Wl,--as-needed -fuse-ld=lld -rtlib=compiler-rt -unwindlib=libunwind -Wl,--as-needed
Seems like cc.run() doesn't pick up the general compiler args we set
earlier. We have already set it for the main build, so adding it just
for the configure test should be fine.
Signed-off-by: Brahmajit Das <brahmajit.xyz@gmail.com>
---
meson.build | 1 +
1 file changed, 1 insertion(+)
diff --git a/meson.build b/meson.build
index 7b22cb1f9..00af07e6e 100644
--- a/meson.build
+++ b/meson.build
@@ -202,6 +202,7 @@ endif
# Get an appropriate 4-digit year modifier for strftime
##################################################################
result = cc.run('''
+ #define _GNU_SOURCE
#include <stdio.h>
#include <string.h>
#include <time.h>
--
GitLab
From fd67d19a9436a353eb0611ed6ca78f777865bdca Mon Sep 17 00:00:00 2001
From: Carlos Garnacho <carlosg@gnome.org>
Date: Tue, 16 May 2023 23:46:52 +0200
Subject: [PATCH] core: Define _TIME_BITS=64 to ensure 64-bit time in 32-bit
platforms
This is not always defined for us, and is necessary to get 64-bit wide time_t
types on 32-bit platforms. Luckily, we can define this concisely in the file
needing it, and don't have this type in API barriers.
Closes: https://gitlab.gnome.org/GNOME/tracker/-/issues/404
---
meson.build | 1 +
src/libtracker-sparql/core/tracker-db-interface-sqlite.c | 3 +++
2 files changed, 4 insertions(+)
diff --git a/meson.build b/meson.build
index 00af07e6e..85ca88052 100644
--- a/meson.build
+++ b/meson.build
@@ -202,6 +202,7 @@ endif
# Get an appropriate 4-digit year modifier for strftime
##################################################################
result = cc.run('''
+ #define _TIME_BITS 64
#define _GNU_SOURCE
#include <stdio.h>
#include <string.h>
diff --git a/src/libtracker-sparql/core/tracker-db-interface-sqlite.c b/src/libtracker-sparql/core/tracker-db-interface-sqlite.c
index 51d54368f..72669774e 100644
--- a/src/libtracker-sparql/core/tracker-db-interface-sqlite.c
+++ b/src/libtracker-sparql/core/tracker-db-interface-sqlite.c
@@ -19,6 +19,9 @@
#include "config.h"
+/* 64-bit time on 32-bit platforms */
+#define _TIME_BITS 64
+
#include <glib/gstdio.h>
#include <sqlite3.h>
--
GitLab

View File

@ -10,6 +10,9 @@ Summary: Desktop-neutral metadata database and search tool
License: GPL-2.0-or-later
URL: https://gnome.pages.gitlab.gnome.org/tracker/
Source0: https://download.gnome.org/sources/tracker/3.5/tracker-%{tarball_version}.tar.xz
# https://gitlab.gnome.org/GNOME/tracker/-/merge_requests/596
# https://gitlab.gnome.org/GNOME/tracker/-/merge_requests/598
Patch0: tracker-3.5.2-fix-time_t_check-32bit.patch
BuildRequires: asciidoc
BuildRequires: gettext