Hello,

First of all I would like to say big thanks to Savonet team for great software.

The purpose of this email is to share my experiences of building liquidsoap on FreeBSD 7, which was difficult but finally positively resulted. Perhaps some of this information could be used in future development to make building on BSD platforms easier.

I have played with liquidsoap for some time on local Ubuntu machine, which was easily installed from debian package. The real life server unfortunately (or luckily) was FreeBSD 7, so I had no other choice as to try to build it from source. My setup required streaming of MP3 to Icecast server, so these are FreeBSD ports I have installed on top of exosting Icecast/liblame setup:
 
lang/ocaml
devel/ocaml-findlib
audio/libao
audio/jack
audio/libmad
audio/taglib
audio/faac
audio/faad
audio/ladspa
audio/soundtouch
multimedia/gavl
devel/ocaml-pcre
audio/libvorbis

Needless to mention that your ports tree must be uptodate.

Next was to edit PACKAGES file to comment out things which I did not need and/or which are not available on FreeBSD or most probably will not work:

#ocaml-portaudio-0.1.2
#ocaml-alsa-0.1.3
#ocaml-pulseaudio-0.1.0
#ocaml-bjack-0.1.2
#ocaml-xmlplaylist-0.1.1
#ocaml-lastfm-0.1.3

The reason for excluding JACK I will explain later (build problem)
Xmlplaylist was excluded because there is no FreeBSD port for ocaml-xml-light library.

Next it was necessary to set some environment variables;

setenv CPPFLAGS -I/usr/local/include
setenv LDFLAGS -L/usr/local/lib

then ./configure could be run with no special attributes.

Due to problem with gmake / make, the fastest (but obviously not the proper) way was to edit Makefile and replace all occurences of "make" with "gmake". Those were only few, and it worked fine.

gmake:
------------

The build immediately started to complain about linker problems:

/usr/bin/ld -lshout
ld: cannot find -lshout

and so forth for each library. In fact, they are installed in /usr/local/lib, but expected in /usr/lib. The reasons fir this are beyond my uderstanding and after several hours trying and googling I ended up with creating symlinks for each and every missing .so file:

example:

ln -s /usr/local/lib/libvorbisfile.so /usr/lib/libvorbisfile.so
ln -s /usr/local/lib/libmp3lame.so /usr/lib/libmp3lame.so

etc...

This is obviously dumb solution, but please excuse me my way of problem solving ...

After this all went file with except of JACK, which, I belive has some mistake in configfile related to LDFLAGS or CPPFLAGS because it produces following error:

gmake[3]: `libbjack_stubs.a' is up to date.
ocamlmklib          \
                                -o bjack_stubs  jack_stubs.o jack_wrapper.o -l-L/usr/local/lib -lsamplerate -ljack \

/usr/bin/ld: cannot find -l-L/usr/local/lib
gmake[3]: *** [dllbjack_stubs.so] Error 2

After disabling JACK, all went fine.

gmake install:
-----------------------

Almost all is fine, the only thing is that you have to manually create user liquidsoap and group liquidsoap before running gmake install. I have chosen nologin shell due to security reason, but at the end could not find the way how to start it as liquidsoap user, so I started it as regulat unprivileges user.

Also log file and pid file directory must be created manually.

That is basically all, it started up without single glitch.

Thanks again for your work and I hope my 2cents will help other users who may have similar problem