1.. _PackagingGuide:
2
3Packaging Guide
4===============
5
6This page is directed at distributions, packagers and developers. Please
7:ref:`contact us <Contact>` if there is anything unclear / out of date /
8missing. For license & copyright information see :ref:`license`
9
10Existing Packaging
11------------------
12
13The following distributions package Quod Libet:
14
15* Arch Linux: https://www.archlinux.org/packages/extra/any/quodlibet/
16* Debian: https://packages.debian.org/source/sid/quodlibet
17* Fedora: https://admin.fedoraproject.org/pkgdb/package/rpms/quodlibet/
18
19The Ubuntu PPA / unstable repo builds are automated by the following scripts:
20
21https://github.com/quodlibet/ppa-scripts
22
23
24.. _Dependencies:
25
26Non-Optional Runtime Dependencies
27---------------------------------
28
29The following software is needed to start Ex Falso or Quod Libet.
30
31* **Python** (>= 3.5)
32* **PyGObject** including **cairo support** (>= 3.18)
33* **pycairo** (>= 1.8)
34* **mutagen** (>= 1.34)
35* **GTK+** (>= 3.18)
36* **libsoup** (>= 2.52)
37* On OS X only: **PyObjC**
38* **feedparser**
39
40For icons a complete **icon theme** is needed, preferably with symbolic icons.
41For example **adwaita-icon-theme**.
42
43For playback support in Quod Libet one of the following two is needed:
44
45GStreamer
46^^^^^^^^^
47
48Required:
49    * **GStreamer** (>= 1.8) + **typelibs**
50    * **GStreamer Plugins Base**: Vorbis, Alsa, ...
51
52Optional but recommended:
53    * **GStreamer Plugins Good**: Pulseaudio, FLAC, Jack, ...
54    * **GStreamer Plugins Ugly**: MP3 (mad), ...
55    * **GStreamer Plugins Bad**: MP3 (mpg123), MP4, Opus, ...
56    * **GStreamer libav/ffmpeg**: WMA, ...
57
58Xine
59^^^^
60
61* **xine-lib** 1.1 or 1.2 (the shared library, no Python bindings)
62
63
64Optional Runtime Dependencies
65-----------------------------
66
67**dbus-python**:
68    * Enables the DBus interface
69    * Multimedia key support under GNOME
70
71**libkeybinder-3.0** + **typelib**:
72    * Multimedia key support under non Gnome setups
73
74**libgtksourceview-3** + **typelib**:
75    * Undo/Redo support for multiline text fields
76
77**libmodplug1**:
78    * For MOD support
79
80
81Plugin Dependencies
82-------------------
83
84All plugin dependencies are optional and will only prevent the corresponding
85plugin from loading.
86
87**notification-daemon** (or any other implementation of the dbus spec):
88    * For the notification plugin
89
90**python-musicbrainzngs** (>= 0.5):
91    * For the musicbrainz plugin
92
93**GStreamer Plugins Good**:
94    * For the replaygain plugin
95
96**GStreamer Plugins Bad**:
97    * For the acoustid plugin
98
99**python-dbus**:
100    * "Browse Folders"
101    * Screensaver plugins
102    * uPnP server
103    * Gnome search provider
104    * gajim status updater
105    * MPRIS
106    * ...
107
108**rygel**:
109    * The uPnP media server
110
111**pynotify**:
112    * For the auto library update plugin
113
114**webkit2gtk** (== 4.0) + **typelibs**:
115    * For the Lyrics Window plugin
116
117**libappindicator-gtk3** + **typelibs**:
118    * For the Tray Icon plugin under Ubuntu Unity and KDE Plasma
119
120
121Build Dependencies
122------------------
123
124* **Python** >= 3.5 (stdlib only)
125* **gettext** >= 0.19.8 for translations.
126* (optional) **sphinx** >= 1.3
127
128For user documentation ``setup.py build_sphinx`` can be used to create the
129HTML user guide and put it in the build directory in the ``sphinx``
130subdirectory. This is not part of the default build process and requires
131**sphinx**.
132
133
134Testing Dependencies
135--------------------
136
137* The build dependencies
138* **pytest**
139* **pyflakes**
140* **pycodestyle**
141* **polib**
142