[Devel] Zimbra FreeBSD Build and Packages

Ray rs+zetalliance.org at trust64.com
Sun May 29 20:32:28 CEST 2016

Hello Mailinglist, Dusko, Alexander, Daniel, AJCody,

This weekend I downloaded ZCS from git.zimbra.com. After checking out 
the various shell scripts and makefiles my honest opinion is that first 
we should modify the build and make files so it is more platform 
agnostic and makes it easier to port to other Operating Systems. I 
allready started to tinker around a bit but I would like to have some 
fundamental questions answered first.

Regarding other BSDs, someone correct me if I am wrong, NetBSD uses 
pkgsrc, which came basically from ports, but diverged a lot on their 
quest to be ultra-portable. OpenBSD has their own port-system, which may 
also have been a fork from the FreeBSD ports system. DragonFly BSD uses 
dports, which basically are FreeBSD ports and they also use pkg as the 
binary packaging system. Dragonfly should be really easy to port to once 
it is working on FreeBSD. For Open and Net BSD I think their has to be 
some help from people in their respective camps.

I think the right way to do it is clean up the build system and help 
make it be more portable. Then getting it to build correctly for the 
active branches and get a FreeBSD Port / pkgs going. Once this works 
ports to other Operating Systems should be much easier.

Now to my questions:
* I got the ZCS git repository, but I can not find either the 8.7 or the 
9.0 branch, what are their branch names?

* What would be ideal to concentrate on, 8.6, 8.7 or 9.0? How long until 
9.0 would be stable? Are there big differences in the build-system 
between those 3 versions? I have seen that with 9.0 will change to 
maven, will this change a lot in the build system? Or are the changes 
relatively easy from 8.6 through 9.0? Will those changes effect the 
shell scripts and make files?

* Is it possible to use OpenJDK7 (or 6, 8)?

* Is it OK to make all shellscripts portable and getting rid of all the 
linux assumptions (use /bin/sh instead of /bin/bash, correct/detect 
locations for perl etc.)

* Is it OK/Possible to make ZIMBRA_HOME defi nable? (In FreeBSD a 
location like /usr/local/zimbra is what is expected from a port to 
install into) . Would it be sufficient to change all the build 
shell-scripts and makefiles, or are there more elaborate changes involed?

* Why does MACOSX build less packages then Linux in the thirdparty 
makefile? Are those libraries/applications used directly from the OSX 
system installation? Is it because those form part of the base system? 
What is the policy on apps/libraries being used from the OS or built them?

* When doing some cleanups in the thirdpart install scripts I saw that 
the makefile defines MAKE=make. On GNU make, this variable is already 
set on startup to the name of the specific make application which was 
used. On FreeBSD GNU make is called gmake. Using gmake instead of make 
in the shellscript is rather easy, and if one does not do MAKE=make, all 
calls to $(MAKE) in the Makefile automatically use gmake when on 
FreeBSD. Is there some reason this variable gets re-defined to make?

* The directory /ZimbraBuild/rpmconf/Build etc. contains build 
definitions for RedHat, Debian, Ubuntu, etc. but RPM refers to the 
redhat package manager, I guess this is something which just did not got 
changed, or do you create the .deb packages from the .rpm's? Is it 
correct to make changes needed for (Free)BSD in those directories? I 
started to modify the /ZimbraBuild/rpmconf/Build/get_plat_tag.sh to 
recognize FreeBSD and return the correct version. Should I just keep 
modifiying those scripts?

* How would you propose to work and / or incorporate the changes we do 
on the repository, how can all the interested people help out at the 
same time? is git.zimbra.com just a git-repository or is it a github 
project? Do you have distributed work-flows defined?

I guess that's enough questions for now :-)

Best regards

More information about the Devel mailing list