Skip to content

Installing Groove Basin on Debian Wheezy (7.6)

charlescurley edited this page Aug 6, 2014 · 2 revisions

On Debian Wheezy (7.6), with wheezy backports enabled, as upgraded....

Adapted from http://andrewkelley.me/post/raspberry-pi-music-player-server.html by Charles Curley.

Compile time estimates are on a 500 MHz 229 MB FIT-PC 1. Your compile times may vary.

You may find my mkcd script useful.

As your regular user:

cd

Then one of three options:

  1. mkdir music
  2. Or: ln -s your/music/tree/directory music
  3. Or, better yet, change the path in the file config.js. The server will generate one the first time you run it if it doesn't find one.

Then:

mkcd ~/versioned/ # this is where I keep git/svn etc. repos for projects I'm working on.

Build nodejs in a screen session, as it can take a while. If you get an error message, see the 'apt-get' line below.

# or whatever the latest version is.... This is what I used.
wget http://nodejs.org/dist/v0.10.29/node-v0.10.29.tar.gz # 13M
tar -tvf node-v0.10.29.tar.gz # optional. Just testing the file.
tar -xf node-v0.10.29.tar.gz # 17 seconds.
cd node-v0.10.29/
./configure $ 16 seconds

This should produce something like:

{ 'target_defaults': { 'cflags': [],
                       'default_configuration': 'Release',
                       'defines': [],
                       'include_dirs': [],
                       'libraries': []},
  'variables': { 'clang': 0,
                 'gcc_version': 47,
                 'host_arch': 'ia32',
                 'node_install_npm': 'true',
                 'node_prefix': '',
                 'node_shared_cares': 'false',
                 'node_shared_http_parser': 'false',
                 'node_shared_libuv': 'false',
                 'node_shared_openssl': 'false',
                 'node_shared_v8': 'false',
                 'node_shared_zlib': 'false',
                 'node_tag': '',
                 'node_unsafe_optimizations': 0,
                 'node_use_dtrace': 'false',
                 'node_use_etw': 'false',
                 'node_use_openssl': 'true',
                 'node_use_perfctr': 'false',
                 'node_use_systemtap': 'false',
                 'python': '/usr/bin/python',
                 'target_arch': 'ia32',
                 'v8_enable_gdbjit': 0,
                 'v8_no_strict_aliasing': 1,
                 'v8_use_snapshot': 'true'}}
creating  ./config.gypi
creating  ./config.mk

Then run:

make # 2 hours
make tests # optional
su -c 'make install' # provide password. Or use sudo. 30 sec.

If you have problems compiling, try "apt-get build-dep nodejs". It satisfies build dependencies of the package. README.md may have some useful hints.

As root:

You will need several backports: SDL, libav*. Make sure you are set up for backports. http://backports.debian.org/Instructions/

(If you are tight for space, skip build-essential and load build tools as needed. But I don't know what they are, so you are on your own.)

apt-get install -t wheezy-backports git cmake libchromaprint-dev libspeexdsp-dev pkg-config libsdl2-dev libavformat-dev libavutil-dev libavfilter-dev libavdevice-dev libswscale-dev build-essential
apt-get autoremove

Ensure ports 6600 and 16242 are available, both UDP and TCP.

As your regular user:

mkcd ~/versioned/
git clone https://github.com/jiixyj/libebur128
mkcd libebur128/build
cmake .. -DCMAKE_BUILD_TYPE=Debug
make
su -c 'make install' # provide root's password.

As root:

cd /usr/local/lib/
ln -s i386-linux-gnu/libebur128.a
ln -s i386-linux-gnu/libebur128.so
ln -s i386-linux-gnu/libebur128.so.1
ln -s i386-linux-gnu/libebur128.so.1.0.1 
ldconfig 

As your regular user:

cd ~/versioned/

git clone https://github.com/andrewrk/libgroove
mkcd libgroove/build
cmake .. -DCMAKE_BUILD_TYPE=Debug
make
su -c 'make install' # provide root's password.

ls /usr/local/lib/libgr*
/usr/local/lib/libgroove.a
/usr/local/lib/libgroovefingerprinter.a
/usr/local/lib/libgroovefingerprinter.so
/usr/local/lib/libgroovefingerprinter.so.4
/usr/local/lib/libgroovefingerprinter.so.4.1.1
/usr/local/lib/libgrooveloudness.a
/usr/local/lib/libgrooveloudness.so
/usr/local/lib/libgrooveloudness.so.4
/usr/local/lib/libgrooveloudness.so.4.1.1
/usr/local/lib/libgrooveplayer.a
/usr/local/lib/libgrooveplayer.so
/usr/local/lib/libgrooveplayer.so.4
/usr/local/lib/libgrooveplayer.so.4.1.1
/usr/local/lib/libgroove.so
/usr/local/lib/libgroove.so.4
/usr/local/lib/libgroove.so.4.1.1

mkcd ~/versioned/
git clone https://github.com/andrewrk/groovebasin
cd groovebasin/
# Requires nodejs be complete and installed...
npm run build # 11 minutes

node lib/server.js # to actually run the beast.

Assuming the host name of the server is stream, point your browser to http://stream:16242/. Currently, iceweasel has problems but chromium works just fine.

Clone this wiki locally