]>
Commit | Line | Data |
---|---|---|
30fdf114 LG |
1 | ## @file\r |
2 | # Open an SPD file and load all its contents to a PackageClass object.\r | |
3 | #\r | |
40d841f6 LG |
4 | # Copyright (c) 2007, Intel Corporation. All rights reserved.<BR>\r |
5 | # This program and the accompanying materials\r | |
30fdf114 LG |
6 | # are licensed and made available under the terms and conditions of the BSD License\r |
7 | # which accompanies this distribution. The full text of the license may be found at\r | |
8 | # http://opensource.org/licenses/bsd-license.php\r | |
9 | #\r | |
10 | # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r | |
11 | # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r | |
12 | #\r | |
13 | \r | |
14 | ##\r | |
15 | # Import Modules\r | |
16 | #\r | |
17 | import os\r | |
18 | from Common.XmlRoutines import *\r | |
19 | from Common.MigrationUtilities import *\r | |
20 | from CommonDataClass.PackageClass import *\r | |
21 | \r | |
22 | \r | |
23 | ## Load a list of Package Cloned Records.\r | |
24 | #\r | |
25 | # Read an input Package XML DOM object and return a list of Cloned Records\r | |
26 | # contained in the DOM object.\r | |
27 | #\r | |
28 | # @param XmlSpd An XML DOM object read from SPD file.\r | |
29 | #\r | |
30 | # @retvel ClonedRecords A list of Cloned Records loaded from XmlSpd.\r | |
31 | #\r | |
32 | def LoadPackageClonedRecords(XmlSpd):\r | |
33 | XmlTag = "PackageSurfaceArea/PackageDefinitions/ClonedFrom/Cloned"\r | |
34 | return map(LoadClonedRecord, XmlList(XmlSpd, XmlTag))\r | |
35 | \r | |
36 | \r | |
37 | ## Load Package Header.\r | |
38 | #\r | |
39 | # Read an input Package XML DOM object and return Package Header class object\r | |
40 | # contained in the DOM object.\r | |
41 | #\r | |
42 | # @param XmlSpd An XML DOM object read from SPD file.\r | |
43 | # @param SpdFileName The file path of SPD File.\r | |
44 | #\r | |
45 | # @retvel PackageHeader A new Package Header object loaded from XmlSpd.\r | |
46 | #\r | |
47 | def LoadPackageHeader(XmlSpd, SpdFileName):\r | |
48 | PackageHeader = PackageHeaderClass()\r | |
49 | \r | |
50 | XmlTag = "PackageSurfaceArea/SpdHeader"\r | |
51 | SpdHeader = XmlNode(XmlSpd, XmlTag)\r | |
52 | \r | |
53 | SetIdentification(PackageHeader, SpdHeader, "PackageName", SpdFileName)\r | |
54 | SetCommonHeader(PackageHeader, SpdHeader)\r | |
55 | \r | |
56 | XmlTag = "PackageSurfaceArea/PackageDefinitions/ReadOnly"\r | |
57 | if XmlElement(XmlSpd, XmlTag).lower() == "true":\r | |
58 | PackageHeader.ReadOnly = True\r | |
59 | \r | |
60 | XmlTag = "PackageSurfaceArea/PackageDefinitions/RePackage"\r | |
61 | if XmlElement(XmlSpd, XmlTag).lower() == "true":\r | |
62 | PackageHeader.RePackage = True\r | |
63 | \r | |
64 | PackageHeader.ClonedFrom = LoadPackageClonedRecords(XmlSpd)\r | |
65 | \r | |
66 | return PackageHeader\r | |
67 | \r | |
68 | \r | |
69 | ## Load a list of Package Library Classes.\r | |
70 | #\r | |
71 | # Read an input Package XML DOM object and return a list of Library Classes\r | |
72 | # contained in the DOM object.\r | |
73 | #\r | |
74 | # @param XmlSpd An XML DOM object read from SPD file.\r | |
75 | #\r | |
76 | # @retvel LibraryClasses A list of Library Classes loaded from XmlSpd.\r | |
77 | #\r | |
78 | def LoadPackageLibraryClasses(XmlSpd):\r | |
79 | XmlTag = "PackageSurfaceArea/LibraryClassDeclarations/LibraryClass"\r | |
80 | return map(LoadLibraryClass, XmlList(XmlSpd, XmlTag))\r | |
81 | \r | |
82 | \r | |
83 | ## Load a new Package Industry Std Header class object.\r | |
84 | #\r | |
85 | # Read an input XML IndustryStdHeader DOM object and return an object of\r | |
86 | # Industry Std Header contained in the DOM object.\r | |
87 | #\r | |
88 | # @param XmlIndustryStdHeader A child XML DOM object in Package XML DOM.\r | |
89 | #\r | |
90 | # @retvel PackageIndustryStdHeader A new Industry Std Header object created by XmlIndustryStdHeader.\r | |
91 | #\r | |
92 | def LoadPackageIndustryStdHeader(XmlIndustryStdHeader):\r | |
93 | PackageIndustryStdHeader = PackageIndustryStdHeaderClass()\r | |
94 | \r | |
95 | XmlTag = "Name"\r | |
96 | Name = XmlAttribute(XmlIndustryStdHeader, XmlTag)\r | |
97 | PackageIndustryStdHeader.Name = Name\r | |
98 | \r | |
99 | XmlTag = "IndustryStdHeader/IncludeHeader"\r | |
100 | IncludeHeader = XmlElement(XmlIndustryStdHeader, XmlTag)\r | |
101 | PackageIndustryStdHeader.IncludeHeader = IncludeHeader\r | |
102 | \r | |
103 | SetCommon(PackageIndustryStdHeader, XmlIndustryStdHeader)\r | |
104 | \r | |
105 | return PackageIndustryStdHeader\r | |
106 | \r | |
107 | \r | |
108 | ## Load a list of Package Industry Std Headers.\r | |
109 | #\r | |
110 | # Read an input Package XML DOM object and return a list of Industry Std Headers\r | |
111 | # contained in the DOM object.\r | |
112 | #\r | |
113 | # @param XmlSpd An XML DOM object read from SPD file.\r | |
114 | #\r | |
115 | # @retvel IndustryStdHeaders A list of Industry Std Headers loaded from XmlSpd.\r | |
116 | #\r | |
117 | def LoadPackageIndustryStdHeaders(XmlSpd):\r | |
118 | XmlTag = "PackageSurfaceArea/IndustryStdIncludes/IndustryStdHeader"\r | |
119 | return map(LoadPackageIndustryStdHeader, XmlList(XmlSpd, XmlTag))\r | |
120 | \r | |
121 | \r | |
122 | ## Load a list of Package Module Files.\r | |
123 | #\r | |
124 | # Read an input Package XML DOM object and return a list of Module Files\r | |
125 | # contained in the DOM object.\r | |
126 | #\r | |
127 | # @param XmlSpd An XML DOM object read from SPD file.\r | |
128 | #\r | |
129 | # @retvel ModuleFiles A list of Module Files loaded from XmlSpd.\r | |
130 | #\r | |
131 | def LoadPackageModuleFiles(XmlSpd):\r | |
132 | XmlTag = "PackageSurfaceArea/MsaFiles/Filename"\r | |
133 | return XmlElementList(XmlSpd, XmlTag)\r | |
134 | \r | |
135 | \r | |
136 | ## Load a new Package Include Pkg Header class object.\r | |
137 | #\r | |
138 | # Read an input XML IncludePkgHeader DOM object and return an object of Include\r | |
139 | # Package Header contained in the DOM object.\r | |
140 | #\r | |
141 | # @param XmlPackageIncludeHeader A child XML DOM object in Package XML DOM.\r | |
142 | #\r | |
143 | # @retvel PackageIncludePkgHeader A new Include Pkg Header object created by\r | |
144 | # XmlPackageIncludeHeader.\r | |
145 | #\r | |
146 | def LoadPackageIncludePkgHeader(XmlPackageIncludeHeader):\r | |
147 | PackageIncludeHeader = PackageIncludePkgHeaderClass()\r | |
148 | \r | |
149 | IncludeHeader = XmlElementData(XmlPackageIncludeHeader)\r | |
150 | PackageIncludeHeader.IncludeHeader = IncludeHeader\r | |
151 | \r | |
152 | XmlTag = "ModuleType"\r | |
153 | ModuleTypes = XmlAttribute(XmlPackageIncludeHeader, XmlTag)\r | |
154 | PackageIncludeHeader.ModuleType = ModuleTypes.split()\r | |
155 | \r | |
156 | return PackageIncludeHeader\r | |
157 | \r | |
158 | \r | |
159 | ## Load a list of Package Include Pkg Headers.\r | |
160 | #\r | |
161 | # Read an input Package XML DOM object and return a list of Include Pkg Headers\r | |
162 | # contained in the DOM object.\r | |
163 | #\r | |
164 | # @param XmlSpd An XML DOM object read from SPD file.\r | |
165 | #\r | |
166 | # @retvel IncludePkgHeaders A list of Include Pkg Headers loaded from XmlSpd.\r | |
167 | #\r | |
168 | def LoadPackageIncludePkgHeaders(XmlSpd):\r | |
169 | XmlTag = "PackageSurfaceArea/PackageHeaders/IncludePkgHeader"\r | |
170 | return map(LoadPackageIncludePkgHeader, XmlList(XmlSpd, XmlTag))\r | |
171 | \r | |
172 | \r | |
173 | ## Load a list of Package Guid Declarations.\r | |
174 | #\r | |
175 | # Read an input Package XML DOM object and return a list of Guid Declarations\r | |
176 | # contained in the DOM object.\r | |
177 | #\r | |
178 | # @param XmlSpd An XML DOM object read from SPD file.\r | |
179 | #\r | |
180 | # @retvel GuidDeclarations A list of Guid Declarations loaded from XmlSpd.\r | |
181 | #\r | |
182 | def LoadPackageGuidDeclarations(XmlSpd):\r | |
183 | XmlTag = "PackageSurfaceArea/GuidDeclarations/Entry"\r | |
184 | return map(LoadGuidProtocolPpiCommon, XmlList(XmlSpd, XmlTag))\r | |
185 | \r | |
186 | \r | |
187 | ## Load a list of Package Protocol Declarations.\r | |
188 | #\r | |
189 | # Read an input Package XML DOM object and return a list of Protocol Declarations\r | |
190 | # contained in the DOM object.\r | |
191 | #\r | |
192 | # @param XmlSpd An XML DOM object read from SPD file.\r | |
193 | #\r | |
194 | # @retvel ProtocolDeclarations A list of Protocol Declarations loaded from XmlSpd.\r | |
195 | #\r | |
196 | def LoadPackageProtocolDeclarations(XmlSpd):\r | |
197 | XmlTag = "PackageSurfaceArea/ProtocolDeclarations/Entry"\r | |
198 | return map(LoadGuidProtocolPpiCommon, XmlList(XmlSpd, XmlTag))\r | |
199 | \r | |
200 | \r | |
201 | ## Load a list of Package Ppi Declarations.\r | |
202 | #\r | |
203 | # Read an input Package XML DOM object and return a list of Ppi Declarations\r | |
204 | # contained in the DOM object.\r | |
205 | #\r | |
206 | # @param XmlSpd An XML DOM object read from SPD file.\r | |
207 | #\r | |
208 | # @retvel PpiDeclarations A list of Ppi Declarations loaded from XmlSpd.\r | |
209 | #\r | |
210 | def LoadPackagePpiDeclarations(XmlSpd):\r | |
211 | XmlTag = "PackageSurfaceArea/PpiDeclarations/Entry"\r | |
212 | return map(LoadGuidProtocolPpiCommon, XmlList(XmlSpd, XmlTag))\r | |
213 | \r | |
214 | \r | |
215 | ## Load a list of Package Pcd Declarations.\r | |
216 | #\r | |
217 | # Read an input Package XML DOM object and return a list of Pcd Declarations\r | |
218 | # contained in the DOM object.\r | |
219 | #\r | |
220 | # @param XmlSpd An XML DOM object read from SPD file.\r | |
221 | #\r | |
222 | # @retvel PcdDeclarations A list of Pcd Declarations loaded from XmlSpd.\r | |
223 | #\r | |
224 | def LoadPackagePcdDeclarations(XmlSpd):\r | |
225 | XmlTag = "PackageSurfaceArea/PcdDeclarations/PcdEntry"\r | |
226 | return map(LoadPcd, XmlList(XmlSpd, XmlTag))\r | |
227 | \r | |
228 | \r | |
229 | ## Load a list of Package User Extensions.\r | |
230 | #\r | |
231 | # Read an input Package XML DOM object and return a list of User Extensions\r | |
232 | # contained in the DOM object.\r | |
233 | #\r | |
234 | # @param XmlSpd An XML DOM object read from SPD file.\r | |
235 | #\r | |
236 | # @retvel UserExtensions A list of User Extensions loaded from XmlSpd.\r | |
237 | #\r | |
238 | def LoadPackageUserExtensions(XmlSpd):\r | |
239 | XmlTag = "PackageSurfaceArea/UserExtensions"\r | |
240 | return map(LoadUserExtensions, XmlList(XmlSpd, XmlTag))\r | |
241 | \r | |
242 | \r | |
243 | ## Load a new Package class object.\r | |
244 | #\r | |
245 | # Read an input SPD File and return a new Package class Object.\r | |
246 | #\r | |
247 | # @param SpdFileName An XML DOM object read from SPD file.\r | |
248 | #\r | |
249 | # @retvel Package A new Module class object loaded from SPD File.\r | |
250 | #\r | |
251 | def LoadSpd(SpdFileName):\r | |
252 | XmlSpd = XmlParseFile(SpdFileName)\r | |
253 | EdkLogger.verbose("Xml Object loaded for file %s" % SpdFileName)\r | |
254 | \r | |
255 | Package = PackageClass()\r | |
256 | Package.Header = LoadPackageHeader(XmlSpd, SpdFileName)\r | |
257 | Package.LibraryClassDeclarations = LoadPackageLibraryClasses(XmlSpd)\r | |
258 | Package.IndustryStdHeaders = LoadPackageIndustryStdHeaders(XmlSpd)\r | |
259 | Package.ModuleFiles = LoadPackageModuleFiles(XmlSpd)\r | |
260 | Package.PackageIncludePkgHeaders = LoadPackageIncludePkgHeaders(XmlSpd)\r | |
261 | Package.GuidDeclarations = LoadPackageGuidDeclarations(XmlSpd)\r | |
262 | Package.ProtocolDeclarations = LoadPackageProtocolDeclarations(XmlSpd)\r | |
263 | Package.PpiDeclarations = LoadPackagePpiDeclarations(XmlSpd)\r | |
264 | Package.PcdDeclarations = LoadPackagePcdDeclarations(XmlSpd)\r | |
265 | Package.UserExtensions = LoadPackageUserExtensions(XmlSpd)\r | |
266 | \r | |
267 | return Package\r | |
268 | \r | |
269 | \r | |
270 | # This acts like the main() function for the script, unless it is 'import'ed\r | |
271 | # into another script.\r | |
272 | if __name__ == '__main__':\r | |
273 | pass\r |