2014-01-24 Martyn Russell Release 0.17.1 2014-01-23 Reinout van Schouwen Updated translation by Erwin Poeze 2014-01-23 Jürg Billeter build: Require Vala >= 0.18.0 Vala 0.16 has a bug in the g_dbus_message_get_body binding. 2014-01-22 Daniel Mustieles Updated Spanish translation 2014-01-22 Piotr Drąg Updated Polish translation Updated POTFILES.in 2014-01-21 Carlos Garnacho Merge branch 'wip/passive-extraction' extract: Remove --disable-shutdown argument With tracker-extract being now a TrackerMiner (and hence long-lived), this argument does now nothing, so remove all traces of it. extract: Plug a leak If the string being processed is detected as UTF16, the "utf8" variable would already contain a malloc()'ed string, so the GString would be leaked altogether. Then, ensure the string is freed if already converted from UTF16, and spare the utf8 validation too, since we already know the string is valid utf8. extract,msoffice: call g_free() on the right pointer the "keyw" variable ends up pointing to chunks within the string that must be freed, so keep a pointer to the original string so it can be freed afterwards. extract,mp3: Plug a leak Those loops bail out because the variable word hasn't been found to contain non-blank characters, but it still may point out to strings like "", so ensure that memory is freed. extract,gst: Ensure GstDiscovererInfo structs aren't leaked gst_discoverer_discover_uri() may return a non-NULL error and a GstDiscovererInfo pointer, so ensure it is freed in case of error. The info was also being leaked on successful extraction, that is fixed too. extract,gif: Plug a leak In case of error, the filename was being leaked. extract: Ensure a task is added to priv->running_tasks just once If a tasks was iterated over multiple extraction modules, the task ended up inserted on priv->running_tasks more than once, but only removed once when the task finished, leaving dangling pointers in priv->running_tasks. extract: Do not leak info for unhandled files If no extraction module was found for a file, the corresponding TrackerExtractTask was being leaked. decorator: Do not leak TrackerDecoratorInfo structs Set the only reference to the decorator info as the GTask return value, so it is definitely destroyed when the GTask itself is unref()'ed. decorator: Plug a leak The values returned by g_variant_get() must be freed. decorator: do not estimate remaining time when 0 elements have been processed >0 processed items are needed in order to estimate time, otherwise division by 0 happens. 2014-01-21 Martyn Russell libtracker-miner: Updated documentation with TrackerDecorator* APIs libtracker-miner: Improved warnings in cases of failure t with mount events libtracker-miner, tracker-extract: Fix include order libtracker-miner: Clearer error message for decorator class ID failures libtracker-miner: Use g_slice_new0() instead of g_new0() where it makes sense Given we're reusing these struct sizes many times, it makes sense to use GSlice. 2014-01-21 Carlos Garnacho tracker-extract: remove now nonexistent #include tracker-extract: Remove TrackerController It is now unused, and its role replaced by TrackerExtractDecorator ontology: set tracker:notify on nfo:Video This is to cover all basic classes that tracker-extract needs to do piggyback indexing. tracker-extract: Turn into a full-blown miner TrackerExtractDecorator is put in use, replacing TrackerController as the master of TrackerExtract. .service and .desktop files are added as appropriate so tracker-extract is recognized as a miner, handled by tracker-control, etc... tracker-extract: Add TrackerExtractDecorator This is a tracker-extract implementation of TrackerDecorator, that takes care of fetching files to be inspected, and forward these to the passed TrackerExtract object. Upon completion, the information is returned back to TrackerDecorator control so it is eventually committed. tracker-extract: Do not add statistics data if no module handled the file This prevents a crash when reporting the statistics later, as there is a NULL key that is expected to be a GModule. libtracker-miner: Add TrackerDecoratorFS This is a file-specific implementation of TrackerDecorator, that besides checks on initialization, it checks for previously known items not yet extracted on newly added volumes. libtracker-miner: Add TrackerDecorator This object is a TrackerMiner abstract implementation that instead of actively looking for information, it passively receives notifications through the tracker-store GraphUpdated DBus signal, and offers the possibility to fill in further information of newly added resources or older resources missing inspection by this miner. By default, this object receives information from all resources with tracker:notify true, the class-names property can tweak this so it only acts on events from a certain rdf:type. In order to know which elements are missing inspection, the miner relies on a nie:DataSource specific to each TrackerDecorator implementation. On startup, TrackerDecorator will check for the eligible elements missing that datasource to ensure those are checked. The data source can be set through the data-source property. ontologies: Add static nie:DataSource for tracker-extractor This nie:DataSource will be added to resource by tracker-extract, in order to mark files already inspected, and recognize the files that are still unprocessed if resuming is needed. miner-fs: Set relevant rdf:types on files This way, files will be recognized as promptly as possible as being of the correct type, even though tracker-extract hasn't gone through it yet. This information could also be used in tracker-extract itself in order to figure out the best extractor. miner-fs: Remove code that calls tracker extract Tracker-extract is going to be meant to listen for GraphUpdated signals, so no direct communication between tracker-miner-fs and tracker-extract would be necessary. tracker-extract: Set FallbackRdfTypes on all .rule files libtracker-extract: Read FallbackRdfTypes as a string list in .rule files FallbackRdfTypes (with an extra 's') is now a string list, so all rdf:types that apply to a mimetype can be specified. 2014-01-21 Sam Thursfield Fix compile warnings in tracker-fts.c Fix fts:offsets() Since the fts4 branch was merged, the fts:offsets() function has been broken, because it assumed that properties were stored in the 'fts' table in ID order but this was no longer the case. The property names list is now created on init as static data, but this requires having the 'fulltext_indexed' property available in all cases where previously it has only been available if the ontologies were loaded directly rather than from the GVDB cache. tests/functional-tests/03-fts-functions.py has been improved to test the fts:offsets() function more thoroughly. https://bugzilla.gnome.org/show_bug.cgi?id=721880 2014-01-21 Aleksander Morgado libtracker-data: new 'tracker:unaccent' method https://bugzilla.gnome.org/show_bug.cgi?id=722254 This method allows removing combining diacritical marks (accents) from strings used in SPARQL queries. It expects a single argument, the string to be unaccented. Note that the output string will also be NFKD-normalized. Example: 1) First, insert a new element which has accents in the nie:title. In the example we insert the word 'école' which in UTF-8 NFC looks like "0xC3 0xA9 0x63 0x6F 0x6C 0x65": $ tracker-sparql -u -q " INSERT { a nie:InformationElement . nie:title 'école' }" 2) Second, get hexdump of querying nie:title, we should get the original string in UTF-8 and NFC normalization: $ tracker-sparql -q " SELECT ?title WHERE { nie:title ?title }" | hexdump 0000000 6552 7573 746c 3a73 200a c320 63a9 6c6f 0000010 0a65 000a 0000013 Or, without the hexdump... $ tracker-sparql -q " SELECT ?title WHERE { nie:title ?title }" Results: école 3) Last, apply the unaccenting method. The expected string should look like "0×65 0×63 0x6F 0x6C 0×65" (i.e. without the combining diacritical mark): $ tracker-sparql -q " SELECT tracker:unaccent(?title) WHERE { nie:title ?title }" | hexdump 0000000 6552 7573 746c 3a73 200a 6520 6f63 656c 0000010 0a0a 0000012 Or, without the hexdump... $ tracker-sparql -q " SELECT tracker:unaccent(?title) WHERE { nie:title ?title }" Results: ecole libtracker-data: new 'tracker:normalize' method https://bugzilla.gnome.org/show_bug.cgi?id=722254 This method allows normalizing the strings used in SPARQL queries. It expects two arguments: First, the string to be normalized, and second, one of "nfc", "nfd", "nfkc" or "nfkd" specifying the type of normalization to apply to the string. Example: 1) First, insert a new element which has accents in the nie:title. In the example we insert the word 'école' which in UTF-8 NFC looks like "0xC3 0xA9 0x63 0x6F 0x6C 0x65": $ tracker-sparql -u -q " INSERT { a nie:InformationElement . nie:title 'école' }" 2) Second, get hexdump of querying nie:title, we should get the original string in UTF-8 and NFC normalization: $ tracker-sparql -q " SELECT ?title WHERE { nie:title ?title }" | hexdump 0000000 6552 7573 746c 3a73 200a c320 63a9 6c6f 0000010 0a65 000a 0000013 3) Third, now apply explicitly NFC normalization, we should get the same output: $ tracker-sparql -q " SELECT tracker:normalize(?title,'nfc') WHERE { nie:title ?title }" | hexdump 0000000 6552 7573 746c 3a73 200a c320 63a9 6c6f 0000010 0a65 000a 0000013 4) Last, apply a NFD decomposition, the expected decomposed string should look like "0×65 0xCC 0x81 0×63 0x6F 0x6C 0×65": $ tracker-sparql -q " SELECT tracker:normalize(?title,'nfkd') WHERE { nie:title ?title }" | hexdump 0000000 6552 7573 746c 3a73 200a 6520 81cc 6f63 0000010 656c 0a0a 0000014 libtracker-data: remove unneeded fallback methods to use glib as unicode support We already require either libunistring or libicu, so the glib-based fallback methods will actually never be used. 2014-01-20 Fran Diéguez Updated Galician translations 2014-01-20 Ting-Wei Lan tracker-ioprio, tracker-sched: Fix includes We need glib.h because of G_{BEGIN,END}_DECLS, and we do not need tracker-log.h. https://bugzilla.gnome.org/show_bug.cgi?id=722525 2014-01-19 Enrico Nicoletto Updated Brazilian Portuguese translation 2014-01-19 Rafael Ferreira Revert "Updated Brazilian Portuguese translation" This reverts commit 6fdbaf57554ffe6d874d56e41b79b5ddc57b0db8. Updated Brazilian Portuguese translation 2014-01-18 Tong Hui Update Chinese simplified translation 2014-01-17 Martyn Russell Merge branch 'deprecated-g-test-trap-fork' tests: Removed all cases of g_test_trap_fork() which has been deprecated. Now we're using g_test_trap_subprocess() instead and that requires GLib 2.38. Tracker now depends on GLib 2.38. 2014-01-17 Marek Černocký Updated Czech translation 2014-01-17 Martyn Russell docs/tools/ttl2sgml: Don't error if we have nao:deprecated for namespaces Previously, this would error when generating the documentation with something like: (lt-ttl2sgml:4857): Tracker-ERROR **: 'http://www.tracker-project.org/temp/mlo#' is not a class nor a property!? and ../../../docs/tools/gen-doc.sh: line 52: 4857 Trace/breakpoint trap (core dumped) $TTL2SGML -d $f -o $BUILD_DIR/$PREFIX-ontology.xml -f $BUILD_DIR/fts-properties.xml -e $ONTOLOGIES_INFO_DIR/$PREFIX/explanation.xml Given the entire namespace for MLO is deprecated, we have simply removed the g_error here. docs/reference/ontology: Make output cleaner when generating ontology docs docs/reference: Use gtkdocize --flavour no-tmpl to avoid -chmod issue Suggested in actual gtkdoc bugfix here: https://bugzilla.gnome.org/show_bug.cgi?id=701259 docs/tools: make gen-doc.sh more portable, don't use /bin/bash https://bugzilla.gnome.org/show_bug.cgi?id=722353 docs/tools: Improve output and checking for gen-doc.sh Used to generate ontology reference documentation 2014-01-13 Xavier Claessens Remove marshallers Glib >= 2.30 already hard depend on libffi. 2014-01-13 Dimitris Spingos Updated Greek translation 2014-01-12 Daniel Korostil Added uk translation 2014-01-10 Piotr Drąg Updated Polish translation 2014-01-10 Daniel Mustieles Updated Spanish translation 2014-01-10 Milo Casagrande [l10n] Updated Italian translation. 2014-01-09 Sam Thursfield functional-tests: Set up data directores like tracker-sandbox does To debug a functional test failure you can now replace the 'rm' at the bottom of 'test-runner.sh' with 'echo', and then call: tracker-sandbox.py -i /tmp/tracker-test-XXXX/tracker-tests --shell sandbox: Use separate dirs for config, data, etc. It's not a good idea to set XDG_CONFIG_HOME, XDG_DATA_HOME, etc. to the same directory, because some software might store a file with the same name in two of those directories. DConf does it. 2014-01-09 Philip Van Hoof Add the rule file for libav Fixes after review for the libav support 2014-01-09 Andrew den Exter Improve detection of media stream properties. Use the much more comprehensive avformat_stream_info to probe data from packetized data rather than directly trying to partially decode frames. Ensure video size is extracted by libav extractor. It may be necessary to parse the MPEG bitstream to get width and height from some videos so if the resolution isn't immediately available decode enough data to determine it. Fix uninitialized variable in libav extractor. And warning about passing NULL to an argument that takes an int in vorbis extractor. Add a libav based generic media extractor. 2014-01-09 Philip Van Hoof Fixes after review for GraphUpdated Delay feature Make it possible to configure the delay for GraphUpdated Helps fixing JB# 11570 Fixes after review for Qt5 port Use minimal in Nemo for QGuiApplication for in case the compositor isn't running yet. Use QGuiApplication instead of QCoreApplication 2014-01-09 Andrew den Exter Port to Qt5. Save folder media art for ogg files. 2014-01-09 Sam Thursfield functional-tests: Avoid requiring --enable-maemo 2014-01-08 Daniel Mustieles Updated Spanish translation 2014-01-07 Piotr Drąg Updated Polish translation 2014-01-07 Martyn Russell tracker-control: Added option --collect-debug-info Useful when debugging problems to diagnose the state of Tracker on your system. The data is output to stdout. Useful if bugs are filed against the project itself. Data collected includes Tracker version in use, disk space available, size of the databases on the disk, the configuration in use, states of the index (e.g. last filesystem crawl, data set locale, etc.) and finally statistics about the data in the database (e.g. how many nfo:FileDataObject resources exist). 2014-01-06 Ralph Boehme Add strnlen() compat function 2014-01-04 Marek Černocký Updated Czech translation 2014-01-03 Rafael Ferreira Updated Brazilian Portuguese translation 2014-01-02 Christian Kirbach Updated German translation 2013-12-30 Fran Diéguez Updated Galician translations 2013-12-18 Debarshi Ray libtracker-extract: Link against libicu when using it https://bugzilla.gnome.org/show_bug.cgi?id=720686 2013-12-07 甘露(Gan Lu) Update Chinese simplified translation 2013-12-03 Carlos Garnacho fts: Strengthen against sqlite failures in FTS functions function_weights() and function_property_names() (used respectively by SPARQL fts:rank and fts:offsets functions), initialize all data at first from the database, so it's available in memory for posterior runs, although currently those are being quite optimistic about the database return values in several ways, so: - Ensure no infinite loops happen on sqlite3_step() if the stmt trips into some unexpected state. SQLITE_BUSY still does keep looping though. - As initialization here is a failable task, stop using g_once_init_* and use an static GMutex so initialization can be tried later again if it failed previously. - For the cases where initialization failed, propagate the error code on the sqlite3_context. Based on work by Tim Waugh and Michael Catanzaro. https://bugzilla.redhat.com/show_bug.cgi?id=1026283 2013-11-29 Zeeshan Ali (Khattak) extract-iso: Make use of OS variants Take the name of first variant as 'nie:title', if any. https://bugzilla.gnome.org/show_bug.cgi?id=719512 extract-iso: Use osinfo_db_identify_media osinfo_db_guess_os_from_media is deprecated in newer libosinfo and is replaced by osinfo_db_identify_media. https://bugzilla.gnome.org/show_bug.cgi?id=719512 Require libosinfo >= 0.2.9 https://bugzilla.gnome.org/show_bug.cgi?id=719512 2013-11-29 Colin Walters tracker-store.desktop: Add missing flags argument Sorry, forgot to rebase this. https://bugzilla.gnome.org/show_bug.cgi?id=715040 2013-11-28 Sam Thursfield build: Add SQLite 3.8.1 to list of bad SQLite versions There is a bug in SQLite version 3.8.1 which causes incorrect query results. See the following links for more details: https://mail.gnome.org/archives/tracker-list/2013-November/msg00021.html https://bugzilla.redhat.com/show_bug.cgi?id=1034714 The bug is fixed in SQLite master already so version 3.8.2 should be fine to use. 2013-11-25 Sam Thursfield tests: Fix failure in tracker-sched-test under jhbuild jhbuild defaults to running under 'SCHED_IDLE'. The test asserts that the test is initially using 'SCHED_OTHER' -- this is a bad idea, we shouldn't be making assertions about the environment in which the user is running the tests. tests: Avoid invalid calls to g_source_remove(). GLib now warns if removing a source that no longer exists. This was causing intermittent failure of tracker-file-notifier-test If the test timeout executed before the test's main loop exited, the following error would occur: GLib-CRITICAL **: Source ID 130 was not found when attempting to remove it The functional tests have also been fixed. 2013-11-25 Aleksander Morgado test,libtracker-fts: allow alternate number of expected words In ICU 50 the word splitting algorithm changed, so this test may get different results depending on the host environment. The test simply needs to verifying that word splitting works, so it should allow either value. As of November 2013 Ubuntu is still shipping an older version of ICU so it would be awkward to simply increase the version we depend on. https://bugzilla.gnome.org/show_bug.cgi?id=699412 2013-11-25 Colin Walters Avoid starting tracker-store twice We install both of: /etc/xdg/autostart/tracker-store.desktop /usr/share/dbus-1/services/org.freedesktop.Tracker1 If something else speaks to tracker via during login, what will happen is that dbus-daemon will spawn one, and gnome-session will also spawn one, and one of these will emit a critical message. To fix this, change the .desktop file merely use DBus (it'd be nice if there was an easier way to do this). Instead, maybe we could consider only dbus-activating tracker? In other words, if nothing wants to talk to us, maybe we shouldn't be starting by default... https://bugzilla.gnome.org/show_bug.cgi?id=715040 2013-11-23 Carlos Garnacho miner-fs: initialize timers as stopped This way timers are in agreement with their boolean guards, and will get continued when processing actually starts. 2013-11-22 Carlos Garnacho Bump for 0.17.1