Building

From Buzztard

Jump to: navigation, search


Contents

Project components

The buzztard project is hosted at sourceforge.net. There you find the project GIT repository. You can browse the repository starting with the main components. These are described on the Architecture page.

If you have any problems building the project, please let us know (mail us, talk to us on irc or submit a bug report).

Requirements

We use current development versions (0.10) of gstreamer and its plugins, but more or less recent versions should be fine too.

  • gstreamer
  • gst-plugins-base
  • gst-plugins-good

(see git access, source tarballs). If you like to use mp3 recording you need also the gst-plugins-ugly (lame) package from gstreamer.

You need also cvs because the autopoint tool from the gettext package needs this. Without cvs you cannot call 'autogen.sh' or 'autoregen.sh' because these tools using gettext and calling indirect the autopoint tool.

Further you need glib, gtk+, gnome-canvas, gnome-vfs, gconf, gsf, libxml2, librsvg, liboil. Recommended is to also have hal and dbus (needed for interaction controller support).

Building from git also needs gtk-doc and cvs packages for the autogen.sh to work.

If you want to run the unit tests you need check.

Remember to install the -devel packages from your distribution. Otherwise the build tools can't find the packages.

Gentoo Linux

The latest GStreamer packages are in the testing branch.

emerge --oneshot -uD ...

OpenSuSE

The latest GStreamer packages can be found in e.g. the Gnome unstable repository.

zypper install gconf2-devel glib2-devel gnome-vfs2-devel gstreamer-0_10-devel gstreamer-0_10-plugins-base-devel gtk2-devel gtk-doc hal-devel libgnomecanvas-devel libgsf-devel liboil-devel

Ubuntu

For ubuntu you can use this repository to get the latest gstreamer releases.

apt-get install gtk-doc-tools libgconf2-dev libglib2.0-dev libgnomecanvas2-dev libgsf-1-dev libgtk2.0-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libudev-dev liborc-dev

Arch Linux

Use pacman to get the gstreamer packages you want (all dependencies will be downloaded automatically):

# pacman -S gstreamer0.10-base-plugins gstreamer0.10-good-plugins gstreamer0.10-bad-plugins gstreamer0.10-ugly-plugins

Getting the sources

You can either download stable releases or checkout sources from GIT. If you intend to help us with bug-fixing and development go for the GIT repos:

git clone git://buzztard.git.sourceforge.net/gitroot/buzztard/bml
git clone git://buzztard.git.sourceforge.net/gitroot/buzztard/gst-buzztard
git clone git://buzztard.git.sourceforge.net/gitroot/buzztard/buzztard

Project developers (with commit access) will use:

git clone ssh://USERNAME@buzztard.git.sourceforge.net/gitroot/buzztard/bml
git clone ssh://USERNAME@buzztard.git.sourceforge.net/gitroot/buzztard/gst-buzztard
git clone ssh://USERNAME@buzztard.git.sourceforge.net/gitroot/buzztard/buzztard
svn co https://buzzmachines.svn.sourceforge.net/svnroot/buzzmachines/trunk/buzzmachines buzzmachines

Module Dependencies / Build Order

The only mandatory modules are gst-buzztard and buzztard. The build-deps are:

bml          ->  buzzmachines
            (->) gst-buzztard -> buzztard

So for a minimal set, build

gst-buzztard -> buzztard

And for a full set, build:

bml -> buzzmachines -> gst-buzztard -> buzztard

Building

We supply autogen.sh scripts with each module. You need to run them after checking out the sources from GIT, to bootstrap the build setup. You can pass configure options to autogen.sh. Further it generates a autoregen.sh script, that you can use after doing GIT updates. Building is done with the usual

./configure; make; make install

command triplet. For a production install you can use

./configure; make; make install-strip

to save some disk space.

All modules support some extra configure options:

  • --enable-debug: The debug build has logging enabled and uses pedantic compile options.
  • --disable-deprecated: Warn if deprecated API is used (useful for developers).
  • --enable-gtk-doc: Build API docs (and man-pages)

