_:_:::_:_ Building From Xiph Svn

LinuxAudioConference2005

building xiph stuff from source

since we are tracking very bleeding edge stuff, i recommend pulling everything from http://svn.xiph.org.

rather than describing all you need in words, i cooked a little bash script that is more-or-less self-explaining (see below)

users who just want to have the latest xiph stuff to build their own client software only need the XIPH_TRUNK_MODULES.

for servers, please enable the appropriate additional packages in the script.

note: most distros differentiate between user and devel packages. you will need both in order to compile software yourself.

make sure you have /usr/local/lib early in /etc/ld.so.conf, so that your custom libs are found by the linker before any pre-installed ones. run ldconfig afterwards. (this works for me, but i'm no linker guru. can anyone confirm this makes sense?)


if you notice dependencies i forgot, or have any other remarks, please add them here, and say which distro you're using...

debian sarge

eric dantan rzewnicki writes:

I just compiled everything using joern's script on Debian Sarge. I'm building 2 boxes specifically for this so this list of dependencies should be pretty complete. These boxes have not yet been used for anything else, so I'm starting from clean sarge installs.

packages needed for getting and compiling xiph.org code:

libcurl3-dev libxml2 libxslt1-dev subversion autoconf automake1.9 autotools-dev libtool

apt-get install'ing the above will install all of these (above packages included):

autoconf automake1.9 autotools-dev db4.2-util libapr0 libcurl3 libcurl3-dev libexpat1 libgcrypt11-dev libglib2.0-0 libgpg-error-dev libidn11-dev libneon24 libssl-dev libsvn0 libtool libxml2 libxml2-dev libxslt1-dev libxslt1.1 pkg-config subversion zlib1g-dev

A few other things I ran into ....

edited /root/.bashrc

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

I had to:

export LD_LIBRARY_PATH=/usr/local/lib/

before running xiph-build.sh

I'm not sure why creating /etc/ld.so.conf with the following entry:

/usr/local/lib/

and then running ldconfig did not take care of this as it should have, I think(?).

suse 9.x

(Jörn)

i built and tested the script on suse 9.2, so for this distro the docs should be fairly accurate.


kleineronkel:/local/build/test # cat xiph-build
#!/bin/bash

# xiph libraries installation script, blame <nettings@folkwang-hochschule.de>
# version 0.5.4 (works for me)

#
# you can run this script multiple times without generating unnecessary network traffic.
# it will only re-fetch files that have changed.
# you might want to uncomment the "make clean" lines below to make sure everything gets
# recompiled as it should.
#

# you can omit the CFLAGS setting if you don't know what it's for
#TWEAK_CFLAGS="-O3 -fPIC -march=k8"

# how many parallel make processes?
# use <number of cpus plus one> or even <number of cpus times 2>
# unless you're tight with memory
MAKE_PROCS=2

# if you don't want run this script as root, use the second setting:
# (you will have to type in a lot of passwords...)
MAKEINSTALL="make install"
#MAKEINSTALL='su -c "make install"'

mkdir svn.xiph.org
mkdir svn.xiph.org/trunk
mkdir svn.xiph.org/icecast

# these modules are provide basic libraries and command-line tools to decode and encode


# ogg files containing vorbis, speex and theora data. ao is a generic i/o library providing
# sound card support via ALSA, OSS and a number of other backends.
# do not change the order, the modules depend on one another.
XIPH_TRUNK_MODULES="ao ogg ogg2 vorbis speex theora ogg-tools vorbis-tools"

# theora-tools are useful, but theora123 depends on SDL.
XIPH_TRUNK_MODULES="$XIPH_TRUNK_MODULES theora-tools"

# if you want to encode your own theora movies, grab ffmpeg2theora as well. it depends on
# ffmpeg which is really tricky to compile...
# ezstream is a simple stream source for icecast that supports theora. see
# http://www.oddsock.org/guides/video.php
#XIPH_TRUNK_MODULES="$XIPH_TRUNK_MODULES ffmpeg2theora ezstream"

# if you want to build the official icecast release, uncomment this:
#XIPH_ICECAST_MODULES="icecast_2_2_0"

# if you want to build karl heyes' icecast branch (recommended for use as a lac2005 stream
# relay), leave this uncommented.
KARLH_MODULES="icecast-2.2-kh2.tar.gz"
# if you want to build the ices stream source with jack support, uncomment this
# (not needed for stream relays)
#KARLH_MODULES="$KARLH_MODULES ices-2.0-kh60.tar.bz2"
# this is also mandatory for ices:
#XIPH_ICECAST_MODULES="$XIPH_ICECAST_MODULES libshout-2_1" 

SVN_ACTION=checkout
#SV_ACTION=update

START_DIR=`pwd`

####### download #######


cd ${START_DIR}/svn.xiph.org/trunk
for i in $XIPH_TRUNK_MODULES ; do
        svn $SVN_ACTION http://svn.xiph.org/trunk/$i
done

cd ${START_DIR}/svn.xiph.org/icecast
for i in $XIPH_ICECAST_MODULES ; do
        svn $SVN_ACTION http://svn.xiph.org/icecast/tags/$i
done

cd $START_DIR
for i in $KARLH_MODULES ; do
        wget -N http://mediacast1.com/~karl/$i
        echo $i | grep '.gz' && tar xvzf $i && continue
        echo $i | grep '.bz2' && tar xvjf $i && continue
        echo "Don't know how to handle $i. Skipping."
done
#
####### build #######

cd ${START_DIR}/svn.xiph.org/trunk
for i in $XIPH_TRUNK_MODULES ; do
        cd $i
        if [ "$i" == "ogg-tools" ] ; then
                for k in ogg* ; do
                        cd $k
# make clean
                        CFLAGS="$TWEAK_CFLAGS" ./autogen.sh && make -j$MAKE_PROCS && $MAKEINSTALL
                        cd ..
                done
        else
                CFLAGS="$TWEAK_CFLAGS" ./autogen.sh && make -j$MAKE_PROCS && $MAKEINSTALL
        fi
        cd ..
done

cd ${START_DIR}/svn.xiph.org/icecast
for i in $XIPH_ICECAST_MODULES ; do
        cd $i;
# make clean
        CFLAGS="$TWEAK_CFLAGS" ./autogen.sh && make -j$MAKE_PROCS && $MAKEINSTALL
        cd ..
done

cd ${START_DIR}
for i in $KARLH_MODULES ; do
        i=`echo $i | sed 's/\.tar\..*//'`
        cd $i
# make clean
        CFLAGS="$TWEAK_CFLAGS" ./configure && make -j$MAKE_PROCS && $MAKEINSTALL
        cd ..
done


if you make changes in the script, please make them bold.

problems

currently vorbis-tools will not find speex.h and thus be built w/o speex support. i sent a patch upstream on april 07:

\--- vorbis-tools/configure.in~  2005-04-07 20:28:23.460547245 +0200
+++ vorbis-tools/configure.in   2005-04-07 20:28:23.460547245 +0200
@@ -161,7 +161,7 @@
   AC_MSG_WARN(libspeex missing)
   have_libspeex=no, [$SPEEX_LIBS]
 )
-AC_CHECK_HEADER(speex.h,,
+AC_CHECK_HEADER(speex/speex.h,,
   AC_MSG_WARN(libspeex headers missing)
   have_libspeex=no,[ ])

don't know when/if it will be applied.

LinuxAudioConference2005