Skip to content
Commits on Source (16)
include:
- remote: "https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/290b79e0e78eab67a83766f4e9691be554fc4afd/templates/ci-fairy.yml"
- remote: 'https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/290b79e0e78eab67a83766f4e9691be554fc4afd/templates/fedora.yml'
- remote: 'https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/290b79e0e78eab67a83766f4e9691be554fc4afd/templates/ubuntu.yml'
- remote: "https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/80f87b3058efb75a1faae11826211375fba77e7f/templates/ci-fairy.yml"
- remote: 'https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/80f87b3058efb75a1faae11826211375fba77e7f/templates/fedora.yml'
- remote: 'https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/80f87b3058efb75a1faae11826211375fba77e7f/templates/ubuntu.yml'
variables:
MESON_TEST_TIMEOUT_MULTIPLIER: 3
......
NEW in 3.3.0.rc - 2022-03-06
============================
* Ignore subtrack titles for videos
* OpenBSD improvements to `tracker3 reset/daemon` CLI commands
* Improved test infrastructure around removable device support
* Fixed FANotify monitor to handle separate FAN_DELETE[_SELF]
events
* Fixed generation of man pages with newer asciidoc
NEW in 3.3.0.beta - 2022-02-14
==============================
* Changed to skip mountpoints found during recursive indexing.
......
......@@ -32,6 +32,9 @@
/* Define if we have GStreamer */
#mesondefine HAVE_GSTREAMER
/* Define if we have Gstreamer version 1.20.0 or up */
#mesondefine HAVE_GSTREAMER_1_20
/* Define if we have HAL */
#mesondefine HAVE_HAL
......
daemon_manpages = [
['miner-fs', 'tracker-miner-fs-3', 1],
['writeback', 'tracker-writeback-3', 1],
['tracker-miner-fs-3', 1],
['tracker-writeback-3', 1],
]
if have_tracker_miner_rss
daemon_manpages += [['miner-rss', 'tracker-miner-rss-3', 1]]
daemon_manpages += [['tracker-miner-rss-3', 1]]
endif
cli_manpages = [
['daemon', 'tracker3-daemon', 1],
['extract', 'tracker3-extract', 1],
['index', 'tracker3-index', 1],
['info', 'tracker3-info', 1],
['reset', 'tracker3-reset', 1],
['search', 'tracker3-search', 1],
['status', 'tracker3-status', 1],
['tag', 'tracker3-tag', 1],
['tracker3-daemon', 1],
['tracker3-extract', 1],
['tracker3-index', 1],
['tracker3-info', 1],
['tracker3-reset', 1],
['tracker3-search', 1],
['tracker3-status', 1],
['tracker3-tag', 1],
]
foreach m : daemon_manpages + cli_manpages
src = m[0]
dst = m[1]
section = m[2]
name = m[0]
section = m[1]
manpage_src = 'tracker-@0@.@1@.txt'.format(src, section)
manpage_xml = '@0@.@1@.xml'.format(dst, section)
manpage = '@0@.@1@'.format(dst, section)
manpage = '@0@.@1@'.format(name, section)
xml = custom_target(manpage_xml,
command: [asciidoc,
xml = custom_target(manpage,
command: [a2x,
'--attribute=author=The Tracker developers',
'--attribute=manversion=@0@'.format(meson.project_version()),
'--attribute=manmanual=Tracker manual',
'--backend', 'docbook',
'--doctype', 'manpage',
'--out-file', '@OUTPUT@', '@INPUT@'],
input: manpage_src,
output: manpage_xml
)
custom_target(manpage,
command: [xsltproc,
'--output', '@OUTPUT@',
'--stringparam', 'man.authors.section.enabled', '0',
'/etc/asciidoc/docbook-xsl/manpage.xsl', '@INPUT@'],
input: xml,
'--doctype=manpage',
'--format=manpage',
'--no-xmllint',
'--xsltproc-opts=' + ' '.join([
'--stringparam', 'man.authors.section.enabled', '0',
]),
'-D', '@OUTDIR@',
'@INPUT@'],
input: manpage + '.txt',
output: manpage,
install: true,
install_dir: get_option('mandir') / 'man@0@'.format(section),
......
project('tracker-miners', 'c',
version: '3.3.0.beta',
version: '3.3.0.rc',
meson_version: '>=0.51')
gnome = import('gnome')
......@@ -106,8 +106,7 @@ if have_tracker_miner_rss
endif
if get_option('man')
asciidoc = find_program('asciidoc')
xsltproc = find_program('xsltproc')
a2x = find_program('a2x')
endif
sha256sum = find_program('sha256sum')
......@@ -369,6 +368,7 @@ conf.set('GIO_SUPPORTS_CREATION_TIME', glib.version().version_compare('>=2.70.0'
conf.set('HAVE_ENCA', charset_library_name == 'enca')
conf.set('HAVE_EXEMPI', exempi.found())
conf.set('HAVE_GSTREAMER', generic_media_handler_name == 'gstreamer')
conf.set('HAVE_GSTREAMER_1_20', gstreamer.version() >= '1.20.0')
conf.set('GSTREAMER_BACKEND_DISCOVERER', gstreamer_backend_name == 'Discoverer')
conf.set('GSTREAMER_BACKEND_GUPNP_DLNA', gstreamer_backend_name == 'GUPnP-DLNA')
conf.set('HAVE_HAL', battery_detection_library_name == 'hal')
......
......@@ -222,6 +222,8 @@ cache_event (TrackerMonitorFanotify *monitor,
return;
if (evtype == EVENT_UPDATE && prev_event->type == EVENT_UPDATE)
return;
if (evtype == EVENT_DELETE && prev_event->type == EVENT_DELETE)
return;
/* Otherwise flush the event */
flush_event (monitor, file);
......@@ -266,7 +268,9 @@ handle_monitor_events (TrackerMonitorFanotify *monitor,
}
if (mask & (FAN_DELETE | FAN_DELETE_SELF)) {
emit_event (monitor, EVENT_DELETE, file, NULL, is_directory);
cache_event (monitor, EVENT_DELETE, file, is_directory);
if (mask & FAN_DELETE)
flush_event (monitor, file);
}
if (mask & FAN_CLOSE_WRITE) {
......
......@@ -1244,7 +1244,12 @@ discoverer_init_and_run (MetadataExtractor *extractor,
extractor->duration = gst_discoverer_info_get_duration (info) / GST_SECOND;
/* Retrieve global tags */
#if defined(HAVE_GSTREAMER_1_20)
GstDiscovererStreamInfo *sinfo = gst_discoverer_info_get_stream_info (info);
discoverer_tags = gst_discoverer_container_info_get_tags ((GstDiscovererContainerInfo *)sinfo);
#else
discoverer_tags = gst_discoverer_info_get_tags (info);
#endif
if (discoverer_tags) {
gst_tag_list_insert (extractor->tagcache,
......@@ -1256,7 +1261,6 @@ discoverer_init_and_run (MetadataExtractor *extractor,
extractor->streams = gst_discoverer_info_get_stream_list (info);
for (l = extractor->streams; l; l = g_list_next (l)) {
GstDiscovererStreamInfo *stream = l->data;
const GstTagList *stream_tags;
if (G_TYPE_CHECK_INSTANCE_TYPE (stream, GST_TYPE_DISCOVERER_AUDIO_INFO)) {
GstDiscovererAudioInfo *audio = (GstDiscovererAudioInfo*)stream;
......@@ -1285,17 +1289,30 @@ discoverer_init_and_run (MetadataExtractor *extractor,
} else {
/* Unknown type - do nothing */
}
}
stream_tags = gst_discoverer_stream_info_get_tags (stream);
for (l = extractor->streams; l; l = g_list_next (l)) {
GstDiscovererStreamInfo *stream = l->data;
GstTagList *stream_tags;
stream_tags = gst_tag_list_copy (gst_discoverer_stream_info_get_tags (stream));
if (extractor->has_video &&
gst_tag_list_get_tag_size (extractor->tagcache, "title") > 0)
gst_tag_list_remove_tag (stream_tags, "title");
if (stream_tags) {
gst_tag_list_insert (extractor->tagcache,
stream_tags,
GST_TAG_MERGE_APPEND);
}
gst_tag_list_unref (stream_tags);
}
gst_discoverer_info_unref (info);
#if defined(HAVE_GSTREAMER_1_20)
gst_discoverer_stream_info_unref (sinfo);
#endif
return TRUE;
}
......
......@@ -27,12 +27,8 @@
#include <glib/gi18n.h>
#ifdef __OpenBSD__
#include <sys/param.h>
#include <sys/proc.h>
#include <sys/types.h>
#include <sys/sysctl.h>
#include <fcntl.h>
#include <kvm.h>
#include <unistd.h>
#endif
#ifdef __sun
......@@ -68,6 +64,7 @@ tracker_process_data_free (TrackerProcessData *pd)
static gchar *
find_command (pid_t pid)
{
#ifndef __OpenBSD__
gchar *proc_path, path[PATH_MAX + 1];
ssize_t len;
......@@ -87,6 +84,34 @@ find_command (pid_t pid)
}
return g_path_get_basename (path);
#else /* __OpenBSD__ */
g_autofree char *path = NULL;
gchar **args = NULL;
gint mib[4];
size_t len;
mib[0] = CTL_KERN;
mib[1] = KERN_PROC_ARGS;
mib[2] = pid;
mib[3] = KERN_PROC_ARGV;
if (sysctl (mib, 4, NULL, &len, NULL, 0) == -1)
goto fail;
args = g_malloc0 (len);
if (args == NULL)
goto fail;
if (sysctl (mib, 4, args, &len, NULL, 0) == -1)
goto fail;
path = g_strndup (args[0], PATH_MAX);
return g_path_get_basename (path);
fail:
g_free (args);
return NULL;
#endif /* !__OpenBSD__ */
}
static pid_t
......
{
"MOCK_VOLUME_MONITOR_DIR": "@MOCK_VOLUME_MONITOR_DIR@",
"TEST_CLI_DIR": "@TEST_CLI_DIR@",
"TEST_CLI_SUBCOMMANDS_DIR": "@TEST_CLI_SUBCOMMANDS_DIR@",
"TEST_DBUS_DAEMON_CONFIG_FILE": "@TEST_DBUS_DAEMON_CONFIG_FILE@",
......