diff options
author | Liming Gao <liming.gao@intel.com> | 2017-12-19 16:01:38 +0800 |
---|---|---|
committer | Liming Gao <liming.gao@intel.com> | 2017-12-25 11:05:53 +0800 |
commit | a09395932d997d41f59ae3ee2f7f77f91f5caa02 (patch) | |
tree | 582c325c0ddcbbd70d5300a3c833c07538317462 /BaseTools/Source/Python | |
parent | 520365decb26e5176ec2bb614f11ddeaa495de54 (diff) | |
download | edk2-a09395932d997d41f59ae3ee2f7f77f91f5caa02.tar.gz edk2-a09395932d997d41f59ae3ee2f7f77f91f5caa02.tar.bz2 edk2-a09395932d997d41f59ae3ee2f7f77f91f5caa02.zip |
BaseTools: Support nest field name in DSC/DEC
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Feng Bob C <bob.c.feng@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
Diffstat (limited to 'BaseTools/Source/Python')
-rw-r--r-- | BaseTools/Source/Python/Workspace/DscBuildData.py | 25 | ||||
-rw-r--r-- | BaseTools/Source/Python/Workspace/MetaFileParser.py | 4 |
2 files changed, 16 insertions, 13 deletions
diff --git a/BaseTools/Source/Python/Workspace/DscBuildData.py b/BaseTools/Source/Python/Workspace/DscBuildData.py index 23c2c0d410..4642e761b9 100644 --- a/BaseTools/Source/Python/Workspace/DscBuildData.py +++ b/BaseTools/Source/Python/Workspace/DscBuildData.py @@ -1207,18 +1207,19 @@ class DscBuildData(PlatformBuildClassObject): def get_length(value):
Value = value.strip()
- if Value.startswith('GUID') and Value.endswith(')'):
- return 16
- if Value.startswith('L"') and Value.endswith('"'):
- return len(Value[2:-1])
- if Value[0] == '"' and Value[-1] == '"':
- return len(Value) - 2
- if Value[0] == '{' and Value[-1] == '}':
- return len(Value.split(","))
- if Value.startswith("L'") and Value.endswith("'") and len(list(Value[2:-1])) > 1:
- return len(list(Value[2:-1]))
- if Value[0] == "'" and Value[-1] == "'" and len(list(Value[1:-1])) > 1:
- return len(Value) - 2
+ if len(value) > 1:
+ if Value.startswith('GUID') and Value.endswith(')'):
+ return 16
+ if Value.startswith('L"') and Value.endswith('"'):
+ return len(Value[2:-1])
+ if Value[0] == '"' and Value[-1] == '"':
+ return len(Value) - 2
+ if Value[0] == '{' and Value[-1] == '}':
+ return len(Value.split(","))
+ if Value.startswith("L'") and Value.endswith("'") and len(list(Value[2:-1])) > 1:
+ return len(list(Value[2:-1]))
+ if Value[0] == "'" and Value[-1] == "'" and len(list(Value[1:-1])) > 1:
+ return len(Value) - 2
return len(Value)
return str(max([pcd_size for pcd_size in [get_length(item) for item in sku_values]]))
diff --git a/BaseTools/Source/Python/Workspace/MetaFileParser.py b/BaseTools/Source/Python/Workspace/MetaFileParser.py index 6fa008ef65..3038447850 100644 --- a/BaseTools/Source/Python/Workspace/MetaFileParser.py +++ b/BaseTools/Source/Python/Workspace/MetaFileParser.py @@ -1136,6 +1136,8 @@ class DscParser(MetaFileParser): self._ValueList[0], self._ValueList[1] = PcdNameTockens[0], PcdNameTockens[1]
elif len(PcdNameTockens) == 3:
self._ValueList[0], self._ValueList[1] = ".".join((PcdNameTockens[0], PcdNameTockens[1])), PcdNameTockens[2]
+ elif len(PcdNameTockens) > 3:
+ self._ValueList[0], self._ValueList[1] = ".".join((PcdNameTockens[0], PcdNameTockens[1])), ".".join(PcdNameTockens[2:])
if len(TokenList) == 2:
self._ValueList[2] = TokenList[1]
if self._ValueList[0] == '' or self._ValueList[1] == '':
@@ -1910,7 +1912,7 @@ class DecParser(MetaFileParser): if len(PcdNames) == 2:
self._CurrentStructurePcdName = ""
else:
- self._ValueList[1] = PcdNames[2]
+ self._ValueList[1] = TAB_SPLIT.join(PcdNames[2:])
self._ValueList[2] = PcdTockens[1]
if not self._CurrentStructurePcdName:
TokenList = GetSplitValueList(self._CurrentLine, TAB_VALUE_SPLIT, 1)
|