Sunday 1 December 2013

Compiling/building Banshee from source and starting development

Banshee is an popular open source audio player. I tend to use it all the time on my ubuntu.
This post contains steps for a rookee/newbee to start with development of banshee and in some sense with any open source project. Most of the steps can be read on this official link.
But there are steps/issues that are not mentioned there and it would take some time for new person to google it out so listing/adding them here.

Environment: Ubuntu 13.10 - 64 bit
Note: Become root first,

sudo -i

1. Installing dependencies:
sudo apt-get install git-core autoconf automake libtool intltool gcc make libgconf2.0-cil-dev libgconf2-dev
sudo apt-get build-dep banshee
sudo apt-get install libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev

If you get error while running autogen.sh while it checks for dependencies like boo/gmcs not found. And you won't find the package name directly as they are not named as reported by the autogen.sh script.
Install below two packages

sudo apt-get install  libboo-cil-dev
sudo apt-get install mono-gmcs

Perhaps you will receive some other error and have to google it out anyway but above two dependency where not met for me on fresh installation and after installing all the other listed dependencies on official site. After these two it was all worked fine...

2. Get source code:
This step is easy

git clone git://git.gnome.org/banshee
cd banshee; git checkout stable-2.6; cd ..
3. Building, Installing and Running

cd banshee
./autogen.sh

If you have all the dependencies as mentioned above it should be all fine, but if it is not then which ever dependency is not met you need to find the package name which contains it and install it( ya basically google it out)
To build banshee just type
make
from command line in banshee directory

Now problem may come when you are trying to run it as it did for me while i was trying to run it using
banshee&
from command line.
I got following error.
Something like this

  1. Unhandled Exception: System.MissingMethodException: Method not found: 'System.Type.op_Inequality'.
  2.   at Hyena.Gui.Dialogs.ExceptionDialog..ctor (System.Exception e) [0x00000] in <filename unknown>:0
  3.   at Hyena.Gui.CleanRoomStartup.Startup (Hyena.Gui.StartupInvocationHandler startup) [0x00069] in /root/banshee/src/Hyena/Hyena.Gui/Hyena.Gui/CleanRoomStartup.cs:60

or something along the lines of

Missing method System.Reflection.PropertyInfo::op_Inequality(PropertyInfo,PropertyInfo) in assembly /usr/lib/mono/2.0/mscorlib.dll, referenced in assembly /usr/lib/mono/gac/glib-sharp/2.12.0.0__35e10195dab3c99f/glib-sharp.dll

Unhandled Exception: System.MissingMethodException: Method not found: 'System.Reflection.PropertyInfo.op_Inequality'.
  at Gtk.ListStore..ctor (System.Type[] types) [0x00000] in <filename unknown>:0 
  at Sysinfo.Sysinfo..ctor (System.String[] args) [0x00000] in <filename unknown>:0 
  at Sysinfo.Sysinfo.Main (System.String[] args) [0x00000] in <filename unknown>:0 
[ERROR] FATAL UNHANDLED EXCEPTION: System.MissingMethodException: Method not found: 'System.Reflection.PropertyInfo.op_Inequality'.
  at Gtk.ListStore..ctor (System.Type[] types) [0x00000] in <filename unknown>:0 
  at Sysinfo.Sysinfo..ctor (System.String[] args) [0x00000] in <filename unknown>:0 
  at Sysinfo.Sysinfo.Main (System.String[] args) [0x00000] in <filename unknown>:0 


Reason for it is
Mono tried to run an application using the 2.0 profile using libraries compiled for 4.0.

So you have two options for solving this...
1. Make complete rebuild with correct compiler-- gmcs , ( i did not opt for this option so not going in depths of it...)
2. Make a workaround in a single file which will force banshee at runtime to use version 4.0

Just type

vim `which banshee`

Basically it will open the file which will be used run banshee(as we used managed language)

Search for this pattern in file

exec_args="-a $BANSHEE_EXEC_NAME

Full line will be like
exec_args="-a $BANSHEE_EXEC_NAME  $MONO_OPTIONS $MONO_EXE $BANSHEE_DEBUG $BANSHEE_CLIENT"

and make it like

exec_args="-a $BANSHEE_EXEC_NAME mono --runtime=v4.0 $MONO_OPTIONS $MONO_EXE $BANSHEE_DEBUG $BANSHEE_CLIENT"

Basically adding mono --runtime=v4.0 
Well this made my day and i was able to run my first opensource project compiled from source.
I had help from knocte from xchat...gimpnet(#banshee) Thanks a lot...

If you want to use monodevelop you will need to do the same change in the preference of the mode you are running it.
Steps
go to Run-->Run with --> Custom Parameters... --> Mono options

In the list search for

Runtime Version

It should be at bottom half
Change the value from empty to v4.0

This should be it.

0 comments:

Post a Comment

 
 
Copyright © Ramanjali
Blogger Theme by BloggerThemes Design by Diovo.com