def FromXml2(self, Item, Module): if self.Module: pass # # PeiDepex # PeiDepexList = [] for SubItem in XmlList(Item, '/ModuleSurfaceArea/PeiDepex'): Tmp = DepexXml() Depex = Tmp.FromXml(XmlNode(SubItem, 'PeiDepex'), 'PeiDepex') PeiDepexList.append(Depex) Module.SetPeiDepex(PeiDepexList) # # DxeDepex # DxeDepexList = [] for SubItem in XmlList(Item, '/ModuleSurfaceArea/DxeDepex'): Tmp = DepexXml() Depex = Tmp.FromXml(XmlNode(SubItem, 'DxeDepex'), 'DxeDepex') DxeDepexList.append(Depex) Module.SetDxeDepex(DxeDepexList) # # SmmDepex # SmmDepexList = [] for SubItem in XmlList(Item, '/ModuleSurfaceArea/SmmDepex'): Tmp = DepexXml() Depex = Tmp.FromXml(XmlNode(SubItem, 'SmmDepex'), 'SmmDepex') SmmDepexList.append(Depex) Module.SetSmmDepex(SmmDepexList) # # MiscellaneousFile Tmp = MiscellaneousFileXml() MiscFileList = Tmp.FromXml( XmlNode(Item, '/ModuleSurfaceArea/MiscellaneousFiles'), 'MiscellaneousFiles') if MiscFileList: Module.SetMiscFileList([MiscFileList]) else: Module.SetMiscFileList([]) # # UserExtensions # for Item in XmlList(Item, '/ModuleSurfaceArea/UserExtensions'): Tmp = UserExtensionsXml() UserExtension = Tmp.FromXml(Item, 'UserExtensions') Module.SetUserExtensionList(Module.GetUserExtensionList() + [UserExtension]) return Module
def ToXml(self, DistP): if self.DistP: pass if DistP is not None: # # Parse DistributionPackageHeader # Attrs = [ ['xmlns', 'http://www.uefi.org/2011/1.1'], ['xmlns:xsi', 'http:/www.w3.org/2001/XMLSchema-instance'], ] Root = CreateXmlElement('DistributionPackage', '', [], Attrs) Tmp = DistributionPackageHeaderXml() Root.appendChild(Tmp.ToXml(DistP.Header, 'DistributionHeader')) # # Parse each PackageSurfaceArea # for Package in DistP.PackageSurfaceArea.values(): Psa = PackageSurfaceAreaXml() DomPackage = Psa.ToXml(Package) Root.appendChild(DomPackage) # # Parse each ModuleSurfaceArea # for Module in DistP.ModuleSurfaceArea.values(): Msa = ModuleSurfaceAreaXml() DomModule = Msa.ToXml(Module) Root.appendChild(DomModule) # # Parse Tools # Tmp = MiscellaneousFileXml() ToolNode = Tmp.ToXml2(DistP.Tools, 'Tools') if ToolNode is not None: Root.appendChild(ToolNode) # # Parse MiscFiles # Tmp = MiscellaneousFileXml() MiscFileNode = Tmp.ToXml2(DistP.MiscellaneousFiles, 'MiscellaneousFiles') if MiscFileNode is not None: Root.appendChild(MiscFileNode) XmlContent = Root.toprettyxml(indent=' ') # # Remove empty element # XmlContent = re.sub(r'[\s\r\n]*<[^<>=]*/>', '', XmlContent) # # Remove empty help text element # XmlContent = re.sub(r'[\s\r\n]*<HelpText Lang="en-US"/>', '', XmlContent) # # Remove SupArchList="COMMON" or "common" # XmlContent = \ re.sub(r'[\s\r\n]*SupArchList[\s\r\n]*=[\s\r\n]*"[\s\r\n]*COMMON' '[\s\r\n]*"', '', XmlContent) XmlContent = \ re.sub(r'[\s\r\n]*SupArchList[\s\r\n]*=[\s\r\n]*"[\s\r\n]*common' '[\s\r\n]*"', '', XmlContent) # # Remove <SupArchList> COMMON </SupArchList> # XmlContent = \ re.sub(r'[\s\r\n]*<SupArchList>[\s\r\n]*COMMON[\s\r\n]*' '</SupArchList>[\s\r\n]*', '', XmlContent) # # Remove <SupArchList> common </SupArchList> # XmlContent = \ re.sub(r'[\s\r\n]*<SupArchList>[\s\r\n]*' 'common[\s\r\n]*</SupArchList>[\s\r\n]*', '', XmlContent) # # Remove SupModList="COMMON" or "common" # XmlContent = \ re.sub(r'[\s\r\n]*SupModList[\s\r\n]*=[\s\r\n]*"[\s\r\n]*COMMON' '[\s\r\n]*"', '', XmlContent) XmlContent = \ re.sub(r'[\s\r\n]*SupModList[\s\r\n]*=[\s\r\n]*"[\s\r\n]*common' '[\s\r\n]*"', '', XmlContent) return XmlContent return ''
def FromXml(self, Filename=None): if Filename is not None: self.DistP = DistributionPackageClass() # # Load to XML # self.Pkg = XmlParseFile(Filename) # # Parse Header information # Tmp = DistributionPackageHeaderXml() DistributionPackageHeader = \ Tmp.FromXml(XmlNode(self.Pkg, '/DistributionPackage/DistributionHeader'), 'DistributionHeader') self.DistP.Header = DistributionPackageHeader # # Parse each PackageSurfaceArea # for Item in XmlList(self.Pkg, '/DistributionPackage/PackageSurfaceArea'): Psa = PackageSurfaceAreaXml() Package = Psa.FromXml(Item, 'PackageSurfaceArea') self.DistP.PackageSurfaceArea[(Package.GetGuid(), \ Package.GetVersion(), \ Package.GetPackagePath())] = \ Package # # Parse each ModuleSurfaceArea # for Item in XmlList(self.Pkg, '/DistributionPackage/ModuleSurfaceArea'): Msa = ModuleSurfaceAreaXml() Module = Msa.FromXml(Item, 'ModuleSurfaceArea', True) ModuleKey = (Module.GetGuid(), Module.GetVersion(), Module.GetName(), Module.GetModulePath()) self.DistP.ModuleSurfaceArea[ModuleKey] = Module # # Parse Tools # Tmp = MiscellaneousFileXml() self.DistP.Tools = Tmp.FromXml2( XmlNode(self.Pkg, '/DistributionPackage/Tools'), 'Tools') # # Parse MiscFiles # Tmp = MiscellaneousFileXml() self.DistP.MiscellaneousFiles = \ Tmp.FromXml2(XmlNode(self.Pkg, \ '/DistributionPackage/MiscellaneousFiles'), \ 'MiscellaneousFiles') # # Parse UserExtensions # for Item in XmlList(self.Pkg, '/DistributionPackage/UserExtensions'): Tmp = UserExtensionsXml() self.DistP.UserExtensions.append( Tmp.FromXml2(Item, 'UserExtensions')) # # Check Required Items for XML # self.ValidateDistributionPackage() return self.DistP
def ToXml(self, Package): if self.Package: pass # # Create PackageSurfaceArea node # DomPackage = minidom.Document().createElement('PackageSurfaceArea') # # Header # Tmp = PackageHeaderXml() DomPackage.appendChild(Tmp.ToXml(Package, 'Header')) # # ClonedFrom # Tmp = ClonedFromXml() if Package.GetClonedFromList() != []: DomPackage.appendChild( Tmp.ToXml(Package.GetClonedFromList[0], 'ClonedFrom')) # # LibraryClass # LibraryClassNode = CreateXmlElement('LibraryClassDeclarations', '', [], []) for LibraryClass in Package.GetLibraryClassList(): Tmp = LibraryClassXml() LibraryClassNode.appendChild( Tmp.ToXml(LibraryClass, 'LibraryClass')) DomPackage.appendChild(LibraryClassNode) # # IndustryStandardHeader # IndustryStandardHeaderNode = CreateXmlElement( 'IndustryStandardIncludes', '', [], []) for Include in Package.GetStandardIncludeFileList(): Tmp = IndustryStandardHeaderXml() IndustryStandardHeaderNode.appendChild( Tmp.ToXml(Include, 'IndustryStandardHeader')) DomPackage.appendChild(IndustryStandardHeaderNode) # # PackageHeader # PackageIncludeHeaderNode = CreateXmlElement('PackageIncludes', '', [], []) for Include in Package.GetPackageIncludeFileList(): Tmp = PackageIncludeHeaderXml() PackageIncludeHeaderNode.appendChild( Tmp.ToXml(Include, 'PackageHeader')) DomPackage.appendChild(PackageIncludeHeaderNode) ModuleNode = CreateXmlElement('Modules', '', [], []) for Module in Package.GetModuleDict().values(): Tmp = ModuleSurfaceAreaXml() ModuleNode.appendChild(Tmp.ToXml(Module)) DomPackage.appendChild(ModuleNode) # # Guid # GuidProtocolPpiNode = CreateXmlElement('GuidDeclarations', '', [], []) for GuidProtocolPpi in Package.GetGuidList(): Tmp = GuidXml('Package') GuidProtocolPpiNode.appendChild(Tmp.ToXml\ (GuidProtocolPpi, 'Entry')) DomPackage.appendChild(GuidProtocolPpiNode) # # Protocol # GuidProtocolPpiNode = \ CreateXmlElement('ProtocolDeclarations', '', [], []) for GuidProtocolPpi in Package.GetProtocolList(): Tmp = ProtocolXml('Package') GuidProtocolPpiNode.appendChild\ (Tmp.ToXml(GuidProtocolPpi, 'Entry')) DomPackage.appendChild(GuidProtocolPpiNode) # # Ppi # GuidProtocolPpiNode = CreateXmlElement('PpiDeclarations', '', [], []) for GuidProtocolPpi in Package.GetPpiList(): Tmp = PpiXml('Package') GuidProtocolPpiNode.appendChild\ (Tmp.ToXml(GuidProtocolPpi, 'Entry')) DomPackage.appendChild(GuidProtocolPpiNode) # # PcdEntry # PcdEntryNode = CreateXmlElement('PcdDeclarations', '', [], []) for PcdEntry in Package.GetPcdList(): Tmp = PcdEntryXml() PcdEntryNode.appendChild(Tmp.ToXml2(PcdEntry, 'PcdEntry')) DomPackage.appendChild(PcdEntryNode) # # MiscellaneousFile # Tmp = MiscellaneousFileXml() if Package.GetMiscFileList(): DomPackage.appendChild( Tmp.ToXml(Package.GetMiscFileList()[0], 'MiscellaneousFiles')) # # UserExtensions # if Package.GetUserExtensionList(): for UserExtension in Package.GetUserExtensionList(): Tmp = UserExtensionsXml() DomPackage.appendChild( Tmp.ToXml(UserExtension, 'UserExtensions')) return DomPackage
def FromXml(self, Item, Key): if Key: pass # # Create a package object # Package = PackageObject() # # Header # Tmp = PackageHeaderXml() Tmp.FromXml(XmlNode(Item, '/PackageSurfaceArea/Header'), 'Header', Package) # # ClonedFrom # Tmp = ClonedFromXml() if XmlNode(Item, '/PackageSurfaceArea/ClonedFrom'): ClonedFrom = Tmp.FromXml( XmlNode(Item, '/PackageSurfaceArea/ClonedFrom'), 'ClonedFrom') Package.SetClonedFromList([ClonedFrom]) # # LibraryClass # for SubItem in XmlList( Item, '/PackageSurfaceArea/LibraryClassDeclarations/LibraryClass'): Tmp = LibraryClassXml() LibraryClass = Tmp.FromXml(SubItem, 'LibraryClass') Package.SetLibraryClassList(Package.GetLibraryClassList() + [LibraryClass]) if XmlList(Item, '/PackageSurfaceArea/LibraryClassDeclarations') and \ not XmlList(Item, '/PackageSurfaceArea/LibraryClassDeclarations/LibraryClass'): Package.SetLibraryClassList([None]) # # IndustryStandardHeader # for SubItem in XmlList( Item, '/PackageSurfaceArea/IndustryStandardIncludes/IndustryStandardHeader' ): Tmp = IndustryStandardHeaderXml() Include = Tmp.FromXml(SubItem, 'IndustryStandardHeader') Package.SetStandardIncludeFileList( Package.GetStandardIncludeFileList() + [Include]) if XmlList(Item, '/PackageSurfaceArea/IndustryStandardIncludes') and \ not XmlList(Item, '/PackageSurfaceArea/IndustryStandardIncludes/IndustryStandardHeader'): Package.SetStandardIncludeFileList([None]) # # PackageHeader # for SubItem in XmlList( Item, '/PackageSurfaceArea/PackageIncludes/PackageHeader'): Tmp = PackageIncludeHeaderXml() Include = Tmp.FromXml(SubItem, 'PackageHeader') Package.SetPackageIncludeFileList( Package.GetPackageIncludeFileList() + [Include]) if XmlList(Item, '/PackageSurfaceArea/PackageIncludes') and not \ XmlList(Item, '/PackageSurfaceArea/PackageIncludes/PackageHeader'): Package.SetPackageIncludeFileList([None]) # # Guid # for SubItem in XmlList(Item, '/PackageSurfaceArea/GuidDeclarations/Entry'): Tmp = GuidXml('Package') GuidProtocolPpi = Tmp.FromXml(SubItem, 'Entry') Package.SetGuidList(Package.GetGuidList() + [GuidProtocolPpi]) if XmlList(Item, '/PackageSurfaceArea/GuidDeclarations') and not \ XmlList(Item, '/PackageSurfaceArea/GuidDeclarations/Entry'): Package.SetGuidList([None]) # # Protocol # for SubItem in XmlList( Item, '/PackageSurfaceArea/ProtocolDeclarations/Entry'): Tmp = ProtocolXml('Package') GuidProtocolPpi = Tmp.FromXml(SubItem, 'Entry') Package.SetProtocolList(Package.GetProtocolList() + [GuidProtocolPpi]) if XmlList(Item, '/PackageSurfaceArea/ProtocolDeclarations') and not \ XmlList(Item, '/PackageSurfaceArea/ProtocolDeclarations/Entry'): Package.SetProtocolList([None]) # # Ppi # for SubItem in XmlList(Item, '/PackageSurfaceArea/PpiDeclarations/Entry'): Tmp = PpiXml('Package') GuidProtocolPpi = Tmp.FromXml(SubItem, 'Entry') Package.SetPpiList(Package.GetPpiList() + [GuidProtocolPpi]) if XmlList(Item, '/PackageSurfaceArea/PpiDeclarations') and not \ XmlList(Item, '/PackageSurfaceArea/PpiDeclarations/Entry'): Package.SetPpiList([None]) # # PcdEntry # for SubItem in XmlList(Item, '/PackageSurfaceArea/PcdDeclarations/PcdEntry'): Tmp = PcdEntryXml() PcdEntry = Tmp.FromXml2(SubItem, 'PcdEntry') Package.SetPcdList(Package.GetPcdList() + [PcdEntry]) if XmlList(Item, '/PackageSurfaceArea/PcdDeclarations') and not \ XmlList(Item, '/PackageSurfaceArea/PcdDeclarations/PcdEntry'): Package.SetPcdList([None]) # # PcdCheck # for SubItem in XmlList( Item, '/PackageSurfaceArea/PcdRelationshipChecks/PcdCheck'): Tmp = PcdCheckXml() PcdCheck = Tmp.FromXml(SubItem, 'PcdCheck') Package.PcdChecks.append(PcdCheck) # # Modules # for SubItem in XmlList( Item, '/PackageSurfaceArea/Modules/ModuleSurfaceArea'): Tmp = ModuleSurfaceAreaXml() Module = Tmp.FromXml(SubItem, 'ModuleSurfaceArea') ModuleDictKey = (Module.GetGuid(), Module.GetVersion(), Module.GetName(), Module.GetModulePath()) Package.ModuleDict[ModuleDictKey] = Module # # MiscellaneousFile # Tmp = MiscellaneousFileXml() MiscFileList = Tmp.FromXml( XmlNode(Item, '/PackageSurfaceArea/MiscellaneousFiles'), 'MiscellaneousFiles') if MiscFileList: Package.SetMiscFileList([MiscFileList]) else: Package.SetMiscFileList([]) # # UserExtensions # for Item in XmlList(Item, '/PackageSurfaceArea/UserExtensions'): Tmp = UserExtensionsXml() UserExtension = Tmp.FromXml(Item, 'UserExtensions') Package.UserExtensionList.append(UserExtension) self.Package = Package return self.Package
def ToXml(self, Module): if self.Package: pass # # Create root node of module surface area # DomModule = minidom.Document().createElement('ModuleSurfaceArea') if Module.GetBinaryModule(): DomModule.setAttribute('BinaryModule', 'true') # # Header # Tmp = HeaderXml() DomModule.appendChild(Tmp.ToXml(Module, 'Header')) # # ModuleProperties # Tmp = ModulePropertyXml() DomModule.appendChild(Tmp.ToXml(Module, Module.GetBootModeList(), Module.GetEventList(), Module.GetHobList(), \ 'ModuleProperties')) # # ClonedFrom # Tmp = ClonedFromXml() if Module.GetClonedFrom(): DomModule.appendChild( Tmp.ToXml(Module.GetClonedFrom(), 'ClonedFrom')) # # LibraryClass # LibraryClassNode = CreateXmlElement('LibraryClassDefinitions', '', [], []) for LibraryClass in Module.GetLibraryClassList(): Tmp = LibraryClassXml() LibraryClassNode.appendChild( Tmp.ToXml2(LibraryClass, 'LibraryClass')) DomModule.appendChild(LibraryClassNode) # # SourceFile # SourceFileNode = CreateXmlElement('SourceFiles', '', [], []) for SourceFile in Module.GetSourceFileList(): Tmp = SourceFileXml() SourceFileNode.appendChild(Tmp.ToXml(SourceFile, 'Filename')) DomModule.appendChild(SourceFileNode) # # BinaryFile # BinaryFileNode = CreateXmlElement('BinaryFiles', '', [], []) for BinaryFile in Module.GetBinaryFileList(): Tmp = BinaryFileXml() BinaryFileNode.appendChild(Tmp.ToXml(BinaryFile, 'BinaryFile')) DomModule.appendChild(BinaryFileNode) # # PackageDependencies # PackageDependencyNode = CreateXmlElement('PackageDependencies', '', [], []) for PackageDependency in Module.GetPackageDependencyList(): Tmp = PackageXml() PackageDependencyNode.appendChild( Tmp.ToXml(PackageDependency, 'Package')) DomModule.appendChild(PackageDependencyNode) # # Guid # GuidProtocolPpiNode = CreateXmlElement('Guids', '', [], []) for GuidProtocolPpi in Module.GetGuidList(): Tmp = GuidXml('Module') GuidProtocolPpiNode.appendChild( Tmp.ToXml(GuidProtocolPpi, 'GuidCName')) DomModule.appendChild(GuidProtocolPpiNode) # # Protocol # GuidProtocolPpiNode = CreateXmlElement('Protocols', '', [], []) for GuidProtocolPpi in Module.GetProtocolList(): Tmp = ProtocolXml('Module') GuidProtocolPpiNode.appendChild( Tmp.ToXml(GuidProtocolPpi, 'Protocol')) DomModule.appendChild(GuidProtocolPpiNode) # # Ppi # GuidProtocolPpiNode = CreateXmlElement('PPIs', '', [], []) for GuidProtocolPpi in Module.GetPpiList(): Tmp = PpiXml('Module') GuidProtocolPpiNode.appendChild(Tmp.ToXml(GuidProtocolPpi, 'Ppi')) DomModule.appendChild(GuidProtocolPpiNode) # # Extern # ExternNode = CreateXmlElement('Externs', '', [], []) for Extern in Module.GetExternList(): Tmp = ExternXml() ExternNode.appendChild(Tmp.ToXml(Extern, 'Extern')) DomModule.appendChild(ExternNode) # # PcdCoded # PcdEntryNode = CreateXmlElement('PcdCoded', '', [], []) for PcdEntry in Module.GetPcdList(): Tmp = PcdEntryXml() PcdEntryNode.appendChild(Tmp.ToXml3(PcdEntry, 'PcdEntry')) DomModule.appendChild(PcdEntryNode) # # PeiDepex # if Module.GetPeiDepex(): for Item in Module.GetPeiDepex(): Tmp = DepexXml() DomModule.appendChild(Tmp.ToXml(Item, 'PeiDepex')) # # DxeDepex # if Module.GetDxeDepex(): for Item in Module.GetDxeDepex(): Tmp = DepexXml() DomModule.appendChild(Tmp.ToXml(Item, 'DxeDepex')) # # SmmDepex # if Module.GetSmmDepex(): for Item in Module.GetSmmDepex(): Tmp = DepexXml() DomModule.appendChild(Tmp.ToXml(Item, 'SmmDepex')) # # MiscellaneousFile # if Module.GetMiscFileList(): Tmp = MiscellaneousFileXml() DomModule.appendChild( Tmp.ToXml(Module.GetMiscFileList()[0], 'MiscellaneousFiles')) # # UserExtensions # if Module.GetUserExtensionList(): for UserExtension in Module.GetUserExtensionList(): Tmp = UserExtensionsXml() DomModule.appendChild( Tmp.ToXml(UserExtension, 'UserExtensions')) return DomModule