diff options
-rw-r--r-- | BaseTools/Source/Python/Common/MultipleWorkspace.py | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/BaseTools/Source/Python/Common/MultipleWorkspace.py b/BaseTools/Source/Python/Common/MultipleWorkspace.py index 4e4c37ae13..2a76d49cc6 100644 --- a/BaseTools/Source/Python/Common/MultipleWorkspace.py +++ b/BaseTools/Source/Python/Common/MultipleWorkspace.py @@ -131,13 +131,16 @@ class MultipleWorkspace(object): PathList = PathStr.split()
if PathList:
for i, str in enumerate(PathList):
- if str.find(TAB_WORKSPACE) != -1:
- MacroStartPos = str.find(TAB_WORKSPACE)
- MacroEndPos = str.find(')', MacroStartPos)
- Substr = str[MacroEndPos+1:]
- if Substr.startswith('/') or Substr.startswith('\\'):
- Substr = Substr[1:]
- PathList[i] = str[0:MacroStartPos] + os.path.normpath(cls.join(cls.WORKSPACE, Substr))
+ MacroStartPos = str.find(TAB_WORKSPACE)
+ if MacroStartPos != -1:
+ Substr = str[MacroStartPos:]
+ Path = Substr.replace(TAB_WORKSPACE, cls.WORKSPACE).strip()
+ if not os.path.exists(Path):
+ for Pkg in cls.PACKAGES_PATH:
+ Path = Substr.replace(TAB_WORKSPACE, Pkg).strip()
+ if os.path.exists(Path):
+ break
+ PathList[i] = str[0:MacroStartPos] + Path
PathStr = ' '.join(PathList)
return PathStr
|