Monday, April 20, 2009

Installing Boxee on Gentoo: my experience

You have probably heard of Boxee and Gentoo (come on). I wanted to give Boxee a try, because of all the movies and tv shows that I can watch for free. I have already switched from Freevo to xbmc (which is a story in itself) as my primary media center. Since boxee is a fork of xbmc I thought I might give it a try. Why not? Because xbmc was so easy to compile and install. I did not have any problem compiling the latest code from subversion. I registered and downloaded the latest code from Boxee's website. There is no link to svn and so I downloaded version 0.9.11.5591.

The compile was pretty simple
1. Untar the downloaded file
2. autoconf
3. ./configure
4. make -j3

However the compile was not successful. The first problem I ran into was this compile error:
XAPP_MC.cpp:12:20: error: bxcurl.h: No such file or directory
To solve it, I googled around and found the solution in the boxee forums. I had to make minor modifications to the following Makefiles
xbmc/Makefile
SRCS += BoxeeAuthenticator.cpp

xbmc/lib/libPython/Makefile
SRCS += XBPyPersistentThread.cpp

xbmc/app/Makefile
SRCS+= XAPP_Edit.cpp
With the updated makefiles I started the compile process again. Now I got this error message:
*** [Gentoo] sanity check failed! ***
*** libtool.m4 and ltmain.sh have a version mismatch! ***
*** (libtool.m4 = 1.5.26, ltmain.sh = 1.5.2) ***

Please run:

libtoolize --copy --force

if appropriate, please contact the maintainer of this
package (or your distribution) for help.

make[2]: *** [config.status] Error 1
make[2]: Leaving directory `/home/chandanp/workspace/c/boxee/boxee-0.9.11.5591-src/xbmc/cores/dvdplayer/Codecs/libmad'
make[1]: *** [libmad] Error 2
make[1]: Leaving directory `/home/chandanp/workspace/c/boxee/boxee-0.9.11.5591-src/xbmc/cores/dvdplayer/Codecs'
make: *** [dvdpcodecs] Error 2
Well the solution is in the error message. I issued the following commands:
cd xbmc/cores/dvdplayer/Codecs/libmad/
libtoolize --copy --force
cd -
make
The project compiled successfully. Now to test it. I ran ./Boxee and everything worked beautifully out of the box. I added my boxee account and logged in. Then I could browse all the online content. Sweet! But there is just one problem. I cannot play any of the content I wanted. When I select a video in comedy central the busy circle shows up and it rotates for ever without starting the video. A look at the output showed these errors/warnings:
./bxflplayer-linux: /usr/lib/libcurl.so.4: no version information available (required by ./bxflplayer-linux)
./bxflplayer-linux: /usr/lib/gcc/i686-pc-linux-gnu/4.1.2/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by ./bxflplayer-linux)
Once again boxee forums to the rescue. The solution that was offered was to copy bxflplayer-linux from an older 0.9.8.4880 release into the latest. So I downloaded 0.9.8.4880 and copied over all the files from boxee-0.9.8.4880/system/players/flashplayer/ to boxee-0.9.11.5591-src/system/players/flashplayer/.

I restarted boxee and couldn't believe my eyes when I saw the videos playing nicely. Watched some clips from comedy central and then turned my attention to the controversial hulu. I clicked on hulu, and everything seemed normal. So I selected a video clip, the player started but I did not hear any audio and the video was just a blank white screen. But the time was ticking as if the media is playing. I did not have my hopes too high anyway and did not expect hulu to work on boxee, what with all the drama. May be there is something subtle that I am missing or may be the old bxflplayer-linux cannot handle hulu's content. No matter what I will keep looking around for some hacks so I can enjoy hulu from boxee.

That is my experience so far with boxee. Oh by the way I had to emerge a lot of packages along the way to make the ./configure work (you can find some dependencies here but it may not be up to date) and also when the bxflplayer could not find some libs (I had to emerge dev-perl/GSSAPI for example). I hate closed source binaries, they are compiled against some libraries and you don't know which libraries are required. Well ldd to the rescue. Still ./configure is the right way.

Update: If you are seeing floating point exception when playing your local media in Boxee then you will need to re-emerge media-libs/alsa-lib" *with* the debug use flag. Here is the discussion from comments regarding this issue:

Blogger VirtualEnder said...
Interesting, well I linked the built, libmad.0.2.1 to libmad.so, then it built just fine. However I'm still having the issue with it crashing any time I try to play anything. I set the log level to 0 and it doesn't even give any errors. It prints to stdout "floating point exception" and that's it. So bizarre. All the internal stuff works fine, as does the music playback, just seems to fuss with videos. mplayer plays the videos fine by itself, no FPE there, so I'm not sure what the problem is, thanks for your suggestions though.

Blogger Chandan Pitta said...
Ah, now that you mention FPE I remember one more hack I had to do (but forgot to mention in the blog), so I am assuming you are in gentoo. If so then you have to "emerge media-libs/alsa-lib" *with* the debug flag. So added this line
media-libs/alsa-lib debug
to /etc/portage/package.use
and re-emerged media-libs/alsa-lib. That should fix your FPE problem. Let me know how it went