For testing purposes all packages can be installed locally (to $HOME) by passing --prefix=$HOME/buzztard. Although in that case several environment variables need to be updated (e.g. put them to ~/.profile):

  export DEVHELP_SEARCH_PATH="$DEVHELP_SEARCH_PATH:$HOME/buzztard/share/gtk-doc/html"
  export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$HOME/buzztard/lib/pkgconfig"
  export GST_PLUGIN_PATH="$GST_PLUGIN_PATH:$HOME/buzztard/lib/gstreamer-0.10"
  export OMF_DIR="$OMF_DIR:$HOME/buzztard/share/omf"
  export BSL_SONG_PATH=/windows/D/buzz/ensonic
  export LD_LIBRARY_PATH="$HOME/buzztard/lib:$LD_LIBRARY_PATH"
  export MANPATH=$MANPATH:$HOME/buzztard/share/man
  export GI_TYPELIB_PATH=/usr/lib/girepository:/home/ensonic/buzztard/lib/girepository
 
  if [ -z $XDG_DATA_DIRS ]; then export XDG_DATA_DIRS="/usr/share"; fi
  export XDG_DATA_DIRS="$XDG_DATA_DIRS:$HOME/buzztard/share"

If you don't specify a prefix, be aware that installation goes to /usr/local (to keep it apart from packaged software). That means you need to run make install as root. Furthermore its likely that you have to export several environment variables, such as

 export GST_PLUGIN_PATH=/usr/local/lib/gstreamer-0.10

in order to make the plugins installed by gst-buzztard available and

 export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH

to make sure packages find bml, gst-buzztard and so on. You will see a list of those env-vars at the end of each configure run (or in the block above).

Building the BuzzMachine loader

This module contains the buzzmachine wrapper. It is optional and only required if you need compatibility with the buzz software.

The file README gives more details.

Building gst-buzztard

This package contains code that eventually will be move to gstreamer and right now is needed to build all other buzztard-modules.

The file README describes how to install it locally.

Building buzztard

This module contains the core library and the end-user apps. The file README describes how to install it locally.

Verifying

You can run some checks to test the freshly built buzztard version. Inside most modules simply run

make check

You should see no failed tests in a release.

Troubleshooting

it does not bootsrap (autogen.sh)

Currently, for autogen.sh to run, you need:

  • the gconf-dev package installed. Under fedora (core 6 and 7 at least) the package is called GConf2-devel, which might be confusing.
  • gtk-doc package installed. Its sometimes called gtk-doc-tools (e.g. Ubuntu, Debian).

it does not configure

./configure: line 24188: syntax error near unexpected token `1.4'
./configure: line 24188: `GTK_DOC_CHECK(1.4)'

If you build from GIT you need to have gtk-doc installed (see previous section). It basically misses the macro defines (e.g. from m4/gtk-doc.m4) and thus leaves them in the shell script.

it does not start

When building the modules from the GIT you are encouraged to set these variables.

it still does not start

Does it maybe complain about:

buzztard-edit: error while loading shared libraries: libbtcore.so.0: cannot open shared object file: No such file or directory

If so, run this as root:

ldconfig

it does not find simsyn or audiodelay

Have you maybe installed to /usr/local? The default gstreamer plugin path only covers its own install dir (e.g. /usr). Add this to your settings

 export GST_PLUGIN_PATH=/usr/local/lib/gstreamer-0.10

it does not find any buzzmachines

Run this command in the terminal:

 gst-inspect-0.10 -b

to check if the gstbml plugin got blacklisted. If so and you are on x68 then install the buzz dll as noted in the bml README (see section "windows machines").

the ui shows no machine icons / icon theme errors

Please make sure icons themes work. Check that XDG_DATA_DIRS is set correctly. In my case it is:

 > printenv | grep XDG_DATA
 XDG_DATA_DIRS=/usr/local/share:/usr/share:/home/user/buzztard/share

You can also check that gtk finds themes:

 > strace -efile 2>strace.log buzztard-edit
 > grep "index.theme" /strace.log | grep "/usr" | grep "gnome"

Also please try below and tell us what icon-theme gtk is reporting.

GST_DEBUG_NO_COLOR=1 GST_DEBUG="bt-edit:3" buzztard-edit 2>debug.log
grep "Icon Theme:" debug.log

