2014-08-13 Martyn Russell Release 1.1.2 libtracker-data: Fixed unit tests so files are not left around failing distcheck build: Updated official website in AC_INIT build: Reorder AutoConf directives to avoid build failures - Using AC_CONFIG_AUX_DIR([build-aux]) too late results in docs/reference/* not finding install-sh which is in $top_srcdir/build-aux - Using AC_USE_SYSTEM_EXTENSIONS too late results in warnings about using AC_RUN_IF_ELSE (and others) before AC_USE_SYSTEM_EXTENSIONS Now build and make install works without warnings 2014-08-12 Martyn Russell build: Fixed POTFILES.in, distcheck was failing configure: Use AC_USE_SYSTEM_EXTENSIONS before m4 dir to avoid warnings Merge remote-tracking branch 'origin/external-crawler' libtracker-miner: NULL protect TrackerMinerFS using :roots_to_notify libtracker-miner: Document roots in tracker_indexing_tree_get_master_root() tracker-miner-fs: Fixed finished signal callback malformed definition Fixes warning libtracker-miner: Fixed several memory leaks In crawler, file-data-provider and file-notifier libtracker-miner: Split TrackerEnumerator into 2 classes, now with TrackerDataProvider So now we have: - TrackerEnumerator (GInterface) - TrackerFileEnumerator (using GIO API) - TrackerDataProvider (GInterface) which provides a TrackerEnumerator - TrackerFileDataProvider (using GIO API) implemented as internal default libtracker-control: Allow miner status to be gained from running processes Using environment variable: TRACKER_MINERS_DIR_DISABLED libtracker-miner: Added MinerFS ::finished-root signal + fixed ::finished - The ::finished signal had no arguments, but it actually has 5. - The ::finished-root signal was added to know when roots have been processed. - Fixed the statistics in TrackerMinerFSPrivate, some were totally unused - Documented what the statistics are used for and when they're reset. - Added a progress update when we finish crawling a root libtracker-miner: FileNotifier signals ::directory-finished on wrong dir It should be the "root" GFile, not the one we just finished notifying on. This is to be consistent with the ::directory-started signal. libtracker-miner: Added TrackerCrawlFlags to disable stat() calls This also allows for future improvements like following symlinks, which there is interest in. The flags are attached to the TrackerEnumerator so each enumerator libtracker-miner: Change all g_file_get_path() instances to _get_uri() Since we don't always have a path depending on the GFile backend libtracker-miner: Create TrackerIndexingTree in constructed() not init() We do this because the GFile which is the root for the TrackerMinerFS is a property which is set on object construction. If we try to do this in init() the root is unset at that point. So we wait until constructed where properties are guaranteed to be set. We need this to give to the TrackerIndexingTree that requires a root argument if the file system is not 'file:///' based. libtracker-miner: Create nodes / caches in constructed() not init() We do this because the GFile which is the root for the TrackerFileSystem is a property which is set on object construction. If we try to do this in init() the root is unset at that point. So we wait until constructed where properties are guaranteed to be set. Also Chain parent constructed() in TrackerFileSystem libtracker-miner: Create TrackerFileSystem in constructed() not init() We do this because the GFile which is the root for the TrackerFileSystem is a property which is set on object construction. If we try to do this in init() the root is unset at that point. So we wait until constructed where properties are guaranteed to be set. Also Chain parent constructed() in TrackerFileNotifier libtracker-miner: Added tracker_indexing_tree_get_master_root() and set in constructed() This function gets the top level root for all roots, e.g. file:/// We also create the root nodes in constructed() not init() because then the root GFile has been set in the properties when the object is initiated libtracker-miner: Chain parent constructed() in TrackerDecorator libtracker-miner: Document TRACKER_MINER_DBUS_* defines libtracker-miner: Move TRACKER_MINER_DBUS_* definitions to tracker-miner-object.h There is no need for these to be in a separate header and also they're useful for other miners libtracker-miner: Add TrackerMiner::introspection-handler property Allows miners to provide a GDBusInterfaceVTable structure to be called to handle their extra method calls. This is to be used with the TrackerMiner::introspection-xml property. libtracker-miner: Add TrackerMiner::introspection-xml property This allows miners to add their own signals and methods with the base signals and methods provided by default. libtracker-miner: Make it possible to start the miner via DBus libtracker-miner: Added MinerFS _get_enumerator() function libtracker-miner: Update all documentation around TrackerEnumerator interface Including: - How we use it in TrackerMinerFS - TrackerEnumerator itself - TrackerFileEnumerator libtracker-miner: Removed unused symbols mentioned in MinerFS documentation Including: - _ERROR_HAVE_CRAWLER - @query-info - _manually_notify_file() libtracker-miner: Update warning about not supporting URIs outside file:// This is no longer true. We support ANY URIs now. libtracker-miner: Rename TrackerEnumerator members 'start' to 'get-children' API was a bit weird calling _start_finish(). libtracker-miner: MinerFS _force_mtime_checking() didn't have mtime check flag libtracker-miner: Make sure we free enumerator data on success in Crawler libtracker-miner: Don't create Crawler until FileNotifier is constructed We don't have the Enumerator until constructed. libtracker-miner: Don't iterate the wrong enumerator, avoids warnings on no dir libtracker-miner: Added FileEnumerator unit test libtracker-miner: Added TrackerEnumerator interface, TrackerFileEnumerator class These are used to enumerate over children of a URI. The TrackerFileEnumerator uses GFileEnumerator and the TrackerEnumerator allows for other implementations to supply GFile/GFileInfo data to Tracker for 3rd parties. Updated MinerFS TrackerDirectory flags for external crawlers libtracker-miner: Removed MinerFS _manually_notify_file() and Queue enum libtracker-miner: Document and group functions for MinerFS in header libtracker-miner: Fix paused check in MinerFS before notifying files libtracker-miner: Add log information about locations started in FileNotifier libtracker-miner: Fix warning on root GFile unref in FileSystem libtracker-common: Enable G_MESSAGES_DEBUG for verbosity > 1, not 2 g_info() or G_LOG_LEVEL_INFO requires this to see output. libtracker-miner: Introduce MinerFSQueue for injecting file changes This is used to signal TrackerFileNotifier and TrackerMinerFS from external crawlers about files and what has happened regarding them. libtracker-miner: Miner now uses a proper MinerError API Previously, the error code was always 0. Now we have an enum people can refer to. This is particularly important for miner implementations and cases where classes want to return an error due to an API being used *while* being paused. This is the case in TrackerMinerFS. libtracker-miner: Added MinerFSError quark for GErrors returned tracker-miner-fs: Make sure we work with the new changes to MinerFS libtracker-miner: Make it possible to use external crawlers for data mining libtracker-miner: Allow FileNotifier to have external crawlers libtracker-miner: FileSystem _new() now takes GFile for root If NULL is passed, then it defaults to the behaviour before, which is to use file:/// as the root node libtracker-miner: Fix typo, "suffix" is really "prefix" libtracker-miner: IndexingTree _new() now takes a GFile If NULL is passed, then it defaults to the behaviour before, which is to use file:/// as the root node. 2014-08-08 Martyn Russell tests: Re-write guarantee metadata test to separate tests better 2014-08-08 Tim Lunn tests: add missing newline in test_guarantee_title that caused a test failure with the new tap driver https://bugzilla.gnome.org/show_bug.cgi?id=734464 2014-08-07 Martyn Russell Merge branch 'mp3-id3v2-fixes' tracker-extract: MP3 id3v23, id3v24 functions documented and v23 fixed - The padding logic in v23 was incorrect. - Also the frame reading would continue while < total file size, which lead to infinite loops and issues for some files, now we go only while < tsize (tag size). - Instead of +10 here and there, now we use a defined integer to know why we're increasing the iteration through the file for maintainability - Added debugging so we know when there is a failure and what frames we're processing/ignoring - Smaller improvements (no docs) for id3v20 function, same logic applies. libtracker-extract: Fixed TRACKER_EXTRACTORS_DIR env var It's in the man pages but was removed during recent libtracker-extract work. It's now been added back Revert "tracker-extract: MP3s with ID3v23 tags should not hit infinite loop" This reverts commit a1d73a9582111158b5ea838ef0fd545dc7970c0c. tests: Add a .gitignore to not show logs and trs files in git status 2014-08-07 Tim Lunn build: link with --enable-new-dtags if available, this replaces the hardcoded RPATH with RUNPATH https://bugzilla.gnome.org/show_bug.cgi?id=733857 2014-08-07 Martyn Russell libtracker-data: Improve unit tests calling g_test_add() This includes a setup and teardown function to clean up properly. This was needed because the new framework seems to run tests in parallel and was randomly failing because the same data dir was being used for all tests. tests: Use tap automake testing scripts, fixes output summaries https://bugzilla.gnome.org/show_bug.cgi?id=734089 2014-08-06 Sam Thursfield Merge branch 'sam/signal-handling' 2014-08-06 Dominique Leuenberger build: update firefox and thunderbird detection 2014-08-03 MarMav Updated Greek translation 2014-08-02 MarMav Updated Greek translation 2014-08-01 Sam Thursfield Processes shouldn't install the signal handler until the main loop starts The signal handler we install calls g_main_loop_quit() when SIGTERM or SIGINT are raised, but this is only useful if the loop was started. Sending SIGTERM or SIGINT to a Tracker process while it is starting up fails to stop the process, and triggers the following a warning: GLib-CRITICAL **: g_main_loop_quit: assertion 'loop != NULL' failed Ideally we'd call initialize_signal_handler from an idle once the main loop has started, but installing it just before the loop starts should be a big improvement. https://bugzilla.gnome.org/show_bug.cgi?id=734144 tracker-extract: Use default signal handler for SIGALRM and SIGABRT The ALRM handler was introduced in commit d9d1881c2548e5d6d55fad1e897f8f058ef28696. The alarm() function seems to no longer be used, so we can remove it. The ABRT handler was introduced in commit 3f42a4390d48c6a4840a7bcfce74673ebfd23479. I'm not sure of the reason. Other Tracker processes use the default handler for ABRT, so let's be consistent. https://bugzilla.gnome.org/show_bug.cgi?id=734144 2014-08-01 Giovanni Campagna writeback: support saving metadata for GIFs GIFs support XMP metadata just fine, there is no reason not to implement it. https://bugzilla.gnome.org/show_bug.cgi?id=733316 2014-07-31 Piotr Drąg doap: add 2014-07-31 Sam Thursfield functional-tests: Rework 400-extractor.py test Tests now call the tracker-extract process manually and parse its ouput. This is necessary because the D-Bus interface it used to expose has been removed. It'd be better to run the tests with a store and miner and check that the correct data is inserted in the store, but for now this approach is OK, and it does have the advantage that the extractor is tested independently of the store & filesystem miner. functional-tests: Tweaks to process helpers Note the bug I found where if you send TERM to tracker-extract while it's initialising, it hangs. I'll fix this in a separate commit. functional-tests: Fix tests that use ExtractorHelper The DBus name of the tracker-extract process has changed, so some of the functional tests were hanging forever as they were watching the wrong bus name. There's also no longer a tracker extract interface at all. This fixes a bunch of tests that were hanging forever waiting for the extractor's object to appear. functional-tests: Watch for Tracker processes crashing Tests should notice straight away if a Tracker process crashes, and raise an exception. functional-tests: Rewrite DConf code to use GObject introspection The tests will now detect if the DConf backend is not in use and raise an error, where previously tests would fail for confusing reasons. Also, we no longer have to shell out to 'gsettings' to set up the configuration. Configuration values now have to be specified as GLib.Variant instances instead of Python types. That's a bit of a pain. PyGI should have a way of creating a GVariant from an arbitrary Python value, but I didn't find one. functional-tests: Replace use of PyGObject and PyGTK with PyGI If we do 'import gobject' anywhere then we cannot use the new GObject-introspection based Python bindings, because they conflict. This change means the functional tests can now use PyGI, instead of the deprecated and out-of-date PyGObject and PyGTK. Note that the dbus-python bindings are still widely used in the functional-tests. These work fine but are deprecated. We should switch to using GDBus through GObject-introspection instead when possible. 2014-07-30 Olav Vitters doap category core 2014-07-30 Martyn Russell ontology: nfo:hasMediaStream does not have a max cardinality in specs It doesn't make sense to have one either, since media can have multiple media streams 2014-07-30 Ting-Wei Lan Fix "Non-void function should return a value" https://bugzilla.gnome.org/show_bug.cgi?id=733948 2014-07-29 Yanko Kaneti libtracker-miner: .pc Requires.priv libmediaart 2014-07-29 YunQiang Su update zh_CN translation 2014-07-28 Martyn Russell all: Remove GNU_SOURCE definitions now we use AC_USE_SYSTEM_EXTENSIONS tracker-extract: Depend on libmediaart 0.5.0 when enabled This uses a new API which is not compatible with previous versions. https://bugzilla.gnome.org/show_bug.cgi?id=733863 build: Don't use API version 1.2, only the major/minor version should This avoids broken library and pkgconfig versions Revert silly version changes I made earlier Commits: Revert "all: Only use major version for pkgconfig" Revert "libtracker-miner: Fix PkgConfig "Requires", juse major version number only" This reverts commit 9ebf1aa756c408ab91bda59e3f9e2fce85a1e4a1. This reverts commit a5fcbc1467184c06937fd81ba455f2ea1c1de0ca. This reverts commit 3417e2464f81a4158dfa50d954f704745daecf6d. 2014-07-28 Rafael Ferreira Updated Brazilian Portuguese translation 2014-07-27 Sam Thursfield Correct typo in comment 2014-07-26 Aurimas Černius Updated Lithuanian translation 2014-07-26 Sam Thursfield Merge branch 'sam/always-guarantee-metadata' Always guarantee metadata, remove --enable-guarantee-metadata option The --enable-guarantee-metadata flag ensures that nie:title and nie:contentCreated will always be set for a given file, even if they need to be guessed based on the filename and mtime. It was previously disabled by default, although the functional tests rely on it being enabled. There should be no harm in making this behaviour the default, and removing the option. If this turns out to have unintended consequences, we should either fix the code in question, or remove it completely. https://bugzilla.gnome.org/show_bug.cgi?id=733536 2014-07-24 Daniel Mustieles Updated Spanish translation 2014-07-22 Piotr Drąg tracker-preferences: Mark new strings as translatable 2014-07-22 Martyn Russell tracker-preferences: Don't use Stock.* they're deprecated since 3.10 tracker-preferences: Add suggested restart/reindex on changes Only where needed, not always 2014-07-22 Tim Lunn clean up COPYING Move COPYING to COPYING.GPL and provide a general overview of Licenses in COPYING add COPYING.LGPL since there are LGPL licensed files in the tree https://bugzilla.gnome.org/show_bug.cgi?id=733439 2014-07-21 Martyn Russell libtracker-control: Added .gitignore for VAPI and other generated content libtracker-control: Added missing sections.txt for documentation build: Large update to configure.ac including new --enable-minimal option Updates include: 1. Now you can use --enable-minimal, and only tracker-store is built and command line utilities, everything else is disabled. 2. All ./configure arguments have been updated to use $enableval and $withval. This fixes cases where the --disable-* variant is used. This has also fixed some cases where the AC_ARG_ENABLE or AC_ARG_WITH 'if-not-given' was used incorrectly. 3. There is now a --enable-tracker-extract (default is enabled), now it can be disabled. 4. There is now a --enable-tracker-writeback (default is enabled), now it can be disabled. 5. Summary now reflects what is built more concisely and is much smaller when using --enable-minimal. 6. After running autoscan, ./configure now has more checks for PROGS, HEADERS and FUNCS that are being used. 7. AC_USE_SYSTEM_EXTENSIONS is now used adding C extensions where available (like _GNU_SOURCE). libtracker-extract: Remove from examples/ this library is now private 2014-07-18 Enrico Nicoletto Updated Brazilian Portuguese translation 2014-07-16 Rico Tzschichholz build: Require gnome-common and build a proper Changelog Includes further fixes for "make distcheck" 2014-07-11 Dominique Leuenberger libtracker-data: fix missing include Since we make use of 'tracker_utf8_truncate', we must include libtracker-common/tracker-utils.h now.