summaryrefslogtreecommitdiffstats
path: root/BaseTools
diff options
context:
space:
mode:
authorChen, Christine <Yuwei.Chen@intel.com>2020-12-17 08:53:48 +0800
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2021-03-08 03:14:35 +0000
commitdd6c0a0ba3a042808cc54a4db27ff27089c2d766 (patch)
treec8d15bbed67674307933c917fa5d3195b2ae8f50 /BaseTools
parent8c61f1934d473e9477fecc38ec1b9771f9c9d23e (diff)
downloadedk2-dd6c0a0ba3a042808cc54a4db27ff27089c2d766.tar.gz
edk2-dd6c0a0ba3a042808cc54a4db27ff27089c2d766.tar.bz2
edk2-dd6c0a0ba3a042808cc54a4db27ff27089c2d766.zip
BaseTools: Adjust StructurePcd List Order.
Currently StructurePcd.dsc have the list order issue. For a Pcd with several elements, the list indexs are used to distinguish these elements like this: PcdName.name.offset_name[0]|0x0 PcdName.name.offset_name[10]|0x0 PcdName.name.offset_name[11]|0x0 ... PcdName.name.offset_name[2]|0x0 ... However, the index is not strictly sorted by decimal numerical order, which is not user friendly. One more sort rule for index is added to the current rules to support for decimal numerical order in this patch. Cc: Bob Feng <bob.c.feng@intel.com> Cc: Liming Gao <gaoliming@byosoft.com.cn> Signed-off-by: Yuwei Chen <yuwei.chen@intel.com> Reviewed-by: Bob Feng <bob.c.feng@intel.com>
Diffstat (limited to 'BaseTools')
-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):