Skip to content

User:VxJasonxV Sandbox Install instructions

Erik Massop edited this page Nov 4, 2017 · 1 revision

This page or section needs to be merged with Install instructions at, or prior to the next release.

This page covers the process of installing XMMS2 from source code. You may also use binary packages if you want.

Obtaining the source

Check the download page for information on how to obtain the XMMS2 source code.

Dependencies

You will need the following things to build XMMS2.

  • Python (>= 2.3)
  • GLib (>= 2.8.0)
  • SQLite (>= 3.2.4) (will work for versions < 3.2.4, but with poor performance and potential bugs)

If you are building XMMS2 on a binary distro, be sure to install -dev or -headers versions of these packages (if available). XMMS2 uses these headers to link to shared libraries on your system and will not build.

The following apt-get line will install the necessary packages, and plugin packages below, on a Debian system (at least sarge) "aptitude install debmake debhelper python2.3 python2.3-dev libglib2.0-dev libsdl-ttf2.0-dev libflac-dev libspeex-dev libmodplug-dev libmad0-dev libvorbis-dev libasound2-dev libspeex-dev libsqlite3-dev"

These libraries are not needed for building xmms2d itself, but will add extra functionality you might need. You will probably want MAD at the very least as without it, you can't play MP3s.

  • For output plugins:
    • ALSA - For outputting audio via ALSA.
    • Ices - For streaming songs to an icecast server.
    • JACK - For outputting to a JACK audio server.
  • For transport plugins:
    • Curl (>= 7.11.2) - For listening to streams over HTTP.
    • Samba (>= ???) - For opening files over Samba shares.
  • For decoder plugins:
    • MAD (Ubuntu and debian users will want libmad0-dev) - For listening to MPEG files (MPEG 1 & 2 layers I, II and III - includes MP3)
    • FAAD - For listening to AAC.
    • Vorbisfile - For listening to Ogg Vorbis.
    • SIDplay2 - For listening to SIDs.
    • reSID - For listening to SIDs.
    • libmodplug - For listening to MODs.
    • libxml2 - For parsing xspf playlist files.
  • For output plugins:
    • ALSA - For ALSA output.
    • Jack (try 0.100.0 if you have problems with other versions) - For Jack output.
  • For language bindings (required by some clients):
    • Pyrex (== 0.9.3, != 0.9.4, != 0.9.5, >= 0.9.5.1) - For python bindings. (Versions with != prefixes are broken and will cause Python bindings, and thusly, python clients, to fail spectacularily)
    • Ruby (>= 1.8) - For Ruby bindings.
    • Perl (>= 5.7.3) - For Perl bindings.
    • For C++ bindings:
    • For Java bindings:
      • Java SDK (>= 1.4)
      • SWIG (>= 1.3.25)
      • JAVA_HOME has to be set to the jdk's home

As with the packages above, be sure to grab -dev or -headers packages if building on a binary distro!

For debian, one can use: "apt-get install python2.3-pyrex python2.3-dev ruby1.8 ruby1.8-dev"

Platform-specific notes

Some supported platforms may have variations on build requirements:

Configuring

From the xmms2 directory, run ./waf configure to first run the configuration. Tweak the options, running ./waf --nocache each time till satisfied. You may need to specify LIBPATH and CPPPATH so that Waf knows where to look for your include files and libraries.

Extra features not including the xmms2 daemon itself are split into two categories; "Optionals" and "Plugins".

Optionals are comprised of xmms2d helpers such as language bindings (Ruby, Perl, Java) and the more fundamental utilities/clients (ET, xmms2 cli, and the launcher script). You can exclude certain optionals module by running ./waf configure --without-optionals="module1,module2,module3" where module names are the names of the directories located in src/clients. For example, the ET client is located in src/clients/et, so the name of the module to be excluded is et. Note that language bindings are do not have a directory in src/clients, but are disabled as a part of optionals simply using the name of the language. (./waf configure --without-optionals="perl,ruby,python,java").

Plugins are for outputs and decoders. Outputs being sound servers (alsa, jack, ...), and decoders for audio and even text formats (Audio: mp3 (mad), vorbis, sid; Text: m3u, pls, xspf). You can exclude certain plugins by running ./waf configure --without-plugins="module1,module2,module3" where module names are the names of the directories located in src/plugins. For example, the OSS output files are located in src/clients/oss, so the name of the module to be excluded is oss.

Lastly, if you do not want to install to the default location of /usr/local/{man,bin,share,lib}, you will also need to specify a prefix to install too. For example, you can install it into /opt/xmms2 by running ''./waf configure --prefix="/opt/xmms2". And after [#Installing installing] (see below), all xmms2 files will be installed into /opt/xmms2/{man,bin,share,lib}.

To only change the path the manual pages are installed in provide the ''--with-mandir="/some/custom/mandir" option (it defaults to $PREFIX/man).

Compiling

Run ./waf build to compile. Watch the pretty colors fly by (assuming you're using a color capable terminal. And if you're not, get with the 90s!).

Installing

Run ./waf install to install packages to their default path. And you're done!

The --destdir option provides a way to prepend a path to all install paths for package builders. Note that when this option is set, xmms2 still expects the files to be in the location without chosen --destdir prepended.

Cleaning up

./waf clean will clean the objects and binaries. (Simple, no?)

Uninstalling

./waf uninstall will uninstall any files installed by ./waf install. (Simple, no?)

See Also

Clone this wiki locally