# This file is used to parse meta files\r
#\r
# Copyright (c) 2008 - 2016, Intel Corporation. All rights reserved.<BR>\r
-# Copyright (c) 2015, Hewlett Packard Enterprise Development, L.P.<BR>\r
+# (C) Copyright 2015-2016 Hewlett Packard Enterprise Development LP<BR>\r
# This program and the accompanying materials\r
# are licensed and made available under the terms and conditions of the BSD License\r
# which accompanies this distribution. The full text of the license may be found at\r
#\r
# @param FilePath The path of platform description file\r
# @param FileType The raw data of DSC file\r
+ # @param Arch Default Arch value for filtering sections\r
# @param Table Database used to retrieve module/package information\r
- # @param Macros Macros used for replacement in file\r
# @param Owner Owner ID (for sub-section parsing)\r
# @param From ID from which the data comes (for !INCLUDE directive)\r
#\r
- def __init__(self, FilePath, FileType, Table, Owner= -1, From= -1):\r
+ def __init__(self, FilePath, FileType, Arch, Table, Owner= -1, From= -1):\r
self._Table = Table\r
self._RawTable = Table\r
+ self._Arch = Arch\r
self._FileType = FileType\r
self.MetaFile = FilePath\r
self._FileDir = self.MetaFile.Dir\r
def _SetFinished(self, Value):\r
self._Finished = Value\r
\r
+ ## Remove records that do not match given Filter Arch\r
+ def _FilterRecordList(self, RecordList, FilterArch):\r
+ NewRecordList = []\r
+ for Record in RecordList:\r
+ Arch = Record[3]\r
+ if Arch == 'COMMON' or Arch == FilterArch:\r
+ NewRecordList.append(Record)\r
+ return NewRecordList\r
+\r
## Use [] style to query data in table, just for readability\r
#\r
# DataInfo = [data_type, scope1(arch), scope2(platform/moduletype)]\r
\r
# No specific ARCH or Platform given, use raw data\r
if self._RawTable and (len(DataInfo) == 1 or DataInfo[1] == None):\r
- return self._RawTable.Query(*DataInfo)\r
+ return self._FilterRecordList(self._RawTable.Query(*DataInfo), self._Arch)\r
\r
# Do post-process if necessary\r
if not self._PostProcessed:\r
self._PostProcess()\r
\r
- return self._Table.Query(*DataInfo)\r
+ return self._FilterRecordList(self._Table.Query(*DataInfo), DataInfo[1])\r
\r
## Data parser for the common format in different type of file\r
#\r
#\r
# @param FilePath The path of module description file\r
# @param FileType The raw data of DSC file\r
+ # @param Arch Default Arch value for filtering sections\r
# @param Table Database used to retrieve module/package information\r
- # @param Macros Macros used for replacement in file\r
#\r
- def __init__(self, FilePath, FileType, Table):\r
+ def __init__(self, FilePath, FileType, Arch, Table):\r
# prevent re-initialization\r
if hasattr(self, "_Table"):\r
return\r
- MetaFileParser.__init__(self, FilePath, FileType, Table)\r
+ MetaFileParser.__init__(self, FilePath, FileType, Arch, Table)\r
self.PcdsDict = {}\r
\r
## Parser starter\r
#\r
# @param FilePath The path of platform description file\r
# @param FileType The raw data of DSC file\r
+ # @param Arch Default Arch value for filtering sections\r
# @param Table Database used to retrieve module/package information\r
- # @param Macros Macros used for replacement in file\r
# @param Owner Owner ID (for sub-section parsing)\r
# @param From ID from which the data comes (for !INCLUDE directive)\r
#\r
- def __init__(self, FilePath, FileType, Table, Owner= -1, From= -1):\r
+ def __init__(self, FilePath, FileType, Arch, Table, Owner= -1, From= -1):\r
# prevent re-initialization\r
if hasattr(self, "_Table"):\r
return\r
- MetaFileParser.__init__(self, FilePath, FileType, Table, Owner, From)\r
+ MetaFileParser.__init__(self, FilePath, FileType, Arch, Table, Owner, From)\r
self._Version = 0x00010005 # Only EDK2 dsc file is supported\r
# to store conditional directive evaluation result\r
self._DirectiveStack = []\r
\r
IncludedFileTable = MetaFileStorage(self._Table.Cur, IncludedFile1, MODEL_FILE_DSC, False)\r
Owner = self._Content[self._ContentIndex - 1][0]\r
- Parser = DscParser(IncludedFile1, self._FileType, IncludedFileTable,\r
+ Parser = DscParser(IncludedFile1, self._FileType, self._Arch, IncludedFileTable,\r
Owner=Owner, From=Owner)\r
\r
# Does not allow lower level included file to include upper level included file\r
#\r
# @param FilePath The path of platform description file\r
# @param FileType The raw data of DSC file\r
+ # @param Arch Default Arch value for filtering sections\r
# @param Table Database used to retrieve module/package information\r
- # @param Macros Macros used for replacement in file\r
#\r
- def __init__(self, FilePath, FileType, Table):\r
+ def __init__(self, FilePath, FileType, Arch, Table):\r
# prevent re-initialization\r
if hasattr(self, "_Table"):\r
return\r
- MetaFileParser.__init__(self, FilePath, FileType, Table, -1)\r
+ MetaFileParser.__init__(self, FilePath, FileType, Arch, Table, -1)\r
self._Comments = []\r
self._Version = 0x00010005 # Only EDK2 dec file is supported\r
self._AllPCDs = [] # Only for check duplicate PCD\r