Menu

#53 Avoid OSX specific dependencies (new build property)

v4.9.0
closed
nobody
None
5
2020-04-16
2018-11-23
niol
No

This patch adds a new build property to avoid building against OSX specific dependencies. The syntax used assumes java7 which so the patch also updates associated checks.

--- davmail.git.orig/build.xml  2018-11-22 10:02:57.662998324 +0100
+++ davmail.git/build.xml   2018-11-22 10:02:57.658998263 +0100
@@ -37,9 +37,9 @@
         <available classname="javafx.embed.swing.JFXPanel" property="is.javafx"/>^M
     </condition>^M
 ^M

-    <condition property="is.java6">^M
+    <condition property="is.java7">^M
         <not>^M
-            <matches string="${ant.java.version}" pattern="1\.[012345]"/>^M
+            <matches string="${ant.java.version}" pattern="1\.[0123456]"/>^M
         </not>^M
     </condition>^M
 ^M
@@ -53,8 +53,8 @@
         <equals arg1="${file.encoding}" arg2="UTF-8"/>^M
     </condition>^M
 ^M
-    <target name="check-java6" unless="is.java6">^M
-        <fail message="Java 6 or later needed to build DavMail, current version is ${ant.java.version}, check JAVA_HOME"/>^M
+    <target name="check-java7" unless="is.java7">^M
+        <fail message="Java 7 or later needed to build DavMail, current version is ${ant.java.version}, check JAVA_HOME"/>^M
     </target>^M
 ^M
     <target name="check-encoding" unless="is.utf8">^M
@@ -82,7 +82,7 @@
         <property name="release" value="${version}"/>^M
     </target>^M
 ^M
-    <target name="init" depends="check-encoding, check-java6, svnrelease, defaultrelease">^M
+    <target name="init" depends="check-encoding, check-java7, svnrelease, defaultrelease">^M
         <echo message="Creating DavMail ${release} dist package" level="info"/>^M
         <echo message="Java ${ant.java.version} and JavaFX ${is.javafx.message}" level="info"/>^M
         <mkdir dir="target/classes"/>^M
@@ -94,6 +94,7 @@
                includeantruntime="false">^M
             <exclude name="davmail/exchange/auth/*Interactive*" unless="is.javafx"/>^M
             <exclude name="davmail/service/DavService.java" if="nowindowsservice"/>^M
+            <exclude name="davmail/ui/tray/OSXAwtGatewayTray.java" if="noosxtray"/>^M
             <compilerarg value="--add-exports" />^M
             <compilerarg value="java.naming/com.sun.jndi.ldap=ALL-UNNAMED" />^M
             <classpath>^M
@@ -104,10 +105,11 @@
 ^M
     <target name="compile-java" depends="init" unless="is.java9">^M
         <mkdir dir="target/classes"/>^M
-        <javac srcdir="src/java" destdir="target/classes" source="1.6" target="1.6" debug="on" encoding="UTF-8"^M
+        <javac srcdir="src/java" destdir="target/classes" source="1.7" target="1.7" debug="on" encoding="UTF-8"^M
                includeantruntime="false">^M
             <exclude name="davmail/exchange/auth/*Interactive*" unless="is.javafx"/>^M
             <exclude name="davmail/service/DavService.java" if="nowindowsservice"/>^M
+            <exclude name="davmail/ui/tray/OSXAwtGatewayTray.java" if="noosxtray"/>^M
             <classpath>^M
                 <path refid="classpath"/>^M
             </classpath>^M
@@ -125,7 +127,7 @@
 ^M
     <target name="test-compile" depends="compile">^M
         <mkdir dir="target/test-classes"/>^M
-        <javac srcdir="src/test" destdir="target/test-classes" source="1.6" target="1.6" debug="on" encoding="UTF-8"^M
+        <javac srcdir="src/test" destdir="target/test-classes" source="1.7" target="1.7" debug="on" encoding="UTF-8"^M
                includeantruntime="false">^M
             <classpath>^M
                 <path refid="classpath"/>^M
@@ -211,7 +213,7 @@
         <deb todir="dist"^M
              package="davmail"^M
              section="mail"^M
-             depends="openjdk-11-jre|openjdk-8-jre|openjdk-7-jre|openjdk-6-jre|oracle-java7-jre|sun-java6-jre|default-jre,libswt-gtk-3-java|libswt-gtk-3.6-java|libswt-gtk-3.5-java|libswt-gtk-3.4-java,libswt-cairo-gtk-3-jni|libswt-cairo-gtk-3.5-jni">^M
+             depends="openjdk-11-jre|openjdk-8-jre|openjdk-7-jre|oracle-java7-jre|default-jre,libswt-gtk-3-java|libswt-gtk-3.6-java|libswt-gtk-3.5-java|libswt-gtk-3.4-java,libswt-cairo-gtk-3-jni|libswt-cairo-gtk-3.5-jni">^M
             <version upstream="${release-name}"/>^M
             <maintainer email="mguessan@free.fr" name="Mickaël Guessant"/>^M
             <description synopsis="DavMail POP/IMAP/SMTP/Caldav/Carddav/LDAP Exchange Gateway">^M
Index: davmail.git/src/java/davmail/ui/tray/DavGatewayTray.java
===================================================================
--- davmail.git.orig/src/java/davmail/ui/tray/DavGatewayTray.java   2018-11-22 10:02:57.662998324 +0100
+++ davmail.git/src/java/davmail/ui/tray/DavGatewayTray.java    2018-11-22 10:03:39.823644387 +0100
@@ -263,26 +263,30 @@
                     try {
                         if (SystemTray.isSupported()) {
                             if (isOSX()) {
-                                davGatewayTray = new OSXAwtGatewayTray();
+                                davGatewayTray = (DavGatewayTrayInterface) Class.forName("OSXAwtGatewayTray").newInstance();
                             } else {
                                 davGatewayTray = new AwtGatewayTray();
                             }
                             davGatewayTray.init();
                         }
-                    } catch (NoClassDefFoundError e) {
+                    } catch (NoClassDefFoundError | ClassNotFoundException | InstantiationException | IllegalAccessException e) {
                         DavGatewayTray.info(new BundleMessage("LOG_SYSTEM_TRAY_NOT_AVAILABLE"));
                     }
                 }
             }

             if (davGatewayTray == null) {

-                if (isOSX()) {
-                    // MacOS
-                    davGatewayTray = new OSXFrameGatewayTray();
-                } else {
-                    davGatewayTray = new FrameGatewayTray();
+                try {
+                    if (isOSX()) {
+                        // MacOS
+                        davGatewayTray = (DavGatewayTrayInterface) Class.forName("OSXAwtGatewayTray").newInstance();
+                    } else {
+                        davGatewayTray = new FrameGatewayTray();
+                    }
+                    davGatewayTray.init();
+                } catch (NoClassDefFoundError | ClassNotFoundException | InstantiationException | IllegalAccessException e) {
+                    DavGatewayTray.info(new BundleMessage("LOG_SYSTEM_TRAY_NOT_AVAILABLE"));
                 }
-                davGatewayTray.init();
             }
         }
     }

Discussion

  • Mickael Guessant

    Need to check this again now that I removed OSX Growl support, there shouldn't be any explicit OSX dependency left

     
    • niol

      niol - 2020-04-16

      davmail now builds find without this patch and without Growl, this patch is now useless. Thank you! This can be closed.

       
  • Mickael Guessant

    • status: open --> closed
     
  • Mickael Guessant

    Fixed by removing Growl support

     

Log in to post a comment.

MongoDB Logo MongoDB