diff --git a/9000-Reset-the-indexer-database-for-users-who-newly-start.patch b/9000-Reset-the-indexer-database-for-users-who-newly-start.patch new file mode 100644 index 0000000000000000000000000000000000000000..ce122a7a6301e1b26fc149fe678743ea8ef70d70 --- /dev/null +++ b/9000-Reset-the-indexer-database-for-users-who-newly-start.patch @@ -0,0 +1,26 @@ +From 1616f3312105d3fb3c48aba32ed5ffeea37c4d9d Mon Sep 17 00:00:00 2001 +From: herengui +Date: Thu, 1 Jun 2023 17:54:53 +0800 +Subject: [PATCH] Reset the indexer database for users who newly start + tracker-miner-fs + +Signed-off-by: herengui +--- + src/miners/fs/tracker-miner-fs.service.in | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/miners/fs/tracker-miner-fs.service.in b/src/miners/fs/tracker-miner-fs.service.in +index 5a562c2..8b38cf5 100644 +--- a/src/miners/fs/tracker-miner-fs.service.in ++++ b/src/miners/fs/tracker-miner-fs.service.in +@@ -5,6 +5,7 @@ ConditionUser=!root + [Service] + Type=dbus + BusName=org.freedesktop.Tracker3.Miner.Files ++ExecStartPre=@libexecdir@/tracker3-bootstrap.sh + ExecStart=@libexecdir@/tracker-miner-fs-3 + Restart=on-failure + # Don't restart after tracker daemon -k (aka tracker-control -k) +-- +2.40.1 + diff --git a/tracker3-bootstrap.sh b/tracker3-bootstrap.sh new file mode 100644 index 0000000000000000000000000000000000000000..86dbcb3f9c812638c806670c38d7304570134be6 --- /dev/null +++ b/tracker3-bootstrap.sh @@ -0,0 +1,36 @@ +#!/usr/bin/bash +#shellcheck shell=bash + +SCRIPT_NAME="$(basename "$0")" + +if test "$(id -u)" -eq 0; then + logger "[${SCRIPT_NAME}] Do not allow the root user to execute the program." + exit 1 +fi + +HOME_DIR="$(printenv HOME)" +# If the home directory is the root directory, nothing needs to be done +if test "${HOME_DIR}" == '/'; then + exit 0 +fi + +TRACKER3_EXEC="/usr/bin/tracker3" +# Directly determine if the target path exists +if ! test -d "%{HOME_DIR}/.cache/tracker3/files"; then + if ! ${TRACKER3_EXEC} reset --filesystem &>/dev/null; then + logger "[${SCRIPT_NAME}] Failed to delete file system indexer database." + exit 1 + fi +fi + +META_DB="%{HOME_DIR}/.cache/tracker3/files/meta.db" +if ! test -f "${META_DB}"; then + exit 0 +fi + +SQLITE3_ANALYZER="/usr/bin/sqlite3_analyzer" +if test -x "${SQLITE3_ANALYZER}"; then + if ! ${SQLITE3_ANALYZER} "${META_DB}" &>/dev/null; then + ${TRACKER3_EXEC} reset --filesystem &>/dev/null + fi +fi diff --git a/tracker3-miners.spec b/tracker3-miners.spec index 3b2a6be53d76145d821e98fd70899f2e6861d6c9..bf0622312c153f814e5e6fee4c1fe46e9c7bd225 100644 --- a/tracker3-miners.spec +++ b/tracker3-miners.spec @@ -2,12 +2,15 @@ Name: tracker3-miners Version: 3.0.5 -Release: 4 +Release: 5 Summary: One of two parts of tracker mainly contains the indexer daemon and tools. License: GPLv2+ and LGPLv2+ URL: https://wiki.gnome.org/Projects/Tracker Source0: https://download.gnome.org/sources/tracker-miners/3.0/tracker-miners-%{version}.tar.xz +Source9000: tracker3-bootstrap.sh + +Patch9000: 9000-Reset-the-indexer-database-for-users-who-newly-start.patch BuildRequires: asciidoc libxslt coreutils glib2 glib2-devel gcc giflib-devel meson systemd BuildRequires: pkgconfig(tracker-sparql-3.0) pkgconfig(tracker-testutils-3.0) @@ -49,6 +52,7 @@ this is for version 3 series. %install %meson_install +install -D -p -m 0755 %{SOURCE9000} %{buildroot}%{_libexecdir}/ %find_lang tracker3-miners chrpath -d %{buildroot}%{_libexecdir}/tracker-* @@ -85,6 +89,9 @@ echo "%{_libdir}/tracker-miners-3.0" > %{buildroot}%{_sysconfdir}/ld.so.conf.d/% %changelog +* Thu Aug 10 2023 yeqinglong - 3.0.5-5 +- check the meta.db before starting tracker-miner-fs-3 and delete the invalid database file + * Mon Apr 24 2023 panchenbo - 3.0.5-4 - touch /etc/ld.so.conf.d/%{name}_%{_arch}.conf in spec ,del SOURCE1