the help does not work

Try

yelp help:buzztard-edit

in a terminal or run yelp and type buzztard-edit in the search field. The main help file is installed to $prefix/share/gnome/help/buzztard-edit/C/buzztard-edit.xml Distributions usually use $prefix=/usr and if you build yourself and don't specify a prefix it is /usr/local by convention.

Building with Jhbuild

We have a Jhbuild script in our repositories. To use the jhbuild script, you have first checkout the build-tools module:

mkdir -p ~/projects/buzztard
cd ~/projects/buzztard
git clone git://buzztard.git.sourceforge.net/gitroot/buzztard/build-tools

Now you have to create a directory under your home:

mkdir -p ~/buzztard/jhbuild

You need to export your HOME/bin directory to your path to have jhbuild in you path:

export PATH=~/bin:$PATH

To build the complete buzztard project (the default goal in our jhbuild is buzztard-all which builds all buzztard modules) you need cvs and gtk-doc. It is ugly that autopoint needs cvs (this is hard coded in the autopoint script) also when projects like buzztard uses subversion.

If you have all requirements installed, you can run jhbuild (from anywhere):

jhbuild -f ~/projects/buzztard/build-tools/jhbuild/buzztard.jhbuildrc -m ~/projects/buzztard/build-tools/jhbuild/buzztard.modules

This will checkout all buzztard modules from git and compiles them. After jhbuild is finished, buzztard is installed in

~/buzztard/jhbuild/install/

You can launch the composer using:

jhbuild -f ~/projects/buzztard/build-tools/jhbuild/buzztard.jhbuildrc run ~/buzztard/jhbuild/install/bin/buzztard-edit

If you want to build only one module (for example buzztard itself and not the dependend libraries) you can call

jhbuild -f ~/projects/buzztard/build-tools/jhbuild/buzztard.jhbuildrc -m ~/projects/buzztard/build-tools/jhbuild/buzztard.modules buildone buzztard

Cleaning up

Early development sometimes leaves traces. We try to collect here what can be savely removed from your system.

before 0.3

  • remove share/mime-info/buzztard.{keys,mime}

before 0.4

Lots of renaming. Its turned out choosing just 'bt' was a bit blue eyed.

${prefix}/bin/bt-*                             -> ${prefix}/bin/buzztard-*
${prefix}/include/libbt*                       -> ${prefix}/include/libbuzztard-*
${prefix}/lib/libbt*                           -> ${prefix}/bin/libbuzztard-*
${prefix}/lib/songio                           -> ${prefix}/lib/buzztard-songio
${prefix}/lib/pkgconfig/libbt*.pc              -> ${prefix}/lib/pkgconfig/libbuzztard-*.pc
${prefix}/share/applications/bsl.desktop       -> ${prefix}/share/applications/buzztard-songio-buzz.desktop
${prefix}/share/applications/bt-edit.desktop   -> ${prefix}/share/applications/buzztard-edit.desktop
${prefix}/share/gnome/help/bt-edit             -> ${prefix}/share/gnome/help/buzztard-edit
$(prefix}/share/gtk-doc/html/bt-*              -> $(prefix}/share/gtk-doc/html/buzztard-*
${prefix}/share/mime/packages/buzztard-bsl.xml -> ${prefix}/share/mime/packages/buzztard-songio-buzz.xml
${prefix}/share/omf/buzztard/bt-edit           -> ${prefix}/share/omf/buzztard/buzztard-edit

You can try this script to remove old files.

before 0.5

Most icons are now part of icon theme. During 0.4 -> 0.5 cycle they got renamed to use a "buzztard_" prefix to avoid clashes.

before 0.6

The libbuzzmachineloader has been moved to ${prefix}/lib/bml as it is dlopened.

rm ${prefix}/lib/libbuzzmachineloader.*

Also the help catalog was installed into wrong location due to a bug in the scrollkeeper makefile.

rm -rf ${prefix}/share/omf/buzztard
Support Us

Collaboration

SourceForge Logo
GStreamer Logo
Become a Friend of GNOME
Linux Sound Logo
MediaWiki
Valgrind
GNU Library Public Licence
GNU Free Documentation License 1.2