2014-02-20 Carlos Garnacho Release 0.17.3 2014-02-20 Martyn Russell tracker-sparql: Add new command line features for help with the ontology Specifically --tree $CLASS (to print the tree for $CLASS, or NULL for all ontology) --get-shorthand $CLASS --get-longhand $CLASS 2014-02-20 Carlos Garnacho libtracker-control: Add missing gio.h include 2014-02-20 Martyn Russell tests: Updated gtester scripts to improve testing system We imported Makefile.decl from glib when it was using Subversion, a long time ago. The script had a few issues (like running all unit tests twice on make distcheck) and needed to be updated. I've stolen a latest version from GLib's glib.mk and also their m4 macros which are required to make this all work too. This gives us the advantage of defining installable and uninstallable test cases as well as test data, scripts and other useful stuff. The debug output also looks quite good. And distcheck passes :) 2014-02-20 Carlos Garnacho libtracker-control: remove generated vapi/deps files on distclean po: Add tracker-miner-online.c Messages were marked as translatable there, so it needs to be in POTFILES.in libtracker-extract: Fix distcheck A few headers were missing in SOURCES, and noinst_HEADERS was mistakenly empty, which broke build if builddir!=srcdir 2014-02-20 Martyn Russell libtracker-miner: Fixed all documentation warnings docs: Make sure we fix cross referenced library symbols Fixes the warnings about GError and other symbols which are unknown when generating the documentation for libtracker-{sparql|miner|control} 2014-02-20 Carlos Garnacho Merge branch 'api-cleanup' 2014-02-20 Martyn Russell libtracker-miner: Make sure we compile if we don't HAVE_NETWORK_MANAGER 2014-02-20 Carlos Garnacho tests: Fix build in libtracker-miner libtracker-miner: Add padding pointers to *Class structs Will be useful for long term ABI compat. docs: Add missing TrackerDecorator type to .types libtracker-miner: remove private namespace symbols from being exported libtracker-miner: Remove TrackerMinerWeb and helper objects TrackerMinerWeb vmethods are very focused on the management of credentials and capabilities, this is something that's been taken over by gnome-online-accounts since this API was added, and the lack of TrackerMinerWeb implementations in the wild seems to hint it's not been as useful as when it was initially devised, so farewell. rss: Implement TrackerMinerOnline This is more suitable than implementing TrackerMiner directly libtracker-miner: Add TrackerMinerOnline This TrackerMiner is a simpler replacement for TrackerMinerWeb that doesn't get into credentials handling. It handles network state, emitting ::connected or ::disconnected on the way, and ensuring the miner is paused/resumed as necessary when suitable networks come and go, implementations of this miner can control this behavior through the return value in the ::connected signal. libtracker-control: New separate library, just contains TrackerMinerManager TrackerMinerManager has been moved from libtracker-miner, so it remains a library to implement miners. libtracker-control will be of interest to anything that attempts to track or control the state of running/available miners. tracker-writeback: Remove unneeded code using TrackerMinerManager TrackerMinerManager isn't used here after all, so remove all code using it. libtracker-miner: Make TrackerCrawler private This object can remain entirely private, as it is wrapped in quite more convenient ways by TrackerMinerFS (ie. tracking of additions/removals, file monitoring...), so turn it fully private. libtracker-miner: Move TrackerStorage to libtracker-common This is used in a variety of places (tracker-writeback, TrackerMinerFiles, and TrackerDecorator), but it doesn't make sense to have that exposed in libtracker-miner, so move to libtracker-common, where it can be used in a private manner. libtracker-miner: Avoid use of TrackerCrawler in TrackerMinerManager This object just needs it to iterate over .desktop files, so use plain GIO there. tracker-control: Avoid usage of TrackerCrawler This can be easily replaced by a helper function that iterates over a directory. libtracker-miner: hide media-art header These calls to manipulate the media art queue are already performed inside TrackerMinerFS, and there are no foreseeable situations where a TrackerMinerFS implementation will need to call these directly, so just move the code and header to private land. libtracker-miner: Turn thumbnailer into an object TrackerMinerFS in libtracker-miner was already doing most of the tracker_thumbnailer_* calls necessary. The only API required on callers only was tracker_thumbnailer_init/shutdown(). So just turn this into an object so all usage is kept private to libtracker-miner, and we can remove these headers out of the public. libtracker-extract: Make it completely private This library has some rough spots, mainly around: 1) Usefulness: The library is not specially useful outside of tracker. In the source tree we already have plenty of extract modules that handle most popular file formats. Future-wise, if a brand new file format earns popularity, we'll want it in the tracker tree, and not as an external module. So neither implementing minor third party out-of-tree modules nor offering the possibility to reimplement a type Tracker knows well is a compelling thing to support. 2) Maintainability: The API is highly inconsistent, hardly introspectable and with little forward-compatibility thinking. So in short, libtracker-extract is something we want to keep under the rug, only available to tracker-miner-fs and tracker-extract. 2014-02-20 Xavier Claessens TrackerDecorator: Add writable "priority-rdf-types" property 2014-02-20 Xavier Claessens TrackerExtractDecorator: Remove useless goto. TrackerExtractController: Fix coding style TrackerExtractController: Avoid useless string comparaison TrackerDecorator: Query the type of removed elements When "?urn nie:dataSource tracker:extractor-data-source" gets removed it means that we have to re-extract that file. It should not happen in normal usage, only for testing purpose. In that case we have to query its type. Add TrackerExtractController to pause/resume the miner It listen to "wait-for-miner-fs" option and check the status of tracker-miner-fs to pause/resume the extractor. https://bugzilla.gnome.org/show_bug.cgi?id=719802 tracker-extract: add "wait-for-miner-fs" setting https://bugzilla.gnome.org/show_bug.cgi?id=719802 TrackerExtractDecorator: Add ClearRdfTypes DBus method Also handle SetRdfTypes with empty strv the same as ClearRdfTypes. https://bugzilla.gnome.org/show_bug.cgi?id=719802 TrackerDecorator: Sort elem_queue to extract important files first There are 2 things affecting an element position in the queue: prepend (typically files from an USB key the user plugged), and prior (the file type matches what applications needs first, e.g. nfo:Audio). The queue is sorted like that: 1) prepend and prior files 2) prior files 3) prepend files 4) the rest This garantees that if I open the Music app and plug an USB key, I'll get the MP3s from that key first, which is probably want the user wants. https://bugzilla.gnome.org/show_bug.cgi?id=719802 Conflicts: src/libtracker-miner/tracker-decorator.c TrackerDecorator: Replace the elements GQueue with a TrackerPriorityQueue This will allow more fine grained priorities than the current append/prepend. TrackerDecorator: Query the rdf:type for each element in the queue The type will be used in upcoming commits to sort the elem_queue by priority. https://bugzilla.gnome.org/show_bug.cgi?id=719802 TrackerExtractDecorator: Add priority dbus interface That dbus interface lets application tell tracker-extract which rdf:type must be extracted in priority. For example, when the user interacts with the music player, they want to give the priority to "nfo:Audio" files. This commit only introduces the DBus machinary, not the actual implementation. https://bugzilla.gnome.org/show_bug.cgi?id=719802 TrackerExtractDecorator: Fix pause/resume It should not get the next file when the miner is paused/stopped, or if there are no items available anymore. This also ensure we never have more than MAX_EXTRACTING_FILES (currently one) extraction operation running in parallel. https://bugzilla.gnome.org/show_bug.cgi?id=719802 tracker-extract: Fix TrackerConfig not handling change notification https://bugzilla.gnome.org/show_bug.cgi?id=719802 TrackerPriorityQueue: Add node-based API This exposes the fact that it is implemented using a GList, but makes possible to remove a node without iterating the whole queue. Those new API will be used in upcoming commits. TrackerDecorator: remove the "(boxed)" annotation That annotation does not exist, g-i is smart enough to see by itself that TrackerDecoratorInfo is a boxed type. 2014-02-19 Martyn Russell Merge branch 'prioritized-crawling'