Commits (262)
......@@ -4,32 +4,9 @@
- test
stage: test
# First build and install latest Tracker using Meson (the Autotools build
# of Tracker is tested already in tracker.git, we don't need to suffer that
# again).
- mkdir /opt/tracker; chown tracker:tracker /opt/tracker
- su tracker -c 'git clone'
- su tracker -c 'cd tracker; mkdir build'
- su tracker -c 'cd tracker/build; meson .. --prefix=/opt/tracker -Ddbus_services=/opt/tracker/share/dbus-1/services -Dsystemd_user_services=/opt/tracker/lib/systemd/user'
- su tracker -c 'cd tracker/build; ninja install'
# Delete the build tree now that we're done with it, or `intltool-update`
# raise a spurious error later during `make check`.
- su tracker -c 'rm -Rf tracker'
# Now build tracker-miners using Autotools, linking against new Tracker.
- PKG_CONFIG_PATH=/opt/tracker/lib64/pkgconfig/ su tracker -c './ --prefix=/opt/tracker'
- su tracker -c 'make -j'
- su tracker -c 'LD_LIBRARY_PATH=/opt/tracker/lib64 VERBOSE=1 make check'
- su tracker -c 'LD_LIBRARY_PATH=/opt/tracker/lib64 TRACKER_TESTS_VERBOSE=1 dbus-launch make functional-test'
stage: test
# We can build and test tracker-miners against tracker just by building
......@@ -42,7 +19,7 @@ test-meson-fedora-latest:
# that Tracker is installed on the host here, thanks to `dnf builddep`.
- su tracker -c 'mkdir subprojects; cd subprojects; git clone'
- su tracker -c 'mkdir build'
- su tracker -c 'cd build; meson .. --prefix=/usr -Dtracker_core=subproject'
- su tracker -c 'cd build; meson .. --prefix=/usr -Dtracker_core=subproject -Db_lto=true'
- su tracker -c 'cd build; ninja'
- |
# Remove the many "CI_" variables from the environment. Meson dumps the
......@@ -50,4 +27,9 @@ test-meson-fedora-latest:
# screenful of junk each time unless we strip these.
unset $(env|grep -o '^CI_[^=]*')
su tracker -c 'cd build; LANG=en_US.UTF8 dbus-launch meson test --suite tracker-miners --print-errorlogs'
su tracker -c 'cd build; dbus-run-session -- env LANG=en_US.UTF8 meson test --suite tracker-miners --print-errorlogs'
when: always
- build/meson-logs/testlog.txt
include $(top_srcdir)/Makefile.decl
SUBDIRS = src docs po
SUBDIRS += tests
.PHONY: coverage coverage-report
find $(top_srcdir) -name "*.gcda" | xargs rm -f
coverage-report: coverage
lcov --directory $(top_srcdir)/src --capture --output-file $(top_builddir)/
lcov --directory $(top_srcdir)/src --output-file $(top_builddir)/ --remove $(top_builddir)/ \
tracker-sparql-builder.c \
tracker-sparql-expression.c \
tracker-sparql-pattern.c \
tracker-sparql-query.c \
tracker-sparql-scanner.c \
tracker-turtle-reader.c \
tracker-turtle-writer.c \
libtracker-bus/tracker-array-cursor.c \
libtracker-bus/tracker-bus-fd-cursor.c \
libtracker-bus/tracker-bus.c \
libtracker-direct/tracker-direct.c \
libtracker-miner/tracker-storage.c \
libtracker-miner/tracker-dbus.c \
libtracker-miner/tracker-miner-fs.c \
libtracker-miner/tracker-miner-object.c \
libtracker-miner/tracker-miner-web.c \
libtracker-miner/tracker-network-provider.c \
libtracker-miner/tracker-network-provider-network-manager.c \
libtracker-sparql/tracker-builder.c \
libtracker-sparql/tracker-connection.c \
libtracker-sparql/tracker-cursor.c \
libtracker-sparql/tracker-plugin-loader.c \
libtracker-sparql/tracker-utils.c \
libtracker-sparql-backend/tracker-backend.c \
tracker-store/tracker-backup.c \
tracker-store/tracker-dbus.c \
tracker-store/tracker-main.c \
tracker-store/tracker-resources.c \
tracker-store/tracker-statistics.c \
tracker-store/tracker-status.c \
tracker-store/tracker-steroids.c \
tracker-store/tracker-store.c \
tracker-control/* \
libstemmer/stem_UTF_8_* \
tracker-control/tracker-miner-files-index-client.h \
"*.vapi" \
rm -rf $(top_builddir)/coverage
$(MKDIR_P) $(top_builddir)/coverage
genhtml --title "@PACKAGE_STRING@" --output-directory $(top_builddir)/coverage $(top_builddir)/
if test "x$(srcdir)" = "x."; then :; else \
rm -f ChangeLog; \
.PHONY: ChangeLog
gen_start_date = 2009-04-10
$(AM_V_GEN) if test -d "$(srcdir)/.git"; then \
$(top_srcdir)/gitlog-to-changelog --since=$(gen_start_date) > $@.tmp \
&& mv -f $@.tmp $@ \
|| ($(RM) $@.tmp; \
echo Failed to generate ChangeLog, your ChangeLog may be outdated >&2; \
(test -f $@ || echo git-log is required to generate this file >> $@)); \
else \
test -f $@ || \
(echo A git checkout and git-log is required to generate ChangeLog >&2 && \
echo A git checkout and git-log is required to generate this file >> $@); \
cd tests/functional-tests/ && $(MAKE) $(AM_MAKEFLAGS) $@
ChangeLog.pre-0-6-93 \
gitlog-to-changelog \ \ \ \
po/ \ \
meson_options.txt \
tracker-miners.doap \ \
intltool-extract \
intltool-merge \
--with-session-bus-services-dir="\$(datadir)"/dbus-1/services \
--with-bash-completion-dir="\$(datadir)"/bash-completion/ \
--disable-nautilus-extension \
--enable-unit-tests \
--enable-functional-tests \
--enable-gtk-doc \
--enable-introspection \
--disable-miner-rss \
--disable-miner-evolution \
--disable-miner-thunderbird \
--disable-miner-firefox \
--enable-poppler \
--enable-exempi \
--enable-libiptcdata \
--enable-libjpeg \
--enable-libtiff \
--enable-libvorbis \
--enable-libflac \
--enable-libgsf \
--enable-playlist \
--enable-tracker-preferences \
G_TEST_SRCDIR="$(abs_srcdir)" \
G_TEST_BUILDDIR="$(abs_builddir)" \
G_DEBUG=gc-friendly \
MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256))
LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) $(top_srcdir)/
LOG_COMPILER = $(top_srcdir)/tap-test
# initialize variables for unconditional += appending
CLEANFILES = *.log *.trs
installed_test_LTLIBRARIES =
installed_test_PROGRAMS =
installed_test_SCRIPTS =
nobase_installed_test_DATA =
noinst_PROGRAMS =
noinst_SCRIPTS =
noinst_DATA =
check_PROGRAMS =
check_SCRIPTS =
check_DATA =
# We support a fairly large range of possible variables. It is expected that all types of files in a test suite
# will belong in exactly one of the following variables.
# First, we support the usual automake suffixes, but in lowercase, with the customary meaning:
# test_programs, test_scripts, test_data, test_ltlibraries
# The above are used to list files that are involved in both uninstalled and installed testing. The
# test_programs and test_scripts are taken to be actual testcases and will be run as part of the test suite.
# Note that _data is always used with the nobase_ automake variable name to ensure that installed test data is
# installed in the same way as it appears in the package layout.
# In order to mark a particular file as being only for one type of testing, use 'installed' or 'uninstalled',
# like so:
# installed_test_programs, uninstalled_test_programs
# installed_test_scripts, uninstalled_test_scripts
# installed_test_data, uninstalled_test_data
# installed_test_ltlibraries, uninstalled_test_ltlibraries
# Additionally, we support 'extra' infixes for programs and scripts. This is used for support programs/scripts
# that should not themselves be run as testcases (but exist to be used from other testcases):
# test_extra_programs, installed_test_extra_programs, uninstalled_test_extra_programs
# test_extra_scripts, installed_test_extra_scripts, uninstalled_test_extra_scripts
# Additionally, for _scripts and _data, we support the customary dist_ prefix so that the named script or data
# file automatically end up in the tarball.
# dist_test_scripts, dist_test_data, dist_test_extra_scripts
# dist_installed_test_scripts, dist_installed_test_data, dist_installed_test_extra_scripts
# dist_uninstalled_test_scripts, dist_uninstalled_test_data, dist_uninstalled_test_extra_scripts
# Note that no file is automatically disted unless it appears in one of the dist_ variables. This follows the
# standard automake convention of not disting programs scripts or data by default.
# test_programs, test_scripts, uninstalled_test_programs and uninstalled_test_scripts (as well as their disted
# variants) will be run as part of the in-tree 'make check'. These are all assumed to be runnable under
# gtester. That's a bit strange for scripts, but it's possible.
TESTS += $(test_programs) $(test_scripts) $(uninstalled_test_programs) $(uninstalled_test_scripts) \
$(dist_test_scripts) $(dist_uninstalled_test_scripts)
# Note: build even the installed-only targets during 'make check' to ensure that they still work.
# We need to do a bit of trickery here and manage disting via EXTRA_DIST instead of using dist_ prefixes to
# prevent automake from mistreating gmake functions like $(wildcard ...) and $(addprefix ...) as if they were
# filenames, including removing duplicate instances of the opening part before the space, eg. '$(addprefix'.
all_test_programs = $(test_programs) $(uninstalled_test_programs) $(installed_test_programs) \
$(test_extra_programs) $(uninstalled_test_extra_programs) $(installed_test_extra_programs)
all_test_scripts = $(test_scripts) $(uninstalled_test_scripts) $(installed_test_scripts) \
$(test_extra_scripts) $(uninstalled_test_extra_scripts) $(installed_test_extra_scripts)
all_dist_test_scripts = $(dist_test_scripts) $(dist_uninstalled_test_scripts) $(dist_installed_test_scripts) \
$(dist_test_extra_scripts) $(dist_uninstalled_test_extra_scripts) $(dist_installed_test_extra_scripts)
all_test_scripts += $(all_dist_test_scripts)
EXTRA_DIST += $(all_dist_test_scripts)
all_test_data = $(test_data) $(uninstalled_test_data) $(installed_test_data)
all_dist_test_data = $(dist_test_data) $(dist_uninstalled_test_data) $(dist_installed_test_data)
all_test_data += $(all_dist_test_data)
EXTRA_DIST += $(all_dist_test_data)
all_test_ltlibs = $(test_ltlibraries) $(uninstalled_test_ltlibraries) $(installed_test_ltlibraries)
noinst_LTLIBRARIES += $(all_test_ltlibs)
noinst_PROGRAMS += $(all_test_programs)
noinst_SCRIPTS += $(all_test_scripts)
noinst_DATA += $(all_test_data)
check_LTLIBRARIES += $(all_test_ltlibs)
check_PROGRAMS += $(all_test_programs)
check_SCRIPTS += $(all_test_scripts)
check_DATA += $(all_test_data)
installed_test_PROGRAMS += $(test_programs) $(installed_test_programs) \
$(test_extra_programs) $(installed_test_extra_programs)
installed_test_SCRIPTS += $(test_scripts) $(installed_test_scripts) \
$(test_extra_scripts) $(test_installed_extra_scripts)
installed_test_SCRIPTS += $(dist_test_scripts) $(dist_test_extra_scripts) \
$(dist_installed_test_scripts) $(dist_installed_test_extra_scripts)
nobase_installed_test_DATA += $(test_data) $(installed_test_data)
nobase_installed_test_DATA += $(dist_test_data) $(dist_installed_test_data)
installed_test_LTLIBRARIES += $(test_ltlibraries) $(installed_test_ltlibraries)
installed_testcases = $(test_programs) $(installed_test_programs) \
$(test_scripts) $(installed_test_scripts) \
$(dist_test_scripts) $(dist_installed_test_scripts)
installed_test_meta_DATA = $(installed_testcases:=.test)
%.test: %$(EXEEXT) Makefile
$(AM_V_GEN) (echo '[Test]' > $@.tmp; \
echo 'Type=session' >> $@.tmp; \
echo 'Exec=$(installed_testdir)/$(notdir $<) --tap' >> $@.tmp; \
echo 'Output=TAP' >> $@.tmp; \
mv $@.tmp $@)
CLEANFILES += $(installed_test_meta_DATA)
NEW in - 2019-08-07
* Support for reading Musicbrainz metadata from audio files.
* Tracker Writeback now uses GStreamer to write metadata to audio files,
instead of depending on taglib directly.
* Directories will now be ignored if they contain a file named `.nomedia`.
A file named `.trackerignore` has the same effect, but the `.nomedia` file
brings us in line with Android.
* Removed obsolete 'max-media-art-width' setting.
NEW in 2.2.2 - 2019-05-02
* Multiple leak fixes
* Functional tests now use python3
* Fix text extractor handling of non-existent files
* Fix indexing of tracks in FLAC files
* Added new tests for file formats
Translations: hr
NEW in 2.2.1 - 2019-03-06
* Whitelist syscall fadvise64_64
* Many fixes to functional tests
* Fix failed functional tests being reported as successful
Translations: eo, fur, fr, it, ko, lv, nl, ru, sr
NEW in 2.2.0 - 2019-02-20
* Disable guarantee_metadata by default. It was the case on autotools
* Stop merging translations to schema files
* Test suite improvements
* Meson build improvements
Translations: cs, da, de, es, gl, hu, id, lt, pl, pt_BR, ro, sl, sv, tr, zh_TW
Highlighted changes since 2.1.x:
* The functionality of tracker-miner-apps has been adopted by
* All usage of deprecated TrackerSparqlBuilder is gone.
NEW in 2.2.0-alpha2 - 2019-02-06
* Fixes to desktop file indexing
* Multiple build and compile warning fixes
* Many test improvements and cleanups
Translations: fr
NEW in 2.2.0-alpha1 - 2018-11-13
* The functionality of tracker-miner-apps has been adopted by
* Updated tracker-miner-fs and tracker-miner-rss to use TrackerResource
* Support for building through autotools has been removed.
* Plugged several leaks
* Other many build and code cleanups and fixes
Translations: ru, sk, sr
NEW in 2.1.4 - 2018-09-04
1 Introduction
Tracker is a search engine and that allows the user to find their
data as fast as possible. Users can search for their files and
search for content in their files too.
Tracker is a semantic data storage for desktop and mobile devices.
Tracker uses W3C standards for RDF ontologies using Nepomuk with
SPARQL to query and update the data.
Tracker is a central repository of user information, that provides
two big benefits for the desktop; shared data between applications
and information which is relational to other information (for
example: mixing contacts with files, locations, activities and
This central repository works with a well defined data model that
applications can rely on to store and recover their information.
That data model is defined using a semantic web artifact called
ontology. An ontology defines the relationships between the
information stored in the repository.
An EU-funded project called Nepomuk was started to define some of
the core ontologies to be modeled on the Desktop. Tracker uses this
to define the data's relationships in a database.
All discussion related to tracker happens on the Tracker
mailing list
IRC channel #tracker on:
Bugs and feature requests should be filed at:
More infomation on Tracker can be found at:
Repository (first is read-only, second is write access):
The official RoadMap (aka TODO) can be found at:
2 Use Cases
Tracker is the most powerful open source metadata database and
indexer framework currently available and because it is built
around a combination indexer and SQL database and not a
dedicated indexer, it has much more powerful use cases:
* Provide search and indexing facilities similar to those on
other systems (Windows Vista and Mac OS X).
* Common database storage for all first class objects (e.g. a
common music/photo/contacts/email/bookmarks/history database)
complete with additional metadata and tags/keywords.
* Comprehensive one stop solution for all applications needing
an object database, powerful search (via RDF Query), first class
methods, related metadata and user-definable metadata/tags.
* Can provide a full semantic desktop with metadata everywhere.
* Can provide powerful criteria-based searching suitable for
creating smart file dialogs and vfolder systems.
* Can provide a more intelligent desktop using statistical
3 Features
* Desktop-neutral design (it's a freedesktop product built
around other freedesktop technologies like D-Bus and XDGMime
but contains no GNOME-specific dependencies besides GLib).
* Very memory efficient. Unlike some other indexers, Tracker is
designed and built to run well on mobile and desktop systems with
lower memory (256MB or less).
* Non-bloated and written in C for maximum efficiency.
* Small size and minimal dependencies makes it easy to bundle
into various distros, including live CDs.
* Provides option to disable indexing when running on battery.
* Provides option to index removable devices.
* Implements the freedesktop specification for metadata
* Extracts embedded File, Image, Document and Audio type
metadata from files.
* Supports the WC3's RDF Query syntax for querying metadata.
* Provides support for both free text search (like Beagle/Google)
as well as structured searches using RDF Query.
* Responds in real time to file system changes to keep its
metadata database up to date and in sync.
* Fully extensible with custom metadata - you can store,
retrieve, register and search via RDF Query all your own custom
* Can extract a file's contents as plain text and index them.
* Can provide thumbnailing on the fly.
* It auto-pauses indexing when running low on diskspace.
4 Compilation
The git repository contains input to the GNU Autotools however a
number of commands need to be run to initialize GNU Autotools in the
project directory. To setup the project for compilation after
checking it out from the git repository, use:
./ --prefix=/usr --sysconfdir=/etc --localstatedir=/var
Or if you don't have (i.e. you are using the released
tarball), you can use:
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
To start compiling the project use:
sudo make install
If you install using any other prefix, you might have problems
with files not being installed correctly. (You may need to copy
and amend the dbus service file to the correct directory and/or
might need to update ld_conf if you install into non-standard
4.1 Notes on Solaris
To compile Tracker with GCC on Solaris uses the following
commands :
--prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
sudo make install
To compile Tracker with SUN Studio on Solaris uses the
following commands, because there are some problems to compile
exiv2 using SUN C++ compiler :
--prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
--with-pic \
sudo make install
4.2 Compile Options
Tracker has several compiler options to enable/disable certain
features. You can get a full listing by running
./configure --help
5 Running Tracker
5.1 Usage
Tracker normally starts itself when users log in. You can indexing by running:
You can configure how this works using:
You can monitor data miners using:
You can do simple searching using an applet:
You can do more extensive searching using:
5.2 Setting Inotify Watch Limit
When watching large numbers of folders, its possible to exceed
the default number of inotify watches. In order to get real time
updates when this value is exceeded it is necessary to increase
the number of allowed watches. This can be done as follows:
1. Add this line to /etc/sysctl.conf:
"fs.inotify.max_user_watches = (number of folders to be
watched; default used to be 8192 and now is 524288)"
2. Reboot the system OR (on a Debian-like system) run
"sudo /etc/init.d/procps restart"
6 Further Help
6.1 Man pages
Every config file and every binary has a man page. If you start with
tracker-store, you should be able to find out about most other
commands on the SEE ALSO section.
6.2 Utilities
There are a range of tracker utilities that help you query for data.
# Tracker Miners
Tracker is an efficient search engine and
[triplestore]( for desktop, embedded
and mobile.
The Tracker project is divided into two main repositories:
* [Tracker core]( contains the database
(*tracker-store*), the database ontologies, the commandline user
interface (`tracker`), and several support libraries.
* [Tracker Miners]( contains
the indexer daemon (*tracker-miner-fs*) and tools to extract metadata
from many different filetypes.
More information on Tracker can be found at:
* <>
Source code and issue tracking:
* <>
All discussion related to Tracker happens on:
* <>
IRC channel #tracker on:
* [](irc://
Related projects:
* [GNOME Online Miners](
extends Tracker to allow searching and indexing some kinds of online
For more information about developing Tracker, look at the
[ file in Tracker core](
# Run this to generate all the initial makefiles, etc.
test -n "$srcdir" || srcdir=$(dirname "$0")
test -n "$srcdir" || srcdir=.
cd $srcdir
(test -f || {
echo "*** ERROR: Directory '$srcdir' does not look like the top-level project directory ***"
exit 1
# shellcheck disable=SC2016
PKG_NAME=$(autoconf --trace 'AC_INIT:$1'
aclocal --install || exit 1
intltoolize --force --copy --automake || exit 1
autoreconf --verbose --force --install || exit 1
cd "$olddir"
if [ "$NOCONFIGURE" = "" ]; then
# If no arguments are given, use those used with distcheck
# equally, use the JHBuild prefix if it is available otherwise fall
# back to the default (/usr/local)
if [ $# -eq 0 ] ; then
echo "Using distcheck arguments, none were supplied..."
if test -n "$JHBUILD_PREFIX" ; then
echo "Using JHBuild prefix ('$JHBUILD_PREFIX')"
NEW_PREFIX="--prefix $JHBUILD_PREFIX --with-bash-completion-dir=$JHBUILD_PREFIX/share/bash-completion/completions"
--disable-nautilus-extension \
--enable-unit-tests \
--enable-functional-tests \
--enable-gtk-doc \
--enable-introspection \
--disable-miner-rss \
--disable-miner-evolution \
--disable-miner-thunderbird \
--disable-miner-firefox \
--enable-poppler \
--enable-exempi \
--enable-libiptcdata \
--enable-libjpeg \
--enable-libtiff \
--enable-libvorbis \
--enable-libflac \
--enable-libgsf \
--enable-playlist \
--enable-tracker-preferences \
$srcdir/configure "$@" || exit 1
if [ "$1" = "--help" ]; then exit 0 else
echo "Now type 'make' to compile $PKG_NAME" || exit 1
echo "Skipping configure process."
......@@ -111,20 +111,5 @@
/* Define to the version of this package. */
#mesondefine PACKAGE_VERSION
/* Define to the Tracker binary age */
/* Define to the Tracker interface age */
/* Define to the Tracker major version */
/* Define to the Tracker micro version */
/* Define to the Tracker minor version */
/* Unzip ps.gz files */
This diff is collapsed.
schemas = [
foreach schema : schemas
schemas = configure_file(
input: schema,
output: schema,
copy: true,
install: true,
install_dir: gsettings_schema_dir)
tracker_miners_settings_enums = custom_target('tracker-miners-common-settings-enums',
input: '../src/libtracker-miners-common/tracker-enums.h',
output: 'org.freedesktop.TrackerMiners.enums.xml',
command: [glib_mkenums,
'--comments', '<!-- @comment@ -->',
'--fhead', '<schemalist>',
'--vhead', '<@type@ id="org.freedesktop.TrackerMiners.@EnumName@">',
'--vprod', ' <value nick="@valuenick@" value="@valuenum@"/>',
'--vtail', ' </@type@>',
'--ftail', '</schemalist>', '@INPUT@'],
capture: true,
install: true,
install_dir: gsettings_schema_dir)
# Compile schemas locally so that the functional-tests can use them without
# them being installed into /usr.
compile_schemas_deps = [tracker_miners_settings_enums]
if get_option('tracker_core') == 'subproject'
# Here we do an ugly dance to place GSettings schemas from tracker
# and tracker-miners into the same directory. The `glib-compile-schemas`
# tool cannot combine schemas from multiple directories, and the
# GSETTINGS_SCHEMA_DIR environment variable cannot point to multiple
# directories, so this appears to be our only option.
foreach schema : tracker_gsettings_schemas
target = configure_file(
input: schema,
output: '@PLAINNAME@',
copy: true)
dep = custom_target('tracker-store-settings-enums',
input: tracker_common_enums_header,
output: 'org.freedesktop.Tracker.enums.xml',
command: [glib_mkenums,
'--comments', '<!-- @comment@ -->',
'--fhead', '<schemalist>',
'--vhead', '<@type@ id="org.freedesktop.Tracker.@EnumName@">',
'--vprod', ' <value nick="@valuenick@" value="@valuenum@"/>',
'--vtail', ' </@type@>',
'--ftail', '</schemalist>', '@INPUT@'],
capture: true)
compile_schemas_deps += [dep]
output: 'gschemas.compiled',
command: [glib_compile_schemas, meson.current_build_dir()],
build_by_default: true,
depends: compile_schemas_deps)
tracker_miners_uninstalled_gsettings_schema_dir = meson.current_build_dir()
......@@ -21,37 +21,30 @@ Boston, MA 02110-1301, USA.
<schema id="org.freedesktop.Tracker.Extract" path="/org/freedesktop/tracker/extract/" gettext-domain="tracker-miners">
<key name="verbosity" enum="org.freedesktop.TrackerMiners.TrackerVerbosity">
<_summary>Log verbosity</_summary>
<_description>Log verbosity.</_description>
<summary>Log verbosity</summary>
<description>Log verbosity.</description>
<key name="sched-idle" enum="org.freedesktop.TrackerMiners.TrackerSchedIdle">
<_summary>Scheduler priority when idle</_summary>
<summary>Scheduler priority when idle</summary>
The scheduler is the kernel component that decides which
runnable application will be executed by the CPU next. Each
application has an associated scheduling policy and priority.
<key name="max-bytes" type="i">
<_summary>Max bytes to extract</_summary>
<_description>Maximum number of UTF-8 bytes to extract.</_description>
<summary>Max bytes to extract</summary>
<description>Maximum number of UTF-8 bytes to extract.</description>
<range min="0" max="10485760"/>
<key name="max-media-art-width" type="i">
<_summary>Max media art width</_summary>
<_description>Maximum width in pixels for any media art extracted. Anything bigger is resized. Set to -1 to disable saving media art from files. Setting to 0 sets no limit on the media art width.</_description>
<range min="-1" max="2048"/>
<key name="wait-for-miner-fs" type="b">
<_summary>Wait for FS miner to be done before extracting</_summary>
<_description>When true, tracker-extract will wait for tracker-miner-fs to be done crawling before extracting meta-data. This option is useful on constrained environment where it is important to list files as fast as possible and can wait to get meta-data later.</_description>
<summary>Wait for FS miner to be done before extracting</summary>
<description>When true, tracker-extract will wait for tracker-miner-fs to be done crawling before extracting meta-data. This option is useful on constrained environment where it is important to list files as fast as possible and can wait to get meta-data later.</description>
......@@ -21,142 +21,142 @@ Boston, MA 02110-1301, USA.
<schema id="org.freedesktop.Tracker.Miner.Files" path="/org/freedesktop/tracker/miner/files/" gettext-domain="tracker-miners">
<key name="verbosity" enum="org.freedesktop.TrackerMiners.TrackerVerbosity">
<_summary>Log verbosity</_summary>
<_description>Log verbosity.</_description>
<summary>Log verbosity</summary>
<description>Log verbosity.</description>
<key name="initial-sleep" type="i">
<_summary>Initial sleep</_summary>
<_description>Initial sleep time, in seconds.</_description>
<summary>Initial sleep</summary>
<description>Initial sleep time, in seconds.</description>
<range min="0" max="1000"/>
<key name="sched-idle" enum="org.freedesktop.TrackerMiners.TrackerSchedIdle">
<_summary>Scheduler priority when idle</_summary>
<summary>Scheduler priority when idle</summary>
The scheduler is the kernel component that decides which
runnable application will be executed by the CPU next. Each
application has an associated scheduling policy and priority.
<key name="throttle" type="i">
<_description>Indexing speed, the higher the slower.</_description>
<description>Indexing speed, the higher the slower.</description>
<range min="0" max="20"/>
<key name="low-disk-space-limit" type="i">
<_summary>Low disk space limit</_summary>
<_description>Disk space threshold in percent at which to pause indexing, or -1 to disable.</_description>
<summary>Low disk space limit</summary>
<description>Disk space threshold in percent at which to pause indexing, or -1 to disable.</description>
<range min="-1" max="100"/>
<key name="crawling-interval" type="i">
<_summary>Crawling interval</_summary>
<summary>Crawling interval</summary>
Interval in days to check whether the filesystem is up to date in the database.
0 forces crawling anytime, -1 forces it only after unclean shutdowns, and -2
disables it entirely.
<range min="-2" max="365"/>
<key name="removable-days-threshold" type="i">
<_summary>Removable devices’ data permanence threshold</_summary>
<summary>Removable devices’ data permanence threshold</summary>
Threshold in days after which files from removables devices
will be removed from database if not mounted. 0 means never,
maximum is 365.
<range min="0" max="365"/>
<key name="enable-monitors" type="b">
<_summary>Enable monitors</_summary>
<_description>Set to false to completely disable any file monitoring</_description>
<summary>Enable monitors</summary>
<description>Set to false to completely disable any file monitoring</description>
<key name="enable-writeback" type="b">
<_summary>Enable writeback</_summary>
<_description>Set to false to completely disable any file writeback</_description>
<summary>Enable writeback</summary>
<description>Set to false to completely disable any file writeback</description>
<key name="index-removable-devices" type="b">
<_summary>Index removable devices</_summary>
<_description>Set to true to enable indexing mounted directories for removable devices.</_description>
<summary>Index removable devices</summary>
<description>Set to true to enable indexing mounted directories for removable devices.</description>
<key name="index-optical-discs" type="b">
<_summary>Index optical discs</_summary>
<summary>Index optical discs</summary>
Set to true to enable indexing CDs, DVDs, and generally optical media
(if removable devices are not indexed, optical discs won’t be either)
<key name="index-on-battery" type="b">
<_summary>Index when running on battery</_summary>
<_description>Set to true to index while running on battery</_description>
<summary>Index when running on battery</summary>
<description>Set to true to index while running on battery</description>
<key name="index-on-battery-first-time" type="b">
<_summary>Perform initial indexing when running on battery</_summary>
<_description>Set to true to index while running on battery for the first time only</_description>
<summary>Perform initial indexing when running on battery</summary>
<description>Set to true to index while running on battery for the first time only</description>
<key name="index-recursive-directories" type="as">
<_summary>Directories to index recursively</_summary>
<summary>Directories to index recursively</summary>
List of directories to index recursively, Special values include:
See /etc/xdg/user-dirs.defaults and $HOME/.config/user-dirs.default
<default>[ '&amp;DESKTOP', '&amp;DOCUMENTS', '&amp;DOWNLOAD', '&amp;MUSIC', '&amp;PICTURES', '&amp;VIDEOS' ]</default>
<key name="index-single-directories" type="as">
<_summary>Directories to index non-recursively</_summary>
<summary>Directories to index non-recursively</summary>
List of directories to index without inspecting subfolders, Special values include:
See /etc/xdg/user-dirs.defaults and $HOME/.config/user-dirs.default
<default>[ '$HOME' ]</default>
<key name="ignored-files" type="as">
<_summary>Ignored files</_summary>
<_description>List of file patterns to avoid</_description>
<default>[ '*~', '*.o', '*.la', '*.lo' , '*.loT', '*.in', '*.csproj', '*.m4', '*.rej', '*.gmo', '*.orig', '*.pc', '*.omf', '*.aux', '*.tmp', '*.vmdk', '*.vm*', '*.nvram', '*.part', '*.rcore', '*.lzo', 'autom4te', 'conftest', 'confstat', 'Makefile', 'SCCS', '', 'libtool', 'config.status', 'confdefs.h', 'configure', '#*#', '~$*.doc?', '~$*.dot?', '~$*.xls?', '~$*.xlt?', '~$*.xlam', '~$*.ppt?', '~$*.pot?', '~$*.ppam', '~$*.ppsm', '~$*.ppsx', '~$*.vsd?', '~$*.vss?', '~$*.vst?', '*.desktop', '*.directory' ]</default>
<summary>Ignored files</summary>
<description>List of file patterns to avoid</description>
<default>[ '*~', '*.o', '*.la', '*.lo' , '*.loT', '*.in', '*.csproj', '*.m4', '*.rej', '*.gmo', '*.orig', '*.pc', '*.omf', '*.aux', '*.tmp', '*.vmdk', '*.vm*', '*.nvram', '*.part', '*.rcore', '*.lzo', 'autom4te', 'conftest', 'confstat', 'Makefile', 'SCCS', '', 'libtool', 'config.status', 'confdefs.h', 'configure', '#*#', '~$*.doc?', '~$*.dot?', '~$*.xls?', '~$*.xlt?', '~$*.xlam', '~$*.ppt?', '~$*.pot?', '~$*.ppam', '~$*.ppsm', '~$*.ppsx', '~$*.vsd?', '~$*.vss?', '~$*.vst?', 'mimeapps.list', 'mimeinfo.cache', 'gnome-mimeapps.list', 'kde-mimeapps.list', '*.directory' ]</default>
<key name="ignored-directories" type="as">
<_summary>Ignored directories</_summary>
<_description>List of directories to avoid</_description>
<summary>Ignored directories</summary>
<description>List of directories to avoid</description>
<default>[ 'po', 'CVS', 'core-dumps', 'lost+found' ]</default>
<key name="ignored-directories-with-content" type="as">
<_summary>Ignored directories with content</_summary>
<_description>Avoid any directory containing a file blacklisted here</_description>
<default>[ '.trackerignore', '.git', '.hg' ]</default>
<summary>Ignored directories with content</summary>
<description>Avoid any directory containing a file blacklisted here</description>
<default>[ '.trackerignore', '.git', '.hg', '.nomedia' ]</default>
......@@ -21,8 +21,8 @@ Boston, MA 02110-1301, USA.
<schema id="org.freedesktop.Tracker.Writeback" path="/org/freedesktop/tracker/writeback/" gettext-domain="tracker-miners">
<key name="verbosity" enum="org.freedesktop.TrackerMiners.TrackerVerbosity">
<_summary>Log verbosity</_summary>
<_description>Log verbosity.</_description>
<summary>Log verbosity</summary>
<description>Log verbosity.</description>
SUBDIRS = manpages design
architecture_docs = \
EXTRA_DIST = $(architecture_docs)
tmrss = tracker-miner-rss.1
common = \
tracker-extract.1 \
tracker-miner-fs.1 \
# Require only common and enabled manpages
man_MANS = $(common)
man_MANS += $(tmrss)
# Make sure even disabled manpages get distributed
$(common) \
$(tmrss) \
dnl Macros to check the presence of generic (non-typed) symbols.
dnl Copyright (c) 2006-2008 Diego Pettenò <>
dnl Copyright (c) 2006-2008 xine project
dnl Copyright (c) 2012 Lucas De Marchi <>
dnl This program is free software; you can redistribute it and/or modify
dnl it under the terms of the GNU General Public License as published by
dnl the Free Software Foundation; either version 2, or (at your option)
dnl any later version.
dnl This program is distributed in the hope that it will be useful,
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
dnl GNU General Public License for more details.
dnl You should have received a copy of the GNU General Public License
dnl along with this program; if not, write to the Free Software
dnl Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
dnl 02110-1301, USA.
dnl As a special exception, the copyright owners of the
dnl macro gives unlimited permission to copy, distribute and modify the
dnl configure scripts that are the output of Autoconf when processing the
dnl Macro. You need not follow the terms of the GNU General Public
dnl License when using or distributing such scripts, even though portions
dnl of the text of the Macro appear in them. The GNU General Public
dnl License (GPL) does govern all other use of the material that
dnl constitutes the Autoconf Macro.
dnl This special exception to the GPL applies to versions of the
dnl Autoconf Macro released by this project. When you make and
dnl distribute a modified version of the Autoconf Macro, you may extend
dnl this special exception to the GPL to apply to your modified version as
dnl well.
dnl Check if FLAG in ENV-VAR is supported by compiler and append it
dnl to WHERE-TO-APPEND variable
AC_CACHE_CHECK([if $CC supports flag $3 in envvar $2],
[eval "AS_TR_SH([cc_save_$2])='${$2}'"
eval "AS_TR_SH([$2])='-Werror $3'"
AC_LINK_IFELSE([AC_LANG_SOURCE([int a = 0; int main(void) { return a; } ])],
[eval "AS_TR_SH([cc_cv_$2_$3])='yes'"],
[eval "AS_TR_SH([cc_cv_$2_$3])='no'"])
eval "AS_TR_SH([$2])='$cc_save_$2'"])
AS_IF([eval test x$]AS_TR_SH([cc_cv_$2_$3])[ = xyes],
[eval "$1='${$1} $3'"])
for flag in $3; do
CC_CHECK_FLAG_APPEND($1, $2, $flag)
dnl Check if the flag is supported by linker (cacheable)
AC_CACHE_CHECK([if $CC supports $1 flag],
AC_LINK_IFELSE([int main() { return 1; }],
[eval "AS_TR_SH([cc_cv_ldflags_$1])='yes'"],
[eval "AS_TR_SH([cc_cv_ldflags_$1])="])
AS_IF([eval test x$]AS_TR_SH([cc_cv_ldflags_$1])[ = xyes],
[$2], [$3])
dnl define the LDFLAGS_NOUNDEFINED variable with the correct value for
dnl the current linker to avoid undefined references in a shared object.
dnl We check $host for which systems to enable this for.
case $host in
dnl FreeBSD (et al.) does not complete linking for shared objects when pthreads
dnl are requested, as different implementations are present; to avoid problems
dnl use -Wl,-z,defs only for those platform not behaving this way.
*-freebsd* | *-openbsd*) ;;
dnl First of all check for the --no-undefined variant of GNU ld. This allows
dnl for a much more readable commandline, so that people can understand what
dnl it does without going to look for what the heck -z defs does.
for possible_flags in "-Wl,--no-undefined" "-Wl,-z,defs"; do
CC_CHECK_LDFLAGS([$possible_flags], [LDFLAGS_NOUNDEFINED="$possible_flags"])
dnl Check for a -Werror flag or equivalent. -Werror is the GCC
dnl and ICC flag that tells the compiler to treat all the warnings
dnl as fatal. We usually need this option to make sure that some
dnl constructs (like attributes) are not simply ignored.
dnl Other compilers don't support -Werror per se, but they support
dnl an equivalent flag:
dnl - Sun Studio compiler supports -errwarn=%all
[for $CC way to treat warnings as errors],