def _GenSources(self): Logger.Debug(2, "Generate %s ..." % DT.TAB_SOURCES) # # Get all SourceFiles # SourceObj = self.Parser.InfSourcesSection.Sources DataList = SourceObj.keys() # # Go through each arch # SourceList = [] for Key in DataList: SourceData = SourceObj[Key] for Item in SourceData: SourceFile = Item.GetSourceFileName() Family = Item.GetFamily() FeatureFlag = Item.GetFeatureFlagExp() SupArchList = ConvertArchList(Item.GetSupArchList()) SupArchList.sort() Source = SourceFileObject() Source.SetSourceFile(SourceFile) Source.SetFamily(Family) Source.SetFeatureFlag(FeatureFlag) Source.SetSupArchList(SupArchList) SourceList.append(Source) self.SetSourceFileList(self.GetSourceFileList() + SourceList)
def GenBinaryData(BinaryData, BinaryObj, BinariesDict, AsBuildIns, BinaryFileObjectList, SupArchList, BinaryModule): if BinaryModule: pass OriSupArchList = SupArchList for Item in BinaryData: ItemObj = BinaryObj[Item][0][0] if ItemObj.GetType( ) not in DT.BINARY_FILE_TYPE_UI_LIST + DT.BINARY_FILE_TYPE_VER_LIST: TagName = ItemObj.GetTagName() Family = ItemObj.GetFamily() else: TagName = '' Family = '' FFE = ItemObj.GetFeatureFlagExp() # # If have architecturie specified, then use the specified architecturie; # If the section tag does not have an architecture modifier or the modifier is "common" (case in-sensitive), # and the VALID_ARCHITECTURES comment exists, the list from the VALID_ARCHITECTURES comment # can be used for the attribute. # If both not have VALID_ARCHITECTURE comment and no architecturie specified, then keep it empty. # SupArchList = ConvertArchList(ItemObj.GetSupArchList()) SupArchList.sort() if len(SupArchList) == 1 and SupArchList[0] == 'COMMON': if not (len(OriSupArchList) == 1 or OriSupArchList[0] == 'COMMON'): SupArchList = OriSupArchList else: SupArchList = ['COMMON'] FileNameObj = CommonObject.FileNameObject() FileNameObj.SetFileType(ItemObj.GetType()) FileNameObj.SetFilename(ItemObj.GetFileName()) FileNameObj.SetFeatureFlag(FFE) FileNameObj.SetSupArchList(SupArchList) FileNameList = [FileNameObj] BinaryFile = BinaryFileObject() BinaryFile.SetFileNameList(FileNameList) BinaryFile.SetAsBuiltList(AsBuildIns) BinaryFileObjectList.append(BinaryFile) SupArchStr = ' '.join(SupArchList) Key = (ItemObj.GetFileName(), ItemObj.GetType(), FFE, SupArchStr) ValueItem = (ItemObj.GetTarget(), Family, TagName, '') if Key in BinariesDict: ValueList = BinariesDict[Key] ValueList.append(ValueItem) BinariesDict[Key] = ValueList else: BinariesDict[Key] = [ValueItem] return BinariesDict, AsBuildIns, BinaryFileObjectList
def GenBinaryData(BinaryData, BinaryObj, BinariesDict, AsBuildIns, BinaryFileObjectList, SupArchList, BinaryModule): if BinaryModule: pass OriSupArchList = SupArchList for Item in BinaryData: ItemObj = BinaryObj[Item][0][0] if ItemObj.GetType() not in DT.BINARY_FILE_TYPE_UI_LIST + DT.BINARY_FILE_TYPE_VER_LIST: TagName = ItemObj.GetTagName() Family = ItemObj.GetFamily() else: TagName = '' Family = '' FFE = ItemObj.GetFeatureFlagExp() # # If have architecturie specified, then use the specified architecturie; # If the section tag does not have an architecture modifier or the modifier is "common" (case in-sensitive), # and the VALID_ARCHITECTURES comment exists, the list from the VALID_ARCHITECTURES comment # can be used for the attribute. # If both not have VALID_ARCHITECTURE comment and no architecturie specified, then keep it empty. # SupArchList = ConvertArchList(ItemObj.GetSupArchList()) SupArchList.sort() if len(SupArchList) == 1 and SupArchList[0] == 'COMMON': if not (len(OriSupArchList) == 1 or OriSupArchList[0] == 'COMMON'): SupArchList = OriSupArchList else: SupArchList = ['COMMON'] FileNameObj = CommonObject.FileNameObject() FileNameObj.SetFileType(ItemObj.GetType()) FileNameObj.SetFilename(ItemObj.GetFileName()) FileNameObj.SetFeatureFlag(FFE) FileNameObj.SetSupArchList(SupArchList) FileNameList = [FileNameObj] BinaryFile = BinaryFileObject() BinaryFile.SetFileNameList(FileNameList) BinaryFile.SetAsBuiltList(AsBuildIns) BinaryFileObjectList.append(BinaryFile) SupArchStr = ' '.join(SupArchList) Key = (ItemObj.GetFileName(), ItemObj.GetType(), FFE, SupArchStr) ValueItem = (ItemObj.GetTarget(), Family, TagName, '') if Key in BinariesDict: ValueList = BinariesDict[Key] ValueList.append(ValueItem) BinariesDict[Key] = ValueList else: BinariesDict[Key] = [ValueItem] return BinariesDict, AsBuildIns, BinaryFileObjectList
def GenBinaryData(BinaryData, BinaryObj, BinariesDict, AsBuildIns, BinaryFileObjectList, \ SupArchList, BinaryModule, DecObjList=None): if BinaryModule: pass OriSupArchList = SupArchList for Item in BinaryData: ItemObj = BinaryObj[Item][0][0] if ItemObj.GetType() not in DT.BINARY_FILE_TYPE_UI_LIST + DT.BINARY_FILE_TYPE_VER_LIST: TagName = ItemObj.GetTagName() Family = ItemObj.GetFamily() else: TagName = '' Family = '' FFE = ItemObj.GetFeatureFlagExp() # # If have architecturie specified, then use the specified architecturie; # If the section tag does not have an architecture modifier or the modifier is "common" (case in-sensitive), # and the VALID_ARCHITECTURES comment exists, the list from the VALID_ARCHITECTURES comment # can be used for the attribute. # If both not have VALID_ARCHITECTURE comment and no architecturie specified, then keep it empty. # SupArchList = ConvertArchList(ItemObj.GetSupArchList()) SupArchList.sort() if len(SupArchList) == 1 and SupArchList[0] == 'COMMON': if not (len(OriSupArchList) == 1 or OriSupArchList[0] == 'COMMON'): SupArchList = OriSupArchList else: SupArchList = ['COMMON'] FileNameObj = CommonObject.FileNameObject() FileNameObj.SetFileType(ItemObj.GetType()) FileNameObj.SetFilename(ItemObj.GetFileName()) FileNameObj.SetFeatureFlag(FFE) # # Get GUID value of the GUID CName in the DEC file # if ItemObj.GetType() == DT.SUBTYPE_GUID_BINARY_FILE_TYPE: if not CheckGuidRegFormat(ItemObj.GetGuidValue()): if not DecObjList: if DT.TAB_HORIZON_LINE_SPLIT in ItemObj.GetGuidValue() or \ DT.TAB_COMMA_SPLIT in ItemObj.GetGuidValue(): Logger.Error("\nMkPkg", FORMAT_INVALID, ST.ERR_DECPARSE_DEFINE_PKGGUID, ExtraData=ItemObj.GetGuidValue(), RaiseError=True) else: Logger.Error("\nMkPkg", FORMAT_INVALID, ST.ERR_UNI_SUBGUID_VALUE_DEFINE_DEC_NOT_FOUND % \ (ItemObj.GetGuidValue()), RaiseError=True) else: for DecObj in DecObjList: for GuidObj in DecObj.GetGuidList(): if GuidObj.GetCName() == ItemObj.GetGuidValue(): FileNameObj.SetGuidValue(GuidObj.GetGuid()) break if not FileNameObj.GetGuidValue(): Logger.Error("\nMkPkg", FORMAT_INVALID, ST.ERR_DECPARSE_CGUID_NOT_FOUND % \ (ItemObj.GetGuidValue()), RaiseError=True) else: FileNameObj.SetGuidValue(ItemObj.GetGuidValue().strip()) FileNameObj.SetSupArchList(SupArchList) FileNameList = [FileNameObj] BinaryFile = BinaryFileObject() BinaryFile.SetFileNameList(FileNameList) BinaryFile.SetAsBuiltList(AsBuildIns) BinaryFileObjectList.append(BinaryFile) SupArchStr = ' '.join(SupArchList) Key = (ItemObj.GetFileName(), ItemObj.GetType(), FFE, SupArchStr) ValueItem = (ItemObj.GetTarget(), Family, TagName, '') if Key in BinariesDict: ValueList = BinariesDict[Key] ValueList.append(ValueItem) BinariesDict[Key] = ValueList else: BinariesDict[Key] = [ValueItem] return BinariesDict, AsBuildIns, BinaryFileObjectList
def GenBinaryData(BinaryData, BinaryObj, BinariesDict, AsBuildIns, BinaryFileObjectList, \ SupArchList, BinaryModule, DecObjList=None): if BinaryModule: pass OriSupArchList = SupArchList for Item in BinaryData: ItemObj = BinaryObj[Item][0][0] if ItemObj.GetType( ) not in DT.BINARY_FILE_TYPE_UI_LIST + DT.BINARY_FILE_TYPE_VER_LIST: TagName = ItemObj.GetTagName() Family = ItemObj.GetFamily() else: TagName = '' Family = '' FFE = ItemObj.GetFeatureFlagExp() # # If have architecturie specified, then use the specified architecturie; # If the section tag does not have an architecture modifier or the modifier is "common" (case in-sensitive), # and the VALID_ARCHITECTURES comment exists, the list from the VALID_ARCHITECTURES comment # can be used for the attribute. # If both not have VALID_ARCHITECTURE comment and no architecturie specified, then keep it empty. # SupArchList = ConvertArchList(ItemObj.GetSupArchList()) SupArchList.sort() if len(SupArchList) == 1 and SupArchList[0] == 'COMMON': if not (len(OriSupArchList) == 1 or OriSupArchList[0] == 'COMMON'): SupArchList = OriSupArchList else: SupArchList = ['COMMON'] FileNameObj = CommonObject.FileNameObject() FileNameObj.SetFileType(ItemObj.GetType()) FileNameObj.SetFilename(ItemObj.GetFileName()) FileNameObj.SetFeatureFlag(FFE) # # Get GUID value of the GUID CName in the DEC file # if ItemObj.GetType() == DT.SUBTYPE_GUID_BINARY_FILE_TYPE: if not CheckGuidRegFormat(ItemObj.GetGuidValue()): if not DecObjList: if DT.TAB_HORIZON_LINE_SPLIT in ItemObj.GetGuidValue() or \ DT.TAB_COMMA_SPLIT in ItemObj.GetGuidValue(): Logger.Error("\nMkPkg", FORMAT_INVALID, ST.ERR_DECPARSE_DEFINE_PKGGUID, ExtraData=ItemObj.GetGuidValue(), RaiseError=True) else: Logger.Error("\nMkPkg", FORMAT_INVALID, ST.ERR_UNI_SUBGUID_VALUE_DEFINE_DEC_NOT_FOUND % \ (ItemObj.GetGuidValue()), RaiseError=True) else: for DecObj in DecObjList: for GuidObj in DecObj.GetGuidList(): if GuidObj.GetCName() == ItemObj.GetGuidValue(): FileNameObj.SetGuidValue(GuidObj.GetGuid()) break if not FileNameObj.GetGuidValue(): Logger.Error("\nMkPkg", FORMAT_INVALID, ST.ERR_DECPARSE_CGUID_NOT_FOUND % \ (ItemObj.GetGuidValue()), RaiseError=True) else: FileNameObj.SetGuidValue(ItemObj.GetGuidValue().strip()) FileNameObj.SetSupArchList(SupArchList) FileNameList = [FileNameObj] BinaryFile = BinaryFileObject() BinaryFile.SetFileNameList(FileNameList) BinaryFile.SetAsBuiltList(AsBuildIns) BinaryFileObjectList.append(BinaryFile) SupArchStr = ' '.join(SupArchList) Key = (ItemObj.GetFileName(), ItemObj.GetType(), FFE, SupArchStr) ValueItem = (ItemObj.GetTarget(), Family, TagName, '') if Key in BinariesDict: ValueList = BinariesDict[Key] ValueList.append(ValueItem) BinariesDict[Key] = ValueList else: BinariesDict[Key] = [ValueItem] return BinariesDict, AsBuildIns, BinaryFileObjectList