November 06, 2008
Getting SUSEy with Boxee
It's alive! As yet another side project, I have been trying to get Boxee to work on my openSUSE box. Boxee is a cool new media player / social app that lets you play all kinds of multimedia, including streaming video from sites like Hulu, CNN, last.fm etc. It first came out on the Mac and a Linux version was recently released. Unfortunately, only Ubuntu is supported, so I decided to see what I could do about getting it run on my openSUSE box.
So I downloaded the source tarball and unpacked it with 'tar xzvf'. This created a working set of folders, but unfortunately, no Boxee instructions. At the time I didn't realize this was mostly a XBMC (Xbox Media Center) source tree, with a layer of Boxee graphics and helper apps. There are some READMEs, but turns out they don't really have much to do with installing Boxee. So rather than let you in on all my blundering about, here's how you should build Boxee on your openSUSE (or any other) Linux box:
- The first thing you need to do is to get the myriad number of development packages required by XBMC. The README.linux file lists the packages needed when building under Ubuntu, but the names don't always match up for openSUSE. I'm going to assume you have the g++ packages installed, so here's the list of openSUSE packages:
SDL-devel SDL_image-devel SDL_gfx-devel SDL_mixer-devel SDL_sound-devel freetype2 freetype2-devel lzo lzo-devel fribidi fribidi-devel sqlite3 sqlite3-devel libogg-devel alsa-devel python-sqlite2 glew glew-devel libcurl-devel xorg-x11-devel xorg-x11-libXrender-devel pmount libmad0 libmad-devel libtre-devel libvorbis-devel libmysqlclient-devel hal hal-devel pcre-devel subversion libjasper-devel libjasper fontconfig-devel libbz2-devel boost-devel libtool nasm libfaac-devel libenca-devel automake cmake xorg-x11-libXt-devel xorg-x11-libxmu-devel gperf unzip libpng-devel libjpeg-devel
I think this is all of them, but I can't be sure as I already had some installed. The README.linux file lists the Ubuntu 'apt-get' command you can use to get all of these. I imagine there is an equivalent yast2 and/or rpm command to do the same but I just went through the Software Management module of Yast2 and selected them by hand.
$ autoconf
: there isn't a 'configure' script and autoconf is the only way I know how to create it, even though it isn't mentioned in the README.linux file. I'm not sure if there is a better way, but this seems to work$ ./configure -C --disable-debug
: the -C creates a configure cache (presumably for running faster in later invocations) and U figure we might as well build an optimized, non-debug version of xmbc$ make
: now we'll make the Boxee executable (which is really just a renamed xbmc.bin, which is what the xbmc build creates. Now go make a fresh cup of coffee, as you will have plenty of time to brew another pot! I get a strange error from LaTex, as I think it is building some help files:! Package inputenc Error: Unicode char \u8:éph not set up for use with LaTeX. See the inputenc package documentation for explanation. Type H
for immediate help. ... l.49 \item[Author:]Stéph ane Borel $<${\tt stef@via.ecp.fr}$>$ ? This is some odd error for Unicode. Using some Google-fu, you can fix this by typing in
e
(to edit the file), then:wq!
to write out the file and quit (those are vi commands). Then run the make again. And go pour yourself another cuppa.- After the make has finished, you have a basic XBMC installation ready to go. So now you need to make a Boxee home. The script debian/make_debian.sh seems to be a script for the developers to set up a launching area to create the .deb file for the Ubuntu install. I modified it to create a nice Boxee subfolder. I called it make-boxee.sh and it is here:
#!/bin/bash curr_dir=`pwd` SRC=../ TMP=./tmp DEST=${TMP}/opt/boxee /bin/rm -rf ${TMP} mkdir -p ${DEST}/ mkdir -p ${TMP}/usr/share/applications mkdir -p ${TMP}/usr/share/pixmaps # language mkdir -p ${DEST}/language/ cp -r ${SRC}/language/* ${DEST}/language/ # media mkdir ${DEST}/media cp ${SRC}/media/defaultrss.png ${SRC}/media/downloadrss.png ${SRC}/media/test_sound.mp3 ${SRC}/media/weather.rar ${DEST}/media chmod 644 ${DEST}/media/* mkdir ${DEST}/media/Fonts cp ${SRC}/media/Fonts/boxee* ${DEST}/media/Fonts chmod 644 ${DEST}/media/Fonts/* # screensavers mkdir ${DEST}/screensavers cp ${SRC}/screensavers/Plasma.xbs ${SRC}/screensavers/Solarwinds.xbs ${SRC}/screensavers/Euphoria.xbs ${DEST}/screensavers # scripts mkdir ${DEST}/scripts # Lyrics cp -r ${SRC}/scripts/Lyrics ${DEST}/scripts cp -r ${SRC}/scripts/RTorrent ${DEST}/scripts cp -r ${SRC}/scripts/Apple\ Movie\ Trailers ${DEST}/scripts cp -r ${SRC}/scripts/OpenSubtitles ${DEST}/scripts # plugins mkdir ${DEST}/plugins mkdir ${DEST}/plugins/music mkdir ${DEST}/plugins/pictures cp -r ${SRC}/plugins/pictures/flickr ${DEST}/plugins/pictures cp -r ${SRC}/plugins/pictures/PicasaWeb ${DEST}/plugins/pictures mkdir ${DEST}/plugins/video cp -r ${SRC}/plugins/video/Youtube ${DEST}/plugins/video cp -r "${SRC}/plugins/video/CNN Video" ${DEST}/plugins/video cp -r "${SRC}/plugins/video/Movie Trailers" ${DEST}/plugins/video # skin mkdir -p ${DEST}/skin/Boxee\ Skin\ NG cp -r ${SRC}skin/Boxee\ Skin\ NG/* ${DEST}/skin/Boxee\ Skin\ NG # system mkdir ${DEST}/system cp ${SRC}/system/*-i486-linux.so ${SRC}/system/asound.conf ${DEST}/system mkdir ${DEST}/system/players mkdir ${DEST}/system/players/dvdplayer cp ${SRC}/system/players/dvdplayer/*-i486-linux.so ${DEST}/system/players/dvdplayer mkdir ${DEST}/system/players/paplayer cp ${SRC}/system/players/paplayer/*-i486-linux.so ${DEST}/system/players/paplayer mkdir ${DEST}/system/players/flashplayer cp ${SRC}/system/players/flashplayer/*linux* ${SRC}/system/players/flashplayer/bxoverride.so ${DEST}/system/players/flashplayer chmod 755 ${DEST}/system/players/flashplayer/* mkdir ${DEST}/system/python cp ${SRC}/system/python/*-i486-linux.so ${DEST}/system/python mkdir ${DEST}/system/python/lib cp ${SRC}/xbmc/lib/libPython/Python/build/lib.linux-i686-2.4/*.so ${DEST}/system/python/lib cd ${SRC}/xbmc/lib/libPython/Python/Lib python -O >/dev/null << EOF import compileall compileall.compile_dir(".", force=1) EOF /bin/rm -rf test tar cf - `find . -name \*.pyo` | (cd $curr_dir; cd ${DEST}/system/python/lib; tar xf -) cd $curr_dir mkdir ${DEST}/system/scrapers cp -r ${SRC}/system/scrapers/* ${DEST}/system/scrapers mkdir ${DEST}/system/cdrip cp ${SRC}/system/cdrip/*-i486-linux.so ${DEST}/system/cdrip # userdata mkdir -p ${DEST}/UserData cp ${SRC}system/Keymap.xml ${SRC}system/Lircmap.xml ${DEST}/system chmod 644 ${DEST}/system/*.xml cp ${SRC}UserData/sources.xml.in.linux ${DEST}/UserData cp ${SRC}UserData/sources.xml.in.diff.linux ${DEST}/UserData chmod 644 ${DEST}/UserData/* ln -s UserData ${DEST}/userdata # visualizations mkdir ${DEST}/visualisations cp ${SRC}visualisations/opengl_spectrum.vis ${SRC}visualisations/ProjectM.vis ${SRC}visualisations/Waveform.vis ${DEST}/visualisations cp -r ${SRC}visualisations/projectM ${SRC}visualisations/projectM.presets ${DEST}/visualisations # rtorrent mkdir -p ${DEST}/bin cp ${SRC}/bin-linux/boxee-rtorrent ${DEST}/bin cp ${SRC}/system/rtorrent.rc.linux ${DEST}/system # binary cp ${SRC}/Boxee ${DEST}/ strip ${DEST}/Boxee cp ${SRC}/run-boxee-desktop.in ${DEST}/run-boxee-desktop # give_me_my_mouse_back cp ${SRC}/give_me_my_mouse_back ${DEST}/ strip ${DEST}/give_me_my_mouse_back # desktop stuff cp boxee.desktop ${TMP}/usr/share/applications cp boxee.png ${TMP}/usr/share/pixmaps # update debian control file with version number mkdir tmp/DEBIAN cp -f postinst ${TMP}/DEBIAN/ chmod 755 ${TMP}/DEBIAN/postinstI removed some subversion stuff and other dev kind of things. I also changed the python invocation to not use the one that came with the source tarball. You can see the make_debian.sh script use ../python, but that gave me errors, so I just use the one I have already and it went well. This puts a full Boxee installation into the tmp folder. - to run Boxee, run opt/boxee/run-boxee-desktop script. You'll need to disable Compiz if you are runnig it. If you have dual monitors, you'll want to add the line:
export SDL_VIDEO_FULLSCREEN_HEAD=1
up near the top. This way, it will show up only on one display, rather than covering both displays, with most of it ending up in the middle, straddling your displays. See the README.linux file for more info.
With a small amount of luck, you should be running Boxee. Be sure to add me as a friend - jdarnold. Report back any success or failures in the Boxee Linux forum.
del.icio.us | Digg it | Furl | Yahoo MyWeb | Create Social Bookmark Links
Posted by jdarnold at 12:58 PM | TrackBack
Track with co.mments
Track with co.mments I'm just working through your directions and I found a package you missed in your list:
libjasper-devel
Make also had a hard time finding dbus-arch-debs.h. It was hiding in /usr/lib64/include/dbus but was expected in /usr/include/dbus-1.0/dbus. I solved the problem with a symlink (not ideal, or smart but it works - kind of)
Ok, next problem, make doesn't like libcurl or more specifically:
FileCurl.cpp: In member function ‘void XFILE::CFileCurl::SetCommonOptions(XFILE::CFileCurl::CReadState*)’:
FileCurl.cpp:385: error: call of overloaded ‘easy_setopt(XCURL::CURL_HANDLE*&, XCURL::CURLoption, NULL)’ is ambiguous
Sadly I have yet to find a solution to this, so I'm going to post this comment, working or not.
Posted by: roasty on November 11, 2008 06:10 PMFor the libcur problem you might want to make sure you have the latest libcurl-devel package. You can cat /usr/include/curl/curlver.h to check. Mine is 7.18.1.
Are you doing this on a 64bit opensuse? I'm not sure if that is supported.
Thanks for the libjasper pointer.
The dbus-arch-debs.h file is provided by dbus-1-devel package. So that's another necessary package.
Posted by: Jonathan Arnold on November 11, 2008 06:33 PMNo problem with the 0.9.3921 Build it compile without a glich
Posted by: Philippe Demartin on November 17, 2008 07:16 AMJust to make a wild guess, Philippe, but you probably have the correct setup to deal with international characters like the one in Stephane's name!-) I went through and edited all the files with the "funny" e so I wouldn't keep having this problem. Not sure how to set up Latex so it can deal better with the i8n chars.
OK, I have run 'make' and I have created the make-boxee.sh script from above (in the extracted source directory). Now what? Should I run 'make install'? I don't see a debian/make_debian.sh script anywhere on my system to be able to put your script in the same directory as it.
BTW, I just compiled version 0.9.6.4578 without any major errors.
Any direction would be much appreciated. :)
Posted by: geoff on January 5, 2009 03:21 AMIt's best to use './bootstrap' instead of autoconf itself.
Posted by: Saviq on January 15, 2010 11:34 AMAlso, at least 'libsamplerate-devel libcdio-devel libmms-devel ' are missing from the list of requirements, but configure failed for 'main in -lmms' anyway.
I also recommend having the Packman repository enabled.
Posted by: Saviq on January 15, 2010 11:51 AM


