BaseTools/Source/Python/build/build.py:
authorjljusten <jljusten@7335b38e-4728-0410-8992-fb3ffe349368>
Thu, 13 Dec 2007 21:07:02 +0000 (21:07 +0000)
committerjljusten <jljusten@7335b38e-4728-0410-8992-fb3ffe349368>
Thu, 13 Dec 2007 21:07:02 +0000 (21:07 +0000)
  Change check for PATH environment such that it checks to see if
  the 'build' tool is found in the PATH.  If so, it is good enough
  for our purposes.  Potentially we might want to add a check to see
  if other BaseTools tools are found in the PATH, but just
  checking for 'build' may be enough.

git-svn-id: https://buildtools.tianocore.org/svn/buildtools/trunk/BaseTools@923 7335b38e-4728-0410-8992-fb3ffe349368

Source/Python/build/build.py

index f9f5f41..9b2dfa0 100644 (file)
@@ -48,6 +48,22 @@ gSupportedTarget = ['all', 'genc', 'genmake', 'modules', 'libraries', 'fds', 'cl
 gBuildConfiguration = "Conf/target.txt"\r
 gBuildCacheDir = "Conf/.cache"\r
 \r
 gBuildConfiguration = "Conf/target.txt"\r
 gBuildCacheDir = "Conf/.cache"\r
 \r
+## Check environment PATH variable to make sure the specified tool is found\r
+#\r
+#   If the tool is found in the PATH, then True is returned\r
+#   Otherwise, False is returned\r
+#\r
+def IsToolInPath(tool):\r
+    if os.environ.has_key('PATHEXT'):\r
+        extns = os.environ['PATHEXT'].split(os.path.pathsep)\r
+    else:\r
+        extns = ('',)\r
+    for pathDir in os.environ['PATH'].split(os.path.pathsep):\r
+        for ext in extns:\r
+            if os.path.exists(os.path.join(pathDir, tool + ext)):\r
+                return True\r
+    return False\r
+\r
 ## Check environment variables\r
 #\r
 #  Check environment variables that must be set for build. Currently they are\r
 ## Check environment variables\r
 #\r
 #  Check environment variables that must be set for build. Currently they are\r
@@ -75,9 +91,9 @@ def CheckEnvVariable():
     PathString = os.environ["PATH"]\r
     ToolPath = os.path.normpath(os.path.join(os.environ["EDK_TOOLS_PATH"], 'Bin', sys.platform.title()))\r
 \r
     PathString = os.environ["PATH"]\r
     ToolPath = os.path.normpath(os.path.join(os.environ["EDK_TOOLS_PATH"], 'Bin', sys.platform.title()))\r
 \r
-    if PathString.find(ToolPath) == -1:\r
+    if not IsToolInPath('build'):\r
         os.environ['PATH'] = os.path.pathsep.join((os.environ['PATH'], ToolPath))\r
         os.environ['PATH'] = os.path.pathsep.join((os.environ['PATH'], ToolPath))\r
-            \r
+\r
         EdkLogger.error("build", ATTRIBUTE_NOT_AVAILABLE, "Please execute %s to set %s in environment variable: PATH!\n"\r
                             % (os.path.normpath(os.path.join(PathString, 'edksetup.bat')), ToolPath))\r
 \r
         EdkLogger.error("build", ATTRIBUTE_NOT_AVAILABLE, "Please execute %s to set %s in environment variable: PATH!\n"\r
                             % (os.path.normpath(os.path.join(PathString, 'edksetup.bat')), ToolPath))\r
 \r