4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# This file is used to parse a Package file of .PKG file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# This program and the accompanying materials are licensed and made available
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# under the terms and conditions of the BSD License which accompanies this
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# distribution. The full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncPackageSurfaceAreaXml
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom Library.Xml.XmlRoutines import CreateXmlElement
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom Xml.ModuleSurfaceAreaXml import ModuleSurfaceAreaXml
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# IndustryStandardHeaderXml
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.HeaderFile = XmlElement(Item, '%s/HeaderFile' % Key)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for HelpTextItem in XmlList(Item, '%s/HelpText' % Key):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync HelpTextObj.FromXml(HelpTextItem, '%s/HelpText' % Key)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync NodeList = [['HeaderFile', IndustryStandardHeader.GetFilePath()]]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Root = CreateXmlElement('%s' % Key, '', NodeList, AttributeList)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# PackageIncludeHeaderXml
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.HeaderFile = XmlElement(Item, '%s/HeaderFile' % Key)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.CommonDefines.FromXml(XmlNode(Item, '%s/HeaderFile' % Key), 'HeaderFile')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for HelpTextItem in XmlList(Item, '%s/HelpText' % Key):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync HelpTextObj.FromXml(HelpTextItem, '%s/HelpText' % Key)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Include.SetSupArchList(self.CommonDefines.SupArchList)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync AttributeList = [['SupArchList', GetStringOfList(PackageIncludeHeader.GetSupArchList())], \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ['SupModList', GetStringOfList(PackageIncludeHeader.GetSupModuleList())], ]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync HeaderFileNode = CreateXmlElement('HeaderFile', PackageIncludeHeader.FilePath, [], AttributeList)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for Item in PackageIncludeHeader.GetHelpTextList():
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Root = CreateXmlElement('%s' % Key, '', NodeList, [])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str = "HeaderFile = %s\n\t%s" % (self.HeaderFile, self.CommonDefines)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# PcdCheckXml
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Root = CreateXmlElement('%s' % Key, PcdCheck, [], [])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# PackageSurfaceAreaXml
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Create a package object
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Tmp.FromXml(XmlNode(Item, '/PackageSurfaceArea/Header'), 'Header', Package)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # ClonedFrom
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if XmlNode(Item, '/PackageSurfaceArea/ClonedFrom'):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ClonedFrom = Tmp.FromXml(XmlNode(Item, '/PackageSurfaceArea/ClonedFrom'), 'ClonedFrom')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # LibraryClass
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for SubItem in XmlList(Item, '/PackageSurfaceArea/LibraryClassDeclarations/LibraryClass'):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LibraryClass = Tmp.FromXml(SubItem, 'LibraryClass')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Package.SetLibraryClassList(Package.GetLibraryClassList() + [LibraryClass])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if XmlList(Item, '/PackageSurfaceArea/LibraryClassDeclarations') and \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync not XmlList(Item, '/PackageSurfaceArea/LibraryClassDeclarations/LibraryClass'):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # IndustryStandardHeader
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for SubItem in XmlList(Item, '/PackageSurfaceArea/IndustryStandardIncludes/IndustryStandardHeader'):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Include = Tmp.FromXml(SubItem, 'IndustryStandardHeader')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Package.SetStandardIncludeFileList(Package.GetStandardIncludeFileList() + [Include])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if XmlList(Item, '/PackageSurfaceArea/IndustryStandardIncludes') and \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync not XmlList(Item, '/PackageSurfaceArea/IndustryStandardIncludes/IndustryStandardHeader'):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # PackageHeader
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for SubItem in XmlList(Item, '/PackageSurfaceArea/PackageIncludes/PackageHeader'):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Package.SetPackageIncludeFileList(Package.GetPackageIncludeFileList() + [Include])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if XmlList(Item, '/PackageSurfaceArea/PackageIncludes') and not \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync XmlList(Item, '/PackageSurfaceArea/PackageIncludes/PackageHeader'):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for SubItem in XmlList(Item, '/PackageSurfaceArea/GuidDeclarations/Entry'):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Package.SetGuidList(Package.GetGuidList() + [GuidProtocolPpi])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if XmlList(Item, '/PackageSurfaceArea/GuidDeclarations') and not \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync XmlList(Item, '/PackageSurfaceArea/GuidDeclarations/Entry'):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for SubItem in XmlList(Item, '/PackageSurfaceArea/ProtocolDeclarations/Entry'):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Package.SetProtocolList(Package.GetProtocolList() + [GuidProtocolPpi])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if XmlList(Item, '/PackageSurfaceArea/ProtocolDeclarations') and not \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync XmlList(Item, '/PackageSurfaceArea/ProtocolDeclarations/Entry'):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for SubItem in XmlList(Item, '/PackageSurfaceArea/PpiDeclarations/Entry'):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Package.SetPpiList(Package.GetPpiList() + [GuidProtocolPpi])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if XmlList(Item, '/PackageSurfaceArea/PpiDeclarations') and not \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync XmlList(Item, '/PackageSurfaceArea/PpiDeclarations/Entry'):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for SubItem in XmlList(Item, '/PackageSurfaceArea/PcdDeclarations/PcdEntry'):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Package.SetPcdList(Package.GetPcdList() + [PcdEntry])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if XmlList(Item, '/PackageSurfaceArea/PcdDeclarations') and not \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync XmlList(Item, '/PackageSurfaceArea/PcdDeclarations/PcdEntry'):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for SubItem in XmlList(Item, '/PackageSurfaceArea/PcdRelationshipChecks/PcdCheck'):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for SubItem in XmlList(Item, '/PackageSurfaceArea/Modules/ModuleSurfaceArea'):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ModuleDictKey = (Module.GetGuid(), Module.GetVersion(), Module.GetName(), Module.GetModulePath())
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # MiscellaneousFile
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync MiscFileList = Tmp.FromXml(XmlNode(Item, '/PackageSurfaceArea/MiscellaneousFiles'), 'MiscellaneousFiles')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # UserExtensions
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for Item in XmlList(Item, '/PackageSurfaceArea/UserExtensions'):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UserExtension = Tmp.FromXml(Item, 'UserExtensions')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Create PackageSurfaceArea node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DomPackage = minidom.Document().createElement('PackageSurfaceArea')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DomPackage.appendChild(Tmp.ToXml(Package, 'Header'))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # ClonedFrom
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DomPackage.appendChild(Tmp.ToXml(Package.GetClonedFromList[0], 'ClonedFrom'))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # LibraryClass
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LibraryClassNode = CreateXmlElement('LibraryClassDeclarations', '', [], [])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LibraryClassNode.appendChild(Tmp.ToXml(LibraryClass, 'LibraryClass'))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # IndustryStandardHeader
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IndustryStandardHeaderNode = CreateXmlElement('IndustryStandardIncludes', '', [], [])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for Include in Package.GetStandardIncludeFileList():
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IndustryStandardHeaderNode.appendChild(Tmp.ToXml(Include, 'IndustryStandardHeader'))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # PackageHeader
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PackageIncludeHeaderNode = CreateXmlElement('PackageIncludes', '', [], [])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for Include in Package.GetPackageIncludeFileList():
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PackageIncludeHeaderNode.appendChild(Tmp.ToXml(Include, 'PackageHeader'))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ModuleNode = CreateXmlElement('Modules', '', [], [])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync GuidProtocolPpiNode = CreateXmlElement('GuidDeclarations', '', [], [])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CreateXmlElement('ProtocolDeclarations', '', [], [])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync GuidProtocolPpiNode = CreateXmlElement('PpiDeclarations', '', [], [])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PcdEntryNode = CreateXmlElement('PcdDeclarations', '', [], [])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PcdEntryNode.appendChild(Tmp.ToXml2(PcdEntry, 'PcdEntry'))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # MiscellaneousFile
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DomPackage.appendChild(Tmp.ToXml(Package.GetMiscFileList()[0], 'MiscellaneousFiles'))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # UserExtensions
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for UserExtension in Package.GetUserExtensionList():
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DomPackage.appendChild(Tmp.ToXml(UserExtension, 'UserExtensions'))