This is an automated email from the ASF dual-hosted git repository.

brodybits pushed a commit to branch 7.1.x
in repository https://gitbox.apache.org/repos/asf/cordova-android.git

commit 3570ca8113fc5847ad5fed365e2ea9937d3d988e
Author: Raphael von der GrĂ¼n <raphine...@gmail.com>
AuthorDate: Tue Jun 12 22:18:55 2018 +0200

    CB-14101 Fix Java version check for Java >= 9 (#446)
    
    This also checks that we have exactly 1.8 since nothing else works with
    the Android SDK. The user facing error was updated accordingly.
---
 bin/templates/cordova/lib/check_reqs.js | 44 ++++++++++++++-------------------
 1 file changed, 18 insertions(+), 26 deletions(-)

diff --git a/bin/templates/cordova/lib/check_reqs.js 
b/bin/templates/cordova/lib/check_reqs.js
index 4a22360..d9c5f99 100644
--- a/bin/templates/cordova/lib/check_reqs.js
+++ b/bin/templates/cordova/lib/check_reqs.js
@@ -41,17 +41,6 @@ function forgivingWhichSync (cmd) {
     }
 }
 
-function tryCommand (cmd, errMsg, catchStderr) {
-    var d = Q.defer();
-    child_process.exec(cmd, function (err, stdout, stderr) {
-        if (err) d.reject(new CordovaError(errMsg));
-        // Sometimes it is necessary to return an stderr instead of stdout in 
case of success, since
-        // some commands prints theirs output to stderr instead of stdout. 
'javac' is the example
-        else d.resolve((catchStderr ? stderr : stdout).trim());
-    });
-    return d.promise;
-}
-
 module.exports.isWindows = function () {
     return (os.platform() === 'win32');
 };
@@ -207,19 +196,22 @@ module.exports.check_java = function () {
             }
         }
     }).then(function () {
-        var msg =
-            'Failed to run "javac -version", make sure that you have a JDK 
installed.\n' +
-            'You can get it from: 
http://www.oracle.com/technetwork/java/javase/downloads.\n';
-        if (process.env['JAVA_HOME']) {
-            msg += 'Your JAVA_HOME is invalid: ' + process.env['JAVA_HOME'] + 
'\n';
-        }
-        // We use tryCommand with catchStderr = true, because
-        // javac writes version info to stderr instead of stdout
-        return tryCommand('javac -version', msg, true).then(function (output) {
-            // Let's check for at least Java 8, and keep it future proof so we 
can support Java 10
-            var match = /javac 
((?:1\.)(?:[8-9]\.)(?:\d+))|((?:1\.)(?:[1-9]\d+\.)(?:\d+))/i.exec(output);
-            return match && match[1];
-        });
+        return Q.denodeify(child_process.exec)('javac -version')
+            .then(outputs => {
+                // outputs contains two entries: stdout and stderr
+                // Java <= 8 writes version info to stderr, Java >= 9 to stdout
+                const output = outputs.join('').trim();
+                const match = /javac\s+([\d.]+)/i.exec(output);
+                return match && match[1];
+            }, () => {
+                var msg =
+                'Failed to run "javac -version", make sure that you have a JDK 
installed.\n' +
+                'You can get it from: 
http://www.oracle.com/technetwork/java/javase/downloads.\n';
+                if (process.env['JAVA_HOME']) {
+                    msg += 'Your JAVA_HOME is invalid: ' + 
process.env['JAVA_HOME'] + '\n';
+                }
+                throw new CordovaError(msg);
+            });
     });
 };
 
@@ -366,8 +358,8 @@ module.exports.run = function () {
         console.log('ANDROID_HOME=' + process.env['ANDROID_HOME']);
         console.log('JAVA_HOME=' + process.env['JAVA_HOME']);
 
-        if (!values[0]) {
-            throw new CordovaError('Requirements check failed for JDK 1.8 or 
greater');
+        if (!String(values[0]).startsWith('1.8.')) {
+            throw new CordovaError('Requirements check failed for JDK 1.8');
         }
 
         if (!values[1]) {


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cordova.apache.org
For additional commands, e-mail: commits-h...@cordova.apache.org

Reply via email to