From 25fe886e729ef185602fd706ccfc8bb78150c93d Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Sat, 16 Apr 2016 15:53:34 +0000
Subject: [PATCH] Update version warnings Add OpenJDK check for ARM Uncomment
 SystemVersion.main()

---
 .../net/i2p/router/web/RouterConsoleRunner.java   | 15 +++++++++++----
 core/java/src/net/i2p/util/CommandLine.java       |  2 +-
 core/java/src/net/i2p/util/SystemVersion.java     | 13 +++++++++++--
 3 files changed, 23 insertions(+), 7 deletions(-)

diff --git a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java
index 8315cdd6b7..0d5dde09ed 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java
@@ -292,8 +292,10 @@ public class RouterConsoleRunner implements RouterApp {
     /** @since 0.9.17 */
     private void checkJavaVersion() {
         boolean noJava7 = !SystemVersion.isJava7();
-        boolean noPack200 = !FileUtil.isPack200Supported();
-        if (noJava7 || noPack200) {
+        boolean noPack200 = (PluginStarter.pluginsEnabled(_context) || !NewsHelper.isUpdateDisabled(_context)) &&
+                            !FileUtil.isPack200Supported();
+        boolean openARM = SystemVersion.isARM() && SystemVersion.isOpenJDK();
+        if (noJava7 || noPack200 || openARM) {
             String s = "Java version: " + System.getProperty("java.version") +
                        " OS: " + System.getProperty("os.name") + ' ' +
                        System.getProperty("os.arch") + ' ' +
@@ -302,12 +304,17 @@ public class RouterConsoleRunner implements RouterApp {
             log.logAlways(net.i2p.util.Log.WARN, s);
             System.out.println("Warning: " + s);
             if (noJava7) {
-                s = "Java 7 will be required by late 2015, please upgrade soon";
+                s = "Java 7 is now required, please upgrade";
                 log.logAlways(net.i2p.util.Log.WARN, s);
                 System.out.println("Warning: " + s);
             }
             if (noPack200) {
-                s = "Pack200 will be required by late 2015, please upgrade Java soon";
+                s = "Pack200 is required for plugins and automatic updates, please upgrade Java";
+                log.logAlways(net.i2p.util.Log.WARN, s);
+                System.out.println("Warning: " + s);
+            }
+            if (openARM) {
+                s = "OpenJDK is not recommended for ARM. Use Oracle Java 8";
                 log.logAlways(net.i2p.util.Log.WARN, s);
                 System.out.println("Warning: " + s);
             }
diff --git a/core/java/src/net/i2p/util/CommandLine.java b/core/java/src/net/i2p/util/CommandLine.java
index 737187488d..f2d57f5346 100644
--- a/core/java/src/net/i2p/util/CommandLine.java
+++ b/core/java/src/net/i2p/util/CommandLine.java
@@ -37,7 +37,7 @@ public class CommandLine {
         "net.i2p.util.PartialEepGet",
         "net.i2p.util.ShellCommand",
         "net.i2p.util.SSLEepGet",
-        //"net.i2p.util.SystemVersion",
+        "net.i2p.util.SystemVersion",
         "net.i2p.util.TranslateReader",
         "net.i2p.util.ZipFileComment"
     });
diff --git a/core/java/src/net/i2p/util/SystemVersion.java b/core/java/src/net/i2p/util/SystemVersion.java
index 47644f4278..a8d83755be 100644
--- a/core/java/src/net/i2p/util/SystemVersion.java
+++ b/core/java/src/net/i2p/util/SystemVersion.java
@@ -26,6 +26,7 @@ public abstract class SystemVersion {
     private static final boolean _isAndroid;
     private static final boolean _isApache;
     private static final boolean _isGNU;
+    private static final boolean _isOpenJDK;
     private static final boolean _is64;
     private static final boolean _hasWrapper = System.getProperty("wrapper.version") != null;
 
@@ -53,6 +54,8 @@ public abstract class SystemVersion {
         _isApache = vendor.startsWith("Apache");
         _isGNU = vendor.startsWith("GNU Classpath") ||               // JamVM
                  vendor.startsWith("Free Software Foundation");      // gij
+        String runtime = System.getProperty("java.runtime.name");
+        _isOpenJDK = runtime != null && runtime.contains("OpenJDK");
 
         int sdk = 0;
         if (_isAndroid) {
@@ -110,6 +113,13 @@ public abstract class SystemVersion {
         return _isGentoo;
     }
 
+    /**
+     *  @since 0.9.26
+     */
+    public static boolean isOpenJDK() {
+        return _isOpenJDK;
+    }
+
     /**
      *  @since 0.9.8
      */
@@ -238,7 +248,6 @@ public abstract class SystemVersion {
     /**
      *  @since 0.9.24
      */
-/****
     public static void main(String[] args) {
         System.out.println("64 bit   : " + is64Bit());
         System.out.println("Java 6   : " + isJava6());
@@ -253,11 +262,11 @@ public abstract class SystemVersion {
         System.out.println("Mac      : " + isMac());
         System.out.println("Gentoo   : " + isGentoo());
         System.out.println("GNU      : " + isGNU());
+        System.out.println("OpenJDK  : " + isOpenJDK());
         System.out.println("Windows  : " + isWindows());
         System.out.println("Wrapper  : " + hasWrapper());
         System.out.println("x86      : " + isX86());
         System.out.println("Max mem  : " + getMaxMemory());
 
     }
-****/
 }
-- 
GitLab