summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJake Petroules <jake.petroules@petroules.com>2015-07-21 02:04:07 -0700
committerJake Petroules <jake.petroules@petroules.com>2015-07-24 08:34:47 +0000
commit4f99573b245a1ee8904384f41ec1f5aa4124f26d (patch)
treef7e55828cd5dc942cd129d9a81ea9efbad4973d3
parente892568b556ed5587bf4820163c44cb56880c0e4 (diff)
downloadqbs-4f99573b245a1ee8904384f41ec1f5aa4124f26d.tar.gz
Add a node.js probe and use it in the modules.
Change-Id: Ie47951e621702d387ca6274cd74e6c5858f49d16 Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
-rw-r--r--share/qbs/imports/qbs/Probes/NodeJsProbe.qbs35
-rw-r--r--share/qbs/modules/nodejs/NodeJS.qbs25
2 files changed, 60 insertions, 0 deletions
diff --git a/share/qbs/imports/qbs/Probes/NodeJsProbe.qbs b/share/qbs/imports/qbs/Probes/NodeJsProbe.qbs
new file mode 100644
index 000000000..db648fab4
--- /dev/null
+++ b/share/qbs/imports/qbs/Probes/NodeJsProbe.qbs
@@ -0,0 +1,35 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 Jake Petroules.
+** Contact: http://www.qt.io/licensing
+**
+** This file is part of the Qt Build Suite.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms and
+** conditions see http://www.qt.io/terms-conditions. For further information
+** use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 or version 3 as published by the Free
+** Software Foundation and appearing in the file LICENSE.LGPLv21 and
+** LICENSE.LGPLv3 included in the packaging of this file. Please review the
+** following information to ensure the GNU Lesser General Public License
+** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, The Qt Company gives you certain additional
+** rights. These rights are described in The Qt Company LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+****************************************************************************/
+
+import qbs
+
+BinaryProbe {
+ names: ["nodejs", "node"]
+}
diff --git a/share/qbs/modules/nodejs/NodeJS.qbs b/share/qbs/modules/nodejs/NodeJS.qbs
index b36c8422e..fec968350 100644
--- a/share/qbs/modules/nodejs/NodeJS.qbs
+++ b/share/qbs/modules/nodejs/NodeJS.qbs
@@ -32,22 +32,39 @@ import qbs
import qbs.File
import qbs.FileInfo
import qbs.ModUtils
+import qbs.Probes
Module {
// JavaScript files which have been "processed" - currently this simply means "copied to output
// directory" but might later include minification and obfuscation processing
additionalProductTypes: ["nodejs_processed_js"].concat(applicationFile ? ["application"] : [])
+ Probes.NodeJsProbe {
+ id: nodejs
+ pathPrefixes: [toolchainInstallPath]
+ }
+
property path applicationFile
PropertyOptions {
name: "applicationFile"
description: "file whose corresponding output will be executed when running the Node.js app"
}
+ property path toolchainInstallPath: nodejs.path
+
+ property path interpreterFileName: nodejs.fileName
+ property path interpreterFilePath: nodejs.filePath
+
// private properties
readonly property path compiledIntermediateDir: FileInfo.joinPaths(product.buildDirectory,
"tmp", "nodejs.intermediate")
+ setupBuildEnvironment: {
+ var v = new ModUtils.EnvironmentVariable("PATH", qbs.pathListSeparator, qbs.hostOS.contains("windows"));
+ v.prepend(toolchainInstallPath);
+ v.set();
+ }
+
setupRunEnvironment: {
var v = new ModUtils.EnvironmentVariable("NODE_PATH", qbs.pathListSeparator, qbs.hostOS.contains("windows"));
v.prepend(FileInfo.path(getEnv("QBS_RUN_FILE_PATH")));
@@ -59,6 +76,14 @@ Module {
fileTags: ["js"]
}
+ validate: {
+ var validator = new ModUtils.PropertyValidator("nodejs");
+ validator.setRequiredProperty("toolchainInstallPath", toolchainInstallPath);
+ validator.setRequiredProperty("interpreterFileName", interpreterFileName);
+ validator.setRequiredProperty("interpreterFilePath", interpreterFilePath);
+ validator.validate();
+ }
+
Rule {
inputs: ["js"]