Hi. I have been searching for an alternative PBX to asterisk (which has not been all that stable) to run on Dragonfly BSD. I spent a fair amount of time a couple months ago trying to compile freeswitch without success. I have since tried Yate, but it consumes 85-95% of the cpu when idle (not processing any calls). I am considering revisiting freeswitch. I have included below my notes of all the various problems I encountered before, which ones I resolved and how, up to the point where I left off. I am in hopes of getting feedback on whether any of the issues have been fixed or are planned to be fixed and/or suggestions on getting it working. Also, perhaps these notes on my experiences will be helpful for the developers to improve freeswitch. Keep in mind that Dragonfly is a branch from Freebsd and stays fairly compatible. I am able to compile most software, that is ported to FreeBSD, with few problems. Here are my notes ================= To compile on dragonfly BSD 1.10.1-RELEASE ========================================== I had to add -D__FreeBSD__ to CPPFLAGS ln sh to bash or zsh because I got "unexpected operator" errors from "test" during configure with the bsd shell. ln make to gmake Their scripts were calling make even though I ran the build using gmake. Must have apr-0.9.16.2.0.61 and apr-util-0.9.16.2.0.61 installed apr-0.xxx has headers, which freeswitch is including, that apr-1.xxx does not have. I sym-linked the apr-util libs from apr-util-1.2.8nb1 because apr-util-0.9.16.2.0.61 was not available as a binary package. The freeswitch-1.0.3.tar.gz release did not have bootstrap.sh, which is required for building from the svn repository. Somebody on the #freeswitch IRC suggested I get it from the subversion repository and run the bootstrap script. bootstrap.sh is not in the release. ========================================== Tue Mar 31 00:12:37 CDT 2009 I posted on the freeswitch mailing list asking about the compilation errors Got no responses. This first set of apr_... warnings turned out to clearly be from not having the correct apr-util package installed, I should have gotten a response on the list about it, considering it is a clear dependency that they do not directly specify on the web site or the source docs. apr-util is a dependency of subversion. They list SVN as a dependency of freeswitch, which is the utility in the subversion package, not the package name. svn should not be a dependency to build from a release archive that is not retrieved from the svn repository. As it turns out, it had to be apr-util version 0.9.15. See notes below. ========================================== Tue Mar 31 22:22:58 CDT 2009 I tried the freeswitch-snapshot.tar.gz from the freeswitch site, which is a 03/30/2009 snapshot from the svn trunk. *concern* It was nearly twice as big as the release for some reason. 27016871 Mar 28 13:08 freeswitch-1.0.3.tar.gz 52854882 Mar 31 18:25 freeswitch-snapshot.tar.gz Running bootstrap.sh produced a bunch of these errors from automake: Use of uninitialized value in exists at /usr/pkg/bin/automake line 4823, <GEN0> line 1. Use of uninitialized value in concatenation (.) or string at /usr/pkg/bin/automake line 4823, <GEN0> line 1. automake: #################### automake: ## Internal Error ## automake: #################### automake: unrequested trace `' automake: Please contact <bug-automake@gnu.org>. at /usr/pkg/share/automake-1.10/Automake/Channels.pm line 570 Automake::Channels::msg('automake', '', 'unrequested trace `\'') called at /usr/pkg/share/automake-1.10/Automake/ChannelDefs.pm line 191 Automake::ChannelDefs::prog_error('unrequested trace `\'') called at /usr/pkg/bin/automake line 4823 Automake::scan_autoconf_traces('configure.ac') called at /usr/pkg/bin/automake line 5046 Automake::scan_autoconf_files() called at /usr/pkg/bin/automake line 781 ========================================== Thu Apr 2 20:51:44 CDT 2009 Going back to the 1.0.3 release. I was getting a a bunch of apr_... warnings like Compiling src/switch_apr.c ... src/switch_apr.c: In function `switch_thread_self': src/switch_apr.c:74: warning: implicit declaration of function `apr_os_thread_current' src/switch_apr.c:74: warning: return makes pointer from integer without a cast ... Then gmake[3]: *** [libfreeswitch_la-switch_apr.lo] Error 1 I finally got past that by installing apr-0.9.16.2.0.61 and apr-util-0.9.15. I compiled apr-util-0.9.15 myself because it was not available as a binary package. Source files are including headers from apr-util-0.9.15 that do not exist in the binary package, apr-util-1.2.8nb1.tgz. I also got past the "Cannot guess build type" error during configure by adding "--build=i386" instead of having to use the uname wrapper to fake FreeBSD. ========================================== New error: (This one is not the fault of freeswitch) Compiling src/switch_core.c ... src/switch_core.c: In function `switch_core_setrlimits': src/switch_core.c:795: error: `RLIMIT_AS' undeclared (first use in this function) Turns out RLIMIT_AS is defined in /usr/include/sys/resource.h on some other systems including FreeBSD but not Dragonfly. It is used in the source like this #if !defined(__OpenBSD__) && !defined(__NetBSD__) setrlimit(RLIMIT_AS, &rlp); It is defined in resource.h in FreeBSD like this #define RLIMIT_AS RLIMIT_VMEM /* standard name for RLIMIT_VMEM */ I created a patch for src/switch_core.c which fixed this error. Since then, I discussed this on the Dragonfly BSD mailing list and it is apparently going to be fixed on a future release of Dragonfly now that they are aware of it. ========================================== New error: Tons of warnings like warning: return makes pointer from integer without a cast (this needs cleaned up) Then error'd with gmake[8]: *** No rule to make target `iptsec/libiptsec.la', needed by `libsofia-sip-ua.la'. Stop. I cd'd to libs/sofia-sip/libsofia-sip-ua/su and ran make there. It completed successfully in spite of the same warnings. Then ran make again form the top. Got further until ========================================== New error: making all mod_spidermonkey cd config; gmake -j1 export cd pr; gmake -j1 export cd include; gmake export cd md; gmake export ../../../config/./nsinstall: cannot make symbolic link /u1/falcon/ports/freeswitch-1.0.3/work/freeswitch-1.0.3/libs/js/nsprpub/dist/include/nspr/.: File exists Why would it be trying to make a sym-link of '.' ?? ========================================== Giving up for now.