X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=BaseTools%2FSource%2FPython%2FUPT%2FCore%2FIpiDb.py;h=a781d358c86c0d742978ef6ee92366c0e791bc51;hp=f147963288adcdfc1746cd1d955eb8d5d29ef04d;hb=f7496d717357b9af78414d19679b073403812340;hpb=09e27ac559c5538a0b86afb0b056ef2a3f705483 diff --git a/BaseTools/Source/Python/UPT/Core/IpiDb.py b/BaseTools/Source/Python/UPT/Core/IpiDb.py index f147963288..a781d358c8 100644 --- a/BaseTools/Source/Python/UPT/Core/IpiDb.py +++ b/BaseTools/Source/Python/UPT/Core/IpiDb.py @@ -1,11 +1,11 @@ ## @file # This file is for installed package information database operations # -# Copyright (c) 2011 - 2017, Intel Corporation. All rights reserved.
+# Copyright (c) 2011 - 2018, 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 +# 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, @@ -33,8 +33,8 @@ import platform as pf # # This class represents the installed package information database # Add/Remove/Get installed distribution package information here. -# -# +# +# # @param object: Inherited from object class # @param DbPath: A string for the path of the database # @@ -71,16 +71,16 @@ class IpiDatabase(object): SqlCommand = """ create table %s ( Dummy TEXT NOT NULL, - PRIMARY KEY (Dummy) + PRIMARY KEY (Dummy) )""" % self.DummyTable self.Cur.execute(SqlCommand) self.Conn.commit() except sqlite3.OperationalError: - Logger.Error("UPT", - UPT_ALREADY_RUNNING_ERROR, + Logger.Error("UPT", + UPT_ALREADY_RUNNING_ERROR, ST.ERR_UPT_ALREADY_RUNNING_ERROR ) - + # # Create new table # @@ -89,12 +89,12 @@ class IpiDatabase(object): DpGuid TEXT NOT NULL,DpVersion TEXT NOT NULL, InstallTime REAL NOT NULL, NewPkgFileName TEXT NOT NULL, - PkgFileName TEXT NOT NULL, + PkgFileName TEXT NOT NULL, RePackage TEXT NOT NULL, - PRIMARY KEY (DpGuid, DpVersion) + PRIMARY KEY (DpGuid, DpVersion) )""" % self.DpTable self.Cur.execute(SqlCommand) - + SqlCommand = """ create table IF NOT EXISTS %s ( FilePath TEXT NOT NULL, @@ -104,7 +104,7 @@ class IpiDatabase(object): PRIMARY KEY (FilePath) )""" % self.DpFileListTable self.Cur.execute(SqlCommand) - + SqlCommand = """ create table IF NOT EXISTS %s ( PackageGuid TEXT NOT NULL, @@ -116,7 +116,7 @@ class IpiDatabase(object): PRIMARY KEY (PackageGuid, PackageVersion, InstallPath) )""" % self.PkgTable self.Cur.execute(SqlCommand) - + SqlCommand = """ create table IF NOT EXISTS %s ( ModuleGuid TEXT NOT NULL, @@ -129,7 +129,7 @@ class IpiDatabase(object): PRIMARY KEY (ModuleGuid, ModuleVersion, ModuleName, InstallPath) )""" % self.ModInPkgTable self.Cur.execute(SqlCommand) - + SqlCommand = """ create table IF NOT EXISTS %s ( ModuleGuid TEXT NOT NULL, @@ -142,7 +142,7 @@ class IpiDatabase(object): PRIMARY KEY (ModuleGuid, ModuleVersion, ModuleName, InstallPath) )""" % self.StandaloneModTable self.Cur.execute(SqlCommand) - + SqlCommand = """ create table IF NOT EXISTS %s ( ModuleGuid TEXT NOT NULL, @@ -153,9 +153,9 @@ class IpiDatabase(object): DepexVersion TEXT )""" % self.ModDepexTable self.Cur.execute(SqlCommand) - + self.Conn.commit() - + Logger.Verbose(ST.MSG_INIT_IPI_FINISH) def RollBack(self): @@ -199,7 +199,7 @@ class IpiDatabase(object): self._AddDpFilePathList(DpObj.Header.GetGuid(), \ DpObj.Header.GetVersion(), FilePath, \ Md5Sum) - + for ModKey in DpObj.ModuleSurfaceArea.keys(): ModGuid = ModKey[0] ModVersion = ModKey[1] @@ -219,18 +219,18 @@ class IpiDatabase(object): self._AddDpFilePathList(DpObj.Header.GetGuid(), \ DpObj.Header.GetVersion(), \ Path, Md5Sum) - + # # add tool/misc files # for (Path, Md5Sum) in DpObj.FileList: self._AddDpFilePathList(DpObj.Header.GetGuid(), \ DpObj.Header.GetVersion(), Path, Md5Sum) - + self._AddDp(DpObj.Header.GetGuid(), DpObj.Header.GetVersion(), \ NewDpPkgFileName, DpPkgFileName, RePackage) - - except sqlite3.IntegrityError, DetailMsg: + + except sqlite3.IntegrityError as DetailMsg: Logger.Error("UPT", UPT_DB_UPDATE_ERROR, ST.ERR_UPT_DB_UPDATE_ERROR, @@ -239,21 +239,21 @@ class IpiDatabase(object): ## Add a distribution install information # - # @param Guid Guid of the distribution package - # @param Version Version of the distribution package + # @param Guid Guid of the distribution package + # @param Version Version of the distribution package # @param NewDpFileName the saved filename of distribution package file # @param DistributionFileName the filename of distribution package file # def _AddDp(self, Guid, Version, NewDpFileName, DistributionFileName, \ RePackage): - - if Version == None or len(Version.strip()) == 0: + + if Version is None or len(Version.strip()) == 0: Version = 'N/A' - + # # Add newly installed DP information to DB. # - if NewDpFileName == None or len(NewDpFileName.strip()) == 0: + if NewDpFileName is None or len(NewDpFileName.strip()) == 0: PkgFileName = 'N/A' else: PkgFileName = NewDpFileName @@ -264,10 +264,10 @@ class IpiDatabase(object): DistributionFileName, str(RePackage).upper()) self.Cur.execute(SqlCommand) - + ## Add a file list from DP # - # @param DpGuid: A DpGuid + # @param DpGuid: A DpGuid # @param DpVersion: A DpVersion # @param Path: A Path # @param Path: A Md5Sum @@ -284,26 +284,26 @@ class IpiDatabase(object): (self.DpFileListTable, Path, DpGuid, DpVersion, Md5Sum) self.Cur.execute(SqlCommand) - + ## Add a package install information # - # @param Guid: A package guid + # @param Guid: A package guid # @param Version: A package version - # @param DpGuid: A DpGuid + # @param DpGuid: A DpGuid # @param DpVersion: A DpVersion # @param Path: A Path # def _AddPackage(self, Guid, Version, DpGuid=None, DpVersion=None, Path=''): - - if Version == None or len(Version.strip()) == 0: + + if Version is None or len(Version.strip()) == 0: Version = 'N/A' - - if DpGuid == None or len(DpGuid.strip()) == 0: + + if DpGuid is None or len(DpGuid.strip()) == 0: DpGuid = 'N/A' - - if DpVersion == None or len(DpVersion.strip()) == 0: + + if DpVersion is None or len(DpVersion.strip()) == 0: DpVersion = 'N/A' - + # # Add newly installed package information to DB. # @@ -312,10 +312,10 @@ class IpiDatabase(object): """insert into %s values('%s', '%s', %s, '%s', '%s', '%s')""" % \ (self.PkgTable, Guid, Version, CurrentTime, DpGuid, DpVersion, Path) self.Cur.execute(SqlCommand) - + ## Add a module that from a package install information # - # @param Guid: Module Guid + # @param Guid: Module Guid # @param Version: Module version # @param Name: Module Name # @param PkgGuid: Package Guid @@ -324,21 +324,21 @@ class IpiDatabase(object): # def _AddModuleInPackage(self, Guid, Version, Name, PkgGuid=None, \ PkgVersion=None, Path=''): - - if Version == None or len(Version.strip()) == 0: + + if Version is None or len(Version.strip()) == 0: Version = 'N/A' - - if PkgGuid == None or len(PkgGuid.strip()) == 0: + + if PkgGuid is None or len(PkgGuid.strip()) == 0: PkgGuid = 'N/A' - - if PkgVersion == None or len(PkgVersion.strip()) == 0: + + if PkgVersion is None or len(PkgVersion.strip()) == 0: PkgVersion = 'N/A' - + if os.name == 'posix': Path = Path.replace('\\', os.sep) else: Path = Path.replace('/', os.sep) - + # # Add module from package information to DB. # @@ -348,7 +348,7 @@ class IpiDatabase(object): (self.ModInPkgTable, Guid, Version, Name, CurrentTime, PkgGuid, PkgVersion, \ Path) self.Cur.execute(SqlCommand) - + ## Add a module that is standalone install information # # @param Guid: a module Guid @@ -360,16 +360,16 @@ class IpiDatabase(object): # def _AddStandaloneModule(self, Guid, Version, Name, DpGuid=None, \ DpVersion=None, Path=''): - - if Version == None or len(Version.strip()) == 0: + + if Version is None or len(Version.strip()) == 0: Version = 'N/A' - - if DpGuid == None or len(DpGuid.strip()) == 0: + + if DpGuid is None or len(DpGuid.strip()) == 0: DpGuid = 'N/A' - - if DpVersion == None or len(DpVersion.strip()) == 0: + + if DpVersion is None or len(DpVersion.strip()) == 0: DpVersion = 'N/A' - + # # Add module standalone information to DB. # @@ -379,7 +379,7 @@ class IpiDatabase(object): (self.StandaloneModTable, Guid, Version, Name, CurrentTime, DpGuid, \ DpVersion, Path) self.Cur.execute(SqlCommand) - + ## Add a module depex # # @param Guid: a module Guid @@ -390,49 +390,49 @@ class IpiDatabase(object): # def _AddModuleDepex(self, Guid, Version, Name, Path, DepexGuid=None, \ DepexVersion=None): - - if DepexGuid == None or len(DepexGuid.strip()) == 0: + + if DepexGuid is None or len(DepexGuid.strip()) == 0: DepexGuid = 'N/A' - - if DepexVersion == None or len(DepexVersion.strip()) == 0: + + if DepexVersion is None or len(DepexVersion.strip()) == 0: DepexVersion = 'N/A' - + if os.name == 'posix': Path = Path.replace('\\', os.sep) else: Path = Path.replace('/', os.sep) - + # # Add module depex information to DB. # SqlCommand = """insert into %s values('%s', '%s', '%s', '%s', '%s', '%s')"""\ % (self.ModDepexTable, Guid, Version, Name, Path, DepexGuid, DepexVersion) self.Cur.execute(SqlCommand) - - ## Remove a distribution install information, if no version specified, + + ## Remove a distribution install information, if no version specified, # remove all DPs with this Guid. # - # @param DpGuid: guid of dpex + # @param DpGuid: guid of dpex # @param DpVersion: version of dpex # def RemoveDpObj(self, DpGuid, DpVersion): - + PkgList = self.GetPackageListFromDp(DpGuid, DpVersion) # # delete from ModDepex the standalone module's dependency # SqlCommand = \ - """delete from ModDepexInfo where ModDepexInfo.ModuleGuid in - (select ModuleGuid from StandaloneModInfo as B where B.DpGuid = '%s' + """delete from ModDepexInfo where ModDepexInfo.ModuleGuid in + (select ModuleGuid from StandaloneModInfo as B where B.DpGuid = '%s' and B.DpVersion = '%s') and ModDepexInfo.ModuleVersion in - (select ModuleVersion from StandaloneModInfo as B + (select ModuleVersion from StandaloneModInfo as B where B.DpGuid = '%s' and B.DpVersion = '%s') and ModDepexInfo.ModuleName in - (select ModuleName from StandaloneModInfo as B + (select ModuleName from StandaloneModInfo as B where B.DpGuid = '%s' and B.DpVersion = '%s') and ModDepexInfo.InstallPath in - (select InstallPath from StandaloneModInfo as B + (select InstallPath from StandaloneModInfo as B where B.DpGuid = '%s' and B.DpVersion = '%s') """ % \ (DpGuid, DpVersion, DpGuid, DpVersion, DpGuid, DpVersion, DpGuid, DpVersion) @@ -443,24 +443,24 @@ class IpiDatabase(object): for Pkg in PkgList: SqlCommand = \ - """delete from ModDepexInfo where ModDepexInfo.ModuleGuid in - (select ModuleGuid from ModInPkgInfo - where ModInPkgInfo.PackageGuid ='%s' and + """delete from ModDepexInfo where ModDepexInfo.ModuleGuid in + (select ModuleGuid from ModInPkgInfo + where ModInPkgInfo.PackageGuid ='%s' and ModInPkgInfo.PackageVersion = '%s') and ModDepexInfo.ModuleVersion in - (select ModuleVersion from ModInPkgInfo - where ModInPkgInfo.PackageGuid ='%s' and + (select ModuleVersion from ModInPkgInfo + where ModInPkgInfo.PackageGuid ='%s' and ModInPkgInfo.PackageVersion = '%s') and ModDepexInfo.ModuleName in - (select ModuleName from ModInPkgInfo - where ModInPkgInfo.PackageGuid ='%s' and + (select ModuleName from ModInPkgInfo + where ModInPkgInfo.PackageGuid ='%s' and ModInPkgInfo.PackageVersion = '%s') and ModDepexInfo.InstallPath in - (select InstallPath from ModInPkgInfo where - ModInPkgInfo.PackageGuid ='%s' + (select InstallPath from ModInPkgInfo where + ModInPkgInfo.PackageGuid ='%s' and ModInPkgInfo.PackageVersion = '%s')""" \ - % (Pkg[0], Pkg[1], Pkg[0], Pkg[1], Pkg[0], Pkg[1],Pkg[0], Pkg[1]) - + % (Pkg[0], Pkg[1], Pkg[0], Pkg[1], Pkg[0], Pkg[1], Pkg[0], Pkg[1]) + self.Cur.execute(SqlCommand) # # delete the standalone module @@ -474,7 +474,7 @@ class IpiDatabase(object): # for Pkg in PkgList: SqlCommand = \ - """delete from %s where %s.PackageGuid ='%s' + """delete from %s where %s.PackageGuid ='%s' and %s.PackageVersion = '%s'""" % \ (self.ModInPkgTable, self.ModInPkgTable, Pkg[0], \ self.ModInPkgTable, Pkg[1]) @@ -493,31 +493,31 @@ class IpiDatabase(object): """delete from %s where DpGuid ='%s' and DpVersion = '%s'""" % \ (self.DpFileListTable, DpGuid, DpVersion) self.Cur.execute(SqlCommand) - # + # # delete DP # SqlCommand = \ """delete from %s where DpGuid ='%s' and DpVersion = '%s'""" % \ (self.DpTable, DpGuid, DpVersion) self.Cur.execute(SqlCommand) - + #self.Conn.commit() - + ## Get a list of distribution install information. # - # @param Guid: distribution package guid - # @param Version: distribution package version + # @param Guid: distribution package guid + # @param Version: distribution package version # def GetDp(self, Guid, Version): - - if Version == None or len(Version.strip()) == 0: + + if Version is None or len(Version.strip()) == 0: Version = 'N/A' Logger.Verbose(ST.MSG_GET_DP_INSTALL_LIST) (DpGuid, DpVersion) = (Guid, Version) SqlCommand = """select * from %s where DpGuid ='%s'""" % \ (self.DpTable, DpGuid) self.Cur.execute(SqlCommand) - + else: Logger.Verbose(ST.MSG_GET_DP_INSTALL_INFO_START) (DpGuid, DpVersion) = (Guid, Version) @@ -533,14 +533,14 @@ class IpiDatabase(object): InstallTime = DpInfo[2] PkgFileName = DpInfo[3] DpList.append((DpGuid, DpVersion, InstallTime, PkgFileName)) - - Logger.Verbose(ST.MSG_GET_DP_INSTALL_INFO_FINISH) + + Logger.Verbose(ST.MSG_GET_DP_INSTALL_INFO_FINISH) return DpList - + ## Get a list of distribution install dirs # - # @param Guid: distribution package guid - # @param Version: distribution package version + # @param Guid: distribution package guid + # @param Version: distribution package version # def GetDpInstallDirList(self, Guid, Version): SqlCommand = """select InstallPath from PkgInfo where DpGuid = '%s' and DpVersion = '%s'""" % (Guid, Version) @@ -562,11 +562,11 @@ class IpiDatabase(object): ## Get a list of distribution install file path information. # - # @param Guid: distribution package guid - # @param Version: distribution package version + # @param Guid: distribution package guid + # @param Version: distribution package version # def GetDpFileList(self, Guid, Version): - + (DpGuid, DpVersion) = (Guid, Version) SqlCommand = \ """select * from %s where DpGuid ='%s' and DpVersion = '%s'""" % \ @@ -578,7 +578,7 @@ class IpiDatabase(object): Path = Result[0] Md5Sum = Result[3] PathList.append((os.path.join(self.Workspace, Path), Md5Sum)) - + return PathList ## Get files' repackage attribute if present that are installed into current workspace @@ -588,12 +588,12 @@ class IpiDatabase(object): def GetRePkgDict(self): SqlCommand = """select * from %s """ % (self.DpTable) self.Cur.execute(SqlCommand) - + DpInfoList = [] for Result in self.Cur: DpInfoList.append(Result) - FileDict = {} + FileDict = {} for Result in DpInfoList: DpGuid = Result[0] DpVersion = Result[1] @@ -606,12 +606,12 @@ class IpiDatabase(object): for FileInfo in self.GetDpFileList(DpGuid, DpVersion): PathInfo = FileInfo[0] FileDict[PathInfo] = DpGuid, DpVersion, NewDpFileName, RePackage - + return FileDict - + ## Get (Guid, Version) from distribution file name information. # - # @param DistributionFile: Distribution File + # @param DistributionFile: Distribution File # def GetDpByName(self, DistributionFile): SqlCommand = """select * from %s where NewPkgFileName = '%s'""" % \ @@ -622,34 +622,34 @@ class IpiDatabase(object): DpGuid = Result[0] DpVersion = Result[1] NewDpFileName = Result[3] - + return (DpGuid, DpVersion, NewDpFileName) else: return (None, None, None) - + ## Get a list of package information. # - # @param Guid: package guid + # @param Guid: package guid # @param Version: package version # def GetPackage(self, Guid, Version, DpGuid='', DpVersion=''): - + if DpVersion == '' or DpGuid == '': (PackageGuid, PackageVersion) = (Guid, Version) - SqlCommand = """select * from %s where PackageGuid ='%s' + SqlCommand = """select * from %s where PackageGuid ='%s' and PackageVersion = '%s'""" % (self.PkgTable, PackageGuid, \ PackageVersion) self.Cur.execute(SqlCommand) - - elif Version == None or len(Version.strip()) == 0: - + + elif Version is None or len(Version.strip()) == 0: + SqlCommand = """select * from %s where PackageGuid ='%s'""" % \ (self.PkgTable, Guid) self.Cur.execute(SqlCommand) else: (PackageGuid, PackageVersion) = (Guid, Version) - SqlCommand = """select * from %s where PackageGuid ='%s' and + SqlCommand = """select * from %s where PackageGuid ='%s' and PackageVersion = '%s' and DpGuid = '%s' and DpVersion = '%s'""" % \ (self.PkgTable, PackageGuid, PackageVersion, \ @@ -664,10 +664,10 @@ class IpiDatabase(object): InstallPath = PkgInfo[5] PkgList.append((PkgGuid, PkgVersion, InstallTime, DpGuid, \ DpVersion, InstallPath)) - + return PkgList - - + + ## Get a list of module in package information. # # @param Guid: A module guid @@ -676,15 +676,15 @@ class IpiDatabase(object): def GetModInPackage(self, Guid, Version, Name, Path, PkgGuid='', PkgVersion=''): (ModuleGuid, ModuleVersion, ModuleName, InstallPath) = (Guid, Version, Name, Path) if PkgVersion == '' or PkgGuid == '': - SqlCommand = """select * from %s where ModuleGuid ='%s' and - ModuleVersion = '%s' and InstallPath = '%s' + SqlCommand = """select * from %s where ModuleGuid ='%s' and + ModuleVersion = '%s' and InstallPath = '%s' and ModuleName = '%s'""" % (self.ModInPkgTable, ModuleGuid, \ ModuleVersion, InstallPath, ModuleName) self.Cur.execute(SqlCommand) else: - SqlCommand = """select * from %s where ModuleGuid ='%s' and - ModuleVersion = '%s' and InstallPath = '%s' - and ModuleName = '%s' and PackageGuid ='%s' + SqlCommand = """select * from %s where ModuleGuid ='%s' and + ModuleVersion = '%s' and InstallPath = '%s' + and ModuleName = '%s' and PackageGuid ='%s' and PackageVersion = '%s' """ % (self.ModInPkgTable, ModuleGuid, \ ModuleVersion, InstallPath, ModuleName, PkgGuid, PkgVersion) @@ -698,26 +698,26 @@ class IpiDatabase(object): InstallPath = ModInfo[5] ModList.append((ModGuid, ModVersion, InstallTime, PkgGuid, \ PkgVersion, InstallPath)) - + return ModList - + ## Get a list of module standalone. # - # @param Guid: A module guid - # @param Version: A module version + # @param Guid: A module guid + # @param Version: A module version # def GetStandaloneModule(self, Guid, Version, Name, Path, DpGuid='', DpVersion=''): (ModuleGuid, ModuleVersion, ModuleName, InstallPath) = (Guid, Version, Name, Path) if DpGuid == '': - SqlCommand = """select * from %s where ModuleGuid ='%s' and - ModuleVersion = '%s' and InstallPath = '%s' + SqlCommand = """select * from %s where ModuleGuid ='%s' and + ModuleVersion = '%s' and InstallPath = '%s' and ModuleName = '%s'""" % (self.StandaloneModTable, ModuleGuid, \ ModuleVersion, InstallPath, ModuleName) self.Cur.execute(SqlCommand) - + else: - SqlCommand = """select * from %s where ModuleGuid ='%s' and - ModuleVersion = '%s' and InstallPath = '%s' and ModuleName = '%s' and DpGuid ='%s' and DpVersion = '%s' + SqlCommand = """select * from %s where ModuleGuid ='%s' and + ModuleVersion = '%s' and InstallPath = '%s' and ModuleName = '%s' and DpGuid ='%s' and DpVersion = '%s' """ % (self.StandaloneModTable, ModuleGuid, \ ModuleVersion, ModuleName, InstallPath, DpGuid, DpVersion) self.Cur.execute(SqlCommand) @@ -730,18 +730,18 @@ class IpiDatabase(object): InstallPath = ModInfo[5] ModList.append((ModGuid, ModVersion, InstallTime, DpGuid, \ DpVersion, InstallPath)) - + return ModList - + ## Get a list of module information that comes from DP. # - # @param DpGuid: A Distrabution Guid - # @param DpVersion: A Distrabution version + # @param DpGuid: A Distrabution Guid + # @param DpVersion: A Distrabution version # def GetSModInsPathListFromDp(self, DpGuid, DpVersion): PathList = [] - SqlCommand = """select InstallPath from %s where DpGuid ='%s' + SqlCommand = """select InstallPath from %s where DpGuid ='%s' and DpVersion = '%s' """ % (self.StandaloneModTable, DpGuid, DpVersion) self.Cur.execute(SqlCommand) @@ -749,17 +749,17 @@ class IpiDatabase(object): for Result in self.Cur: InstallPath = Result[0] PathList.append(InstallPath) - + return PathList - + ## Get a list of package information. # - # @param DpGuid: A Distrabution Guid - # @param DpVersion: A Distrabution version + # @param DpGuid: A Distrabution Guid + # @param DpVersion: A Distrabution version # def GetPackageListFromDp(self, DpGuid, DpVersion): - SqlCommand = """select * from %s where DpGuid ='%s' and + SqlCommand = """select * from %s where DpGuid ='%s' and DpVersion = '%s' """ % (self.PkgTable, DpGuid, DpVersion) self.Cur.execute(SqlCommand) @@ -769,31 +769,31 @@ class IpiDatabase(object): PkgVersion = PkgInfo[1] InstallPath = PkgInfo[5] PkgList.append((PkgGuid, PkgVersion, InstallPath)) - + return PkgList - + ## Get a list of modules that depends on package information from a DP. # - # @param DpGuid: A Distrabution Guid - # @param DpVersion: A Distrabution version + # @param DpGuid: A Distrabution Guid + # @param DpVersion: A Distrabution version # def GetDpDependentModuleList(self, DpGuid, DpVersion): - + ModList = [] PkgList = self.GetPackageListFromDp(DpGuid, DpVersion) if len(PkgList) > 0: return ModList - + for Pkg in PkgList: # - # get all in-package modules that depends on current - # Pkg (Guid match, Version match or NA) but not belong to + # get all in-package modules that depends on current + # Pkg (Guid match, Version match or NA) but not belong to # current Pkg # - SqlCommand = """select t1.ModuleGuid, t1.ModuleVersion, - t1.InstallPath from %s as t1, %s as t2 where - t1.ModuleGuid = t2.ModuleGuid and - t1.ModuleVersion = t2.ModuleVersion and t2.DepexGuid ='%s' + SqlCommand = """select t1.ModuleGuid, t1.ModuleVersion, + t1.InstallPath from %s as t1, %s as t2 where + t1.ModuleGuid = t2.ModuleGuid and + t1.ModuleVersion = t2.ModuleVersion and t2.DepexGuid ='%s' and (t2.DepexVersion = '%s' or t2.DepexVersion = 'N/A') and t1.PackageGuid != '%s' and t1.PackageVersion != '%s' """ % (self.ModInPkgTable, \ @@ -807,13 +807,13 @@ class IpiDatabase(object): ModList.append((ModGuid, ModVersion, InstallPath)) # - # get all modules from standalone modules that depends on current + # get all modules from standalone modules that depends on current #Pkg (Guid match, Version match or NA) but not in current dp # SqlCommand = \ - """select t1.ModuleGuid, t1.ModuleVersion, t1.InstallPath - from %s as t1, %s as t2 where t1.ModuleGuid = t2.ModuleGuid and - t1.ModuleVersion = t2.ModuleVersion and t2.DepexGuid ='%s' + """select t1.ModuleGuid, t1.ModuleVersion, t1.InstallPath + from %s as t1, %s as t2 where t1.ModuleGuid = t2.ModuleGuid and + t1.ModuleVersion = t2.ModuleVersion and t2.DepexGuid ='%s' and (t2.DepexVersion = '%s' or t2.DepexVersion = 'N/A') and t1.DpGuid != '%s' and t1.DpVersion != '%s' """ % \ @@ -825,75 +825,75 @@ class IpiDatabase(object): ModVersion = ModInfo[1] InstallPath = ModInfo[2] ModList.append((ModGuid, ModVersion, InstallPath)) - - + + return ModList ## Get Dp's list of modules. # - # @param DpGuid: A Distrabution Guid - # @param DpVersion: A Distrabution version + # @param DpGuid: A Distrabution Guid + # @param DpVersion: A Distrabution version # - def GetDpModuleList(self, DpGuid, DpVersion): + def GetDpModuleList(self, DpGuid, DpVersion): ModList = [] # # get Dp module list from the DpFileList table # - SqlCommand = """select FilePath + SqlCommand = """select FilePath from %s - where DpGuid = '%s' and DpVersion = '%s' and + where DpGuid = '%s' and DpVersion = '%s' and FilePath like '%%.inf' """ % (self.DpFileListTable, DpGuid, DpVersion) self.Cur.execute(SqlCommand) for ModuleInfo in self.Cur: FilePath = ModuleInfo[0] ModList.append(os.path.join(self.Workspace, FilePath)) - - return ModList - + return ModList + + ## Get a module depex # - # @param DpGuid: A module Guid - # @param DpVersion: A module version + # @param DpGuid: A module Guid + # @param DpVersion: A module version # @param Path: # def GetModuleDepex(self, Guid, Version, Path): - + # # Get module depex information to DB. # - SqlCommand = """select * from %s where ModuleGuid ='%s' and + SqlCommand = """select * from %s where ModuleGuid ='%s' and ModuleVersion = '%s' and InstallPath ='%s' """ % (self.ModDepexTable, Guid, Version, Path) self.Cur.execute(SqlCommand) - + DepexList = [] for DepInfo in self.Cur: DepexGuid = DepInfo[3] DepexVersion = DepInfo[4] DepexList.append((DepexGuid, DepexVersion)) - + return DepexList - + ## Inventory the distribution installed to current workspace # # Inventory the distribution installed to current workspace - # + # def InventoryDistInstalled(self): SqlCommand = """select * from %s """ % (self.DpTable) self.Cur.execute(SqlCommand) - + DpInfoList = [] for Result in self.Cur: DpGuid = Result[0] DpVersion = Result[1] DpAliasName = Result[3] - DpFileName = Result[4] + DpFileName = Result[4] DpInfoList.append((DpGuid, DpVersion, DpFileName, DpAliasName)) - - return DpInfoList + + return DpInfoList ## Close entire database # @@ -904,25 +904,25 @@ class IpiDatabase(object): # drop the dummy table # SqlCommand = """ - drop table IF EXISTS %s + drop table IF EXISTS %s """ % self.DummyTable self.Cur.execute(SqlCommand) self.Conn.commit() - + self.Cur.close() self.Conn.close() ## Convert To Sql String # # 1. Replace "'" with "''" in each item of StringList - # + # # @param StringList: A list for strings to be converted # def __ConvertToSqlString(self, StringList): if self.DpTable: pass - return map(lambda s: s.replace("'", "''") , StringList) + return map(lambda s: s.replace("'", "''"), StringList) + - \ No newline at end of file