Difference between revisions of "BuildingFreeBSD"

From Mumble Wiki
Jump to: navigation, search
(Murmur: - fixed some dependencies who's port names have changed, as well as I don't think openssl from ports is required as the base one seems to work fine for me.)
(Compilation: - added notice about currently broken slice2cpp line from git, and cleaned up some formatting while i was here.)
Line 31: Line 31:
  
 
== Compilation ==
 
== Compilation ==
For the server, Murmur:
 
  
qmake-qt4 CONFIG+=no-client CONFIG+=no-dbus CONFIG+=no-bonjour main.pro
+
Note: As of current git (2010-07-03), you must edit src/murmur/Makefile and src/murmur/Makefile.release and add another include path (/usr/local/share/Ice) to the slice2cpp line (#193 at time of writing), like so:
  
make release
+
slice2cpp --checksum -I/usr/local/share/Ice ....
  
  Note, I currently don't use '''CONFIG+=optimize''' because I'm building on 7.2 and running the binary on 7.1.
+
... or you could just symlink that directory to one of the directories the Makefile searches already.
I have no idea what possible consequences could come of that. I would not expect anything, but I'm just  
+
 
being on the safe side.
+
To build the server, Murmur:
 +
 
 +
qmake-qt4 CONFIG+=no-client CONFIG+=no-dbus CONFIG+=no-bonjour main.pro
 +
  make release
 +
 
 +
Note, I currently don't use '''CONFIG+=optimize''' because I'm building on 7.2 and running the binary on 7.1.
 +
I have no idea what possible consequences could come of that. I would not expect anything, but I'm just being on the safe side.
  
 
== Run Murmur ==
 
== Run Murmur ==

Revision as of 01:15, 4 July 2010

FreeBSD Releases

I can only confirm that Murmur runs on the following FreeBSD releases. However, it should build and run on others just fine. Feel free to edit this to add more versions that you've had success with.

  • FreeBSD 7.1
  • FreeBSD 7.2

Install the dependencies

Mumble

This is a placeholder. This guide is targed towards Murmur at the moment.

Murmur

The following are the main dependencies required for building 1.2.x from git.

  • devel/boost (devel/boost_libs on 8.0+)
  • devel/ice
  • security/openssl (Not necessary on at least 7.1+)
  • devel/protobuf
  • devel/qt4-corelib
  • devel/qt4-moc
  • net/qt4-network
  • devel/qt4-qmake
  • devel/qt4-rcc
  • database/qt4-sql
  • database/qt4-sqlite-plugin
  • textproc/qt4-xml

If you want to include Bonjour support, include these deps as well:

  • net/avahi
  • net/avahi-qt4

Compilation

Note: As of current git (2010-07-03), you must edit src/murmur/Makefile and src/murmur/Makefile.release and add another include path (/usr/local/share/Ice) to the slice2cpp line (#193 at time of writing), like so:

slice2cpp --checksum -I/usr/local/share/Ice ....

... or you could just symlink that directory to one of the directories the Makefile searches already.

To build the server, Murmur:

qmake-qt4 CONFIG+=no-client CONFIG+=no-dbus CONFIG+=no-bonjour main.pro
make release

Note, I currently don't use CONFIG+=optimize because I'm building on 7.2 and running the binary on 7.1. I have no idea what possible consequences could come of that. I would not expect anything, but I'm just being on the safe side.

Run Murmur

I actually prefer to build Murmur in a VM and send builds up to the production server. In case you're wondering, here are the run deps (without Bonjour support):


       libprotobuf.so.3 => /usr/local/lib/libprotobuf.so.3 (0x28205000)
       libcrypto.so.5 => /lib/libcrypto.so.5 (0x282fb000)
       libIce.so.33 => /usr/local/lib/libIce.so.33 (0x28454000)
       libIceUtil.so.33 => /usr/local/lib/libIceUtil.so.33 (0x286f9000)
       libQtSql.so.4 => /usr/local/lib/qt4/libQtSql.so.4 (0x28738000)
       libQtXml.so.4 => /usr/local/lib/qt4/libQtXml.so.4 (0x28769000)
       libQtNetwork.so.4 => /usr/local/lib/qt4/libQtNetwork.so.4 (0x287a8000)
       libQtCore.so.4 => /usr/local/lib/qt4/libQtCore.so.4 (0x28890000)
       libz.so.4 => /lib/libz.so.4 (0x28a71000)
       libgthread-2.0.so.0 => /usr/local/lib/libgthread-2.0.so.0 (0x28a83000)
       libglib-2.0.so.0 => /usr/local/lib/libglib-2.0.so.0 (0x28a88000)
       libiconv.so.3 => /usr/local/lib/libiconv.so.3 (0x28b38000)
       libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x28c2d000)
       libm.so.5 => /lib/libm.so.5 (0x28d22000)
       libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x28d37000)
       libthr.so.3 => /lib/libthr.so.3 (0x28d42000)
       libc.so.7 => /lib/libc.so.7 (0x28d60000)
       libbz2.so.3 => /usr/lib/libbz2.so.3 (0x28e62000)
       libintl.so.8 => /usr/local/lib/libintl.so.8 (0x28e73000)
       libpcre.so.0 => /usr/local/lib/libpcre.so.0 (0x28e7c000)


Caveats and Historical problems

alloca.h missing

When building 1.1.8 or earlier, build fails because of a missing alloca.h header. On FreeBSD, alloca() is declared in [stdlib.h], so it's safe to comment the line out (in src/murmur/murmur_pch.h). This has been fixed in git for quite some time, and is apparently fixed in the port of 1.1.8.

Requesting crypt-nonce resync

On 64-bit FreeBSD installations, Murmur 1.1.x and early 1.2 builds would fail, spamming "Requesting crypt-nonce resync" messages in the log, as reported [here] and [here].

Crypto was broken on amd64 (and presumably others), however it's fixed in git. If you're trying to build a 1.1.8 server from source, [this patch] might help.

This was fixed in ports ([ports/139384]), so if you're building from ports, make sure your ports tree is up to date.