From aa041abbce94fdb87cfb26819792d418fe6747f4 Mon Sep 17 00:00:00 2001 From: David King Date: Thu, 18 May 2023 08:44:47 +0100 Subject: [PATCH] Fix time_t check on 32bit platforms --- tracker-3.5.2-fix-time_t_check-32bit.patch | 89 ++++++++++++++++++++++ tracker.spec | 3 + 2 files changed, 92 insertions(+) create mode 100644 tracker-3.5.2-fix-time_t_check-32bit.patch diff --git a/tracker-3.5.2-fix-time_t_check-32bit.patch b/tracker-3.5.2-fix-time_t_check-32bit.patch new file mode 100644 index 0000000..50777d7 --- /dev/null +++ b/tracker-3.5.2-fix-time_t_check-32bit.patch @@ -0,0 +1,89 @@ +From 4fc04fea1755c3c4f8913877c2c1889779d3d4d1 Mon Sep 17 00:00:00 2001 +From: Brahmajit Das +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 (×tamp, &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 +--- + 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 + #include + #include +-- +GitLab + +From fd67d19a9436a353eb0611ed6ca78f777865bdca Mon Sep 17 00:00:00 2001 +From: Carlos Garnacho +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 + #include +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 + + #include +-- +GitLab + diff --git a/tracker.spec b/tracker.spec index 1073094..aa73e08 100644 --- a/tracker.spec +++ b/tracker.spec @@ -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