From 88f36f56abe939ad04286e0bd6842cadc8997911997d556ead54e9dbc520d0cc Mon Sep 17 00:00:00 2001 From: Luciano Santos Date: Thu, 18 May 2023 04:12:49 +0000 Subject: [PATCH] Accepting request 1087282 from GNOME:Next - Update to version 3.5.2: + Fix several possible crashers. + Fix bashisms in doc generation scripts. + Fix ISO8601 date strings in cursors on Darwin. + Plug leak. - Add 63ea8f1a.patch: Revert build: Detect appropriate strftime() year modifier at build time. Revert upstream commit for now as it breaks build for i586. OBS-URL: https://build.opensuse.org/request/show/1087282 OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/tracker?expand=0&rev=251 --- 63ea8f1a.patch | 115 +++++++++++++++++++++++++++++++++++++++++++ tracker-3.5.1.tar.xz | 3 -- tracker-3.5.2.tar.xz | 3 ++ tracker.changes | 12 +++++ tracker.spec | 7 ++- 5 files changed, 135 insertions(+), 5 deletions(-) create mode 100644 63ea8f1a.patch delete mode 100644 tracker-3.5.1.tar.xz create mode 100644 tracker-3.5.2.tar.xz diff --git a/63ea8f1a.patch b/63ea8f1a.patch new file mode 100644 index 0000000..a7312db --- /dev/null +++ b/63ea8f1a.patch @@ -0,0 +1,115 @@ +From 63ea8f1a2a603c356ad770ae7567246e7520f298 Mon Sep 17 00:00:00 2001 +From: Carlos Garnacho +Date: Tue, 2 May 2023 10:27:31 +0200 +Subject: [PATCH] build: Detect appropriate strftime() year modifier at build + time + +Different libc implementations (or different platforms) have different +bugs. Even though %Y is documented as a 4-digit number, and %C as +year/100 in a [00-99] range, they both crap out with years under 1000, +using respectively 3 and 1 digits. + +This would be typically task for a width modifier (e.g. %4Y, or %2C), +but that was conversely found to break NixOS on Darwin. + +Since the existing libc bugs paint us to a corner, detect an +appropriate modifier at build time to get a 4-digit year to get true +ISO 8601 in our supported [0001-9999] year range. + +Closes: https://gitlab.gnome.org/GNOME/tracker/-/issues/402 +--- + config.h.meson.in | 3 ++ + meson.build | 35 +++++++++++++++++++ + .../core/tracker-db-interface-sqlite.c | 4 +-- + 3 files changed, 40 insertions(+), 2 deletions(-) + +diff --git a/config.h.meson.in b/config.h.meson.in +index df4b880b08..2faa1a5860 100644 +--- a/config.h.meson.in ++++ b/config.h.meson.in +@@ -51,3 +51,6 @@ + + /* Whether RTLD_NOLOAD is defined */ + #mesondefine HAVE_RTLD_NOLOAD ++ ++/* Appropriate 4-digit year modifier for strftime() */ ++#mesondefine STRFTIME_YEAR_MODIFIER +diff --git a/meson.build b/meson.build +index 3c147c8f36..6a7f8e1336 100644 +--- a/meson.build ++++ b/meson.build +@@ -198,6 +198,39 @@ else + endif + endif + ++################################################################## ++# Get an appropriate 4-digit year modifier for strftime ++################################################################## ++result = cc.run(''' ++ #include ++ #include ++ #include ++ ++ 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]; ++ 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) { ++ printf ("%s", modifiers[i]); ++ return 0; ++ } ++ } ++ return -1; ++ } ++ ''', ++ name: 'strftime 4-digit year modifier') ++ ++if not result.compiled() or result.returncode() != 0 ++ error('Libc implementation has broken 4-digit years implementation.') ++else ++ year_modifier = result.stdout() ++endif ++ + ################################################################## + # Check for libtracker-data and libtracker-fts: Unicode support + # +@@ -306,6 +339,7 @@ conf.set('TRACKER_MINOR_VERSION', tracker_minor_version) + conf.set('TRACKER_MICRO_VERSION', tracker_micro_version) + conf.set('TRACKER_INTERFACE_AGE', 0) + conf.set('TRACKER_BINARY_AGE', 100 * tracker_minor_version + tracker_micro_version) ++conf.set('STRFTIME_YEAR_MODIFIER', '"@0@"'.format(year_modifier)) + + # Check for RTLD_NOLOAD + have_rtld_noload = cc.has_header_symbol('dlfcn.h', 'RTLD_NOLOAD') +@@ -399,6 +433,7 @@ summary = [ + ' Debug: ' + get_option('debug').to_string(), + ' Optimization: ' + get_option('optimization'), + ' Compiler: ' + cc.get_id(), ++ ' 4-digit strftime() year modifier: ' + year_modifier, + '\nFeature Support:', + ' Unicode support library: ' + unicode_library_name, + ' Build with Stemming support: ' + have_libstemmer.to_string(), +diff --git a/src/libtracker-sparql/core/tracker-db-interface-sqlite.c b/src/libtracker-sparql/core/tracker-db-interface-sqlite.c +index 2aa493ca9c..25e2c519fd 100644 +--- a/src/libtracker-sparql/core/tracker-db-interface-sqlite.c ++++ b/src/libtracker-sparql/core/tracker-db-interface-sqlite.c +@@ -1624,9 +1624,9 @@ function_sparql_print_value (sqlite3_context *context, + result_context_function_error (context, fn, "Invalid unix timestamp"); + + if (prop_type == TRACKER_PROPERTY_TYPE_DATETIME) +- retval = strftime ((gchar *) &buf, sizeof (buf), "%2C%y-%m-%dT%TZ", &tm); ++ retval = strftime ((gchar *) &buf, sizeof (buf), STRFTIME_YEAR_MODIFIER "-%m-%dT%TZ", &tm); + else if (prop_type == TRACKER_PROPERTY_TYPE_DATE) +- retval = strftime ((gchar *) &buf, sizeof (buf), "%2C%y-%m-%d", &tm); ++ retval = strftime ((gchar *) &buf, sizeof (buf), STRFTIME_YEAR_MODIFIER "-%m-%d", &tm); + else + g_assert_not_reached (); + +-- +GitLab + diff --git a/tracker-3.5.1.tar.xz b/tracker-3.5.1.tar.xz deleted file mode 100644 index 0c6980c..0000000 --- a/tracker-3.5.1.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f972d50ac7bafdccf113b1eb99dcae35404685a99e55bfef16f3ac83b4de974d -size 2566076 diff --git a/tracker-3.5.2.tar.xz b/tracker-3.5.2.tar.xz new file mode 100644 index 0000000..047d94a --- /dev/null +++ b/tracker-3.5.2.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e93d40bc76103a0a24693818cdab2b34e76c64e260b3e762784faeec4ba4a8b3 +size 2566540 diff --git a/tracker.changes b/tracker.changes index b4cdf48..52f1fe4 100644 --- a/tracker.changes +++ b/tracker.changes @@ -1,3 +1,15 @@ +------------------------------------------------------------------- +Sat May 13 11:23:38 UTC 2023 - Bjørn Lie + +- Update to version 3.5.2: + + Fix several possible crashers. + + Fix bashisms in doc generation scripts. + + Fix ISO8601 date strings in cursors on Darwin. + + Plug leak. +- Add 63ea8f1a.patch: Revert build: Detect appropriate strftime() + year modifier at build time. Revert upstream commit for now as it + breaks build for i586. + ------------------------------------------------------------------- Tue Apr 25 16:34:18 UTC 2023 - Bjørn Lie diff --git a/tracker.spec b/tracker.spec index 8edac31..8032439 100644 --- a/tracker.spec +++ b/tracker.spec @@ -21,13 +21,15 @@ %define RPMTrackerAPI 3_0 Name: tracker -Version: 3.5.1 +Version: 3.5.2 Release: 0 Summary: Object database, tag/metadata database, search tool and indexer License: GPL-2.0-or-later Group: Productivity/Other URL: https://wiki.gnome.org/Projects/Tracker Source0: https://download.gnome.org/sources/tracker/3.5/%{name}-%{version}.tar.xz +# PATCH-FIX-OPENSUSE 63ea8f1a.patch -- Revert build: Detect appropriate strftime() year modifier at build time +Patch0: https://gitlab.gnome.org/GNOME/tracker/-/commit/63ea8f1a.patch BuildRequires: asciidoc BuildRequires: fdupes @@ -134,7 +136,8 @@ This subpackage contains the data files for the Tracker miners. %lang_package %prep -%autosetup -p1 +%autosetup -N +%patch0 -R -p1 %build %meson \