Development¶
Overview¶
Rygel is mostly written in Vala with the occasional C glue code where required. Large parts of the code are available via shared-library APIs (such as librygel-server and librygel-renderer-gst) which are generally expected to be used via the documented C or Vala API.
Rygel is based on GUPnP. See the GUPnP API and tutorial documentation and the GUPnP-AV documentation. Rygel’s default media engine is based on GStreamer, but developers may implement alternative Rygel media engines to use other multimedia frameworks.
A slightly more in-depth description of the code structure and program flows can be found at architecture documentation.
Getting the source code¶
Rygel development takes place in GitLab https://gitlab.gnome.org/GNOME/rygel
Released tar balls are available from GNOME’s FTP server. http://ftp.gnome.org/pub/GNOME/sources/rygel/
Getting the dependencies¶
All dependencies should be available from most distributions. The easiest way would be to use the distribution’s way to get the build dependencies for a specific package, such as
apt build-dep rygel
for Debian-based distributions or
dnf builddep rygel
for Fedora etc.
A full list of dependencies can be found in README.md
Building the code¶
meson setup build
ninja -C build
The build is configurable through various build options. Refer to meson_options.txt for all available options.
One useful option during development is -Duninstalled which will allow you run Rygel directly from the build folder without installing it to your system.
Installing the code¶
To install what you have built above, just run
sudo ninja -C build install
Notes on debugging¶
Valgrind¶
Follow the hints and tricks shown in the GNOME’s developer documentation
Use the suppression file from GLib
Set the environment variable
RYGEL_PLUGIN_TIMEOUTto something very large, for example 9999.
Testing Rygel¶
UPnP control points known to work with Rygel are the tools from the GUPnP Tools suite and BubbleUPnP for Android.
Notes on debugging¶
Valgrind¶
Follow the hints and tricks shown in the GNOME’s developer documentation
Use the suppression file from GLib
Set the environment variable
RYGEL_PLUGIN_TIMEOUTto something very large, for example 9999.