Adding Java Tool: ckt.bat for CheckTools.
authorlhauch <lhauch@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 17 Oct 2006 22:17:18 +0000 (22:17 +0000)
committerlhauch <lhauch@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 17 Oct 2006 22:17:18 +0000 (22:17 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1779 6f19259b-4bc3-4df7-8a09-765794883524

Tools/Java/Source/CheckTools/build.xml [new file with mode: 0644]
Tools/Java/Source/CheckTools/src/org/tianocore/CheckTools/CheckTools.java [new file with mode: 0644]
Tools/Java/Source/CheckTools/src/org/tianocore/CheckTools/ToolChecks.java [new file with mode: 0644]
Tools/bin/ckt.bat [new file with mode: 0644]

diff --git a/Tools/Java/Source/CheckTools/build.xml b/Tools/Java/Source/CheckTools/build.xml
new file mode 100644 (file)
index 0000000..b1a592b
--- /dev/null
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>\r
+<!--\r
+Copyright (c) 2006, Intel Corporation\r
+All rights reserved. This program and the accompanying materials\r
+are licensed and made available under the terms and conditions of the BSD License\r
+which accompanies this distribution.  The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php\r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+-->\r
+<project name="CheckTools" default="CheckTools" basedir=".">\r
+  <taskdef resource="net/sf/antcontrib/antlib.xml"/>\r
+  <property environment="env"/>\r
+  <property name="WORKSPACE" value="${env.WORKSPACE}"/>\r
+  <property name="buildDir" value="build"/>\r
+  <property name="installLocation" value="${WORKSPACE}/Tools/bin"/>\r
+  <target name="CheckTools" depends="install"/>\r
+\r
+  <target name="source">\r
+    <mkdir dir="${buildDir}"/>\r
+    <javac srcdir="src" destdir="${buildDir}"/>\r
+  </target>\r
+\r
+  <target name="clean">\r
+    <delete includeemptydirs="true" failonerror="false" quiet="true">\r
+      <fileset dir="${WORKSPACE}/Tools/Java/Source/CheckTools" includes="${buildDir}"/>\r
+    </delete>\r
+  </target>\r
+\r
+  <target name="cleanall" depends="clean">\r
+    <echo message="Removing Class Files and the Java Archive: CheckTools.jar"/>\r
+    <delete file="${installLocation}/CheckTools.jar"/>\r
+  </target>\r
+\r
+  <target name="install" depends="source">\r
+    <jar destfile="${installLocation}/CheckTools.jar">\r
+      <fileset dir="${buildDir}"/>\r
+    </jar>\r
+  </target>\r
+\r
+</project>\r
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 (file)
index 0000000..4f61cc6
--- /dev/null
@@ -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 (file)
index 0000000..0c0c936
--- /dev/null
@@ -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 (file)
index 0000000..2379dd3
--- /dev/null
@@ -0,0 +1,73 @@
+@REM\r
+@REM Copyright (c) 2006, Intel Corporation\r
+@REM All rights reserved. This program and the accompanying materials\r
+@REM are licensed and made available under the terms and conditions of the BSD License\r
+@REM which accompanies this distribution.  The full text of the license may be found at\r
+@REM http://opensource.org/licenses/bsd-license.php\r
+@REM \r
+@REM THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+@REM WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+@REM\r
+\r
+@echo off\r
+\r
+:check_java\r
+if "%JAVA_HOME%"=="" goto no_jdk\r
+:check_wks\r
+if "%WORKSPACE%"=="" goto no_wks\r
+:check_ant\r
+if "%ANT_HOME%"=="" goto no_ant\r
+:check_xmlbeans\r
+if "%XMLBEANS_HOME%"=="" goto no_xmlbeans\r
+:check_surfacearea\r
+if not exist %WORKSPACE%\Tools\Jars\SurfaceArea.jar (\r
+  goto no_surfacearea\r
+)\r
+:check_CheckTools\r
+if not exist %WORKSPACE%\Tools\bin\CheckTools.jar (\r
+  goto no_CheckTools\r
+)\r
+\r
+@REM Run Framework Wizard\r
+call "java" -cp %WORKSPACE%\Tools\bin\CheckTools.jar org.tianocore.CheckTools.CheckTools %*\r
+\r
+goto end\r
+\r
+:no_jdk\r
+@echo.\r
+@echo !!! Please set JAVA_HOME !!!\r
+@echo.\r
+goto check_wks\r
+\r
+:no_wks\r
+@echo.\r
+@echo !!! Please set WORKSPACE !!!\r
+@echo.\r
+goto check_ant\r
+\r
+:no_ant\r
+@echo.\r
+@echo !!! Please set ANT_HOME !!!\r
+@echo.\r
+goto check_xmlbeans\r
+\r
+:no_xmlbeans\r
+@echo.\r
+@echo !!! Please set XMLBEANS_HOME !!!\r
+@echo.\r
+goto end\r
+\r
+:no_surfacearea\r
+@echo.\r
+@echo !!! Please run edksetup.bat to build SurfaceArea.jar !!!\r
+@echo.\r
+goto end\r
+\r
+:no_CheckTools\r
+@echo.\r
+@echo !!! Please run edksetup.bat to build CheckTools.jar !!!\r
+@echo.\r
+goto end\r
+\r
+:end\r
+@echo on\r