Files
yttrium-virtio-gpu/Tools/RunSdv.js
T
Ladi Prosek e4d829a0b3 misc: Switch to BSD license
The project is switching from GPL to BSD.

Signed-off-by: Ladi Prosek <[email protected]>
2017-08-08 11:28:16 +03:00

243 lines
9.0 KiB
JavaScript
Executable File

/*
* Copyright (c) 2010-2017 Red Hat, Inc.
*
* Author(s):
* Miki Mishael <[email protected]>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met :
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and / or other materials provided with the distribution.
* 3. Neither the names of the copyright holders nor the names of their contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED.IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/*----------------Define Section--------------------------*/
var ROOT_DIR = WScript.Arguments(0);
var PROJECT_XML_PATH = WScript.Arguments(1);
var PROJECT_DIR_PATH = WScript.Arguments(2);
var PROJECT_NAME = WScript.Arguments(3);
var logFileName = "SDV.log"; /* "SDV.log" */
var debugMode = true;
var ns = "xmlns:sdv = 'http://schemas.microsoft.com/developer/msbuild/2003'";
var exitProgram = ~~0; /* 0 == Success */
function logString(str) {
if (logFileName != "") {
var fso = new ActiveXObject("Scripting.FileSystemObject");
var logFile = fso.OpenTextFile(logFileName, 8, true);
logFile.WriteLine(str);
logFile.Close();
}
if (debugMode) {
WScript.Echo(str);
}
}
function startLog() {
var now = new Date();
logString(now.toString());
}
function stopLog() {
logString("\n---------------------------------------------------------------------------");
}
function parseXmlProject() {
this.XmlDocument = new ActiveXObject("msxml2.DOMDocument.6.0");
this.XmlDocument.async = false;
this.XmlDocument.setProperty('ProhibitDTD', false);
this.XmlDocument.resolveExternals = false;
this.XmlDocument.validateOnParse = false;
this.XmlDocument.load(PROJECT_XML_PATH);
this.XmlDocument.setProperty("SelectionNamespaces", ns);
this.node = { Configuration: [], Platform: [] };
this.getProjectConfigs = function () {
this.printParseError();
this.node.Configuration = this.XmlDocument.selectNodes("//sdv:ProjectConfiguration//sdv:Configuration");
this.node.Platform = this.XmlDocument.selectNodes("//sdv:ProjectConfiguration//sdv:Platform");
return this.node;
}
this.printParseError = function () {
if (this.XmlDocument.parseError.errorCode != 0) {
var myErr = this.XmlDocument.parseError;
throw "Xml parse error: " + myErr.reason;
}
}
}
function runSdv(confList) {
this.WshShell = new ActiveXObject("WScript.Shell");
this.fso = new ActiveXObject("Scripting.FileSystemObject");
this.projectDirPath = PROJECT_DIR_PATH;
this.projectXmlPath = PROJECT_XML_PATH;
this.projectName = PROJECT_NAME;
this.target = 'sdv';
this.inputClean = '/clean';
this.inputCheck = '/check:*';
this.configuration = null;
this.platform = null;
this.cmd = null;
this.src = null;
this.dest = null;
this.res = null;
this.out = " >> ../SdvShellOutLog.log";
this.copyCmd = 'CMD /C xcopy /i/e/h/y ';
this.cmdCdToProjectDir = "cd " + '"' + this.projectDirPath + '"' +
" && title DO Not Close!-Running SDV on " + this.projectName + " && ";
this.buildCheckCmd = function () {
this.cmd = 'CMD /C ' + this.cmdCdToProjectDir + 'msbuild' + ' ' +
'"' + this.projectXmlPath + '"' + ' ' + '/t:' + this.target + ' ' +
'/p:inputs=' + '"' + this.inputCheck + '"' + ' ' + '/p:configuration=' +
'"' + this.configuration + '"' + ' ' + '/p:platform=' + '"' +
this.platform + '"' + this.out;
}
this.buildCleanCmd = function () {
this.cmd = 'CMD /C ' + this.cmdCdToProjectDir + 'msbuild' + ' ' +
'"' + this.projectXmlPath + '"' + ' ' + '/t:' + this.target + ' ' +
'/p:inputs=' + '"' + this.inputClean + '"' + ' ' + '/p:configuration=' +
'"' + this.configuration + '"' + ' ' + '/p:platform=' + '"' +
this.platform + '"' + this.out;
}
this.buildCopyCmd = function () {
this.src = this.projectDirPath + "\\sdv\\* ";
this.des = ROOT_DIR + "\SDV\\" + this.projectName + "\\" + '"' + this.configuration +
'"' + "\\" + this.platform;
this.cmd = this.copyCmd + this.src + this.des + this.out;
}
this.exeCheckCmd = function () {
this.buildCheckCmd();
logString("\nRunning " + '"' + this.inputCheck + '"' + ' ' + "SDV on: " + ' Project: "' +
this.projectName + '" Configuration: "' +
this.configuration + '" Platform: "' + this.platform + '" ...');
this.res = this.WshShell.run(this.cmd, 1, true);
logString("Res " + this.res);
if (this.res != 0)
throw "Error Running SDV logs" + ' Project: "' + this.projectName + '" Configuration: "' +
this.configuration + '" Platform: "' + this.platform + '"';
}
this.exeCleanCmd = function () {
this.buildCleanCmd();
logString("\n\nCleaning SDV logs" + ' Project: "' + this.projectName + '" Configuration: "' +
this.configuration + '" Platform: "' + this.platform + '" ...');
logString(this.cmd);
this.res = this.WshShell.run(this.cmd, 1, true);
logString("Res " + this.res);
if (this.res != 0)
throw "Error Cleaning SDV logs" + ' Project: "' + this.projectName + '" Configuration: "' +
this.configuration + '" Platform: "' + this.platform + '"';
}
this.exeCopySdvDir = function () {
this.buildCopyCmd();
logString("\nCopying SDV folder results from SRC: " + this.src + "to DES: " + this.des + ".");
this.res = this.WshShell.run(this.cmd, 1, true);
logString("Res " + this.res);
if (this.res != 0)
throw "Error Copying SDV folder results from SRC: " + this.src + "to DES: " + this.des + ".";
}
this.resetRunSdv = function () {
this.WshShell = new ActiveXObject("WScript.Shell");
this.fso = new ActiveXObject("Scripting.FileSystemObject");
this.configuration = null;
this.platform = null;
this.cmd = null;
this.src = null;
this.dest = null;
this.res = null;
}
this.iterateConfs = function () {
for (var idx = 0; idx < confList.Configuration.length; idx++) {
this.configuration = confList.Configuration[idx].text;
if (this.configuration.indexOf("Debug") != -1)
continue;
this.platform = confList.Platform[idx].text;
try {
stopLog();
startLog();
this.exeCleanCmd();
this.exeCheckCmd();
this.exeCopySdvDir();
stopLog();
}
catch (exception) {
logString("\t" + exception);
this.resetRunSdv();
exitProgram = ~~1;
stopLog();
continue;
}
}
}
this.test = function () {
this.exeCleanCmd();
this.exeCheckCmd();
this.exeCopySdvDir();
this.exeCleanCmd();
}
}
function start() {
logString("ROOT_DIR:" + ROOT_DIR);
logString("PROJECT_XML_PATH:" + PROJECT_XML_PATH);
logString("PROJECT_DIR_PATH:" + PROJECT_DIR_PATH);
logString("PROJECT_NAME:" + PROJECT_NAME);
var res = new parseXmlProject();
var confList = res.getProjectConfigs();
if (confList.Configuration.length < 1)
throw " Could not find Configurations for this project.";
var sh = new runSdv(confList);
sh.iterateConfs();
}
try {
startLog();
start();
stopLog();
WScript.quit(exitProgram);
}
catch (exception) {
logString("ERROR: " + exception);
logString("**** ERROR Info ****");
logString("\tMessage : " + exception.message);
logString("\tName : " + exception.name);
logString("\tCode : " + (exception.number & 0xFFFF));
logString("\tFacility : " + (exception.number >> 16 & 0x1FFF));
logString("\tDescription: " + exception.description);
logString("********************");
stopLog();
WScript.StdErr.WriteLine("ERROR: " + exception);
WScript.quit(2);
}