From 30fdf1140b8d1ce93f3821d986fa165552023440 Mon Sep 17 00:00:00 2001 From: lgao4 Date: Fri, 17 Jul 2009 09:10:31 +0000 Subject: Check In tool source code based on Build tool project revision r1655. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8964 6f19259b-4bc3-4df7-8a09-765794883524 --- BaseTools/Source/Python/spd2dec/LoadSpd.py | 273 +++++++++++++++++++++++++++++ 1 file changed, 273 insertions(+) create mode 100644 BaseTools/Source/Python/spd2dec/LoadSpd.py (limited to 'BaseTools/Source/Python/spd2dec/LoadSpd.py') diff --git a/BaseTools/Source/Python/spd2dec/LoadSpd.py b/BaseTools/Source/Python/spd2dec/LoadSpd.py new file mode 100644 index 0000000000..e94e7fc317 --- /dev/null +++ b/BaseTools/Source/Python/spd2dec/LoadSpd.py @@ -0,0 +1,273 @@ +## @file +# Open an SPD file and load all its contents to a PackageClass object. +# +# Copyright (c) 2007, Intel Corporation +# All rights reserved. This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# + +## +# Import Modules +# +import os +from Common.XmlRoutines import * +from Common.MigrationUtilities import * +from CommonDataClass.PackageClass import * + + +## Load a list of Package Cloned Records. +# +# Read an input Package XML DOM object and return a list of Cloned Records +# contained in the DOM object. +# +# @param XmlSpd An XML DOM object read from SPD file. +# +# @retvel ClonedRecords A list of Cloned Records loaded from XmlSpd. +# +def LoadPackageClonedRecords(XmlSpd): + XmlTag = "PackageSurfaceArea/PackageDefinitions/ClonedFrom/Cloned" + return map(LoadClonedRecord, XmlList(XmlSpd, XmlTag)) + + +## Load Package Header. +# +# Read an input Package XML DOM object and return Package Header class object +# contained in the DOM object. +# +# @param XmlSpd An XML DOM object read from SPD file. +# @param SpdFileName The file path of SPD File. +# +# @retvel PackageHeader A new Package Header object loaded from XmlSpd. +# +def LoadPackageHeader(XmlSpd, SpdFileName): + PackageHeader = PackageHeaderClass() + + XmlTag = "PackageSurfaceArea/SpdHeader" + SpdHeader = XmlNode(XmlSpd, XmlTag) + + SetIdentification(PackageHeader, SpdHeader, "PackageName", SpdFileName) + SetCommonHeader(PackageHeader, SpdHeader) + + XmlTag = "PackageSurfaceArea/PackageDefinitions/ReadOnly" + if XmlElement(XmlSpd, XmlTag).lower() == "true": + PackageHeader.ReadOnly = True + + XmlTag = "PackageSurfaceArea/PackageDefinitions/RePackage" + if XmlElement(XmlSpd, XmlTag).lower() == "true": + PackageHeader.RePackage = True + + PackageHeader.ClonedFrom = LoadPackageClonedRecords(XmlSpd) + + return PackageHeader + + +## Load a list of Package Library Classes. +# +# Read an input Package XML DOM object and return a list of Library Classes +# contained in the DOM object. +# +# @param XmlSpd An XML DOM object read from SPD file. +# +# @retvel LibraryClasses A list of Library Classes loaded from XmlSpd. +# +def LoadPackageLibraryClasses(XmlSpd): + XmlTag = "PackageSurfaceArea/LibraryClassDeclarations/LibraryClass" + return map(LoadLibraryClass, XmlList(XmlSpd, XmlTag)) + + +## Load a new Package Industry Std Header class object. +# +# Read an input XML IndustryStdHeader DOM object and return an object of +# Industry Std Header contained in the DOM object. +# +# @param XmlIndustryStdHeader A child XML DOM object in Package XML DOM. +# +# @retvel PackageIndustryStdHeader A new Industry Std Header object created by XmlIndustryStdHeader. +# +def LoadPackageIndustryStdHeader(XmlIndustryStdHeader): + PackageIndustryStdHeader = PackageIndustryStdHeaderClass() + + XmlTag = "Name" + Name = XmlAttribute(XmlIndustryStdHeader, XmlTag) + PackageIndustryStdHeader.Name = Name + + XmlTag = "IndustryStdHeader/IncludeHeader" + IncludeHeader = XmlElement(XmlIndustryStdHeader, XmlTag) + PackageIndustryStdHeader.IncludeHeader = IncludeHeader + + SetCommon(PackageIndustryStdHeader, XmlIndustryStdHeader) + + return PackageIndustryStdHeader + + +## Load a list of Package Industry Std Headers. +# +# Read an input Package XML DOM object and return a list of Industry Std Headers +# contained in the DOM object. +# +# @param XmlSpd An XML DOM object read from SPD file. +# +# @retvel IndustryStdHeaders A list of Industry Std Headers loaded from XmlSpd. +# +def LoadPackageIndustryStdHeaders(XmlSpd): + XmlTag = "PackageSurfaceArea/IndustryStdIncludes/IndustryStdHeader" + return map(LoadPackageIndustryStdHeader, XmlList(XmlSpd, XmlTag)) + + +## Load a list of Package Module Files. +# +# Read an input Package XML DOM object and return a list of Module Files +# contained in the DOM object. +# +# @param XmlSpd An XML DOM object read from SPD file. +# +# @retvel ModuleFiles A list of Module Files loaded from XmlSpd. +# +def LoadPackageModuleFiles(XmlSpd): + XmlTag = "PackageSurfaceArea/MsaFiles/Filename" + return XmlElementList(XmlSpd, XmlTag) + + +## Load a new Package Include Pkg Header class object. +# +# Read an input XML IncludePkgHeader DOM object and return an object of Include +# Package Header contained in the DOM object. +# +# @param XmlPackageIncludeHeader A child XML DOM object in Package XML DOM. +# +# @retvel PackageIncludePkgHeader A new Include Pkg Header object created by +# XmlPackageIncludeHeader. +# +def LoadPackageIncludePkgHeader(XmlPackageIncludeHeader): + PackageIncludeHeader = PackageIncludePkgHeaderClass() + + IncludeHeader = XmlElementData(XmlPackageIncludeHeader) + PackageIncludeHeader.IncludeHeader = IncludeHeader + + XmlTag = "ModuleType" + ModuleTypes = XmlAttribute(XmlPackageIncludeHeader, XmlTag) + PackageIncludeHeader.ModuleType = ModuleTypes.split() + + return PackageIncludeHeader + + +## Load a list of Package Include Pkg Headers. +# +# Read an input Package XML DOM object and return a list of Include Pkg Headers +# contained in the DOM object. +# +# @param XmlSpd An XML DOM object read from SPD file. +# +# @retvel IncludePkgHeaders A list of Include Pkg Headers loaded from XmlSpd. +# +def LoadPackageIncludePkgHeaders(XmlSpd): + XmlTag = "PackageSurfaceArea/PackageHeaders/IncludePkgHeader" + return map(LoadPackageIncludePkgHeader, XmlList(XmlSpd, XmlTag)) + + +## Load a list of Package Guid Declarations. +# +# Read an input Package XML DOM object and return a list of Guid Declarations +# contained in the DOM object. +# +# @param XmlSpd An XML DOM object read from SPD file. +# +# @retvel GuidDeclarations A list of Guid Declarations loaded from XmlSpd. +# +def LoadPackageGuidDeclarations(XmlSpd): + XmlTag = "PackageSurfaceArea/GuidDeclarations/Entry" + return map(LoadGuidProtocolPpiCommon, XmlList(XmlSpd, XmlTag)) + + +## Load a list of Package Protocol Declarations. +# +# Read an input Package XML DOM object and return a list of Protocol Declarations +# contained in the DOM object. +# +# @param XmlSpd An XML DOM object read from SPD file. +# +# @retvel ProtocolDeclarations A list of Protocol Declarations loaded from XmlSpd. +# +def LoadPackageProtocolDeclarations(XmlSpd): + XmlTag = "PackageSurfaceArea/ProtocolDeclarations/Entry" + return map(LoadGuidProtocolPpiCommon, XmlList(XmlSpd, XmlTag)) + + +## Load a list of Package Ppi Declarations. +# +# Read an input Package XML DOM object and return a list of Ppi Declarations +# contained in the DOM object. +# +# @param XmlSpd An XML DOM object read from SPD file. +# +# @retvel PpiDeclarations A list of Ppi Declarations loaded from XmlSpd. +# +def LoadPackagePpiDeclarations(XmlSpd): + XmlTag = "PackageSurfaceArea/PpiDeclarations/Entry" + return map(LoadGuidProtocolPpiCommon, XmlList(XmlSpd, XmlTag)) + + +## Load a list of Package Pcd Declarations. +# +# Read an input Package XML DOM object and return a list of Pcd Declarations +# contained in the DOM object. +# +# @param XmlSpd An XML DOM object read from SPD file. +# +# @retvel PcdDeclarations A list of Pcd Declarations loaded from XmlSpd. +# +def LoadPackagePcdDeclarations(XmlSpd): + XmlTag = "PackageSurfaceArea/PcdDeclarations/PcdEntry" + return map(LoadPcd, XmlList(XmlSpd, XmlTag)) + + +## Load a list of Package User Extensions. +# +# Read an input Package XML DOM object and return a list of User Extensions +# contained in the DOM object. +# +# @param XmlSpd An XML DOM object read from SPD file. +# +# @retvel UserExtensions A list of User Extensions loaded from XmlSpd. +# +def LoadPackageUserExtensions(XmlSpd): + XmlTag = "PackageSurfaceArea/UserExtensions" + return map(LoadUserExtensions, XmlList(XmlSpd, XmlTag)) + + +## Load a new Package class object. +# +# Read an input SPD File and return a new Package class Object. +# +# @param SpdFileName An XML DOM object read from SPD file. +# +# @retvel Package A new Module class object loaded from SPD File. +# +def LoadSpd(SpdFileName): + XmlSpd = XmlParseFile(SpdFileName) + EdkLogger.verbose("Xml Object loaded for file %s" % SpdFileName) + + Package = PackageClass() + Package.Header = LoadPackageHeader(XmlSpd, SpdFileName) + Package.LibraryClassDeclarations = LoadPackageLibraryClasses(XmlSpd) + Package.IndustryStdHeaders = LoadPackageIndustryStdHeaders(XmlSpd) + Package.ModuleFiles = LoadPackageModuleFiles(XmlSpd) + Package.PackageIncludePkgHeaders = LoadPackageIncludePkgHeaders(XmlSpd) + Package.GuidDeclarations = LoadPackageGuidDeclarations(XmlSpd) + Package.ProtocolDeclarations = LoadPackageProtocolDeclarations(XmlSpd) + Package.PpiDeclarations = LoadPackagePpiDeclarations(XmlSpd) + Package.PcdDeclarations = LoadPackagePcdDeclarations(XmlSpd) + Package.UserExtensions = LoadPackageUserExtensions(XmlSpd) + + return Package + + +# This acts like the main() function for the script, unless it is 'import'ed +# into another script. +if __name__ == '__main__': + pass -- cgit v1.2.3