diff options
author | lhauch <lhauch@6f19259b-4bc3-4df7-8a09-765794883524> | 2006-10-17 22:17:18 +0000 |
---|---|---|
committer | lhauch <lhauch@6f19259b-4bc3-4df7-8a09-765794883524> | 2006-10-17 22:17:18 +0000 |
commit | ddfdc8e69df8065dd0c6ff9e29b9c2f0e4b0656d (patch) | |
tree | 8cc803373ba941246aa21347eda46cfc20fb2c97 /Tools | |
parent | 9eaf1b3c89006a69ad88a53ffc5dc8d976d134f0 (diff) | |
download | edk2-platforms-ddfdc8e69df8065dd0c6ff9e29b9c2f0e4b0656d.tar.xz |
Adding Java Tool: ckt.bat for CheckTools.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1779 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'Tools')
-rw-r--r-- | Tools/Java/Source/CheckTools/build.xml | 42 | ||||
-rw-r--r-- | Tools/Java/Source/CheckTools/src/org/tianocore/CheckTools/CheckTools.java | 222 | ||||
-rw-r--r-- | Tools/Java/Source/CheckTools/src/org/tianocore/CheckTools/ToolChecks.java | 159 | ||||
-rw-r--r-- | Tools/bin/ckt.bat | 73 |
4 files changed, 496 insertions, 0 deletions
diff --git a/Tools/Java/Source/CheckTools/build.xml b/Tools/Java/Source/CheckTools/build.xml new file mode 100644 index 0000000000..b1a592b116 --- /dev/null +++ b/Tools/Java/Source/CheckTools/build.xml @@ -0,0 +1,42 @@ +<?xml version="1.0"?>
+<!--
+Copyright (c) 2006, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+-->
+<project name="CheckTools" default="CheckTools" basedir=".">
+ <taskdef resource="net/sf/antcontrib/antlib.xml"/>
+ <property environment="env"/>
+ <property name="WORKSPACE" value="${env.WORKSPACE}"/>
+ <property name="buildDir" value="build"/>
+ <property name="installLocation" value="${WORKSPACE}/Tools/bin"/>
+ <target name="CheckTools" depends="install"/>
+
+ <target name="source">
+ <mkdir dir="${buildDir}"/>
+ <javac srcdir="src" destdir="${buildDir}"/>
+ </target>
+
+ <target name="clean">
+ <delete includeemptydirs="true" failonerror="false" quiet="true">
+ <fileset dir="${WORKSPACE}/Tools/Java/Source/CheckTools" includes="${buildDir}"/>
+ </delete>
+ </target>
+
+ <target name="cleanall" depends="clean">
+ <echo message="Removing Class Files and the Java Archive: CheckTools.jar"/>
+ <delete file="${installLocation}/CheckTools.jar"/>
+ </target>
+
+ <target name="install" depends="source">
+ <jar destfile="${installLocation}/CheckTools.jar">
+ <fileset dir="${buildDir}"/>
+ </jar>
+ </target>
+
+</project>
diff --git a/Tools/Java/Source/CheckTools/src/org/tianocore/CheckTools/CheckTools.java b/Tools/Java/Source/CheckTools/src/org/tianocore/CheckTools/CheckTools.java new file mode 100644 index 0000000000..4f61cc6b88 --- /dev/null +++ b/Tools/Java/Source/CheckTools/src/org/tianocore/CheckTools/CheckTools.java @@ -0,0 +1,222 @@ +/** @file + Verify the tool configuration file for location of the correct tools. + + Copyright (c) 2006, Intel Corporation + All rights reserved. This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + + **/ + +/** + * This tool checks to see if specified tool chain paths exist. + * It will check all specified paths, as indicated by the last field of the + * tool property line equal to _PATH + * + * no option = check 1) the file specified in target.txt or 2) tools_def.txt + * if neither is found, we check the tools_def.template file. + * -i = INTERACTIVE checks the "active" tools_def.txt file and lets the + * user modify invalid entries. + * + * -s = SCAN will check all standard locations for tool chains + * C:\Program Files\Microsoft Visual Studio * + * C:\WINDDK + * C:\Bin + * C:\ASL + * C:\MASM* + * /opt/tiano + * + * -f = FILE check the tools in this file instead of tools_def.txt, or + * a file that was specified in target.txt + * + * -t = TEST can be used with -f or -s, not with -i. + * + */ +package org.tianocore.CheckTools; + +import java.io.*; + +public class CheckTools { + private static int DEBUG = 0; + + private static final String copyright = "Copyright (c) 2006, Intel Corporation All rights reserved."; + + private static final String version = "Version 0.1"; + + private int VERBOSE = 0; + + // private String argv[]; + + private final int DEFAULT = 1; + + private final int TEST = 2; + + private final int SCAN = 4; + + private final int INTERACTIVE = 8; + + private boolean USERFILE = false; + + private String inFile = ""; + + private final int PASS = 0; + + private final int FAIL = 1; + + public static void main(String[] argv) { + int exitCode = new CheckTools().checkTool(argv); + if (exitCode == -1) { + new CheckTools().usage(); + System.exit(1); + } + System.exit(exitCode); + } + + private int checkTool(String[] arguments) { + String WORKSPACE = System.getenv("WORKSPACE"); + if ((DEBUG > 0) || (VERBOSE > 0)) + System.out.println("Verifying Tool Chains for WORKSPACE: " + WORKSPACE); + String SEP = System.getProperty("file.separator"); + int returnCode = 0; + + if (WORKSPACE == null) { + System.out.println("Please set the environment variable, WORKSPACE and run again."); + System.exit(1); + } + String targetTxt = WORKSPACE + SEP + "Tools" + SEP + "Conf" + SEP + "target.txt"; + + if ((DEBUG > 1) && (arguments.length > 0)) + System.out.println("Arguments: "); + int cmdCode = DEFAULT; + if (arguments.length > 0) { + cmdCode = DEFAULT; + for (int i = 0; i < arguments.length; i++) { + String arg = arguments[i]; + if (DEBUG > 1) + System.out.println(" [" + i + "] " + arg); + if (!(arg.toLowerCase().startsWith("-t") || arg.toLowerCase().startsWith("-s") + || arg.toLowerCase().startsWith("-i") || arg.toLowerCase().startsWith("-v") || arg + .toLowerCase() + .startsWith( + "-f"))) { + // Only allow valid option flags + System.out.println("Invalid argument: " + arg); + usage(); + System.exit(FAIL); + } + if (arg.toLowerCase().startsWith("-t")) { + if (cmdCode == DEFAULT) { + cmdCode = TEST; + } else { + System.out.println("Invalid Options"); + usage(); + System.exit(FAIL); + } + } + if (arg.toLowerCase().startsWith("-s")) { + if (cmdCode == DEFAULT) { + cmdCode = SCAN; + } else { + System.out.println("Invalid Options"); + usage(); + System.exit(FAIL); + } + } + if (arg.toLowerCase().startsWith("-i")) { + // Interactive can be specified with any + // other option - it turns on the query + // on fail mode. + cmdCode = cmdCode | INTERACTIVE; + } + if (arg.toLowerCase().startsWith("-f")) { + i++; + inFile = arguments[i]; + USERFILE = true; + } + if (arg.startsWith("-v")) { + // Verbose level can be increased to print + // more INFO messages. + VERBOSE += 1; + } + if (arg.startsWith("-V")) { + System.out.println(copyright); + System.out.println("CheckTools, " + version); + System.exit(PASS); + } + } + } + + if (inFile.length() < 1) { + // + // Check the target.txt file for a Tool Configuration File. + // If not set, we use tools_def.txt, unless we are running with the + // INTERACTIVE flag - where we check the template file before copying over to the + // tools_def.txt file. + // + inFile = "tools_def.txt"; + File target = new File(targetTxt); + String readLine = null; + String fileLine[] = new String[2]; + if (target.exists()) { + try { + FileReader fileReader = new FileReader(targetTxt); + BufferedReader bufReader = new BufferedReader(fileReader); + while ((readLine = bufReader.readLine()) != null) { + if (readLine.startsWith("TOOL_CHAIN_CONF")) { + fileLine = readLine.trim().split("="); + if (fileLine[1].trim().length() > 0) { + if (fileLine[1].trim().contains("Tools/Conf/")) + inFile = fileLine[1].replace("Tools/Conf/", "").trim(); + else + inFile = fileLine[1].trim(); + } + } + } + bufReader.close(); + } catch (IOException e) { + System.out.println(" [target.txt] Read Error: " + e); + System.exit(FAIL); + } + } + } + + // OK, now check the infile of we had one. + String toolsDef = WORKSPACE + SEP + "Tools" + SEP + "Conf" + SEP + inFile; + File toolsFile = new File(toolsDef); + if (!toolsFile.exists()) { + // use the template file + if (USERFILE) { + System.out.println("Could not locate the specified file: " + inFile); + System.out.println(" It must be located in the WORKSPACE" + SEP + "Tools" + SEP + "Conf directory"); + System.exit(FAIL); + } + toolsDef = WORKSPACE + SEP + "Tools" + SEP + "Conf" + SEP + "tools_def.template"; + File toolsTemplate = new File(toolsDef); + if (!toolsTemplate.exists()) { + System.out.println("Your WORKSPACE is not properly configured!"); + System.exit(FAIL); + } else { + System.out.println("**** WARNING: No Tool Configuration File was found, using the template file, " + + toolsDef); + } + } + + // + // at this point the file, toolsDef points to a tool configuration file of some sort. + // + // check tool configuration file + if (DEBUG > 2) + System.out.println("Calling checkTools(" + toolsDef + ", " + cmdCode + ", " + VERBOSE + ")"); + returnCode = new ToolChecks().checkTools(toolsDef, cmdCode, VERBOSE); + + return returnCode; + } + + private void usage() { + System.out.println("Usage: checkTools [-i] [-s | -scan] [-t | -test] [[-f | -filename] filename.txt]"); + } +} diff --git a/Tools/Java/Source/CheckTools/src/org/tianocore/CheckTools/ToolChecks.java b/Tools/Java/Source/CheckTools/src/org/tianocore/CheckTools/ToolChecks.java new file mode 100644 index 0000000000..0c0c936595 --- /dev/null +++ b/Tools/Java/Source/CheckTools/src/org/tianocore/CheckTools/ToolChecks.java @@ -0,0 +1,159 @@ +/** @file + Verify the tool configuration file for location of the correct tools. + + Copyright (c) 2006, Intel Corporation + All rights reserved. This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + + **/ + +/** + * This tool checks to see if specified tool chain paths exist. + * It will check all specified paths, as indicated by the last field of the + * tool property line equal to _PATH + * + * no option = check 1) the file specified in target.txt or 2) tools_def.txt + * if neither is found, we check the tools_def.template file. + * -i = INIT checks the tools_def.template file + * + * -s = SCAN will check all standard locations for tool chains + * C:\Program Files\Microsoft Visual Studio * + * C:\WINDDK + * C:\Bin + * C:\ASL + * C:\MASM* + * /opt/tiano + * + * -f = FILE check the tools in this file instead of tools_def.txt, or + * a file that was specified in target.txt + */ +package org.tianocore.CheckTools; + +import java.io.*; +import java.util.*; + +public class ToolChecks { + private static int DEBUG = 0; + + private final int DEFAULT = 1; + + private final int TEST = 2; + + private final int SCAN = 4; + + private final int INTERACTIVE = 8; + + private final int PASS = 0; + + private final int FAIL = 1; + + private ArrayList<String> errLog = new ArrayList<String>(); + + private ArrayList<String> goodLog = new ArrayList<String>(); + + public int checkTools(String toolConfFile, int cmdCode, int VERBOSE) { + + int returnCode = FAIL; + boolean interActive = false; + + if ((DEBUG > 0) || (VERBOSE > 0)) { + System.out.println("Using Tool Configuration File: " + toolConfFile); + } + + if (DEBUG > 2) + System.out.println("The cmdCode: " + cmdCode); + + if ((cmdCode & INTERACTIVE) == INTERACTIVE) { + interActive = true; + System.out.println("***** WARNING ***** The Interactive function has not been implemented yet!"); + } + + if ((cmdCode & SCAN) == SCAN) { + returnCode = scanFile(toolConfFile, interActive, VERBOSE); + } + + if (((cmdCode & TEST) == TEST) || ((cmdCode & DEFAULT) == DEFAULT)) + returnCode = testFile(toolConfFile, interActive, VERBOSE); + + if (!errLog.isEmpty()) { + System.out.println("Tool Configuration File: " + toolConfFile); + for (int i = 0; i < goodLog.size(); i++) + System.out.println("Tool Chain Tag Name: " + goodLog.get(i) + " is valid!"); + for (int i = 0; i < errLog.size(); i++) + System.out.println(errLog.get(i)); + } + + return returnCode; + } + + private int scanFile(String testFile, boolean interActive, int VERBOSE) { + if ((DEBUG > 0) || (VERBOSE > 0)) + System.out.println("Scanning the Normal Installation Locations ..."); + System.out.println("The Scan function has not been implemented yet!"); + return FAIL; + } + private int testFile(String testFile, boolean interActive, int VERBOSE) { + + int retCode = PASS; + String readLine = ""; + String fileLine[] = new String[2]; + try { + FileReader toolConfFile = new FileReader(testFile); + BufferedReader reader = new BufferedReader(toolConfFile); + String path = ""; + String props[] = new String[5]; + String lastErrTag = "barf"; + String lastTag = "barf"; + while ((readLine = reader.readLine()) != null) { + if ((!readLine.startsWith("#")) && (readLine.contains("_PATH"))) { + if (DEBUG > 2) { + System.out.println(" PATH LINE: " + readLine); + } + readLine = readLine.trim(); + fileLine = readLine.split("="); + path = fileLine[1].trim(); + props = fileLine[0].split("_"); + File testPath = new File(path); + if (!testPath.exists()) { + if (!props[1].trim().contentEquals(lastErrTag)) + errLog.add(" -- ERROR: Tool Chain Tag Name: " + props[1].trim() + " is invalid!"); + // System.out.println(" +++++ ERROR: Tool Chain: " + props[1].trim() + " is invalid!"); + errLog.add(" Tool Code: [" + props[3].trim() + "] Path: " + path + " does not exist!"); + // System.out.println(" Tool: " + props[3].trim() + " Path: " + path + " does not exist!"); + retCode = 1; + lastErrTag = props[1].trim(); + } else { + if ((DEBUG > 0) || (VERBOSE > 0)) { + if ((!props[1].trim().contentEquals(lastTag)) + && (!props[1].trim().contentEquals(lastErrTag))) + System.out.println("Tool Chain: " + props[1].trim() + " is valid"); + } + if (!props[1].trim().contentEquals(lastTag)) + goodLog.add(props[1].trim()); + lastTag = props[1].trim(); + } + } + } + } catch (IOException e) { + System.out.println(" [" + testFile + "] " + e); + System.exit(1); + } + if (errLog.size() > 0) + for (int i = 0; i < goodLog.size(); i++) { + for (int j = 0; j < errLog.size(); j++) { + if (errLog.get(j).contains(goodLog.get(i).trim())) { + goodLog.remove(i); + break; + } + } + } + return retCode; + + } + +} diff --git a/Tools/bin/ckt.bat b/Tools/bin/ckt.bat new file mode 100644 index 0000000000..2379dd3b46 --- /dev/null +++ b/Tools/bin/ckt.bat @@ -0,0 +1,73 @@ +@REM
+@REM Copyright (c) 2006, Intel Corporation
+@REM All rights reserved. This program and the accompanying materials
+@REM are licensed and made available under the terms and conditions of the BSD License
+@REM which accompanies this distribution. The full text of the license may be found at
+@REM http://opensource.org/licenses/bsd-license.php
+@REM
+@REM THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+@REM WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+@REM
+
+@echo off
+
+:check_java
+if "%JAVA_HOME%"=="" goto no_jdk
+:check_wks
+if "%WORKSPACE%"=="" goto no_wks
+:check_ant
+if "%ANT_HOME%"=="" goto no_ant
+:check_xmlbeans
+if "%XMLBEANS_HOME%"=="" goto no_xmlbeans
+:check_surfacearea
+if not exist %WORKSPACE%\Tools\Jars\SurfaceArea.jar (
+ goto no_surfacearea
+)
+:check_CheckTools
+if not exist %WORKSPACE%\Tools\bin\CheckTools.jar (
+ goto no_CheckTools
+)
+
+@REM Run Framework Wizard
+call "java" -cp %WORKSPACE%\Tools\bin\CheckTools.jar org.tianocore.CheckTools.CheckTools %*
+
+goto end
+
+:no_jdk
+@echo.
+@echo !!! Please set JAVA_HOME !!!
+@echo.
+goto check_wks
+
+:no_wks
+@echo.
+@echo !!! Please set WORKSPACE !!!
+@echo.
+goto check_ant
+
+:no_ant
+@echo.
+@echo !!! Please set ANT_HOME !!!
+@echo.
+goto check_xmlbeans
+
+:no_xmlbeans
+@echo.
+@echo !!! Please set XMLBEANS_HOME !!!
+@echo.
+goto end
+
+:no_surfacearea
+@echo.
+@echo !!! Please run edksetup.bat to build SurfaceArea.jar !!!
+@echo.
+goto end
+
+:no_CheckTools
+@echo.
+@echo !!! Please run edksetup.bat to build CheckTools.jar !!!
+@echo.
+goto end
+
+:end
+@echo on
|