4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## @file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# This file is used to parse a Package file of .PKG file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#
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# http://opensource.org/licenses/bsd-license.php
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#
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.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync'''
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncPackageSurfaceAreaXml
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync'''
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom xml.dom import minidom
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom Library.String import GetStringOfList
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom Library.Xml.XmlRoutines import XmlElement
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom Library.Xml.XmlRoutines import XmlNode
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom Library.Xml.XmlRoutines import XmlList
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom Library.Xml.XmlRoutines import CreateXmlElement
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom Object.POM.CommonObject import IncludeObject
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom Object.POM.CommonObject import TextObject
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom Object.POM.PackageObject import PackageObject
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom Xml.CommonXml import ClonedFromXml
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom Xml.CommonXml import PackageHeaderXml
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom Xml.CommonXml import HelpTextXml
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom Xml.CommonXml import CommonDefinesXml
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom Xml.CommonXml import LibraryClassXml
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom Xml.CommonXml import UserExtensionsXml
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom Xml.CommonXml import MiscellaneousFileXml
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom Xml.GuidProtocolPpiXml import GuidXml
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom Xml.GuidProtocolPpiXml import ProtocolXml
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom Xml.GuidProtocolPpiXml import PpiXml
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom Xml.ModuleSurfaceAreaXml import ModuleSurfaceAreaXml
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom Xml.PcdXml import PcdEntryXml
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync##
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# IndustryStandardHeaderXml
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncclass IndustryStandardHeaderXml(object):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def __init__(self):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.HeaderFile = ''
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.HelpText = []
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def FromXml(self, Item, Key):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.HeaderFile = XmlElement(Item, '%s/HeaderFile' % Key)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for HelpTextItem in XmlList(Item, '%s/HelpText' % Key):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync HelpTextObj = HelpTextXml()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync HelpTextObj.FromXml(HelpTextItem, '%s/HelpText' % Key)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.HelpText.append(HelpTextObj)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Include = IncludeObject()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Include.SetFilePath(self.HeaderFile)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync HelpTxt = TextObject()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync HelpTxt.SetString(self.HelpText)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Include.SetHelpText(HelpTxt)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return Include
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def ToXml(self, IndustryStandardHeader, Key):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if self.HeaderFile:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync pass
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync AttributeList = []
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync NodeList = [['HeaderFile', IndustryStandardHeader.GetFilePath()]]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Root = CreateXmlElement('%s' % Key, '', NodeList, AttributeList)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return Root
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def __str__(self):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str = "HeaderFile = %s" % (self.HeaderFile)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for Item in self.HelpText:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str = Str + "\n\t" + str(Item)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return Str
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync##
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# PackageIncludeHeaderXml
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncclass PackageIncludeHeaderXml(object):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def __init__(self):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.HeaderFile = ''
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.CommonDefines = CommonDefinesXml()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.HelpText = []
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def FromXml(self, Item, Key):
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 = HelpTextXml()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync HelpTextObj.FromXml(HelpTextItem, '%s/HelpText' % Key)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.HelpText.append(HelpTextObj)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Include = IncludeObject()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Include.SetFilePath(self.HeaderFile)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Include.SetSupArchList(self.CommonDefines.SupArchList)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync HelpTxt = TextObject()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync HelpTxt.SetString(self.HelpText)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Include.SetHelpText(HelpTxt)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return Include
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def ToXml(self, PackageIncludeHeader, Key):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if self.HeaderFile:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync pass
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync AttributeList = [['SupArchList', GetStringOfList(PackageIncludeHeader.GetSupArchList())], \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ['SupModList', GetStringOfList(PackageIncludeHeader.GetSupModuleList())], ]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync HeaderFileNode = CreateXmlElement('HeaderFile', PackageIncludeHeader.FilePath, [], AttributeList)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync NodeList = [HeaderFileNode]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for Item in PackageIncludeHeader.GetHelpTextList():
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Tmp = HelpTextXml()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync NodeList.append(Tmp.ToXml(Item))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Root = CreateXmlElement('%s' % Key, '', NodeList, [])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return Root
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def __str__(self):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str = "HeaderFile = %s\n\t%s" % (self.HeaderFile, self.CommonDefines)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for Item in self.HelpText:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str = Str + "\n\t" + str(Item)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return Str
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync##
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# PcdCheckXml
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncclass PcdCheckXml(object):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def __init__(self):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.PcdCheck = ''
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def FromXml(self, Item, Key):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if Key:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync pass
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.PcdCheck = XmlElement(Item, 'PcdCheck')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return self.PcdCheck
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def ToXml(self, PcdCheck, Key):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if self.PcdCheck:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync pass
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Root = CreateXmlElement('%s' % Key, PcdCheck, [], [])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return Root
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def __str__(self):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return "PcdCheck = %s" % (self.PcdCheck)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync##
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# PackageSurfaceAreaXml
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncclass PackageSurfaceAreaXml(object):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def __init__(self):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.Package = None
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def FromXml(self, Item, Key):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if Key:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync pass
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Create a package object
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Package = PackageObject()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Header
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Tmp = PackageHeaderXml()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Tmp.FromXml(XmlNode(Item, '/PackageSurfaceArea/Header'), 'Header', Package)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # ClonedFrom
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Tmp = ClonedFromXml()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if XmlNode(Item, '/PackageSurfaceArea/ClonedFrom'):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ClonedFrom = Tmp.FromXml(XmlNode(Item, '/PackageSurfaceArea/ClonedFrom'), 'ClonedFrom')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Package.SetClonedFromList([ClonedFrom])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # LibraryClass
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for SubItem in XmlList(Item, '/PackageSurfaceArea/LibraryClassDeclarations/LibraryClass'):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Tmp = LibraryClassXml()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LibraryClass = Tmp.FromXml(SubItem, 'LibraryClass')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Package.SetLibraryClassList(Package.GetLibraryClassList() + [LibraryClass])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if XmlList(Item, '/PackageSurfaceArea/LibraryClassDeclarations') and \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync not XmlList(Item, '/PackageSurfaceArea/LibraryClassDeclarations/LibraryClass'):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Package.SetLibraryClassList([None])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # IndustryStandardHeader
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for SubItem in XmlList(Item, '/PackageSurfaceArea/IndustryStandardIncludes/IndustryStandardHeader'):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Tmp = IndustryStandardHeaderXml()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Include = Tmp.FromXml(SubItem, 'IndustryStandardHeader')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Package.SetStandardIncludeFileList(Package.GetStandardIncludeFileList() + [Include])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if XmlList(Item, '/PackageSurfaceArea/IndustryStandardIncludes') and \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync not XmlList(Item, '/PackageSurfaceArea/IndustryStandardIncludes/IndustryStandardHeader'):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Package.SetStandardIncludeFileList([None])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # PackageHeader
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for SubItem in XmlList(Item, '/PackageSurfaceArea/PackageIncludes/PackageHeader'):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Tmp = PackageIncludeHeaderXml()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Include = Tmp.FromXml(SubItem, 'PackageHeader')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Package.SetPackageIncludeFileList(Package.GetPackageIncludeFileList() + [Include])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if XmlList(Item, '/PackageSurfaceArea/PackageIncludes') and not \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync XmlList(Item, '/PackageSurfaceArea/PackageIncludes/PackageHeader'):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Package.SetPackageIncludeFileList([None])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Guid
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for SubItem in XmlList(Item, '/PackageSurfaceArea/GuidDeclarations/Entry'):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Tmp = GuidXml('Package')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync GuidProtocolPpi = Tmp.FromXml(SubItem, 'Entry')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Package.SetGuidList(Package.GetGuidList() + [GuidProtocolPpi])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if XmlList(Item, '/PackageSurfaceArea/GuidDeclarations') and not \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync XmlList(Item, '/PackageSurfaceArea/GuidDeclarations/Entry'):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Package.SetGuidList([None])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Protocol
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for SubItem in XmlList(Item, '/PackageSurfaceArea/ProtocolDeclarations/Entry'):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Tmp = ProtocolXml('Package')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync GuidProtocolPpi = Tmp.FromXml(SubItem, 'Entry')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Package.SetProtocolList(Package.GetProtocolList() + [GuidProtocolPpi])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if XmlList(Item, '/PackageSurfaceArea/ProtocolDeclarations') and not \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync XmlList(Item, '/PackageSurfaceArea/ProtocolDeclarations/Entry'):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Package.SetProtocolList([None])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Ppi
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for SubItem in XmlList(Item, '/PackageSurfaceArea/PpiDeclarations/Entry'):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Tmp = PpiXml('Package')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync GuidProtocolPpi = Tmp.FromXml(SubItem, 'Entry')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Package.SetPpiList(Package.GetPpiList() + [GuidProtocolPpi])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if XmlList(Item, '/PackageSurfaceArea/PpiDeclarations') and not \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync XmlList(Item, '/PackageSurfaceArea/PpiDeclarations/Entry'):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Package.SetPpiList([None])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # PcdEntry
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for SubItem in XmlList(Item, '/PackageSurfaceArea/PcdDeclarations/PcdEntry'):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Tmp = PcdEntryXml()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PcdEntry = Tmp.FromXml2(SubItem, 'PcdEntry')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Package.SetPcdList(Package.GetPcdList() + [PcdEntry])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if XmlList(Item, '/PackageSurfaceArea/PcdDeclarations') and not \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync XmlList(Item, '/PackageSurfaceArea/PcdDeclarations/PcdEntry'):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Package.SetPcdList([None])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # PcdCheck
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for SubItem in XmlList(Item, '/PackageSurfaceArea/PcdRelationshipChecks/PcdCheck'):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Tmp = PcdCheckXml()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PcdCheck = Tmp.FromXml(SubItem, 'PcdCheck')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Package.PcdChecks.append(PcdCheck)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Modules
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for SubItem in XmlList(Item, '/PackageSurfaceArea/Modules/ModuleSurfaceArea'):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Tmp = ModuleSurfaceAreaXml()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Module = Tmp.FromXml(SubItem, 'ModuleSurfaceArea')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ModuleDictKey = (Module.GetGuid(), Module.GetVersion(), Module.GetName(), Module.GetModulePath())
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Package.ModuleDict[ModuleDictKey] = Module
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # MiscellaneousFile
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Tmp = MiscellaneousFileXml()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync MiscFileList = Tmp.FromXml(XmlNode(Item, '/PackageSurfaceArea/MiscellaneousFiles'), 'MiscellaneousFiles')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if MiscFileList:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Package.SetMiscFileList([MiscFileList])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync else:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Package.SetMiscFileList([])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # UserExtensions
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for Item in XmlList(Item, '/PackageSurfaceArea/UserExtensions'):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Tmp = UserExtensionsXml()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UserExtension = Tmp.FromXml(Item, 'UserExtensions')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Package.UserExtensionList.append(UserExtension)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.Package = Package
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return self.Package
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def ToXml(self, Package):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if self.Package:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync pass
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Create PackageSurfaceArea node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DomPackage = minidom.Document().createElement('PackageSurfaceArea')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Header
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Tmp = PackageHeaderXml()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DomPackage.appendChild(Tmp.ToXml(Package, 'Header'))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # ClonedFrom
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Tmp = ClonedFromXml()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if Package.GetClonedFromList() != []:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DomPackage.appendChild(Tmp.ToXml(Package.GetClonedFromList[0], 'ClonedFrom'))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # LibraryClass
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LibraryClassNode = CreateXmlElement('LibraryClassDeclarations', '', [], [])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for LibraryClass in Package.GetLibraryClassList():
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Tmp = LibraryClassXml()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LibraryClassNode.appendChild(Tmp.ToXml(LibraryClass, 'LibraryClass'))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DomPackage.appendChild(LibraryClassNode)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # IndustryStandardHeader
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IndustryStandardHeaderNode = CreateXmlElement('IndustryStandardIncludes', '', [], [])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for Include in Package.GetStandardIncludeFileList():
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Tmp = IndustryStandardHeaderXml()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IndustryStandardHeaderNode.appendChild(Tmp.ToXml(Include, 'IndustryStandardHeader'))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DomPackage.appendChild(IndustryStandardHeaderNode)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # PackageHeader
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PackageIncludeHeaderNode = CreateXmlElement('PackageIncludes', '', [], [])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for Include in Package.GetPackageIncludeFileList():
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Tmp = PackageIncludeHeaderXml()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PackageIncludeHeaderNode.appendChild(Tmp.ToXml(Include, 'PackageHeader'))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DomPackage.appendChild(PackageIncludeHeaderNode)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ModuleNode = CreateXmlElement('Modules', '', [], [])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for Module in Package.GetModuleDict().values():
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Tmp = ModuleSurfaceAreaXml()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ModuleNode.appendChild(Tmp.ToXml(Module))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DomPackage.appendChild(ModuleNode)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Guid
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync GuidProtocolPpiNode = CreateXmlElement('GuidDeclarations', '', [], [])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for GuidProtocolPpi in Package.GetGuidList():
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Tmp = GuidXml('Package')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync GuidProtocolPpiNode.appendChild(Tmp.ToXml\
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync (GuidProtocolPpi, 'Entry'))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DomPackage.appendChild(GuidProtocolPpiNode)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Protocol
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync GuidProtocolPpiNode = \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CreateXmlElement('ProtocolDeclarations', '', [], [])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for GuidProtocolPpi in Package.GetProtocolList():
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Tmp = ProtocolXml('Package')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync GuidProtocolPpiNode.appendChild\
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync (Tmp.ToXml(GuidProtocolPpi, 'Entry'))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DomPackage.appendChild(GuidProtocolPpiNode)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Ppi
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync GuidProtocolPpiNode = CreateXmlElement('PpiDeclarations', '', [], [])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for GuidProtocolPpi in Package.GetPpiList():
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Tmp = PpiXml('Package')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync GuidProtocolPpiNode.appendChild\
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync (Tmp.ToXml(GuidProtocolPpi, 'Entry'))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DomPackage.appendChild(GuidProtocolPpiNode)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # PcdEntry
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PcdEntryNode = CreateXmlElement('PcdDeclarations', '', [], [])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for PcdEntry in Package.GetPcdList():
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Tmp = PcdEntryXml()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PcdEntryNode.appendChild(Tmp.ToXml2(PcdEntry, 'PcdEntry'))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DomPackage.appendChild(PcdEntryNode)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # MiscellaneousFile
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Tmp = MiscellaneousFileXml()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if Package.GetMiscFileList():
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DomPackage.appendChild(Tmp.ToXml(Package.GetMiscFileList()[0], 'MiscellaneousFiles'))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # UserExtensions
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if Package.GetUserExtensionList():
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for UserExtension in Package.GetUserExtensionList():
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Tmp = UserExtensionsXml()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DomPackage.appendChild(Tmp.ToXml(UserExtension, 'UserExtensions'))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return DomPackage