diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2018-06-17 16:25:37 +0200 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2018-06-21 14:11:45 +0200 |
commit | 2aaeda7495387d87a5b3f51326a1389dae0ff8dd (patch) | |
tree | 8d4d291dba3d812411a7a7f10906eeb49971a227 /src | |
parent | 5b568010d268f36fc2c3b36185688378e058af07 (diff) | |
download | tracker-2aaeda7495387d87a5b3f51326a1389dae0ff8dd.tar.gz |
libtracker-common: Drop automatic parser versioning
The TRACKER_PARSER_VERSION number must be bumped on every change
to src/libtracker-common/tracker-parser*. This policy shall be
enforced through a server-side update hook.
This is a bit more cumbersome for the OTOH sparse changes to the
parser, but friendlier to the meson build system, where we can't
have build-generated files added to dist.
Diffstat (limited to 'src')
-rw-r--r-- | src/Makefile.am | 3 | ||||
-rw-r--r-- | src/libtracker-bus/meson.build | 2 | ||||
-rw-r--r-- | src/libtracker-common/Makefile.am | 6 | ||||
-rwxr-xr-x | src/libtracker-common/generate-tracker-parser-sha1-header.sh | 30 | ||||
-rw-r--r-- | src/libtracker-common/meson.build | 7 | ||||
-rw-r--r-- | src/libtracker-common/tracker-parser.h | 7 | ||||
-rw-r--r-- | src/libtracker-control/meson.build | 2 | ||||
-rw-r--r-- | src/libtracker-data/meson.build | 4 | ||||
-rw-r--r-- | src/libtracker-data/tracker-db-manager.c | 25 |
9 files changed, 27 insertions, 59 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index 22b6ad84f..5d76e30c5 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -19,5 +19,4 @@ SUBDIRS = \ tracker-store EXTRA_DIST = \ - meson.build \ - install-generated-header.sh + meson.build diff --git a/src/libtracker-bus/meson.build b/src/libtracker-bus/meson.build index 025a1ff9f..6b3a3b1e3 100644 --- a/src/libtracker-bus/meson.build +++ b/src/libtracker-bus/meson.build @@ -4,7 +4,7 @@ libtracker_bus = static_library('tracker-bus', 'tracker-array-cursor.vala', 'tracker-bus-fd-cursor.vala', '../libtracker-common/libtracker-common.vapi', - tracker_common_enum_header, tracker_common_parser_sha1_header, + tracker_common_enum_header, c_args: tracker_c_args, vala_args: [ '--debug', diff --git a/src/libtracker-common/Makefile.am b/src/libtracker-common/Makefile.am index df7593704..f525668c1 100644 --- a/src/libtracker-common/Makefile.am +++ b/src/libtracker-common/Makefile.am @@ -13,9 +13,6 @@ TRACKER_PARSER_FILES = \ tracker-parser-libicu.c \ tracker-parser-libunistring.c -tracker-parser-sha1.h: $(TRACKER_PARSER_FILES) - $(AM_V_GEN) echo $(ECHO_N) "#define TRACKER_PARSER_SHA1 \""`git log -n1 --format=format:%H -- $^`"\"$(ECHO_C)" > $@ - libtracker_commondir = $(libdir)/tracker-$(TRACKER_API_VERSION) libtracker_common_LTLIBRARIES = libtracker-common.la @@ -73,7 +70,6 @@ tracker-enum-types.c: tracker-enum-types.c.template tracker-enums.h BUILT_SOURCES = \ - tracker-parser-sha1.h \ tracker-enum-types.c \ tracker-enum-types.h @@ -82,9 +78,7 @@ CLEANFILES = \ tracker-enum-types.h EXTRA_DIST = \ - tracker-parser-sha1.h \ libtracker-common.vapi \ tracker-enum-types.c.template \ tracker-enum-types.h.template \ - generate-tracker-parser-sha1-header.sh \ meson.build diff --git a/src/libtracker-common/generate-tracker-parser-sha1-header.sh b/src/libtracker-common/generate-tracker-parser-sha1-header.sh deleted file mode 100755 index 5ea9ae451..000000000 --- a/src/libtracker-common/generate-tracker-parser-sha1-header.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/sh - -# Write the Git SHA1 of the libtracker-common subdir to a header file. -# -# This is used in tracker-db-manager.c to regenerate FTS tables if the parser -# code used by the FTS tokenizer code could have changed. -# -# It's important that this script doesn't touch the output file unless it needs -# to. If it updates the file unconditionally, everything will rebuild from -# scratch every time Meson reexecutes. - -set -ue - -# Check first if we're in a git env, bail out otherwise -git diff HEAD..HEAD >/dev/null 2>&1 - -SRCDIR=${MESON_SOURCE_ROOT}/${MESON_SUBDIR} -BUILDDIR=${MESON_BUILD_ROOT}/${MESON_SUBDIR} - -if [ $@ != 0 && -f ${BUILDDIR}/tracker-parser-sha1.h ]; then - exit 0; -fi - -cached_sha1=$(cat ${BUILDDIR}/tracker-parser-sha1.cached || echo "") -new_sha1=$(git -C ${SRCDIR} log -n1 --format=format:%H -- . ) - -if [ "$cached_sha1" != "$new_sha1" ]; then - echo "#define TRACKER_PARSER_SHA1 \"${new_sha1}\"" > ${BUILDDIR}/tracker-parser-sha1.h - echo ${new_sha1} > ${BUILDDIR}/tracker-parser-sha1.cached -fi diff --git a/src/libtracker-common/meson.build b/src/libtracker-common/meson.build index 4e82e6c7e..3e53ee3bd 100644 --- a/src/libtracker-common/meson.build +++ b/src/libtracker-common/meson.build @@ -6,10 +6,6 @@ enums = gnome.mkenums('tracker-enum-types', h_template: 'tracker-enum-types.h.template', ) -tracker_common_parser_sha1_header = configure_file( - output: 'tracker-parser-sha1.h', - command: ['generate-tracker-parser-sha1-header.sh']) - tracker_common_enum_header = enums[1] tracker_common_sources = [ @@ -26,7 +22,6 @@ tracker_common_sources = [ 'tracker-parser-utils.c', 'tracker-language.c', enums[0], enums[1], - tracker_common_parser_sha1_header, ] if unicode_library_name == 'icu' @@ -63,7 +58,7 @@ commoninc = include_directories('.') # # Upstream issue: https://github.com/mesonbuild/meson/issues/671 tracker_common_dep = declare_dependency( - sources: [tracker_common_enum_header, tracker_common_parser_sha1_header], + sources: [tracker_common_enum_header], link_with: libtracker_common, dependencies: tracker_common_dependencies, include_directories: [configinc, srcinc, commoninc], diff --git a/src/libtracker-common/tracker-parser.h b/src/libtracker-common/tracker-parser.h index 1de905b4f..90c8facc3 100644 --- a/src/libtracker-common/tracker-parser.h +++ b/src/libtracker-common/tracker-parser.h @@ -25,6 +25,13 @@ #include <libtracker-common/tracker-language.h> +/* This version MUST be bumped on any change to any tracker-parser-* + * file. Given the parser output gets both stored in disk and performed + * at runtime, the former must be rebuilt for those to match perfectly + * to avoid returning meaningless results on FTS searches. + */ +#define TRACKER_PARSER_VERSION 1 + G_BEGIN_DECLS typedef struct TrackerParser TrackerParser; diff --git a/src/libtracker-control/meson.build b/src/libtracker-control/meson.build index 80060ecc6..022ac030e 100644 --- a/src/libtracker-control/meson.build +++ b/src/libtracker-control/meson.build @@ -4,7 +4,7 @@ headers = ['tracker-control.h', 'tracker-miner-manager.h'] libtracker_control = library('tracker-control-' + tracker_api_version, sources, - tracker_common_enum_header, tracker_common_parser_sha1_header, + tracker_common_enum_header, c_args: tracker_c_args, install: true, install_rpath: tracker_internal_libs_dir, diff --git a/src/libtracker-data/meson.build b/src/libtracker-data/meson.build index a60f96e67..42323d26d 100644 --- a/src/libtracker-data/meson.build +++ b/src/libtracker-data/meson.build @@ -10,7 +10,7 @@ libtracker_data_vala = static_library('tracker-sparql-query', 'tracker-turtle-reader.vala', '../libtracker-common/libtracker-common.vapi', '../libtracker-data/libtracker-data.vapi', - tracker_common_enum_header, tracker_common_parser_sha1_header, + tracker_common_enum_header, c_args: tracker_c_args, vala_args: [ '--debug', @@ -57,7 +57,7 @@ libtracker_data = library('tracker-data', 'tracker-ontology.c', 'tracker-ontologies.c', 'tracker-property.c', - tracker_common_enum_header, tracker_common_parser_sha1_header, + tracker_common_enum_header, tracker_data_enums[0], tracker_data_enums[1], tracker_gresources[0], diff --git a/src/libtracker-data/tracker-db-manager.c b/src/libtracker-data/tracker-db-manager.c index efb0fa2fb..33e178f4f 100644 --- a/src/libtracker-data/tracker-db-manager.c +++ b/src/libtracker-data/tracker-db-manager.c @@ -34,7 +34,7 @@ #include <glib/gstdio.h> #include <libtracker-common/tracker-common.h> -#include <libtracker-common/tracker-parser-sha1.h> +#include <libtracker-common/tracker-parser.h> #if HAVE_TRACKER_FTS #include <libtracker-fts/tracker-fts.h> @@ -69,7 +69,10 @@ #define IN_USE_FILENAME ".meta.isrunning" -#define PARSER_SHA1_FILENAME "parser-sha1.txt" +#define PARSER_VERSION_FILENAME "parser-version.txt" + +#define TOSTR(x) #x +#define TRACKER_PARSER_VERSION_STRING TOSTR(TRACKER_PARSER_VERSION) typedef enum { TRACKER_DB_VERSION_UNKNOWN, /* Unknown */ @@ -1121,10 +1124,10 @@ tracker_db_manager_has_enough_space (TrackerDBManager *db_manager) } inline static gchar * -get_parser_sha1_filename (TrackerDBManager *db_manager) +get_parser_version_filename (TrackerDBManager *db_manager) { return g_build_filename (db_manager->data_dir, - PARSER_SHA1_FILENAME, + PARSER_VERSION_FILENAME, NULL); } @@ -1132,14 +1135,14 @@ get_parser_sha1_filename (TrackerDBManager *db_manager) gboolean tracker_db_manager_get_tokenizer_changed (TrackerDBManager *db_manager) { - gchar *filename, *sha1; + gchar *filename, *version; gboolean changed = TRUE; - filename = get_parser_sha1_filename (db_manager); + filename = get_parser_version_filename (db_manager); - if (g_file_get_contents (filename, &sha1, NULL, NULL)) { - changed = strcmp (sha1, TRACKER_PARSER_SHA1) != 0; - g_free (sha1); + if (g_file_get_contents (filename, &version, NULL, NULL)) { + changed = strcmp (version, TRACKER_PARSER_VERSION_STRING) != 0; + g_free (version); } g_free (filename); @@ -1153,9 +1156,9 @@ tracker_db_manager_tokenizer_update (TrackerDBManager *db_manager) GError *error = NULL; gchar *filename; - filename = get_parser_sha1_filename (db_manager); + filename = get_parser_version_filename (db_manager); - if (!g_file_set_contents (filename, TRACKER_PARSER_SHA1, -1, &error)) { + if (!g_file_set_contents (filename, TRACKER_PARSER_VERSION_STRING, -1, &error)) { g_warning ("The file '%s' could not be rewritten by Tracker and " "should be deleted manually. Not doing so will result " "in Tracker rebuilding its FTS tokens on every startup. " |