]>
Commit | Line | Data |
---|---|---|
4234283c LG |
1 | ## @file\r |
2 | # This file is for installed package information database operations\r | |
3 | #\r | |
f7496d71 | 4 | # Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.<BR>\r |
4234283c | 5 | #\r |
2e351cbe | 6 | # SPDX-License-Identifier: BSD-2-Clause-Patent\r |
4234283c LG |
7 | #\r |
8 | \r | |
9 | '''\r | |
10 | IpiDb\r | |
11 | '''\r | |
12 | \r | |
13 | ##\r | |
14 | # Import Modules\r | |
15 | #\r | |
16 | import sqlite3\r | |
17 | import os.path\r | |
18 | import time\r | |
19 | \r | |
20 | import Logger.Log as Logger\r | |
21 | from Logger import StringTable as ST\r | |
22 | from Logger.ToolError import UPT_ALREADY_RUNNING_ERROR\r | |
d0acc87a | 23 | from Logger.ToolError import UPT_DB_UPDATE_ERROR\r |
421ccda3 | 24 | import platform as pf\r |
4234283c LG |
25 | \r |
26 | ## IpiDb\r | |
27 | #\r | |
28 | # This class represents the installed package information database\r | |
29 | # Add/Remove/Get installed distribution package information here.\r | |
f7496d71 LG |
30 | #\r |
31 | #\r | |
4234283c LG |
32 | # @param object: Inherited from object class\r |
33 | # @param DbPath: A string for the path of the database\r | |
34 | #\r | |
35 | #\r | |
36 | class IpiDatabase(object):\r | |
421ccda3 | 37 | def __init__(self, DbPath, Workspace):\r |
4234283c LG |
38 | Dir = os.path.dirname(DbPath)\r |
39 | if not os.path.isdir(Dir):\r | |
40 | os.mkdir(Dir)\r | |
174a9d3c | 41 | self.Conn = sqlite3.connect(u''.join(DbPath), isolation_level='DEFERRED')\r |
4234283c LG |
42 | self.Conn.execute("PRAGMA page_size=4096")\r |
43 | self.Conn.execute("PRAGMA synchronous=OFF")\r | |
44 | self.Cur = self.Conn.cursor()\r | |
45 | self.DpTable = 'DpInfo'\r | |
46 | self.PkgTable = 'PkgInfo'\r | |
47 | self.ModInPkgTable = 'ModInPkgInfo'\r | |
48 | self.StandaloneModTable = 'StandaloneModInfo'\r | |
49 | self.ModDepexTable = 'ModDepexInfo'\r | |
50 | self.DpFileListTable = 'DpFileListInfo'\r | |
51 | self.DummyTable = 'Dummy'\r | |
421ccda3 | 52 | self.Workspace = os.path.normpath(Workspace)\r |
4234283c LG |
53 | \r |
54 | ## Initialize build database\r | |
55 | #\r | |
56 | #\r | |
57 | def InitDatabase(self, SkipLock = False):\r | |
58 | Logger.Verbose(ST.MSG_INIT_IPI_START)\r | |
59 | if not SkipLock:\r | |
60 | try:\r | |
61 | #\r | |
62 | # Create a dummy table, if already existed,\r | |
63 | # then UPT is already running\r | |
64 | #\r | |
65 | SqlCommand = """\r | |
66 | create table %s (\r | |
67 | Dummy TEXT NOT NULL,\r | |
f7496d71 | 68 | PRIMARY KEY (Dummy)\r |
4234283c LG |
69 | )""" % self.DummyTable\r |
70 | self.Cur.execute(SqlCommand)\r | |
71 | self.Conn.commit()\r | |
72 | except sqlite3.OperationalError:\r | |
f7496d71 LG |
73 | Logger.Error("UPT",\r |
74 | UPT_ALREADY_RUNNING_ERROR,\r | |
4234283c LG |
75 | ST.ERR_UPT_ALREADY_RUNNING_ERROR\r |
76 | )\r | |
f7496d71 | 77 | \r |
4234283c LG |
78 | #\r |
79 | # Create new table\r | |
80 | #\r | |
81 | SqlCommand = """\r | |
82 | create table IF NOT EXISTS %s (\r | |
83 | DpGuid TEXT NOT NULL,DpVersion TEXT NOT NULL,\r | |
84 | InstallTime REAL NOT NULL,\r | |
85 | NewPkgFileName TEXT NOT NULL,\r | |
f7496d71 | 86 | PkgFileName TEXT NOT NULL,\r |
4234283c | 87 | RePackage TEXT NOT NULL,\r |
f7496d71 | 88 | PRIMARY KEY (DpGuid, DpVersion)\r |
4234283c LG |
89 | )""" % self.DpTable\r |
90 | self.Cur.execute(SqlCommand)\r | |
f7496d71 | 91 | \r |
4234283c LG |
92 | SqlCommand = """\r |
93 | create table IF NOT EXISTS %s (\r | |
94 | FilePath TEXT NOT NULL,\r | |
95 | DpGuid TEXT,\r | |
96 | DpVersion TEXT,\r | |
97 | Md5Sum TEXT,\r | |
98 | PRIMARY KEY (FilePath)\r | |
99 | )""" % self.DpFileListTable\r | |
100 | self.Cur.execute(SqlCommand)\r | |
f7496d71 | 101 | \r |
4234283c LG |
102 | SqlCommand = """\r |
103 | create table IF NOT EXISTS %s (\r | |
104 | PackageGuid TEXT NOT NULL,\r | |
105 | PackageVersion TEXT NOT NULL,\r | |
106 | InstallTime REAL NOT NULL,\r | |
107 | DpGuid TEXT,\r | |
108 | DpVersion TEXT,\r | |
109 | InstallPath TEXT NOT NULL,\r | |
110 | PRIMARY KEY (PackageGuid, PackageVersion, InstallPath)\r | |
111 | )""" % self.PkgTable\r | |
112 | self.Cur.execute(SqlCommand)\r | |
f7496d71 | 113 | \r |
4234283c LG |
114 | SqlCommand = """\r |
115 | create table IF NOT EXISTS %s (\r | |
116 | ModuleGuid TEXT NOT NULL,\r | |
117 | ModuleVersion TEXT NOT NULL,\r | |
d0acc87a | 118 | ModuleName TEXT NOT NULL,\r |
4234283c LG |
119 | InstallTime REAL NOT NULL,\r |
120 | PackageGuid TEXT,\r | |
121 | PackageVersion TEXT,\r | |
122 | InstallPath TEXT NOT NULL,\r | |
d0acc87a | 123 | PRIMARY KEY (ModuleGuid, ModuleVersion, ModuleName, InstallPath)\r |
4234283c LG |
124 | )""" % self.ModInPkgTable\r |
125 | self.Cur.execute(SqlCommand)\r | |
f7496d71 | 126 | \r |
4234283c LG |
127 | SqlCommand = """\r |
128 | create table IF NOT EXISTS %s (\r | |
129 | ModuleGuid TEXT NOT NULL,\r | |
130 | ModuleVersion TEXT NOT NULL,\r | |
d0acc87a | 131 | ModuleName TEXT NOT NULL,\r |
4234283c LG |
132 | InstallTime REAL NOT NULL,\r |
133 | DpGuid TEXT,\r | |
134 | DpVersion TEXT,\r | |
135 | InstallPath TEXT NOT NULL,\r | |
d0acc87a | 136 | PRIMARY KEY (ModuleGuid, ModuleVersion, ModuleName, InstallPath)\r |
4234283c LG |
137 | )""" % self.StandaloneModTable\r |
138 | self.Cur.execute(SqlCommand)\r | |
f7496d71 | 139 | \r |
4234283c LG |
140 | SqlCommand = """\r |
141 | create table IF NOT EXISTS %s (\r | |
142 | ModuleGuid TEXT NOT NULL,\r | |
143 | ModuleVersion TEXT NOT NULL,\r | |
d0acc87a | 144 | ModuleName TEXT NOT NULL,\r |
4234283c LG |
145 | InstallPath TEXT NOT NULL,\r |
146 | DepexGuid TEXT,\r | |
147 | DepexVersion TEXT\r | |
148 | )""" % self.ModDepexTable\r | |
149 | self.Cur.execute(SqlCommand)\r | |
f7496d71 | 150 | \r |
4234283c | 151 | self.Conn.commit()\r |
f7496d71 | 152 | \r |
4234283c LG |
153 | Logger.Verbose(ST.MSG_INIT_IPI_FINISH)\r |
154 | \r | |
421ccda3 HC |
155 | def RollBack(self):\r |
156 | self.Conn.rollback()\r | |
157 | \r | |
158 | def Commit(self):\r | |
159 | self.Conn.commit()\r | |
160 | \r | |
4234283c LG |
161 | ## Add a distribution install information from DpObj\r |
162 | #\r | |
163 | # @param DpObj:\r | |
164 | # @param NewDpPkgFileName: New DpPkg File Name\r | |
165 | # @param DpPkgFileName: DpPkg File Name\r | |
166 | # @param RePackage: A RePackage\r | |
167 | #\r | |
168 | def AddDPObject(self, DpObj, NewDpPkgFileName, DpPkgFileName, RePackage):\r | |
d0acc87a LG |
169 | try:\r |
170 | for PkgKey in DpObj.PackageSurfaceArea.keys():\r | |
171 | PkgGuid = PkgKey[0]\r | |
172 | PkgVersion = PkgKey[1]\r | |
173 | PkgInstallPath = PkgKey[2]\r | |
174 | self._AddPackage(PkgGuid, PkgVersion, DpObj.Header.GetGuid(), \\r | |
175 | DpObj.Header.GetVersion(), PkgInstallPath)\r | |
176 | PkgObj = DpObj.PackageSurfaceArea[PkgKey]\r | |
177 | for ModKey in PkgObj.GetModuleDict().keys():\r | |
178 | ModGuid = ModKey[0]\r | |
179 | ModVersion = ModKey[1]\r | |
180 | ModName = ModKey[2]\r | |
181 | ModInstallPath = ModKey[3]\r | |
182 | ModInstallPath = \\r | |
183 | os.path.normpath(os.path.join(PkgInstallPath, ModInstallPath))\r | |
184 | self._AddModuleInPackage(ModGuid, ModVersion, ModName, PkgGuid, \\r | |
185 | PkgVersion, ModInstallPath)\r | |
186 | ModObj = PkgObj.GetModuleDict()[ModKey]\r | |
187 | for Dep in ModObj.GetPackageDependencyList():\r | |
188 | DepexGuid = Dep.GetGuid()\r | |
189 | DepexVersion = Dep.GetVersion()\r | |
190 | self._AddModuleDepex(ModGuid, ModVersion, ModName, ModInstallPath, \\r | |
191 | DepexGuid, DepexVersion)\r | |
192 | for (FilePath, Md5Sum) in PkgObj.FileList:\r | |
193 | self._AddDpFilePathList(DpObj.Header.GetGuid(), \\r | |
194 | DpObj.Header.GetVersion(), FilePath, \\r | |
195 | Md5Sum)\r | |
f7496d71 | 196 | \r |
d0acc87a | 197 | for ModKey in DpObj.ModuleSurfaceArea.keys():\r |
4234283c LG |
198 | ModGuid = ModKey[0]\r |
199 | ModVersion = ModKey[1]\r | |
d0acc87a LG |
200 | ModName = ModKey[2]\r |
201 | ModInstallPath = ModKey[3]\r | |
202 | self._AddStandaloneModule(ModGuid, ModVersion, ModName, \\r | |
203 | DpObj.Header.GetGuid(), \\r | |
204 | DpObj.Header.GetVersion(), \\r | |
205 | ModInstallPath)\r | |
206 | ModObj = DpObj.ModuleSurfaceArea[ModKey]\r | |
4234283c LG |
207 | for Dep in ModObj.GetPackageDependencyList():\r |
208 | DepexGuid = Dep.GetGuid()\r | |
209 | DepexVersion = Dep.GetVersion()\r | |
d0acc87a | 210 | self._AddModuleDepex(ModGuid, ModVersion, ModName, ModInstallPath, \\r |
4234283c | 211 | DepexGuid, DepexVersion)\r |
d0acc87a LG |
212 | for (Path, Md5Sum) in ModObj.FileList:\r |
213 | self._AddDpFilePathList(DpObj.Header.GetGuid(), \\r | |
214 | DpObj.Header.GetVersion(), \\r | |
215 | Path, Md5Sum)\r | |
f7496d71 | 216 | \r |
d0acc87a LG |
217 | #\r |
218 | # add tool/misc files\r | |
219 | #\r | |
220 | for (Path, Md5Sum) in DpObj.FileList:\r | |
4234283c | 221 | self._AddDpFilePathList(DpObj.Header.GetGuid(), \\r |
d0acc87a | 222 | DpObj.Header.GetVersion(), Path, Md5Sum)\r |
f7496d71 | 223 | \r |
d0acc87a LG |
224 | self._AddDp(DpObj.Header.GetGuid(), DpObj.Header.GetVersion(), \\r |
225 | NewDpPkgFileName, DpPkgFileName, RePackage)\r | |
f7496d71 | 226 | \r |
5b0671c1 | 227 | except sqlite3.IntegrityError as DetailMsg:\r |
d0acc87a LG |
228 | Logger.Error("UPT",\r |
229 | UPT_DB_UPDATE_ERROR,\r | |
230 | ST.ERR_UPT_DB_UPDATE_ERROR,\r | |
231 | ExtraData = DetailMsg\r | |
232 | )\r | |
4234283c | 233 | \r |
4234283c LG |
234 | ## Add a distribution install information\r |
235 | #\r | |
f7496d71 LG |
236 | # @param Guid Guid of the distribution package\r |
237 | # @param Version Version of the distribution package\r | |
4234283c LG |
238 | # @param NewDpFileName the saved filename of distribution package file\r |
239 | # @param DistributionFileName the filename of distribution package file\r | |
240 | #\r | |
241 | def _AddDp(self, Guid, Version, NewDpFileName, DistributionFileName, \\r | |
242 | RePackage):\r | |
f7496d71 | 243 | \r |
4231a819 | 244 | if Version is None or len(Version.strip()) == 0:\r |
4234283c | 245 | Version = 'N/A'\r |
f7496d71 | 246 | \r |
4234283c LG |
247 | #\r |
248 | # Add newly installed DP information to DB.\r | |
249 | #\r | |
4231a819 | 250 | if NewDpFileName is None or len(NewDpFileName.strip()) == 0:\r |
4234283c LG |
251 | PkgFileName = 'N/A'\r |
252 | else:\r | |
253 | PkgFileName = NewDpFileName\r | |
254 | CurrentTime = time.time()\r | |
255 | SqlCommand = \\r | |
256 | """insert into %s values('%s', '%s', %s, '%s', '%s', '%s')""" % \\r | |
257 | (self.DpTable, Guid, Version, CurrentTime, PkgFileName, \\r | |
258 | DistributionFileName, str(RePackage).upper())\r | |
259 | self.Cur.execute(SqlCommand)\r | |
260 | \r | |
f7496d71 | 261 | \r |
4234283c LG |
262 | ## Add a file list from DP\r |
263 | #\r | |
f7496d71 | 264 | # @param DpGuid: A DpGuid\r |
4234283c LG |
265 | # @param DpVersion: A DpVersion\r |
266 | # @param Path: A Path\r | |
267 | # @param Path: A Md5Sum\r | |
268 | #\r | |
269 | def _AddDpFilePathList(self, DpGuid, DpVersion, Path, Md5Sum):\r | |
421ccda3 HC |
270 | Path = os.path.normpath(Path)\r |
271 | if pf.system() == 'Windows':\r | |
272 | if Path.startswith(self.Workspace):\r | |
273 | Path = Path[len(self.Workspace):]\r | |
274 | else:\r | |
275 | if Path.startswith(self.Workspace + os.sep):\r | |
276 | Path = Path[len(self.Workspace)+1:]\r | |
4234283c LG |
277 | SqlCommand = """insert into %s values('%s', '%s', '%s', '%s')""" % \\r |
278 | (self.DpFileListTable, Path, DpGuid, DpVersion, Md5Sum)\r | |
279 | \r | |
280 | self.Cur.execute(SqlCommand)\r | |
f7496d71 | 281 | \r |
4234283c LG |
282 | ## Add a package install information\r |
283 | #\r | |
f7496d71 | 284 | # @param Guid: A package guid\r |
4234283c | 285 | # @param Version: A package version\r |
f7496d71 | 286 | # @param DpGuid: A DpGuid\r |
4234283c LG |
287 | # @param DpVersion: A DpVersion\r |
288 | # @param Path: A Path\r | |
289 | #\r | |
290 | def _AddPackage(self, Guid, Version, DpGuid=None, DpVersion=None, Path=''):\r | |
f7496d71 | 291 | \r |
4231a819 | 292 | if Version is None or len(Version.strip()) == 0:\r |
4234283c | 293 | Version = 'N/A'\r |
f7496d71 | 294 | \r |
4231a819 | 295 | if DpGuid is None or len(DpGuid.strip()) == 0:\r |
4234283c | 296 | DpGuid = 'N/A'\r |
f7496d71 | 297 | \r |
4231a819 | 298 | if DpVersion is None or len(DpVersion.strip()) == 0:\r |
4234283c | 299 | DpVersion = 'N/A'\r |
f7496d71 | 300 | \r |
4234283c LG |
301 | #\r |
302 | # Add newly installed package information to DB.\r | |
303 | #\r | |
304 | CurrentTime = time.time()\r | |
305 | SqlCommand = \\r | |
306 | """insert into %s values('%s', '%s', %s, '%s', '%s', '%s')""" % \\r | |
307 | (self.PkgTable, Guid, Version, CurrentTime, DpGuid, DpVersion, Path)\r | |
308 | self.Cur.execute(SqlCommand)\r | |
f7496d71 | 309 | \r |
4234283c LG |
310 | ## Add a module that from a package install information\r |
311 | #\r | |
f7496d71 | 312 | # @param Guid: Module Guid\r |
d0acc87a LG |
313 | # @param Version: Module version\r |
314 | # @param Name: Module Name\r | |
315 | # @param PkgGuid: Package Guid\r | |
316 | # @param PkgVersion: Package version\r | |
317 | # @param Path: Package relative path that module installs\r | |
4234283c | 318 | #\r |
d0acc87a | 319 | def _AddModuleInPackage(self, Guid, Version, Name, PkgGuid=None, \\r |
4234283c | 320 | PkgVersion=None, Path=''):\r |
f7496d71 | 321 | \r |
4231a819 | 322 | if Version is None or len(Version.strip()) == 0:\r |
4234283c | 323 | Version = 'N/A'\r |
f7496d71 | 324 | \r |
4231a819 | 325 | if PkgGuid is None or len(PkgGuid.strip()) == 0:\r |
4234283c | 326 | PkgGuid = 'N/A'\r |
f7496d71 | 327 | \r |
4231a819 | 328 | if PkgVersion is None or len(PkgVersion.strip()) == 0:\r |
4234283c | 329 | PkgVersion = 'N/A'\r |
f7496d71 | 330 | \r |
421ccda3 HC |
331 | if os.name == 'posix':\r |
332 | Path = Path.replace('\\', os.sep)\r | |
333 | else:\r | |
334 | Path = Path.replace('/', os.sep)\r | |
f7496d71 | 335 | \r |
4234283c LG |
336 | #\r |
337 | # Add module from package information to DB.\r | |
338 | #\r | |
339 | CurrentTime = time.time()\r | |
340 | SqlCommand = \\r | |
d0acc87a LG |
341 | """insert into %s values('%s', '%s', '%s', %s, '%s', '%s', '%s')""" % \\r |
342 | (self.ModInPkgTable, Guid, Version, Name, CurrentTime, PkgGuid, PkgVersion, \\r | |
4234283c LG |
343 | Path)\r |
344 | self.Cur.execute(SqlCommand)\r | |
f7496d71 | 345 | \r |
4234283c LG |
346 | ## Add a module that is standalone install information\r |
347 | #\r | |
348 | # @param Guid: a module Guid\r | |
349 | # @param Version: a module Version\r | |
d0acc87a | 350 | # @param Name: a module name\r |
4234283c LG |
351 | # @param DpGuid: a DpGuid\r |
352 | # @param DpVersion: a DpVersion\r | |
353 | # @param Path: path\r | |
354 | #\r | |
d0acc87a | 355 | def _AddStandaloneModule(self, Guid, Version, Name, DpGuid=None, \\r |
4234283c | 356 | DpVersion=None, Path=''):\r |
f7496d71 | 357 | \r |
4231a819 | 358 | if Version is None or len(Version.strip()) == 0:\r |
4234283c | 359 | Version = 'N/A'\r |
f7496d71 | 360 | \r |
4231a819 | 361 | if DpGuid is None or len(DpGuid.strip()) == 0:\r |
4234283c | 362 | DpGuid = 'N/A'\r |
f7496d71 | 363 | \r |
4231a819 | 364 | if DpVersion is None or len(DpVersion.strip()) == 0:\r |
4234283c | 365 | DpVersion = 'N/A'\r |
f7496d71 | 366 | \r |
4234283c LG |
367 | #\r |
368 | # Add module standalone information to DB.\r | |
369 | #\r | |
370 | CurrentTime = time.time()\r | |
371 | SqlCommand = \\r | |
d0acc87a LG |
372 | """insert into %s values('%s', '%s', '%s', %s, '%s', '%s', '%s')""" % \\r |
373 | (self.StandaloneModTable, Guid, Version, Name, CurrentTime, DpGuid, \\r | |
4234283c LG |
374 | DpVersion, Path)\r |
375 | self.Cur.execute(SqlCommand)\r | |
f7496d71 | 376 | \r |
4234283c LG |
377 | ## Add a module depex\r |
378 | #\r | |
379 | # @param Guid: a module Guid\r | |
380 | # @param Version: a module Version\r | |
d0acc87a | 381 | # @param Name: a module name\r |
4234283c LG |
382 | # @param DepexGuid: a module DepexGuid\r |
383 | # @param DepexVersion: a module DepexVersion\r | |
384 | #\r | |
d0acc87a | 385 | def _AddModuleDepex(self, Guid, Version, Name, Path, DepexGuid=None, \\r |
4234283c | 386 | DepexVersion=None):\r |
f7496d71 | 387 | \r |
4231a819 | 388 | if DepexGuid is None or len(DepexGuid.strip()) == 0:\r |
4234283c | 389 | DepexGuid = 'N/A'\r |
f7496d71 | 390 | \r |
4231a819 | 391 | if DepexVersion is None or len(DepexVersion.strip()) == 0:\r |
4234283c | 392 | DepexVersion = 'N/A'\r |
f7496d71 | 393 | \r |
421ccda3 HC |
394 | if os.name == 'posix':\r |
395 | Path = Path.replace('\\', os.sep)\r | |
396 | else:\r | |
397 | Path = Path.replace('/', os.sep)\r | |
f7496d71 | 398 | \r |
4234283c LG |
399 | #\r |
400 | # Add module depex information to DB.\r | |
401 | #\r | |
d0acc87a LG |
402 | SqlCommand = """insert into %s values('%s', '%s', '%s', '%s', '%s', '%s')"""\\r |
403 | % (self.ModDepexTable, Guid, Version, Name, Path, DepexGuid, DepexVersion)\r | |
4234283c | 404 | self.Cur.execute(SqlCommand)\r |
f7496d71 LG |
405 | \r |
406 | ## Remove a distribution install information, if no version specified,\r | |
4234283c LG |
407 | # remove all DPs with this Guid.\r |
408 | #\r | |
f7496d71 | 409 | # @param DpGuid: guid of dpex\r |
4234283c LG |
410 | # @param DpVersion: version of dpex\r |
411 | #\r | |
412 | def RemoveDpObj(self, DpGuid, DpVersion):\r | |
f7496d71 | 413 | \r |
4234283c LG |
414 | PkgList = self.GetPackageListFromDp(DpGuid, DpVersion)\r |
415 | #\r | |
416 | # delete from ModDepex the standalone module's dependency\r | |
417 | #\r | |
418 | SqlCommand = \\r | |
f7496d71 LG |
419 | """delete from ModDepexInfo where ModDepexInfo.ModuleGuid in\r |
420 | (select ModuleGuid from StandaloneModInfo as B where B.DpGuid = '%s'\r | |
4234283c LG |
421 | and B.DpVersion = '%s')\r |
422 | and ModDepexInfo.ModuleVersion in\r | |
f7496d71 | 423 | (select ModuleVersion from StandaloneModInfo as B\r |
4234283c | 424 | where B.DpGuid = '%s' and B.DpVersion = '%s')\r |
d0acc87a | 425 | and ModDepexInfo.ModuleName in\r |
f7496d71 | 426 | (select ModuleName from StandaloneModInfo as B\r |
d0acc87a | 427 | where B.DpGuid = '%s' and B.DpVersion = '%s')\r |
4234283c | 428 | and ModDepexInfo.InstallPath in\r |
f7496d71 | 429 | (select InstallPath from StandaloneModInfo as B\r |
4234283c | 430 | where B.DpGuid = '%s' and B.DpVersion = '%s') """ % \\r |
d0acc87a | 431 | (DpGuid, DpVersion, DpGuid, DpVersion, DpGuid, DpVersion, DpGuid, DpVersion)\r |
4234283c LG |
432 | \r |
433 | self.Cur.execute(SqlCommand)\r | |
434 | #\r | |
435 | # delete from ModDepex the from pkg module's dependency\r | |
436 | #\r | |
437 | for Pkg in PkgList:\r | |
438 | \r | |
439 | SqlCommand = \\r | |
f7496d71 LG |
440 | """delete from ModDepexInfo where ModDepexInfo.ModuleGuid in\r |
441 | (select ModuleGuid from ModInPkgInfo\r | |
442 | where ModInPkgInfo.PackageGuid ='%s' and\r | |
4234283c LG |
443 | ModInPkgInfo.PackageVersion = '%s')\r |
444 | and ModDepexInfo.ModuleVersion in\r | |
f7496d71 LG |
445 | (select ModuleVersion from ModInPkgInfo\r |
446 | where ModInPkgInfo.PackageGuid ='%s' and\r | |
4234283c | 447 | ModInPkgInfo.PackageVersion = '%s')\r |
d0acc87a | 448 | and ModDepexInfo.ModuleName in\r |
f7496d71 LG |
449 | (select ModuleName from ModInPkgInfo\r |
450 | where ModInPkgInfo.PackageGuid ='%s' and\r | |
d0acc87a | 451 | ModInPkgInfo.PackageVersion = '%s')\r |
4234283c | 452 | and ModDepexInfo.InstallPath in\r |
f7496d71 LG |
453 | (select InstallPath from ModInPkgInfo where\r |
454 | ModInPkgInfo.PackageGuid ='%s'\r | |
4234283c | 455 | and ModInPkgInfo.PackageVersion = '%s')""" \\r |
ccaa7754 | 456 | % (Pkg[0], Pkg[1], Pkg[0], Pkg[1], Pkg[0], Pkg[1], Pkg[0], Pkg[1])\r |
f7496d71 | 457 | \r |
4234283c LG |
458 | self.Cur.execute(SqlCommand)\r |
459 | #\r | |
460 | # delete the standalone module\r | |
461 | #\r | |
462 | SqlCommand = \\r | |
463 | """delete from %s where DpGuid ='%s' and DpVersion = '%s'""" % \\r | |
464 | (self.StandaloneModTable, DpGuid, DpVersion)\r | |
465 | self.Cur.execute(SqlCommand)\r | |
466 | #\r | |
467 | # delete the from pkg module\r | |
468 | #\r | |
469 | for Pkg in PkgList:\r | |
470 | SqlCommand = \\r | |
f7496d71 | 471 | """delete from %s where %s.PackageGuid ='%s'\r |
4234283c LG |
472 | and %s.PackageVersion = '%s'""" % \\r |
473 | (self.ModInPkgTable, self.ModInPkgTable, Pkg[0], \\r | |
474 | self.ModInPkgTable, Pkg[1])\r | |
475 | self.Cur.execute(SqlCommand)\r | |
476 | #\r | |
477 | # delete packages\r | |
478 | #\r | |
479 | SqlCommand = \\r | |
480 | """delete from %s where DpGuid ='%s' and DpVersion = '%s'""" % \\r | |
481 | (self.PkgTable, DpGuid, DpVersion)\r | |
482 | self.Cur.execute(SqlCommand)\r | |
483 | #\r | |
484 | # delete file list from DP\r | |
485 | #\r | |
486 | SqlCommand = \\r | |
487 | """delete from %s where DpGuid ='%s' and DpVersion = '%s'""" % \\r | |
488 | (self.DpFileListTable, DpGuid, DpVersion)\r | |
489 | self.Cur.execute(SqlCommand)\r | |
f7496d71 | 490 | #\r |
4234283c LG |
491 | # delete DP\r |
492 | #\r | |
493 | SqlCommand = \\r | |
494 | """delete from %s where DpGuid ='%s' and DpVersion = '%s'""" % \\r | |
495 | (self.DpTable, DpGuid, DpVersion)\r | |
496 | self.Cur.execute(SqlCommand)\r | |
f7496d71 | 497 | \r |
421ccda3 | 498 | #self.Conn.commit()\r |
f7496d71 | 499 | \r |
4234283c LG |
500 | ## Get a list of distribution install information.\r |
501 | #\r | |
f7496d71 LG |
502 | # @param Guid: distribution package guid\r |
503 | # @param Version: distribution package version\r | |
4234283c LG |
504 | #\r |
505 | def GetDp(self, Guid, Version):\r | |
f7496d71 | 506 | \r |
4231a819 | 507 | if Version is None or len(Version.strip()) == 0:\r |
4234283c LG |
508 | Version = 'N/A'\r |
509 | Logger.Verbose(ST.MSG_GET_DP_INSTALL_LIST)\r | |
510 | (DpGuid, DpVersion) = (Guid, Version)\r | |
511 | SqlCommand = """select * from %s where DpGuid ='%s'""" % \\r | |
512 | (self.DpTable, DpGuid)\r | |
513 | self.Cur.execute(SqlCommand)\r | |
f7496d71 | 514 | \r |
4234283c LG |
515 | else:\r |
516 | Logger.Verbose(ST.MSG_GET_DP_INSTALL_INFO_START)\r | |
517 | (DpGuid, DpVersion) = (Guid, Version)\r | |
518 | SqlCommand = \\r | |
519 | """select * from %s where DpGuid ='%s' and DpVersion = '%s'""" % \\r | |
520 | (self.DpTable, DpGuid, DpVersion)\r | |
521 | self.Cur.execute(SqlCommand)\r | |
522 | \r | |
523 | DpList = []\r | |
524 | for DpInfo in self.Cur:\r | |
525 | DpGuid = DpInfo[0]\r | |
526 | DpVersion = DpInfo[1]\r | |
527 | InstallTime = DpInfo[2]\r | |
528 | PkgFileName = DpInfo[3]\r | |
529 | DpList.append((DpGuid, DpVersion, InstallTime, PkgFileName))\r | |
f7496d71 LG |
530 | \r |
531 | Logger.Verbose(ST.MSG_GET_DP_INSTALL_INFO_FINISH)\r | |
4234283c | 532 | return DpList\r |
f7496d71 | 533 | \r |
4234283c LG |
534 | ## Get a list of distribution install dirs\r |
535 | #\r | |
f7496d71 LG |
536 | # @param Guid: distribution package guid\r |
537 | # @param Version: distribution package version\r | |
4234283c LG |
538 | #\r |
539 | def GetDpInstallDirList(self, Guid, Version):\r | |
540 | SqlCommand = """select InstallPath from PkgInfo where DpGuid = '%s' and DpVersion = '%s'""" % (Guid, Version)\r | |
541 | self.Cur.execute(SqlCommand)\r | |
542 | DirList = []\r | |
543 | for Result in self.Cur:\r | |
544 | if Result[0] not in DirList:\r | |
545 | DirList.append(Result[0])\r | |
546 | \r | |
547 | SqlCommand = """select InstallPath from StandaloneModInfo where DpGuid = '%s' and DpVersion = '%s'""" % \\r | |
548 | (Guid, Version)\r | |
549 | self.Cur.execute(SqlCommand)\r | |
550 | for Result in self.Cur:\r | |
551 | if Result[0] not in DirList:\r | |
552 | DirList.append(Result[0])\r | |
553 | \r | |
554 | return DirList\r | |
555 | \r | |
556 | \r | |
557 | ## Get a list of distribution install file path information.\r | |
558 | #\r | |
f7496d71 LG |
559 | # @param Guid: distribution package guid\r |
560 | # @param Version: distribution package version\r | |
4234283c LG |
561 | #\r |
562 | def GetDpFileList(self, Guid, Version):\r | |
f7496d71 | 563 | \r |
4234283c LG |
564 | (DpGuid, DpVersion) = (Guid, Version)\r |
565 | SqlCommand = \\r | |
566 | """select * from %s where DpGuid ='%s' and DpVersion = '%s'""" % \\r | |
567 | (self.DpFileListTable, DpGuid, DpVersion)\r | |
568 | self.Cur.execute(SqlCommand)\r | |
569 | \r | |
570 | PathList = []\r | |
571 | for Result in self.Cur:\r | |
572 | Path = Result[0]\r | |
573 | Md5Sum = Result[3]\r | |
421ccda3 | 574 | PathList.append((os.path.join(self.Workspace, Path), Md5Sum))\r |
f7496d71 | 575 | \r |
4234283c LG |
576 | return PathList\r |
577 | \r | |
578 | ## Get files' repackage attribute if present that are installed into current workspace\r | |
579 | #\r | |
580 | # @retval FileDict: a Dict of file, key is file path, value is (DpGuid, DpVersion, NewDpFileName, RePackage)\r | |
581 | #\r | |
582 | def GetRePkgDict(self):\r | |
583 | SqlCommand = """select * from %s """ % (self.DpTable)\r | |
584 | self.Cur.execute(SqlCommand)\r | |
f7496d71 | 585 | \r |
4234283c LG |
586 | DpInfoList = []\r |
587 | for Result in self.Cur:\r | |
588 | DpInfoList.append(Result)\r | |
589 | \r | |
f7496d71 | 590 | FileDict = {}\r |
4234283c LG |
591 | for Result in DpInfoList:\r |
592 | DpGuid = Result[0]\r | |
593 | DpVersion = Result[1]\r | |
594 | NewDpFileName = Result[3]\r | |
595 | RePackage = Result[5]\r | |
596 | if RePackage == 'TRUE':\r | |
597 | RePackage = True\r | |
598 | else:\r | |
599 | RePackage = False\r | |
600 | for FileInfo in self.GetDpFileList(DpGuid, DpVersion):\r | |
601 | PathInfo = FileInfo[0]\r | |
602 | FileDict[PathInfo] = DpGuid, DpVersion, NewDpFileName, RePackage\r | |
f7496d71 | 603 | \r |
4234283c | 604 | return FileDict\r |
f7496d71 | 605 | \r |
4234283c LG |
606 | ## Get (Guid, Version) from distribution file name information.\r |
607 | #\r | |
f7496d71 | 608 | # @param DistributionFile: Distribution File\r |
4234283c LG |
609 | #\r |
610 | def GetDpByName(self, DistributionFile):\r | |
09e27ac5 HC |
611 | SqlCommand = """select * from %s where NewPkgFileName = '%s'""" % \\r |
612 | (self.DpTable, DistributionFile)\r | |
4234283c LG |
613 | self.Cur.execute(SqlCommand)\r |
614 | \r | |
615 | for Result in self.Cur:\r | |
616 | DpGuid = Result[0]\r | |
617 | DpVersion = Result[1]\r | |
618 | NewDpFileName = Result[3]\r | |
f7496d71 | 619 | \r |
4234283c LG |
620 | return (DpGuid, DpVersion, NewDpFileName)\r |
621 | else:\r | |
622 | return (None, None, None)\r | |
f7496d71 | 623 | \r |
4234283c LG |
624 | ## Get a list of package information.\r |
625 | #\r | |
f7496d71 | 626 | # @param Guid: package guid\r |
4234283c LG |
627 | # @param Version: package version\r |
628 | #\r | |
629 | def GetPackage(self, Guid, Version, DpGuid='', DpVersion=''):\r | |
f7496d71 | 630 | \r |
4234283c LG |
631 | if DpVersion == '' or DpGuid == '':\r |
632 | \r | |
633 | (PackageGuid, PackageVersion) = (Guid, Version)\r | |
f7496d71 | 634 | SqlCommand = """select * from %s where PackageGuid ='%s'\r |
4234283c LG |
635 | and PackageVersion = '%s'""" % (self.PkgTable, PackageGuid, \\r |
636 | PackageVersion)\r | |
637 | self.Cur.execute(SqlCommand)\r | |
f7496d71 | 638 | \r |
4231a819 | 639 | elif Version is None or len(Version.strip()) == 0:\r |
f7496d71 | 640 | \r |
4234283c LG |
641 | SqlCommand = """select * from %s where PackageGuid ='%s'""" % \\r |
642 | (self.PkgTable, Guid)\r | |
643 | self.Cur.execute(SqlCommand)\r | |
644 | else:\r | |
645 | (PackageGuid, PackageVersion) = (Guid, Version)\r | |
f7496d71 | 646 | SqlCommand = """select * from %s where PackageGuid ='%s' and\r |
4234283c LG |
647 | PackageVersion = '%s'\r |
648 | and DpGuid = '%s' and DpVersion = '%s'""" % \\r | |
649 | (self.PkgTable, PackageGuid, PackageVersion, \\r | |
650 | DpGuid, DpVersion)\r | |
651 | self.Cur.execute(SqlCommand)\r | |
652 | \r | |
653 | PkgList = []\r | |
654 | for PkgInfo in self.Cur:\r | |
655 | PkgGuid = PkgInfo[0]\r | |
656 | PkgVersion = PkgInfo[1]\r | |
657 | InstallTime = PkgInfo[2]\r | |
658 | InstallPath = PkgInfo[5]\r | |
659 | PkgList.append((PkgGuid, PkgVersion, InstallTime, DpGuid, \\r | |
660 | DpVersion, InstallPath))\r | |
f7496d71 | 661 | \r |
4234283c | 662 | return PkgList\r |
f7496d71 LG |
663 | \r |
664 | \r | |
4234283c LG |
665 | ## Get a list of module in package information.\r |
666 | #\r | |
667 | # @param Guid: A module guid\r | |
668 | # @param Version: A module version\r | |
669 | #\r | |
d0acc87a LG |
670 | def GetModInPackage(self, Guid, Version, Name, Path, PkgGuid='', PkgVersion=''):\r |
671 | (ModuleGuid, ModuleVersion, ModuleName, InstallPath) = (Guid, Version, Name, Path)\r | |
4234283c | 672 | if PkgVersion == '' or PkgGuid == '':\r |
f7496d71 LG |
673 | SqlCommand = """select * from %s where ModuleGuid ='%s' and\r |
674 | ModuleVersion = '%s' and InstallPath = '%s'\r | |
d0acc87a LG |
675 | and ModuleName = '%s'""" % (self.ModInPkgTable, ModuleGuid, \\r |
676 | ModuleVersion, InstallPath, ModuleName)\r | |
4234283c | 677 | self.Cur.execute(SqlCommand)\r |
4234283c | 678 | else:\r |
f7496d71 LG |
679 | SqlCommand = """select * from %s where ModuleGuid ='%s' and\r |
680 | ModuleVersion = '%s' and InstallPath = '%s'\r | |
681 | and ModuleName = '%s' and PackageGuid ='%s'\r | |
4234283c LG |
682 | and PackageVersion = '%s'\r |
683 | """ % (self.ModInPkgTable, ModuleGuid, \\r | |
d0acc87a | 684 | ModuleVersion, InstallPath, ModuleName, PkgGuid, PkgVersion)\r |
4234283c LG |
685 | self.Cur.execute(SqlCommand)\r |
686 | \r | |
687 | ModList = []\r | |
688 | for ModInfo in self.Cur:\r | |
689 | ModGuid = ModInfo[0]\r | |
690 | ModVersion = ModInfo[1]\r | |
691 | InstallTime = ModInfo[2]\r | |
692 | InstallPath = ModInfo[5]\r | |
693 | ModList.append((ModGuid, ModVersion, InstallTime, PkgGuid, \\r | |
694 | PkgVersion, InstallPath))\r | |
f7496d71 | 695 | \r |
4234283c | 696 | return ModList\r |
f7496d71 | 697 | \r |
4234283c LG |
698 | ## Get a list of module standalone.\r |
699 | #\r | |
f7496d71 LG |
700 | # @param Guid: A module guid\r |
701 | # @param Version: A module version\r | |
4234283c | 702 | #\r |
d0acc87a LG |
703 | def GetStandaloneModule(self, Guid, Version, Name, Path, DpGuid='', DpVersion=''):\r |
704 | (ModuleGuid, ModuleVersion, ModuleName, InstallPath) = (Guid, Version, Name, Path)\r | |
4234283c | 705 | if DpGuid == '':\r |
f7496d71 LG |
706 | SqlCommand = """select * from %s where ModuleGuid ='%s' and\r |
707 | ModuleVersion = '%s' and InstallPath = '%s'\r | |
d0acc87a LG |
708 | and ModuleName = '%s'""" % (self.StandaloneModTable, ModuleGuid, \\r |
709 | ModuleVersion, InstallPath, ModuleName)\r | |
4234283c | 710 | self.Cur.execute(SqlCommand)\r |
f7496d71 | 711 | \r |
4234283c | 712 | else:\r |
f7496d71 LG |
713 | SqlCommand = """select * from %s where ModuleGuid ='%s' and\r |
714 | ModuleVersion = '%s' and InstallPath = '%s' and ModuleName = '%s' and DpGuid ='%s' and DpVersion = '%s'\r | |
4234283c | 715 | """ % (self.StandaloneModTable, ModuleGuid, \\r |
d0acc87a | 716 | ModuleVersion, ModuleName, InstallPath, DpGuid, DpVersion)\r |
4234283c LG |
717 | self.Cur.execute(SqlCommand)\r |
718 | \r | |
719 | ModList = []\r | |
720 | for ModInfo in self.Cur:\r | |
721 | ModGuid = ModInfo[0]\r | |
722 | ModVersion = ModInfo[1]\r | |
723 | InstallTime = ModInfo[2]\r | |
724 | InstallPath = ModInfo[5]\r | |
725 | ModList.append((ModGuid, ModVersion, InstallTime, DpGuid, \\r | |
726 | DpVersion, InstallPath))\r | |
f7496d71 | 727 | \r |
4234283c | 728 | return ModList\r |
f7496d71 | 729 | \r |
4234283c LG |
730 | ## Get a list of module information that comes from DP.\r |
731 | #\r | |
fb0b35e0 AC |
732 | # @param DpGuid: A Distribution Guid\r |
733 | # @param DpVersion: A Distribution version\r | |
4234283c LG |
734 | #\r |
735 | def GetSModInsPathListFromDp(self, DpGuid, DpVersion):\r | |
736 | \r | |
737 | PathList = []\r | |
f7496d71 | 738 | SqlCommand = """select InstallPath from %s where DpGuid ='%s'\r |
4234283c LG |
739 | and DpVersion = '%s'\r |
740 | """ % (self.StandaloneModTable, DpGuid, DpVersion)\r | |
741 | self.Cur.execute(SqlCommand)\r | |
742 | \r | |
743 | for Result in self.Cur:\r | |
744 | InstallPath = Result[0]\r | |
745 | PathList.append(InstallPath)\r | |
f7496d71 | 746 | \r |
4234283c | 747 | return PathList\r |
f7496d71 | 748 | \r |
4234283c LG |
749 | ## Get a list of package information.\r |
750 | #\r | |
fb0b35e0 AC |
751 | # @param DpGuid: A Distribution Guid\r |
752 | # @param DpVersion: A Distribution version\r | |
4234283c LG |
753 | #\r |
754 | def GetPackageListFromDp(self, DpGuid, DpVersion):\r | |
755 | \r | |
f7496d71 | 756 | SqlCommand = """select * from %s where DpGuid ='%s' and\r |
4234283c LG |
757 | DpVersion = '%s' """ % (self.PkgTable, DpGuid, DpVersion)\r |
758 | self.Cur.execute(SqlCommand)\r | |
759 | \r | |
760 | PkgList = []\r | |
761 | for PkgInfo in self.Cur:\r | |
762 | PkgGuid = PkgInfo[0]\r | |
763 | PkgVersion = PkgInfo[1]\r | |
764 | InstallPath = PkgInfo[5]\r | |
765 | PkgList.append((PkgGuid, PkgVersion, InstallPath))\r | |
f7496d71 | 766 | \r |
4234283c | 767 | return PkgList\r |
f7496d71 | 768 | \r |
4234283c LG |
769 | ## Get a list of modules that depends on package information from a DP.\r |
770 | #\r | |
fb0b35e0 AC |
771 | # @param DpGuid: A Distribution Guid\r |
772 | # @param DpVersion: A Distribution version\r | |
4234283c LG |
773 | #\r |
774 | def GetDpDependentModuleList(self, DpGuid, DpVersion):\r | |
f7496d71 | 775 | \r |
4234283c LG |
776 | ModList = []\r |
777 | PkgList = self.GetPackageListFromDp(DpGuid, DpVersion)\r | |
778 | if len(PkgList) > 0:\r | |
779 | return ModList\r | |
f7496d71 | 780 | \r |
4234283c LG |
781 | for Pkg in PkgList:\r |
782 | #\r | |
f7496d71 LG |
783 | # get all in-package modules that depends on current\r |
784 | # Pkg (Guid match, Version match or NA) but not belong to\r | |
4234283c LG |
785 | # current Pkg\r |
786 | #\r | |
f7496d71 LG |
787 | SqlCommand = """select t1.ModuleGuid, t1.ModuleVersion,\r |
788 | t1.InstallPath from %s as t1, %s as t2 where\r | |
789 | t1.ModuleGuid = t2.ModuleGuid and\r | |
790 | t1.ModuleVersion = t2.ModuleVersion and t2.DepexGuid ='%s'\r | |
4234283c LG |
791 | and (t2.DepexVersion = '%s' or t2.DepexVersion = 'N/A') and\r |
792 | t1.PackageGuid != '%s' and t1.PackageVersion != '%s'\r | |
793 | """ % (self.ModInPkgTable, \\r | |
794 | self.ModDepexTable, Pkg[0], Pkg[1], Pkg[0], \\r | |
795 | Pkg[1])\r | |
796 | self.Cur.execute(SqlCommand)\r | |
797 | for ModInfo in self.Cur:\r | |
798 | ModGuid = ModInfo[0]\r | |
799 | ModVersion = ModInfo[1]\r | |
800 | InstallPath = ModInfo[2]\r | |
801 | ModList.append((ModGuid, ModVersion, InstallPath))\r | |
802 | \r | |
803 | #\r | |
f7496d71 | 804 | # get all modules from standalone modules that depends on current\r |
4234283c LG |
805 | #Pkg (Guid match, Version match or NA) but not in current dp\r |
806 | #\r | |
807 | SqlCommand = \\r | |
f7496d71 LG |
808 | """select t1.ModuleGuid, t1.ModuleVersion, t1.InstallPath\r |
809 | from %s as t1, %s as t2 where t1.ModuleGuid = t2.ModuleGuid and\r | |
810 | t1.ModuleVersion = t2.ModuleVersion and t2.DepexGuid ='%s'\r | |
4234283c LG |
811 | and (t2.DepexVersion = '%s' or t2.DepexVersion = 'N/A') and\r |
812 | t1.DpGuid != '%s' and t1.DpVersion != '%s'\r | |
813 | """ % \\r | |
814 | (self.StandaloneModTable, self.ModDepexTable, Pkg[0], \\r | |
815 | Pkg[1], DpGuid, DpVersion)\r | |
816 | self.Cur.execute(SqlCommand)\r | |
817 | for ModInfo in self.Cur:\r | |
818 | ModGuid = ModInfo[0]\r | |
819 | ModVersion = ModInfo[1]\r | |
820 | InstallPath = ModInfo[2]\r | |
821 | ModList.append((ModGuid, ModVersion, InstallPath))\r | |
f7496d71 LG |
822 | \r |
823 | \r | |
4234283c LG |
824 | return ModList\r |
825 | \r | |
826 | ## Get Dp's list of modules.\r | |
827 | #\r | |
fb0b35e0 AC |
828 | # @param DpGuid: A Distribution Guid\r |
829 | # @param DpVersion: A Distribution version\r | |
4234283c | 830 | #\r |
f7496d71 | 831 | def GetDpModuleList(self, DpGuid, DpVersion):\r |
4234283c LG |
832 | ModList = []\r |
833 | #\r | |
834 | # get Dp module list from the DpFileList table\r | |
835 | #\r | |
f7496d71 | 836 | SqlCommand = """select FilePath\r |
4234283c | 837 | from %s\r |
f7496d71 | 838 | where DpGuid = '%s' and DpVersion = '%s' and\r |
4234283c LG |
839 | FilePath like '%%.inf'\r |
840 | """ % (self.DpFileListTable, DpGuid, DpVersion)\r | |
841 | self.Cur.execute(SqlCommand)\r | |
842 | for ModuleInfo in self.Cur:\r | |
843 | FilePath = ModuleInfo[0]\r | |
421ccda3 | 844 | ModList.append(os.path.join(self.Workspace, FilePath))\r |
4234283c | 845 | \r |
f7496d71 LG |
846 | return ModList\r |
847 | \r | |
848 | \r | |
4234283c LG |
849 | ## Get a module depex\r |
850 | #\r | |
f7496d71 LG |
851 | # @param DpGuid: A module Guid\r |
852 | # @param DpVersion: A module version\r | |
4234283c LG |
853 | # @param Path:\r |
854 | #\r | |
855 | def GetModuleDepex(self, Guid, Version, Path):\r | |
f7496d71 | 856 | \r |
4234283c LG |
857 | #\r |
858 | # Get module depex information to DB.\r | |
859 | #\r | |
f7496d71 | 860 | SqlCommand = """select * from %s where ModuleGuid ='%s' and\r |
4234283c LG |
861 | ModuleVersion = '%s' and InstallPath ='%s'\r |
862 | """ % (self.ModDepexTable, Guid, Version, Path)\r | |
863 | self.Cur.execute(SqlCommand)\r | |
421ccda3 | 864 | \r |
f7496d71 | 865 | \r |
4234283c LG |
866 | DepexList = []\r |
867 | for DepInfo in self.Cur:\r | |
868 | DepexGuid = DepInfo[3]\r | |
869 | DepexVersion = DepInfo[4]\r | |
870 | DepexList.append((DepexGuid, DepexVersion))\r | |
f7496d71 | 871 | \r |
4234283c | 872 | return DepexList\r |
f7496d71 | 873 | \r |
421ccda3 HC |
874 | ## Inventory the distribution installed to current workspace\r |
875 | #\r | |
876 | # Inventory the distribution installed to current workspace\r | |
f7496d71 | 877 | #\r |
421ccda3 HC |
878 | def InventoryDistInstalled(self):\r |
879 | SqlCommand = """select * from %s """ % (self.DpTable)\r | |
880 | self.Cur.execute(SqlCommand)\r | |
f7496d71 | 881 | \r |
421ccda3 HC |
882 | DpInfoList = []\r |
883 | for Result in self.Cur:\r | |
884 | DpGuid = Result[0]\r | |
885 | DpVersion = Result[1]\r | |
886 | DpAliasName = Result[3]\r | |
f7496d71 | 887 | DpFileName = Result[4]\r |
421ccda3 | 888 | DpInfoList.append((DpGuid, DpVersion, DpFileName, DpAliasName))\r |
f7496d71 LG |
889 | \r |
890 | return DpInfoList\r | |
421ccda3 | 891 | \r |
4234283c LG |
892 | ## Close entire database\r |
893 | #\r | |
894 | # Close the connection and cursor\r | |
895 | #\r | |
896 | def CloseDb(self):\r | |
897 | #\r | |
898 | # drop the dummy table\r | |
899 | #\r | |
900 | SqlCommand = """\r | |
f7496d71 | 901 | drop table IF EXISTS %s\r |
4234283c LG |
902 | """ % self.DummyTable\r |
903 | self.Cur.execute(SqlCommand)\r | |
904 | self.Conn.commit()\r | |
f7496d71 | 905 | \r |
4234283c LG |
906 | self.Cur.close()\r |
907 | self.Conn.close()\r | |
908 | \r | |
909 | ## Convert To Sql String\r | |
910 | #\r | |
911 | # 1. Replace "'" with "''" in each item of StringList\r | |
f7496d71 | 912 | #\r |
4234283c LG |
913 | # @param StringList: A list for strings to be converted\r |
914 | #\r | |
915 | def __ConvertToSqlString(self, StringList):\r | |
916 | if self.DpTable:\r | |
917 | pass\r | |
174a9d3c | 918 | return list(map(lambda s: s.replace("'", "''"), StringList))\r |
4234283c LG |
919 | \r |
920 | \r | |
921 | \r | |
f7496d71 | 922 | \r |