Re: [Banshee-List] Compiling under windows



Okay, here are the steps I followed today to get an *almost* working build on Windows. I have tried to make the steps as atomic as possible, so if anyone knows more about a particular step and whether or not it can be done to the mainline code, please comment on it.

1. Install `GTK#`_
2. Install `GStreamer`_ (OSSBuilds WinBuilds)
3. Install `GSreamerSharp`_ (OSSBuilds WinBuilds SDK)
4. Prepare sources::

    unzip banshee-dev.zip
    cd banshee
    git reset --hard HEAD #The dev bundle has local modifications
    git pull
    cd bin
    git pull
    cd ..\
    git submodule update --init

5. Open Banshee.sln in Visual Studio 2010 and allow it to convert the solution and project files. 6. Add ``MusicBrainz`` project reference to ``Banshee.Services`` (Core now depends on an Extension, good idea?) 7. Add ``taglib-sharp`` reference and ``Mono.Media``, ``Hyena.Data.Sqlite`` project references to ``Banshee.AmazonMp3`` 8. Add ``pango-sharp`` reference and ``Banshee.Widgets`` project reference to ``Banshee.WebBrowser`` 9. Remove the ``Banshee.GStreamer`` project reference from ``Banshee.Bpm`` and add a ``Banshee.GStreamerSharp`` project reference
10. Click *Build > Configuration Manager*

   1. Select "Windows" from *Active Solution Configuration*
   2. Untick the "Build" checkbox for the following projects

* ``Banshee.Dap.AppleDevice`` (I haven't found/built *libgpod* for Windows, yet)
      * ``Banshee.UbuntuOneMusicStore``
* ``Banshee.SoundMenu`` (I haven't found/built *libindicate* on Windows, yet)

11. Remove the following missing files from the ``Banshee.Podcasting`` project

   * ``Banshee.Podcasting.Gui\GridContent.cs``
   * ``Banshee.Podcasting.Gui\ColumnCellDownloadStatus.cs``
   * ``Banshee.Podcasting.Gui\HeaderWidget.cs``
   * ``Banshee.Podcasting.Data\DownloadStatusFilterModel.cs``
   * ``Banshee.Podcasting.Gui\DownloadStatusFilterView.cs``

12. Change the ``SubtitleUri`` property getter in ``Banshee.GStreamerSharp.PlayerEngine`` to::

   get { return new SafeUri(playbin.Suburi) }

I still have not completely solved the Linq extension method problem I mentioned earlier, so I replaced the ``GetSubtitleDescription`` method of the ``Banshee.GStreamerSharp.PlayerEngine`` class to::

    Gst.List tag_list = playbin.GetTextTags (index)
        .GetTag (Gst.Tag.LanguageCode);
    foreach(string tag in tag_list)
    {
         if (tag != null)
         {
             return tag;
         }
    }
    return default(string);

I'm sure there is a better way to solve it, but I just wanted to get the project to compile so I could move on to the next step.

At this point, I was able to build the entire solution without errors, in both Visual Studio and MonoDevelop. When launching Nereid, however, I get the following fatal exception::

An unhandled exception was thrown: Unable to load DLL 'libgstreamer-0.10.dll': The specified procedure could not be found. (Exception from HRESULT: 0x8007007F)
       at Gst.Application.gst_init(Int32& argc, IntPtr& argv)
       at Gst.Application.Init()
       at Banshee.GStreamerSharp.PlayerEngine..ctor()

I tried using the stable and beta versions of GStreamer WinBuilds and the corresponding SDK packages, as well as copying ``libgstreamer-0.10.dll`` into the ``bin`` directory, but nothing seems to help.

.. _GTK#: http://www.go-mono.com/mono-downloads/download.html
.. _GStreamer: http://code.google.com/p/ossbuild/downloads/detail?name=GStreamer-WinBuilds-LGPL-x86.msi&can=2&q= .. _GStreamerSharp: http://code.google.com/p/ossbuild/downloads/detail?name=GStreamer-WinBuilds-SDK-LGPL-x86.msi&can=2&q=

--
Dustin C. Hatch
theNeverFading

"In the beginning the universe was created. This made a lot of people
angry and has been widely regarded as a 'bad move'."
--Douglas Adams


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]