diff options
author | Ivan Komissarov <ABBAPOH@gmail.com> | 2019-06-12 19:50:10 +0200 |
---|---|---|
committer | Ivan Komissarov <ABBAPOH@gmail.com> | 2019-06-14 15:47:46 +0000 |
commit | ad23c58595f54484f45b00631dc62c6051228a47 (patch) | |
tree | 398165f7ed177ffcc8d25d50d70f2ca2b2440739 | |
parent | c0b67ea8dc0b7ad39a1359f8816f596d3e7284b8 (diff) |
Fix javac version detection
It seems, that javac -version can return "12" instead of "12.0.0"
Change-Id: I804cbadb410dc11f566fda122f3082a8607ebb36
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
-rw-r--r-- | share/qbs/imports/qbs/ModUtils/utils.js | 5 | ||||
-rw-r--r-- | share/qbs/modules/java/JavaModule.qbs | 4 | ||||
-rw-r--r-- | share/qbs/modules/java/utils.js | 15 |
3 files changed, 19 insertions, 5 deletions
diff --git a/share/qbs/imports/qbs/ModUtils/utils.js b/share/qbs/imports/qbs/ModUtils/utils.js index 5ba16de24..84d62a556 100644 --- a/share/qbs/imports/qbs/ModUtils/utils.js +++ b/share/qbs/imports/qbs/ModUtils/utils.js @@ -331,7 +331,8 @@ var PropertyValidator = (function () { if (max !== undefined && value > max) return false; return true; - }, "must be " + (!allowFloats ? "an integer " : "") + message.join(" and ")); + }, "must be " + (!allowFloats ? "an integer " : "") + message.join(" and ") + + ", actual value: " + propertyValue); }; PropertyValidator.prototype.addVersionValidator = function (propertyName, propertyValue, minComponents, maxComponents, allowSuffixes) { @@ -347,7 +348,7 @@ var PropertyValidator = (function () { }, "must be a version number with " + (minComponents === maxComponents ? minComponents : (minComponents + " to " + maxComponents)) + (minComponents === maxComponents && minComponents === 1 - ? " component" : " components")); + ? " component" : " components") + ", actual value: " + propertyValue); }; PropertyValidator.prototype.addFileNameValidator = function (propertyName, propertyValue) { diff --git a/share/qbs/modules/java/JavaModule.qbs b/share/qbs/modules/java/JavaModule.qbs index 5191d6497..71f7d8432 100644 --- a/share/qbs/modules/java/JavaModule.qbs +++ b/share/qbs/modules/java/JavaModule.qbs @@ -71,7 +71,7 @@ Module { version: [compilerVersionMajor, compilerVersionMinor, compilerVersionPatch].join(".") property string compilerVersion: jdkVersionProbe.version ? jdkVersionProbe.version[1] : undefined - property var compilerVersionParts: compilerVersion ? compilerVersion.split(/[\._]/).map(function(item) { return parseInt(item, 10); }) : [] + property var compilerVersionParts: JavaUtils.splitVersionString(compilerVersion) property int compilerVersionMajor: compilerVersionParts[0] property int compilerVersionMinor: compilerVersionParts[1] property int compilerVersionPatch: compilerVersionParts[2] @@ -178,7 +178,7 @@ Module { if (Utilities.versionCompare(version, "9") < 0) validator.setRequiredProperty("compilerVersionUpdate", compilerVersionUpdate); validator.addVersionValidator("compilerVersion", compilerVersion - ? compilerVersion.replace("_", ".") : undefined, 3, 4); + ? compilerVersion.replace("_", ".") : undefined, 1, 4); validator.addRangeValidator("compilerVersionMajor", compilerVersionMajor, 1); validator.addRangeValidator("compilerVersionMinor", compilerVersionMinor, 0); validator.addRangeValidator("compilerVersionPatch", compilerVersionPatch, 0); diff --git a/share/qbs/modules/java/utils.js b/share/qbs/modules/java/utils.js index 52c0e880a..ae0c1356b 100644 --- a/share/qbs/modules/java/utils.js +++ b/share/qbs/modules/java/utils.js @@ -136,7 +136,7 @@ function findJdkVersion(compilerFilePath) { var p = new Process(); try { p.exec(compilerFilePath, ["-version"]); - var re = /^javac (([0-9]+(?:\.[0-9]+){2,2})(_([0-9]+))?)$/m; + var re = /^javac (([0-9]+(?:\.[0-9]+){0,2})(_([0-9]+))?)$/m; var match = p.readStdErr().trim().match(re); if (!match) match = p.readStdOut().trim().match(re); @@ -147,6 +147,19 @@ function findJdkVersion(compilerFilePath) { } } +function splitVersionString(compilerVersion) { + if (!compilerVersion) + return []; + + var result = compilerVersion.split(/[\._]/).map(function(item) { + return parseInt(item, 10); + }); + // special case, if javac -version returned "12" instead of "12.0.0" + if (result.length === 1) + result.push(0, 0); + return result; +} + function supportsGeneratedNativeHeaderFiles(product) { var compilerVersionMajor = ModUtils.moduleProperty(product, "compilerVersionMajor"); if (compilerVersionMajor === 1) { |