Making Open-Xchange work with Free JDKs
Making Open-Xchange work with Free JDKs is a work in progress. Patches to make it build are finished, but it doesn't work right yet - so this is currently interesting for developers only.
Prerequisites
To get Open-Xchange to build, you need:
-
A free JDK, such as
GCJ (tested version: gcc 4.1.0)
-
GNU Inetlib (tested version: 1.1.2-CVS from 2006/01/28. 1.1.1 won't work because it is missing features.)
-
A
Patch for inetlib that makes it possible to send custom IMAP commands
-
GNU Javamail (tested version: CVS from 2006/01/28. The latest released version won't work because it is missing features)
-
A
Patch for Javamail that makes it possible to send custom IMAP commands
-
Untrap - A set of free, cleanroom reimplementations of various non-standard classes, such as the BASE64Decoder and BASE64Encoder classes used by Open-Xchange
-
Netscape Directory SDK for Java - Classes that can replace some com.sun.jndi.ldap stuff
Ark Linux already contains all the prerequisites, including properly patched versions of inetlib and javamail - Ark Linux users can simply apt-get install inetlib javamail untrap ldapsdk-java.
Building
Build the prerequisites above in the order they're listed. Install the resulting jar files to /usr/share/java (this is not strictly necessary, but I've hardcoded this location in the open-xchange patch for simplicity. Feel free to put the things elsewhere and submit a patch that properly detected them in configure). Make sure you build both the ldapjdk and ldapsp parts of the Netscape LDAP SDK.
Get
Open-Xchange (tested version: 0.8.2-RC3). Apply
this patch to get rid of com.sun.image.codec.jpeg, and apply this
Patch to get rid of usages of other non-free classes. Note: This patch is constantly being updated, if you downloaded it yesterday, your version may be outdated. The correct version is 13874 bytes. After applying the patch, configure and build as usual. Make sure you point --with-mailjar, --with-activationjar, --with-jdomjar, --with-jdbcjar and --with-jsdkjar at free implementations, such as --with-mailjar=gnumail.jar (from
GNU Javamail), --with-activationjar=activation.jar (from
Classpathx JAF), --with-jdomjar=jdom.jar (
jdom.org), --with-jdbcjar=postgresql.jar (
Postgres JDBC), --with-jsdkjar=servlet-api.jar (Part of
Apache Tomcat).
Remaining problems / How you can help
-
Fix some exceptions being thrown -- e.g.
javax.naming.OperationNotSupportedException
-
at javax.naming.InitialContext.getNameInNamespace (libgcj.so.7) at com.openexchange.groupware.ldap.DefaultAuthenticationSupport.findUserBaseDN (DefaultAuthenticationSupport.java:67) at com.openexchange.sessiond.SocketHandler.findUser (SocketHandler.java:295) at com.openexchange.sessiond.SocketHandler.access$2 (SocketHandler.java:290) at com.openexchange.sessiond.SocketHandler$SessionThread.run (SocketHandler.java:440) at java.lang.Thread.run (libgcj.so.7)
Caused by classpath's implementation of javax.naming.InitialContext.getNameInNamespace throwing OperationNotSupportedException unconditionally
-
Needs more testing
