BREAK MY BMP!
 
Article Discussion Edit History

FOREWORD:

When we say "break", we essentially really mean break. If you want a stably working BMP, please use a distro version. If it's not available, then we still mean break, or at least, "possibly break", especially with svn trunk (an svn tag like 0_34_BRANCH or a particular release like the 0_34_4 tag is already much safer.)

We don't mean to say that a distribution version has no bugs, but svn trunk is just much more likely to have very critical (intermediate) bugs or just won't compile at all properly. In any case it's rather hard to take in bug reports from svn unless you're really sure this is a real bug and not just something caused by intermediate changes.

We discourage updating after every commit, testing it out, just to complain that something is broken. How we manage svn trunk and whether it should "always compile" and "always work" or not, is really up to us and in fact we can not always guarantee that it does. We are putting at least a "label of guarantee" on releases, which might not always work out, as there might be (and still will be) some bugs, but then we have at least a point release to, well, point to, and then you can report bugs on it in a much more reliable way.



Contents

Image:Chemlab.png

[edit] Tested Platforms

OS Requirement x86 amd64 ia64 ppc sparc64 other
GNU/Linux kernel >= 2.6.x, gcc >= 3.4 X X X
*BSD gcc >= 3.4 X X X X X
Solaris gcc >= 3.4 X
HAL 9000 (Unknown) HAL 9000 Series

BMPx has been verified to build and run on these OS/Architecture combinations. This is not meant to be an exhaustive list - it merely reflects what we have confirmed. If you are able to build BMPx for some other platform, please send word or patches to us.



[edit] Build Dependencies

These dependencies are for the 0.40.0 Version!

PackageMinimal VersionComment
boost1.33.1with filesystem, regex and iostreams extensions
glibmm2.10.0
gtkmm2.10.0 
libglademm2.6.0
cairomm0.6.0
libsexymm0.1.9
dbus1.0.0with dbus-glib
taglib1.4
gstreamer0.10.14and plugins (base, good, etc)
sqlite3.3.11
libofa0.9.3
libsoup2.2.100
librsvg2.14
cdparanoiaexcept on solaris
libcdio0.70only on solaris
libasound/alsa-lib1.0.9only on linux
startup-notification0.8optional
hal0.5.8.1optional
libmodplug0.7optional
libsidplay1.xoptional


NOTE All these packages are most likely provided by your operating system, although they may not be of the required version (especially GLib, and possibly GStreamer). We recommend that you look to them before attempting to install the dependencies from source.

NOTE For more information about BMP and GStreamer please see BMPx and GStreamer


On Ubuntu Feisty, try (if the list is incomplete, please edit the wiki and complete it!):

sudo apt-get install libboost-dev libboost-filesystem-dev libboost-regex-dev libboost-iostreams-dev libdbus-1-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev gstreamer0.10-ffmpeg gstreamer0.10-plugins-good gstreamer0.10-plugins-ugly gstreamer0.10-plugins-bad libtag1-dev libgtkmm-2.4-dev libglademm-2.4-dev libstartup-notification0-dev libasound2-dev libcdparanoia0-dev libsoup2.2-dev libsqlite3-dev librsvg2-dev libsexymm-dev libofa0-dev libdbus-glib-1-dev gettext




[edit] Checking out from Subversion and Bootstrapping

If you have downloaded a BMPx source tarball, you can skip this section and proceed to build it.

[edit] Checking out

To use BMPx from Subversion (SVN) you need the Subversion client installed. You can check for its presence by running:

svn --version

If the command fails, install it using your system's package system (e.g. YUM, YaST, Apt, Ports, Portage, pkgsrc, etc.).

Should this fail as well, download and install an appropriate package from the Subversion downloads page. Build it from source if necessary.

Then use the following commands to download BMPx from SVN:

You can take a look at the SVN repository online here

[edit] Running autogen.sh

After that, run autogen.sh like this:

# ./autogen.sh

If you do not want autogen.sh to generate the change log, pass the -n argument i.e. autogen.sh -n.

Note: you will need to have Automake 1.9 and Autoconf 2.52 or later to perform this step.


[edit] Building BMPx

[edit] Preparation

  • If you followed the SVN checkout instructions above, you should already be in the top-level directory bmpx. The directory should contain the files autogen.sh and configure.ac.
  • If you have downloaded a source tarball, untar it now and descend into the source directory using
tar xfz bmpx-VERSION.tar.gz
cd bmpx-VERSION

For the version 0.20.2, this would be:

tar xfz bmpx-0.20.2.tar.gz
cd bmpx-0.20.2




[edit] Configuring Your Build

[edit] Introduction

FIXME: Write.

[edit] Optional Features

BMPx has many optional features that you the user can choose to have or avoid. Specify features you want by passing the appropriate arguments to configure in the form of --enable-xxx, where 'xxx' is the feature name. Disable those you don't want with --disable-xxx instead.

Here is a list of optional features:

FeatureDescriptionEnabled by default?
snSupport for startup-notification (see dependencies at the top of the page)yes
halHAL Storage Managerno
mp4v2Use of libmp4v2 for m4a/mp4/aac metadata readingno
sidUse of libsidplay 1.x for .sid/.psid metadata readingno


By way of an example, the command:

./configure --enable-hal --enable-mp4v2

enables the HAL storage manager and libmp4v2 m4a/mp4/aac metadata reading.

[edit] Installation Directory

By default, BMPx will be installed into the /usr/local directory. Specify another location by adding the --prefix argument. To install BMPx into /opt, for example, use:

./configure --prefix=/opt <other options go here...>

Note that you must provide an absolute path (one that starts with a '/'). Relative paths such as './somewhere' and '../somewhere' will be rejected.

[edit] Compiling

After configure has successfully run, run GNU Make using:

make

(Or gmake on some systems)

[edit] Installation

Once make has successfully finished, install BMPx with:

make install

If you are installing BMPx outside of your home directory, you may need to elevate your privileges by using sudo or switch to a privileged user e.g. root using su (or by logging in again). Examples:

  • Using sudo:
 sudo make install
  • Using su to run commands using root:
 su -c make install

Once installation is complete, you're ready to run BMPx with:

bmpx

Or if you have BMPx 0.14 RC2 or later:

beep-media-player-2



[edit] Build Problems?

[edit] Multiple installations of GTK+ and/or other libraries

This, in short, is a thorny problem with no perfect solution. (Welcome to the deficient real world!)

There are several issues you can run into. Please see the questions in the subsection.

In case of confusion, we define 'system' and 'non-system' copies as follows:

  • System copy - the copy that comes with the distribution and is installed in standard directories
  • Non-system copy - the copy alongside the system copy that is installed in non-standard directories.

[edit] libglade linked to wrong copy of GTK+

The most common reason for this is that the system libglade is linked to the system GTK+. When BMPx is linked with libglade during a build, the linker will try to link in the system GTK+, in addition to the non-system copy you specified with ./configure.

To resolve this you have a few options:

  • Locate and edit libglade-2.0.la. Change all references to the system GTK+ to your non-system copy. This is safe since all GTK 2.x versions are binary compatible. This will not work on systems like Fedora Core 4 where .la files are unused and removed by policy.
  • Install a non-system copy of libglade that is linked to the non-system GTK+. Link BMPx with this copy of libglade instead.
  • Bug distribution vendor to update GTK+ :)

[edit] I'm not a GNU/Linux system (*BSD, etc) user and get errors when running 'make'

You need GNU make (the package is generally called gmake). When the configure script completes successfully, start the build by entering gmake instead of make.

 

Log in / create account
This page has been accessed 17,373 times.