summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.ac6
-rw-r--r--examples/renderer-plugins/C/Makefile.am2
-rw-r--r--examples/renderer-plugins/C/example-renderer-c.plugin.in7
-rw-r--r--examples/renderer-plugins/vala/Makefile.am3
-rw-r--r--examples/renderer-plugins/vala/example-renderer-vala.plugin.in7
-rw-r--r--examples/server-plugins/C/Makefile.am3
-rw-r--r--examples/server-plugins/C/example-server-c.plugin.in7
-rw-r--r--examples/server-plugins/vala/Makefile.am3
-rw-r--r--examples/server-plugins/vala/example-server-vala.plugin.in7
-rw-r--r--m4/rygel.m41
-rw-r--r--po/POTFILES.in1
-rw-r--r--po/POTFILES.skip1
-rw-r--r--src/librygel-core/filelist.am3
-rw-r--r--src/librygel-core/rygel-plugin-information.vala86
-rw-r--r--src/librygel-core/rygel-plugin-loader.vala20
-rw-r--r--src/librygel-core/rygel-recursive-module-loader.vala18
-rw-r--r--src/librygel-server/rygel-engine-loader.vala4
-rw-r--r--src/media-engines/gstreamer/Makefile.am2
-rw-r--r--src/media-engines/gstreamer/media-engine-gst.plugin.in7
-rw-r--r--src/media-engines/simple/Makefile.am3
-rw-r--r--src/media-engines/simple/media-engine-simple.plugin.in7
-rw-r--r--src/plugins/external/Makefile.am3
-rw-r--r--src/plugins/external/external.plugin.in7
-rw-r--r--src/plugins/external/rygel-external-plugin-factory.vala7
-rw-r--r--src/plugins/gst-launch/Makefile.am3
-rw-r--r--src/plugins/gst-launch/gst-launch.plugin.in7
-rw-r--r--src/plugins/gst-launch/rygel-gst-launch-plugin.vala7
-rw-r--r--src/plugins/media-export/Makefile.am2
-rw-r--r--src/plugins/media-export/media-export.plugin.in7
-rw-r--r--src/plugins/media-export/rygel-media-export-plugin.vala7
-rw-r--r--src/plugins/mediathek/Makefile.am3
-rw-r--r--src/plugins/mediathek/mediathek.plugin.in7
-rw-r--r--src/plugins/mediathek/rygel-mediathek-plugin.vala7
-rw-r--r--src/plugins/mpris/Makefile.am3
-rw-r--r--src/plugins/mpris/mpris.plugin.in7
-rw-r--r--src/plugins/mpris/rygel-mpris-plugin-factory.vala7
-rw-r--r--src/plugins/playbin/Makefile.am3
-rw-r--r--src/plugins/playbin/playbin.plugin.in7
-rw-r--r--src/plugins/tracker/Makefile.am3
-rw-r--r--src/plugins/tracker/tracker.plugin.in7
40 files changed, 254 insertions, 48 deletions
diff --git a/configure.ac b/configure.ac
index eb9af228..06d3a23a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -394,7 +394,9 @@ src/rygel/Makefile
src/ui/Makefile
src/media-engines/Makefile
src/media-engines/gstreamer/Makefile
+src/media-engines/gstreamer/media-engine-gst.plugin
src/media-engines/simple/Makefile
+src/media-engines/simple/media-engine-simple.plugin
src/plugins/Makefile
data/Makefile
data/xml/Makefile
@@ -423,10 +425,14 @@ tests/Makefile
examples/Makefile
examples/renderer-plugins/Makefile
examples/renderer-plugins/vala/Makefile
+examples/renderer-plugins/vala/example-renderer-vala.plugin
examples/renderer-plugins/C/Makefile
+examples/renderer-plugins/C/example-renderer-c.plugin
examples/server-plugins/Makefile
examples/server-plugins/vala/Makefile
+examples/server-plugins/vala/example-server-vala.plugin
examples/server-plugins/C/Makefile
+examples/server-plugins/C/example-server-c.plugin
])
AC_OUTPUT
diff --git a/examples/renderer-plugins/C/Makefile.am b/examples/renderer-plugins/C/Makefile.am
index f77c225a..b952bc84 100644
--- a/examples/renderer-plugins/C/Makefile.am
+++ b/examples/renderer-plugins/C/Makefile.am
@@ -1,6 +1,7 @@
include $(top_srcdir)/common.am
plugin_LTLIBRARIES = librygel-example-renderer-plugin-c.la
+plugin_DATA = example-renderer-c.plugin
librygel_example_renderer_plugin_c_la_SOURCES = \
example-renderer-plugin.h \
@@ -21,3 +22,4 @@ librygel_example_renderer_plugin_c_la_LIBADD = \
librygel_example_renderer_plugin_c_la_LDFLAGS = \
$(RYGEL_PLUGIN_LINKER_FLAGS)
+EXTRA_DIST = example-renderer-c.plugin.in
diff --git a/examples/renderer-plugins/C/example-renderer-c.plugin.in b/examples/renderer-plugins/C/example-renderer-c.plugin.in
new file mode 100644
index 00000000..f629bf56
--- /dev/null
+++ b/examples/renderer-plugins/C/example-renderer-c.plugin.in
@@ -0,0 +1,7 @@
+[Plugin]
+Version = @VERSION@
+Module = example-renderer-plugin-c
+Name = ExampleRendererPluginC
+License = LGPL
+Description = Example of implementing a renderer plug-in in C
+Copyright = Copyright © Intel Corporation
diff --git a/examples/renderer-plugins/vala/Makefile.am b/examples/renderer-plugins/vala/Makefile.am
index 2aa2b8df..a9e9090d 100644
--- a/examples/renderer-plugins/vala/Makefile.am
+++ b/examples/renderer-plugins/vala/Makefile.am
@@ -1,6 +1,7 @@
include $(top_srcdir)/common.am
plugin_LTLIBRARIES = librygel-example-renderer-plugin-vala.la
+plugin_DATA = example-renderer-vala.plugin
librygel_example_renderer_plugin_vala_la_SOURCES = \
example-renderer-plugin-vala.vala \
@@ -20,3 +21,5 @@ librygel_example_renderer_plugin_vala_la_LIBADD = \
librygel_example_renderer_plugin_vala_la_LDFLAGS = \
$(RYGEL_PLUGIN_LINKER_FLAGS)
+
+EXTRA_DIST = example-renderer-vala.plugin.in
diff --git a/examples/renderer-plugins/vala/example-renderer-vala.plugin.in b/examples/renderer-plugins/vala/example-renderer-vala.plugin.in
new file mode 100644
index 00000000..cb9c8889
--- /dev/null
+++ b/examples/renderer-plugins/vala/example-renderer-vala.plugin.in
@@ -0,0 +1,7 @@
+[Plugin]
+Version = @VERSION@
+Module = example-renderer-plugin-vala
+Name = ExampleRendererPluginVala
+License = LGPL
+Description = Example of implementing a renderer plug-in in Vala
+Copyright = Copyright © Intel Corporation
diff --git a/examples/server-plugins/C/Makefile.am b/examples/server-plugins/C/Makefile.am
index f9230f78..8312f2bf 100644
--- a/examples/server-plugins/C/Makefile.am
+++ b/examples/server-plugins/C/Makefile.am
@@ -1,6 +1,7 @@
include $(top_srcdir)/common.am
plugin_LTLIBRARIES = librygel-example-server-plugin-c.la
+plugin_DATA = example-server-c.plugin
librygel_example_server_plugin_c_la_SOURCES = \
example-server-plugin.h \
@@ -20,3 +21,5 @@ librygel_example_server_plugin_c_la_LIBADD = \
librygel_example_server_plugin_c_la_LDFLAGS = \
$(RYGEL_PLUGIN_LINKER_FLAGS)
+
+EXTRA_DIST = example-server-c.plugin.in
diff --git a/examples/server-plugins/C/example-server-c.plugin.in b/examples/server-plugins/C/example-server-c.plugin.in
new file mode 100644
index 00000000..75234c7d
--- /dev/null
+++ b/examples/server-plugins/C/example-server-c.plugin.in
@@ -0,0 +1,7 @@
+[Plugin]
+Version = @VERSION@
+Module = example-server-plugin-c
+Name = ExampleServerPluginC
+License = LGPL
+Description = Example of implementing a server plug-in in C
+Copyright = Copyright © Intel Corporation
diff --git a/examples/server-plugins/vala/Makefile.am b/examples/server-plugins/vala/Makefile.am
index 7c82b3cd..424075ca 100644
--- a/examples/server-plugins/vala/Makefile.am
+++ b/examples/server-plugins/vala/Makefile.am
@@ -1,6 +1,7 @@
include $(top_srcdir)/common.am
plugin_LTLIBRARIES = librygel-example-server-plugin-vala.la
+plugin_DATA = example-server-vala.plugin
# Note that we must have these Vala prefixes on the
# class names (and therefore on the file names)
@@ -24,3 +25,5 @@ librygel_example_server_plugin_vala_la_LIBADD = \
librygel_example_server_plugin_vala_la_LDFLAGS = \
$(RYGEL_PLUGIN_LINKER_FLAGS)
+
+EXTRA_DIST = example-server-vala.plugin.in
diff --git a/examples/server-plugins/vala/example-server-vala.plugin.in b/examples/server-plugins/vala/example-server-vala.plugin.in
new file mode 100644
index 00000000..2d82d83c
--- /dev/null
+++ b/examples/server-plugins/vala/example-server-vala.plugin.in
@@ -0,0 +1,7 @@
+[Plugin]
+Version = @VERSION@
+Module = example-server-plugin-vala
+Name = ExampleServerPluginVala
+License = LGPL
+Description = Example of implementing a server plug-in in Vala
+Copyright = Copyright © Intel Corporation
diff --git a/m4/rygel.m4 b/m4/rygel.m4
index b1a5a327..3152ba27 100644
--- a/m4/rygel.m4
+++ b/m4/rygel.m4
@@ -57,6 +57,7 @@ AC_DEFUN([_RYGEL_ADD_PLUGIN_INTERNAL],
AC_CONFIG_FILES([src/plugins/$1/Makefile])
AM_CONDITIONAL(m4_toupper(build_$2_plugin), test "x$[]enable_$2_plugin" = "xyes")
RYGEL_ADD_STAMP([src/plugins/$1/librygel_$2_la_vala.stamp])
+ AC_CONFIG_FILES([src/plugins/$1/$1.plugin])
])
# _RYGEL_ADD_PLUGIN_INTERNAL(NAME-OF-PLUGIN,
diff --git a/po/POTFILES.in b/po/POTFILES.in
index e4ab836e..74b4e62e 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -70,6 +70,7 @@ src/librygel-core/rygel-connection-manager.vala
src/librygel-core/rygel-icon-info.vala
src/librygel-core/rygel-log-handler.vala
src/librygel-core/rygel-meta-config.vala
+src/librygel-core/rygel-plugin-information.vala
src/librygel-core/rygel-plugin-loader.vala
src/librygel-core/rygel-plugin.vala
src/librygel-core/rygel-recursive-module-loader.vala
diff --git a/po/POTFILES.skip b/po/POTFILES.skip
index bc0d9e14..c349530d 100644
--- a/po/POTFILES.skip
+++ b/po/POTFILES.skip
@@ -26,6 +26,7 @@ src/librygel-core/rygel-media-device.c
src/librygel-core/rygel-meta-config.c
src/librygel-core/rygel-plugin.c
src/librygel-core/rygel-plugin-loader.c
+src/librygel-core/rygel-plugin-information.c
src/librygel-core/rygel-recursive-module-loader.c
src/librygel-core/rygel-resource-info.c
src/librygel-core/rygel-root-device.c
diff --git a/src/librygel-core/filelist.am b/src/librygel-core/filelist.am
index a37467e4..bea3b1ee 100644
--- a/src/librygel-core/filelist.am
+++ b/src/librygel-core/filelist.am
@@ -19,4 +19,5 @@ LIBRYGEL_CORE_VAPI_SOURCE_FILES = \
LIBRYGEL_CORE_NONVAPI_SOURCE_FILES = \
rygel-icon-info.vala \
- rygel-xml-utils.vala
+ rygel-xml-utils.vala \
+ rygel-plugin-information.vala
diff --git a/src/librygel-core/rygel-plugin-information.vala b/src/librygel-core/rygel-plugin-information.vala
new file mode 100644
index 00000000..3338bf1b
--- /dev/null
+++ b/src/librygel-core/rygel-plugin-information.vala
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2013 Jens Georg.
+ *
+ * Author: Jens Georg <jensg@openismus.com>
+ *
+ * This file is part of Rygel.
+ *
+ * Rygel is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Rygel is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+/**
+ * Parse plugin sidecar file and provide path to the module.
+ *
+ * Sidecar files are keyfiles, loosely compatible with the files used by
+ * libpeas.
+ *
+ * A minimal file for the plugin librygel-sompelugin.so looks like this:
+ *
+ * {{{
+ * [Plugin]
+ * Name = SomeNameForThePlugin
+ * Module = someplugin
+ * }}}
+ *
+ * Name must not contain any whitespaces.
+ */
+public class Rygel.PluginInformation : Object {
+ /// Full path to the loadable module file
+ public string module_path { get; construct; }
+
+ /// Name of this module
+ public string name { get; construct; }
+
+ private PluginInformation (string module_path, string name) {
+ Object (module_path: module_path, name : name);
+ }
+
+ /**
+ * Factory method to create a #RygelPluginInformation from #GFile.
+ *
+ * @param file a #GFile pointing to the sidecar file
+ * @return A new instance of #RygelPluginInformation
+ */
+ public static PluginInformation new_from_file (File file) throws Error {
+ var keyfile = new KeyFile ();
+ keyfile.load_from_file (file.get_path (), KeyFileFlags.NONE);
+ if (!keyfile.has_group ("Plugin")) {
+ throw new KeyFileError.GROUP_NOT_FOUND
+ (_("[Plugin] group not found"));
+ }
+
+ var name = keyfile.get_string ("Plugin", "Name");
+ var module = keyfile.get_string ("Plugin", "Module");
+
+ var module_dir = file.get_parent ();
+ var module_file = module_dir.get_child ("librygel-%s.%s".printf (
+ module,
+ Module.SUFFIX));
+
+ if (!module_file.query_exists ()) {
+ // try .libs for uninstalled
+ module_file = module_dir.get_child (".libs%clibrygel-%s.%s".printf (
+ Path.DIR_SEPARATOR,
+ module,
+ Module.SUFFIX));
+ if (!module_file.query_exists ()) {
+ throw new FileError.EXIST (_("Plugin module %s does not exist"),
+ module_file.get_path ());
+ }
+ }
+
+ return new PluginInformation (module_file.get_path (), name);
+ }
+}
diff --git a/src/librygel-core/rygel-plugin-loader.vala b/src/librygel-core/rygel-plugin-loader.vala
index 36544fa5..7c00b2c5 100644
--- a/src/librygel-core/rygel-plugin-loader.vala
+++ b/src/librygel-core/rygel-plugin-loader.vala
@@ -32,15 +32,10 @@ using Gee;
* It probes for shared library files in a specific directory, tries to
* find a module_init() function with this signature:
* ``void module_init (RygelPluginLoader* loader);``
- *
+ *
* It then calls that function, passing a pointer to itself. The loaded
* module can then add plugins to Rygel by calling the
* rygel_plugin_loader_add_plugin() function.
- *
- * NOTE: The module SHOULD make sure that the plugin has not been
- * disabled by the user, by using the
- * rygel_plugin_loader_plugin_disabled() function before creating the plugin
- * instance, and before creating any resources related to that instance.
*/
public class Rygel.PluginLoader : RecursiveModuleLoader {
private delegate void ModuleInitFunc (PluginLoader loader);
@@ -139,6 +134,19 @@ public class Rygel.PluginLoader : RecursiveModuleLoader {
return true;
}
+ protected override bool load_module_from_info (PluginInformation info) {
+ if (this.plugin_disabled (info.name)) {
+ debug ("Module '%s' disabled by user. Ignoring…",
+ info.name);
+
+ return true;
+ }
+
+ var module_file = File.new_for_path (info.module_path);
+
+ return this.load_module_from_file (module_file);
+ }
+
private static string get_config_path () {
var path = BuildConfig.PLUGIN_DIR;
try {
diff --git a/src/librygel-core/rygel-recursive-module-loader.vala b/src/librygel-core/rygel-recursive-module-loader.vala
index 4e143d0d..66a11fce 100644
--- a/src/librygel-core/rygel-recursive-module-loader.vala
+++ b/src/librygel-core/rygel-recursive-module-loader.vala
@@ -114,6 +114,8 @@ public abstract class Rygel.RecursiveModuleLoader : Object {
*/
protected abstract bool load_module_from_file (File file);
+ protected abstract bool load_module_from_info (PluginInformation info);
+
/**
* Process children of a folder.
*
@@ -172,15 +174,19 @@ public abstract class Rygel.RecursiveModuleLoader : Object {
FileInfo info,
FolderHandler handler) {
var file = folder.get_child (info.get_name ());
- string content_type = info.get_content_type ();
- string mime = ContentType.get_mime_type (content_type);
if (this.is_folder_eligible (info)) {
handler (file);
- } else if (mime == "application/x-sharedlib") {
- // Seems like we found a module
- if (!this.load_module_from_file (file)) {
- this.done = true;
+ } else if (info.get_name ().has_suffix (".plugin")) {
+ try {
+ var plugin_info = PluginInformation.new_from_file (file);
+
+ if (!this.load_module_from_info (plugin_info)) {
+ this.done = true;
+ }
+ } catch (Error error) {
+ warning (_("Could not load plugin: %s"),
+ error.message);
}
}
diff --git a/src/librygel-server/rygel-engine-loader.vala b/src/librygel-server/rygel-engine-loader.vala
index 784882a3..9331bb7f 100644
--- a/src/librygel-server/rygel-engine-loader.vala
+++ b/src/librygel-server/rygel-engine-loader.vala
@@ -98,6 +98,10 @@ internal class Rygel.EngineLoader : RecursiveModuleLoader {
return false;
}
+ protected override bool load_module_from_info (PluginInformation info) {
+ return load_module_from_file (File.new_for_path (info.module_path));
+ }
+
private static string get_config () {
var path = BuildConfig.ENGINE_DIR;
var config = MetaConfig.get_default ();
diff --git a/src/media-engines/gstreamer/Makefile.am b/src/media-engines/gstreamer/Makefile.am
index 1a351e6d..d0f72683 100644
--- a/src/media-engines/gstreamer/Makefile.am
+++ b/src/media-engines/gstreamer/Makefile.am
@@ -1,6 +1,7 @@
include $(top_srcdir)/common.am
engine_LTLIBRARIES = librygel-media-engine-gst.la
+engine_DATA = media-engine-gst.plugin
librygel_media_engine_gst_la_SOURCES = \
rygel-aac-transcoder.vala \
@@ -36,3 +37,4 @@ librygel_media_engine_gst_la_LIBADD = \
librygel_media_engine_gst_la_LDFLAGS = \
$(RYGEL_PLUGIN_LINKER_FLAGS)
+EXTRA_DIST = media-engine-gst.plugin.in
diff --git a/src/media-engines/gstreamer/media-engine-gst.plugin.in b/src/media-engines/gstreamer/media-engine-gst.plugin.in
new file mode 100644
index 00000000..71001f36
--- /dev/null
+++ b/src/media-engines/gstreamer/media-engine-gst.plugin.in
@@ -0,0 +1,7 @@
+[Plugin]
+Version = @VERSION@
+Module = media-engine-gst
+Name = media-engine-gst
+License = LGPL
+Description = Streaming and transcoding engine using GStreamer
+Copyright = Copyright © Rygel maintainers
diff --git a/src/media-engines/simple/Makefile.am b/src/media-engines/simple/Makefile.am
index 78779b70..3a6aa8ed 100644
--- a/src/media-engines/simple/Makefile.am
+++ b/src/media-engines/simple/Makefile.am
@@ -1,6 +1,7 @@
include $(top_srcdir)/common.am
engine_LTLIBRARIES = librygel-media-engine-simple.la
+engine_DATA = media-engine-simple.plugin
librygel_media_engine_simple_la_SOURCES = \
rygel-simple-media-engine.vala \
@@ -19,3 +20,5 @@ librygel_media_engine_simple_la_LIBADD = \
$(RYGEL_COMMON_LIBRYGEL_SERVER_LIBS)
librygel_media_engine_simple_la_LDFLAGS = \
$(RYGEL_PLUGIN_LINKER_FLAGS)
+
+EXTRA_DIST = media-engine-simple.plugin.in
diff --git a/src/media-engines/simple/media-engine-simple.plugin.in b/src/media-engines/simple/media-engine-simple.plugin.in
new file mode 100644
index 00000000..77b28a7a
--- /dev/null
+++ b/src/media-engines/simple/media-engine-simple.plugin.in
@@ -0,0 +1,7 @@
+[Plugin]
+Version = @VERSION@
+Module = media-engine-simple
+Name = media-engine-simple
+License = LGPL
+Description = Simple media streaming engine
+Copyright = Copyright © Rygel maintainers
diff --git a/src/plugins/external/Makefile.am b/src/plugins/external/Makefile.am
index 7cfe1223..7097309c 100644
--- a/src/plugins/external/Makefile.am
+++ b/src/plugins/external/Makefile.am
@@ -1,6 +1,7 @@
include ../../../common.am
plugin_LTLIBRARIES = librygel-external.la
+plugin_DATA = external.plugin
librygel_external_la_SOURCES = \
rygel-external-container.vala \
@@ -26,3 +27,5 @@ librygel_external_la_LIBADD = \
$(RYGEL_COMMON_LIBRYGEL_SERVER_LIBS)
librygel_external_la_LDFLAGS = \
$(RYGEL_PLUGIN_LINKER_FLAGS)
+
+EXTRA_DIST=external.plugin.in
diff --git a/src/plugins/external/external.plugin.in b/src/plugins/external/external.plugin.in
new file mode 100644
index 00000000..bd6da7cc
--- /dev/null
+++ b/src/plugins/external/external.plugin.in
@@ -0,0 +1,7 @@
+[Plugin]
+Version = @VERSION@
+Module = external
+Name = External
+License = LGPL
+Description = Implementation of the MediaServer2 DBus specification
+Copyright = Copyright © Rygel maintainers
diff --git a/src/plugins/external/rygel-external-plugin-factory.vala b/src/plugins/external/rygel-external-plugin-factory.vala
index f31be7cd..273a6844 100644
--- a/src/plugins/external/rygel-external-plugin-factory.vala
+++ b/src/plugins/external/rygel-external-plugin-factory.vala
@@ -29,13 +29,6 @@ using FreeDesktop;
private External.PluginFactory plugin_factory;
public void module_init (PluginLoader loader) {
- if (loader.plugin_disabled (External.Plugin.MODULE_NAME)) {
- message ("Module '%s' disabled by user. Ignoring…",
- External.Plugin.MODULE_NAME);
-
- return;
- }
-
try {
plugin_factory = new External.PluginFactory (loader);
} catch (Error error) {
diff --git a/src/plugins/gst-launch/Makefile.am b/src/plugins/gst-launch/Makefile.am
index e472455e..bfccfd58 100644
--- a/src/plugins/gst-launch/Makefile.am
+++ b/src/plugins/gst-launch/Makefile.am
@@ -1,6 +1,7 @@
include $(top_srcdir)/common.am
plugin_LTLIBRARIES = librygel-gst-launch.la
+plugin_DATA = gst-launch.plugin
librygel_gst_launch_la_SOURCES = \
rygel-gst-launch-plugin.vala \
@@ -23,3 +24,5 @@ librygel_gst_launch_la_LIBADD = \
$(RYGEL_COMMON_LIBRYGEL_SERVER_LIBS)
librygel_gst_launch_la_LDFLAGS = \
$(RYGEL_PLUGIN_LINKER_FLAGS)
+
+EXTRA_DIST = gst-launch.plugin.in
diff --git a/src/plugins/gst-launch/gst-launch.plugin.in b/src/plugins/gst-launch/gst-launch.plugin.in
new file mode 100644
index 00000000..d8bbec5a
--- /dev/null
+++ b/src/plugins/gst-launch/gst-launch.plugin.in
@@ -0,0 +1,7 @@
+[Plugin]
+Version = @VERSION@
+Module = gst-launch
+Name = GstLaunch
+License = LGPL
+Description = Share GStreamer gst-launch compatible pipelines
+Copyright = Copyright © Rygel maintainers
diff --git a/src/plugins/gst-launch/rygel-gst-launch-plugin.vala b/src/plugins/gst-launch/rygel-gst-launch-plugin.vala
index 70a72e56..636e890e 100644
--- a/src/plugins/gst-launch/rygel-gst-launch-plugin.vala
+++ b/src/plugins/gst-launch/rygel-gst-launch-plugin.vala
@@ -24,13 +24,6 @@ using Rygel;
using Gee;
public void module_init (PluginLoader loader) {
- if (loader.plugin_disabled (GstLaunch.Plugin.NAME)) {
- message ("Plugin '%s' disabled by user, ignoring..",
- GstLaunch.Plugin.NAME);
-
- return;
- }
-
var plugin = new GstLaunch.Plugin ();
loader.add_plugin (plugin);
diff --git a/src/plugins/media-export/Makefile.am b/src/plugins/media-export/Makefile.am
index 7c7b11ad..470fed6b 100644
--- a/src/plugins/media-export/Makefile.am
+++ b/src/plugins/media-export/Makefile.am
@@ -1,6 +1,7 @@
include $(top_srcdir)/common.am
plugin_LTLIBRARIES = librygel-media-export.la
+plugin_DATA = media-export.plugin
librygel_media_export_la_SOURCES = \
rygel-media-export-plugin.vala \
@@ -58,3 +59,4 @@ librygel_media_export_la_LIBADD = \
librygel_media_export_la_LDFLAGS = \
$(RYGEL_PLUGIN_LINKER_FLAGS)
+EXTRA_DIST = media-export.plugin.in
diff --git a/src/plugins/media-export/media-export.plugin.in b/src/plugins/media-export/media-export.plugin.in
new file mode 100644
index 00000000..d07b74ed
--- /dev/null
+++ b/src/plugins/media-export/media-export.plugin.in
@@ -0,0 +1,7 @@
+[Plugin]
+Version = @VERSION@
+Module = media-export
+Name = MediaExport
+License = LGPL
+Description = SQLite-based locate file sharing
+Copyright = Copyright © Rygel maintainers
diff --git a/src/plugins/media-export/rygel-media-export-plugin.vala b/src/plugins/media-export/rygel-media-export-plugin.vala
index 503f07bf..db05fdc1 100644
--- a/src/plugins/media-export/rygel-media-export-plugin.vala
+++ b/src/plugins/media-export/rygel-media-export-plugin.vala
@@ -28,13 +28,6 @@ private const string TRACKER_PLUGIN = "Tracker";
*
*/
public void module_init (PluginLoader loader) {
- if (loader.plugin_disabled (MediaExport.Plugin.NAME)) {
- message ("Plugin '%s' disabled by user, ignoring..",
- MediaExport.Plugin.NAME);
-
- return;
- }
-
try {
// Instantiate the plugin object (it may fail if loading
// database did not succeed):
diff --git a/src/plugins/mediathek/Makefile.am b/src/plugins/mediathek/Makefile.am
index 10f37304..9e7faa38 100644
--- a/src/plugins/mediathek/Makefile.am
+++ b/src/plugins/mediathek/Makefile.am
@@ -1,6 +1,7 @@
include ../../../common.am
plugin_LTLIBRARIES = librygel-mediathek.la
+plugin_DATA = mediathek.plugin
librygel_mediathek_la_SOURCES = \
rygel-mediathek-asx-playlist-parser.vala \
@@ -25,3 +26,5 @@ librygel_mediathek_la_LIBADD = \
$(RYGEL_COMMON_LIBRYGEL_SERVER_LIBS)
librygel_mediathek_la_LDFLAGS = \
$(RYGEL_PLUGIN_LINKER_FLAGS)
+
+EXTRA_DIST = mediathek.plugin.in
diff --git a/src/plugins/mediathek/mediathek.plugin.in b/src/plugins/mediathek/mediathek.plugin.in
new file mode 100644
index 00000000..caf1f4fb
--- /dev/null
+++ b/src/plugins/mediathek/mediathek.plugin.in
@@ -0,0 +1,7 @@
+[Plugin]
+Version = @VERSION@
+Module = mediathek
+Name = ZDFMediathek
+License = LGPL
+Description = Share videos from ZDF online services
+Copyright = Copyright © Rygel maintainers
diff --git a/src/plugins/mediathek/rygel-mediathek-plugin.vala b/src/plugins/mediathek/rygel-mediathek-plugin.vala
index e9d43131..64c0a7cb 100644
--- a/src/plugins/mediathek/rygel-mediathek-plugin.vala
+++ b/src/plugins/mediathek/rygel-mediathek-plugin.vala
@@ -29,13 +29,6 @@ using GUPnP;
internal extern void xpath_free_object (Xml.XPath.Object *object);
public void module_init (PluginLoader loader) {
- if (loader.plugin_disabled (Mediathek.Plugin.NAME)) {
- message ("Plugin '%s' disabled by user, ignoring..",
- Mediathek.Plugin.NAME);
-
- return;
- }
-
var plugin = new Mediathek.Plugin ();
loader.add_plugin (plugin);
diff --git a/src/plugins/mpris/Makefile.am b/src/plugins/mpris/Makefile.am
index d2bb3a77..e886ea76 100644
--- a/src/plugins/mpris/Makefile.am
+++ b/src/plugins/mpris/Makefile.am
@@ -1,6 +1,7 @@
include ../../../common.am
plugin_LTLIBRARIES = librygel-mpris.la
+plugin_DATA = mpris.plugin
librygel_mpris_la_SOURCES = \
rygel-mpris-player.vala \
@@ -20,3 +21,5 @@ librygel_mpris_la_LIBADD = \
$(RYGEL_COMMON_LIBRYGEL_RENDERER_LIBS)
librygel_mpris_la_LDFLAGS = \
$(RYGEL_PLUGIN_LINKER_FLAGS)
+
+EXTRA_DIST = mpris.plugin.in
diff --git a/src/plugins/mpris/mpris.plugin.in b/src/plugins/mpris/mpris.plugin.in
new file mode 100644
index 00000000..e8febf08
--- /dev/null
+++ b/src/plugins/mpris/mpris.plugin.in
@@ -0,0 +1,7 @@
+[Plugin]
+Version = @VERSION@
+Module = mpris
+Name = MPRIS
+License = LGPL
+Description = Bridge DLNA to MPRIS2
+Copyright = Copyright © Rygel maintainers
diff --git a/src/plugins/mpris/rygel-mpris-plugin-factory.vala b/src/plugins/mpris/rygel-mpris-plugin-factory.vala
index 42c008cc..91c47140 100644
--- a/src/plugins/mpris/rygel-mpris-plugin-factory.vala
+++ b/src/plugins/mpris/rygel-mpris-plugin-factory.vala
@@ -29,13 +29,6 @@ using FreeDesktop;
private MPRIS.PluginFactory plugin_factory;
public void module_init (PluginLoader loader) {
- if (loader.plugin_disabled (MPRIS.Plugin.MODULE_NAME)) {
- message ("Module '%s' disabled by user. Ignoring…",
- MPRIS.Plugin.MODULE_NAME);
-
- return;
- }
-
try {
plugin_factory = new MPRIS.PluginFactory (loader);
} catch (IOError error) {
diff --git a/src/plugins/playbin/Makefile.am b/src/plugins/playbin/Makefile.am
index e17365c3..f0628bec 100644
--- a/src/plugins/playbin/Makefile.am
+++ b/src/plugins/playbin/Makefile.am
@@ -1,6 +1,7 @@
include ../../../common.am
plugin_LTLIBRARIES = librygel-playbin.la
+plugin_DATA = playbin.plugin
librygel_playbin_la_SOURCES = rygel-playbin-module.vala rygel-playbin-plugin.vala
librygel_playbin_la_VALAFLAGS = \
@@ -17,3 +18,5 @@ librygel_playbin_la_LIBADD = \
$(RYGEL_COMMON_LIBRYGEL_RENDERER_GST_LIBS)
librygel_playbin_la_LDFLAGS = \
$(RYGEL_PLUGIN_LINKER_FLAGS)
+
+EXTRA_DIST = playbin.plugin.in
diff --git a/src/plugins/playbin/playbin.plugin.in b/src/plugins/playbin/playbin.plugin.in
new file mode 100644
index 00000000..e5720e2e
--- /dev/null
+++ b/src/plugins/playbin/playbin.plugin.in
@@ -0,0 +1,7 @@
+[Plugin]
+Version = @VERSION@
+Module = playbin
+Name = Playbin
+License = LGPL
+Description = A DLNA renderer based on GStreamer's playbin element
+Copyright = Copyright © Rygel maintainers
diff --git a/src/plugins/tracker/Makefile.am b/src/plugins/tracker/Makefile.am
index 3dfcf99e..d2062301 100644
--- a/src/plugins/tracker/Makefile.am
+++ b/src/plugins/tracker/Makefile.am
@@ -1,6 +1,7 @@
include $(top_srcdir)/common.am
plugin_LTLIBRARIES = librygel-tracker.la
+plugin_DATA = tracker.plugin
librygel_tracker_la_SOURCES = \
rygel-tracker-root-container.vala \
@@ -52,3 +53,5 @@ librygel_tracker_la_LIBADD = \
$(RYGEL_COMMON_LIBRYGEL_SERVER_LIBS)
librygel_tracker_la_LDFLAGS = \
$(RYGEL_PLUGIN_LINKER_FLAGS)
+
+EXTRA_DIST = tracker.plugin.in
diff --git a/src/plugins/tracker/tracker.plugin.in b/src/plugins/tracker/tracker.plugin.in
new file mode 100644
index 00000000..51a50a1b
--- /dev/null
+++ b/src/plugins/tracker/tracker.plugin.in
@@ -0,0 +1,7 @@
+[Plugin]
+Version = @VERSION@
+Module = tracker
+Name = Tracker
+License = LGPL
+Description = Share media using the Tracker meta-data store
+Copyright = Copyright © Rygel maintainers