summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--BaseTools/Scripts/ConvertFceToStructurePcd.py29
1 files changed, 26 insertions, 3 deletions
diff --git a/BaseTools/Scripts/ConvertFceToStructurePcd.py b/BaseTools/Scripts/ConvertFceToStructurePcd.py
index 867660fba9..91361ea2b9 100644
--- a/BaseTools/Scripts/ConvertFceToStructurePcd.py
+++ b/BaseTools/Scripts/ConvertFceToStructurePcd.py
@@ -277,6 +277,7 @@ class Config(object):
attribute_re=re.compile(r'attribute=(\w+)')
value_re = re.compile(r'(//.*)')
part = []
+ part_without_comment = []
for x in section[1:]:
line=x.split('\n')[0]
comment_list = value_re.findall(line) # the string \\... in "Q...." line
@@ -293,8 +294,18 @@ class Config(object):
if attribute[0] in ['0x3','0x7']:
offset = int(offset[0], 16)
#help = help_re.findall(x)
- text = offset, name[0], guid[0], value, attribute[0], comment
- part.append(text)
+ text_without_comment = offset, name[0], guid[0], value, attribute[0]
+ if text_without_comment in part_without_comment:
+ # check if exists same Pcd with different comments, add different comments in one line with "|".
+ dupl_index = part_without_comment.index(text_without_comment)
+ part[dupl_index] = list(part[dupl_index])
+ if comment not in part[dupl_index][-1]:
+ part[dupl_index][-1] += " | " + comment
+ part[dupl_index] = tuple(part[dupl_index])
+ else:
+ text = offset, name[0], guid[0], value, attribute[0], comment
+ part_without_comment.append(text_without_comment)
+ part.append(text)
return(part)
def value_parser(self, list1):
@@ -532,6 +543,18 @@ class mainprocess(object):
i.sort()
return keys,title_all,info_list,header_list,inf_list
+ def correct_sort(self, PcdString):
+ # sort the Pcd list with two rules:
+ # First sort through Pcd name;
+ # Second if the Pcd exists several elements, sort them through index value.
+ if ("]|") in PcdString:
+ Pcdname = PcdString.split("[")[0]
+ Pcdindex = int(PcdString.split("[")[1].split("]")[0])
+ else:
+ Pcdname = PcdString.split("|")[0]
+ Pcdindex = 0
+ return Pcdname, Pcdindex
+
def remove_bracket(self,List):
for i in List:
for j in i:
@@ -543,7 +566,7 @@ class mainprocess(object):
List[List.index(i)][i.index(j)] = j
for i in List:
if type(i) == type([0,0]):
- i.sort()
+ i.sort(key = lambda x:(self.correct_sort(x)[0], self.correct_sort(x)[1]))
return List
def write_all(self):