Compile fuppes for the Popcorn Hour

Fuppes can be compiled to run on the PCH, but it has a few dependencies that we'll need to build first.

These are:

  • zlib
  • libpcre
  • libsqlite3
  • libxml2
  • taglib

We'll do these one at a time, but before we start we need to prep our environment for cross compiling..

[update: a compiled binary is available here.]

Make sure you've built your tool chain like this article.

Source the env file:

. ~/toolchain/smp86xx_toolchain.20080505/toolchain-path.env

zlib

Get zlib from http://www.zlib.net/index.html, I used this link.

mkdir zlib
cd zlib
wget http ://www.zlib.net/zlib-1.2.3.tar.gz
tar xvf zlib-1.2.3.tar.gz
cd zlib-1.2.3

Build zlib with

CC=mipsel-linux-gcc  ./configure
make

Copy the required files to the staging directory:

cp zlib.h ~/toolchain/smp86xx_toolchain.20080505/build_mipsel_nofpu/staging_dir/include/
cp zconf.h ~/toolchain/smp86xx_toolchain.20080505/build_mipsel_nofpu/staging_dir/include/
cp libz.a ~/toolchain/smp86xx_toolchain.20080505/build_mipsel_nofpu/staging_dir/lib/

zlib is now ready for use.

libpcre

Next download, configure and install pcre.

cd ~/toolchain
mkdir pcre
cd pcre
wget f tp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.8.tar.gz
tar xvf pcre-7.8.tar.gz
cd pcre-7.8
./configure --host=mipsel-linux --prefix=/home/mr_stuff/toolchain/smp86xx_toolchain.20080505/build_mipsel_nofpu/staging_dir/
make && make install

Next!

libsqlite3

Download sqlite3m configure and build it.

cd ~/toolchain
mkdir sqlite3
cd sqlite3
wget h ttp://www.sqlite.org/sqlite-amalgamation-3.6.12.tar.gz
tar xvf sqlite-amalgamation-3.6.12.tar.gz
cd sqlite-3.6.12
./configure --host=mipsel-linux --prefix=/home/mr_stuff/toolchain/smp86xx_toolchain.20080505/build_mipsel_nofpu/staging_dir/
make && make install

xml2

Download xml2 configure and build it.

cd ~/toolchain
mkdir xml2
cd xml2
wget f tp://xmlsoft.org/libxml2/libxml2-2.7.3.tar.gz
tar xvf libxml2-2.7.3.tar.gz
cd libxml2-2.7.3
./configure --host=mipsel-linux --prefix=/home/mr_stuff/toolchain/smp86xx_toolchain.20080505/build_mipsel_nofpu/staging_dir/
make && make install

taglib

Download taglib configure and build it.

cd ~/toolchain
mkdir taglib
cd taglib
wget h ttp://developer.kde.org/~wheeler/files/src/taglib-1.5.tar.gz
tar xvf taglib-1.5.tar.gz
cd taglib-1.5
./configure --host=mipsel-linux --prefix=/home/mr_stuff/toolchain/smp86xx_toolchain.20080505/build_mipsel_nofpu/staging_dir/
make
make install

Building fuppes

Once all the pre-requsites are installed, its time to download and build fuppes.

Download fuppes:

cd ~/toolchain
mkdir fuppes
cd fuppes
svn co -r629 h ttps://fuppes.svn.sourceforge.net/svnroot/fuppes/trunk fuppes
autoreconf -vfi

We have to edit the ./configure script otherwise it will detect my systems libuuid and try and use it.. We just for uuid off.

edit ./configure

vi ./configre

Find the line

if test -n "$UUID_CFLAGS"; then

below that block you see another line:

if test $pkg_failed = yes; then

Place the following line above it as such:

pkg_failed=yes

if test $pkg_failed = yes; then

Now run configure, but first make sure /share exists and is writable.

export PKG_CONFIG_PATH=/home/mr_stuff/toolchain/smp86xx_toolchain.20080505/build_mipsel_nofpu/staging_dir/lib/pkgconfig/

./configure --host=mipsel-linux -disable-transcoding --prefix=/share/Apps/fuppes

make
make install

This will install fuppes to /share/Apps/fuppes (just as we'll have it on the PCH -- it must be in this location)

Now copy the rest of the libs over.

cp -a ~/toolchain/smp86xx_toolchain.20080505/build_mipsel_nofpu/staging_dir/lib/* /share/Apps/fuppes/lib/

Now package it all up.

cd /share/Apps
tar cvzf fuppes.0.629.0.tgz fuppes

Now copy this file to your PCH and put it in the /share/Apps folder (create if required).

Then extract fuppes:

cd /share/Apps
tar xvzf fuppes.0.629.0.tgz
cd fuppes

To run (until I write a script to run it as a daemon):

cd /share/Apps/fuppes/bin
export LD_LIBRARY_PATH=/share/Apps/fuppes/lib/
./fuppes

Make a simple script to run it (fuppes.sh):

#!/bin/sh
export LD_LIBRARY_PATH=/share/Apps/fuppes/lib/
/share/Apps/fuppes/bin/fuppes

This could probably be done a whole lot better, but it works! Have fun.

Nice Guide

Hi Mr Stuff,

I'm currently developing fuppes and trying to see exactly what devices people have been able to get fuppes running on so that we can better accommodate people in the future. This guide on getting fuppes to work with Popcorn Hour looks great.

My question is, have you tried getting the latest fuppes to work with popcorn hour? Either way I think I'll add popcorn hour to the fuppes wiki as a device; obviously people have had success with it.

Thanks,
Robert
(robertmassaioli at gmail dot com)