Page 1 of 1

General Advise/Guidance on Porting to BSD

Posted: Wed Mar 29, 2017 3:25 pm
by ajcody
Advise shared with me from others I talked to or who have responded to my questions about porting.

Please use the forums for general discussions and help on porting issues. Zimbra has disabled the 'issues' section (and other bits) on GitHub, the only 'communication' that takes place on GitHub is a commentary on pull requests (code reviews, etc.). You could also use the Zeta Alliance mailing lists as well - .

General Issues with porting for non-official platforms that aren't supported commercially by Zimbra.

1. Posting issues would not be something the Zimbra team would be very active in at this time. They have limited their official platform support based on their QA/Testing resources.

2. Third-party packages :: This is probably the most difficult part since Zimbra currently relies on special builds of certain packages. While they are moving away from Zimbra specific builds, it is an involved process and not likely to be completed soon. To port the current work, one would need to update the "packages" repository ( to build for the desired platform.

In the past, it has been said, that this is the only content that needs to be ported to any particular new platform. However, this might not be the case. For example, there are some additional dependencies, like junixsocket (, which would need platform support as well.

3. Zimbra native :: The Zimbra native package would require changes to support the appropriate platform. This package has not been updated in a long time.

Someone had shared, "I have a personal copy of this which I have building on Mac OSX (mostly untested). The changes I had to make were around includes (location of malloc has changed) and a couple of other minor things."

4. Packaging scripts :: Right now, the packaging scripts for the installer make certain assumptions about artifacts produced (for example .so extensions on shared libraries). They would need to be updated.

See older BSD porting thread for others that were interested in doing a BSD port and past discussions on it before all the recent changes announced at the NYC COMMIT conference: ... d.html#170


P.S. There's also some older attempts at BSD porting and references that might or might not be helpful at this time.
[I shared with them last year about Zeta Alliance and trying to see interests on a Zimbra BDS port]
[done by -Solko]
[downloads{patches} are no longer available unfortunately]
[Has old zimbra forum links as well on BSD ports]
[looks like -Solko {as solko-fbsd} was on this thread as well]

[Possible threads to review for contacts to help with new port] ... -petition/ ... 82068.html ... ght=zimbra ... ght=zimbra

Re: General Advise/Guidance on Porting to BSD

Posted: Thu Mar 30, 2017 11:45 am
by tonster
I've created a couple of patches that will allow a freebsd build to continue beyond the initial run of I'm attaching them below.

The following will be needed for zm-build/ ... patch?dl=0

The following will be needed for zm-build/rpmconf/Build/ ... patch?dl=0

Once applied, you should get further and (after installing various pre-req's) see something similar to:

[root@freebsd-build ~/installer-build/zm-build]# perl ./ --build-no=1713 --build-ts=`date +'%Y%m%d%H%M%S'` --build-release=JUDASPRIEST --build-release-no=8.7.6 --build-release-candidate=GA --build-type=FOSS
BUILD_NO : cmdline : 1713
BUILD_TS : cmdline : 20170329214055
BUILD_ARTIFACTS_BASE_DIR : default : /root/installer-build/BUILDS
BUILD_SOURCES_BASE_DIR : default : /root/installer-build
BUILD_RELEASE_NO : cmdline : 8.7.6
BUILD_TYPE : cmdline : FOSS
BUILD_PROD_FLAG : default : 1
BUILD_DEBUG_FLAG : default : 0
BUILD_DEV_TOOL_BASE_DIR : default : /root/.zm-dev-tools
INTERACTIVE : default : 1
BUILD_OS : detected : FreeBSD_64
BUILD_ARCH : detected : amd64
BUILD_RELEASE_NO_SHORT : detected : 876
BUILD_DIR : detected : /root/installer-build/BUILDS/FreeBSD_64/JUDASPRIEST-876/20170329214055_FOSS
USING javac : /usr/local/bin/javac (JAVA_HOME=/usr/local)
USING java : /usr/local/bin/java
USING maven : /usr/local/bin/mvn
USING ant : /usr/local/bin/ant
USING cc : /usr/bin/cc
USING c++ : /usr/bin/c++
USING ruby : /usr/local/bin/ruby
Press enter to proceed

I did also have to create a couple symlinks, since various options are located in areas we don't expect on other OS':

ln -s /usr/local/bin/perl /usr/bin
ln -s /usr/local/bin/ruby21 /usr/local/bin/ruby