General Advise/Guidance on Porting to BSD

Zimbra portability to BSD
Post Reply
ajcody
Advanced member
Advanced member
Posts: 53
Joined: Fri Sep 12, 2014 11:26 pm
Location: Michigan
Contact:

General Advise/Guidance on Porting to BSD

Post 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 - http://www.zetalliance.org/contact .

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 (https://github.com/Zimbra/packages) 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 (https://github.com/kohlschutter/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: http://lists.zetalliance.org/pipermail/ ... d.html#170

-Ajcody

P.S. There's also some older attempts at BSD porting and references that might or might not be helpful at this time.

http://www.jupiterbroadcasting.com/show/bsdnow/


https://wiki.zimbra.com/wiki/Zimbra_on_FreeBSD
[done by -Solko]
[downloads{patches} are no longer available unfortunately]
[Has old zimbra forum links as well on BSD ports]

https://forums.freebsd.org/threads/2342/
[looks like -Solko {as solko-fbsd} was on this thread as well]

https://project.altservice.com/issues/804
https://project.altservice.com/issues/377

https://wiki.freebsd.org/WantedPorts

[Possible threads to review for contacts to help with new port]
https://www.freebsdnews.com/2008/03/24/ ... -petition/
http://freebsd.1045724.x6.nabble.com/Zi ... 82068.html
https://forums.pcbsd.org/thread-4630.html
https://forums.pcbsd.org/thread-12646.h ... ght=zimbra
https://forums.pcbsd.org/thread-11520.h ... ght=zimbra
User avatar
tonster
Zimbra Employee
Zimbra Employee
Posts: 313
Joined: Fri Feb 21, 2014 10:14 am
Location: Ypsilanti, MI
ZCS/ZD Version: Release 8.7.0_GA_1659.RHEL6_64_2016

Re: General Advise/Guidance on Porting to BSD

Post by tonster »

I've created a couple of patches that will allow a freebsd build to continue beyond the initial run of build.pl. I'm attaching them below.

The following will be needed for zm-build/build.pl:
https://www.dropbox.com/s/c13cg21thpe1v ... patch?dl=0

The following will be needed for zm-build/rpmconf/Build/get_plat_tag.sh:
https://www.dropbox.com/s/3tcsg6eyde89d ... 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.pl --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-thirdparty-server=files.zimbra.com
=========================================================================================================
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 : cmdline : JUDASPRIEST
BUILD_RELEASE_NO : cmdline : 8.7.6
BUILD_RELEASE_CANDIDATE : cmdline : GA
BUILD_TYPE : cmdline : FOSS
BUILD_THIRDPARTY_SERVER : cmdline : files.zimbra.com
BUILD_PROD_FLAG : default : 1
BUILD_DEBUG_FLAG : default : 0
BUILD_DEV_TOOL_BASE_DIR : default : /root/.zm-dev-tools
INTERACTIVE : default : 1
STOP_AFTER_CHECKOUT : default : 0
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
=========================================================================================================
ENV_BUILD_INCLUDE : (undef)
ENV_CACHE_CLEAR_FLAG : (undef)
ENV_FORCE_REBUILD : (undef)
ENV_GIT_UPDATE_INCLUDE : (undef)
ENV_PACKAGE_INCLUDE : (undef)
ENV_RESUME_FLAG : (undef)
ENV_SKIP_CLEAN_FLAG : (undef)
=========================================================================================================
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
metux2
Posts: 5
Joined: Tue Sep 24, 2019 9:15 pm

Re: General Advise/Guidance on Porting to BSD

Post by metux2 »

tonster wrote:I've created a couple of patches that will allow a freebsd build to continue beyond the initial run of build.pl. I'm attaching them below.
The following will be needed for zm-build/build.pl:
https://www.dropbox.com/s/c13cg21thpe1v ... patch?dl=0
hmm, this isn't quite correct, as OS has nothing to do with cpu architecture.
We'll have to untwist and rewrite the whole part :(

I've done similar horrible hacks for Debian, but yet have to replace it by some proper solution.
If you'd like to cooperate (maybe even join my fork project ? ;-)), drop me a mail: info@metux.net
tonster wrote: ln -s /usr/local/bin/ruby21 /usr/local/bin/ruby
Oh, ZCS uses Ruby ? Can you tell a bit more, where exactly ?
I'll probably have to rewrite that stuff in some more decent language (Ruby really is an unstable thing in distro context) :(

--mtx
Post Reply