def __parseAllKIDSInfoFilesList__(self): kidsParser = KIDSPatchInfoParser() for kidsInfoFile in self._kidsInfoFileList: patchInfo = kidsParser.parseKIDSInfoFile(kidsInfoFile) if not patchInfo: logger.warn("invalid kids info file %s" % kidsInfoFile) self._invalidInfoFileSet.add(kidsInfoFile) continue """ only add to list for info that is related to a KIDS patch""" installName = patchInfo.installName if installName not in self._kidsInstallNameDict: logger.warn("no KIDS file related to %s" % patchInfo) if installName in self._missKidsBuildDict: logger.warn("duplicated kids install name") if kidsInfoFile != self._missKidsBuildDict[installName].kidsInfoPath: logger.warn("duplicated kids info file name %s" % kidsInfoFile) continue self._missKidsBuildDict[installName] = patchInfo continue patchInfo.kidsFilePath = self._kidsInstallNameDict[installName] assert patchInfo.kidsFilePath """ update PatchInfo kidsSha1 and kidsSha1Path """ if installName in self._kidsInstallNameSha1Dict: sha1Path = self._kidsInstallNameSha1Dict[installName] patchInfo.kidsSha1Path = sha1Path patchInfo.kidsSha1 = readSha1SumFromSha1File(sha1Path) if installName in self._patchInfoDict: logger.warn("duplicated installName %s, %s, %s" % (installName, self._patchInfoDict[installName], kidsInfoFile)) self._patchInfoDict[installName] = patchInfo
def getFileMan22_2RoutineFile(rFile): sha1sum = readSha1SumFromSha1File(rFile) logger.info("sha1sum is %s" % sha1sum) result, path = obtainKIDSBuildFileBySha1(rFile, sha1sum, filedir) if not result: logger.error("Could not obtain FileMan 22V2 file for %s" % rFile) raise Exception("Error getting FileMan 22V2 file for %s" % rFile) return path
def __parseAllKIDSInfoFilesList__(self): kidsParser = PatchInfoParser() for kidsInfoFile in self._kidsInfoFileList: patchInfo = kidsParser.parseKIDSInfoFile(kidsInfoFile) if not patchInfo: logger.debug("invalid kids info file %s" % kidsInfoFile) self._invalidInfoFileSet.add(kidsInfoFile) continue """ only add to list for info that is related to a Patch""" installName = patchInfo.installName if installName not in self._kidsInstallNameDict: logger.warn("no KIDS file related to %s (%s)" % (installName, kidsInfoFile)) if installName in self._missKidsBuildDict: logger.warn("duplicated kids install name") if kidsInfoFile != self._missKidsBuildDict[ installName].kidsInfoPath: logger.warn("duplicated kids info file name %s" % kidsInfoFile) continue self._missKidsBuildDict[installName] = patchInfo continue patchInfo.kidsFilePath = self._kidsInstallNameDict[installName] assert patchInfo.kidsFilePath """ update PatchInfo kidsSha1 and kidsSha1Path """ if installName in self._kidsInstallNameSha1Dict: sha1Path = self._kidsInstallNameSha1Dict[installName] patchInfo.kidsSha1Path = sha1Path patchInfo.kidsSha1 = readSha1SumFromSha1File(sha1Path) if installName in self._patchInfoDict: logger.warn("duplicated installName %s, %s, %s" % (installName, self._patchInfoDict[installName], kidsInfoFile)) """ merge the dependency if needed, also put extra dependency into optional set """ if installName in self._kidsDepBuildDict: infoDepSet = set() kidsDepSet = set() if patchInfo.depKIDSBuild: infoDepSet = patchInfo.depKIDSBuild if self._kidsDepBuildDict[installName]: kidsDepSet = self._kidsDepBuildDict[installName] diffSet = kidsDepSet ^ infoDepSet if len(diffSet): logger.info("Merging kids dependencies %s" % installName) logger.debug("kids build set is %s" % kidsDepSet) logger.debug("info build set is %s" % infoDepSet) logger.warning("difference set: %s" % diffSet) patchInfo.depKIDSBuild = infoDepSet | kidsDepSet patchInfo.optionalDepSet = infoDepSet - kidsDepSet else: patchInfo.depKIDSBuild = infoDepSet self._patchInfoDict[installName] = patchInfo
def __parseAllKIDSInfoFilesList__(self): kidsParser = PatchInfoParser() for kidsInfoFile in self._kidsInfoFileList: patchInfo = kidsParser.parseKIDSInfoFile(kidsInfoFile) if not patchInfo: logger.debug("invalid kids info file %s" % kidsInfoFile) self._invalidInfoFileSet.add(kidsInfoFile) continue """ only add to list for info that is related to a Patch""" installName = patchInfo.installName if installName not in self._kidsInstallNameDict: logger.warn("no KIDS file related to %s (%s)" % (installName, kidsInfoFile)) if installName in self._missKidsBuildDict: logger.warn("duplicated kids install name") if kidsInfoFile != self._missKidsBuildDict[installName].kidsInfoPath: logger.warn("duplicated kids info file name %s" % kidsInfoFile) continue self._missKidsBuildDict[installName] = patchInfo continue patchInfo.kidsFilePath = self._kidsInstallNameDict[installName] assert patchInfo.kidsFilePath """ update PatchInfo kidsSha1 and kidsSha1Path """ if installName in self._kidsInstallNameSha1Dict: sha1Path = self._kidsInstallNameSha1Dict[installName] patchInfo.kidsSha1Path = sha1Path patchInfo.kidsSha1 = readSha1SumFromSha1File(sha1Path) if installName in self._patchInfoDict: logger.warn("duplicated installName %s, %s, %s" % (installName, self._patchInfoDict[installName], kidsInfoFile)) """ merge the dependency if needed, also put extra dependency into optional set """ if installName in self._kidsDepBuildDict: infoDepSet = set() kidsDepSet = set() if patchInfo.depKIDSBuild: infoDepSet = patchInfo.depKIDSBuild if self._kidsDepBuildDict[installName]: kidsDepSet = self._kidsDepBuildDict[installName] diffSet = kidsDepSet ^ infoDepSet if len(diffSet): logger.info("Merging kids dependencies %s" % installName) logger.debug("kids build set is %s" % kidsDepSet) logger.debug("info build set is %s" % infoDepSet) logger.warning("difference set: %s" % diffSet) patchInfo.depKIDSBuild = infoDepSet | kidsDepSet patchInfo.optionalDepSet = infoDepSet - kidsDepSet else: patchInfo.depKIDSBuild = infoDepSet self._patchInfoDict[installName] = patchInfo
def __addMissKIDSInfoPatch__(self): for kidsInstallName in self._missKidsInfoSet: logger.debug("Installation Name: %s, does not have info file, %s" % (kidsInstallName, self._kidsInstallNameDict[kidsInstallName])) patchInfo = PatchInfo() patchInfo.installName = kidsInstallName setPatchInfoFromInstallName(kidsInstallName, patchInfo) if kidsInstallName in self._kidsInstallNameSha1Dict: sha1Path = self._kidsInstallNameSha1Dict[kidsInstallName] patchInfo.kidsSha1Path = sha1Path patchInfo.kidsSha1 = readSha1SumFromSha1File(sha1Path) if kidsInstallName in self._installNameSeqMap: patchInfo.seqNo = self._installNameSeqMap[kidsInstallName] patchInfo.kidsFilePath = self._kidsInstallNameDict[kidsInstallName] if kidsInstallName in self._kidsDepBuildDict: logger.info("update the Missing Info KIDS depencency %s" % kidsInstallName) patchInfo.depKIDSBuild = self._kidsDepBuildDict[kidsInstallName] self._patchInfoDict[kidsInstallName] = patchInfo
def __getGlobalFileList__(self): globalFiles = [] if self._globalFiles is None or len(self._globalFiles) == 0: return globalFiles for gFile in self._globalFiles: if isValidGlobalFileSuffix(gFile): globalFiles.append(gFile) continue if isValidGlobalSha1Suffix(gFile): # external file sha1Sum = readSha1SumFromSha1File(gFile) (result, path) = obtainKIDSBuildFileBySha1(gFile, sha1Sum, DEFAULT_CACHE_DIR) if not result: logger.error("Could not obtain global file for %s" % gFile) raise Exception("Error getting global file for %s" % gFile) globalFiles.append(path) if len(globalFiles) > 0: logger.info("global file lists %s" % globalFiles) return globalFiles
def downloadAllKIDSSha1File(topDir, cacheDir): from ConvertToExternalData import isValidKIDSBuildSha1Suffix from ConvertToExternalData import readSha1SumFromSha1File import shutil initConsoleLogging() absCurDir = os.path.abspath(topDir) for (root, dirs, files) in os.walk(absCurDir): for f in files: if not isValidKIDSBuildSha1Suffix(f): continue filePath = os.path.join(root, f) sha1Sum = readSha1SumFromSha1File(filePath) result, extFilePath = obtainKIDSBuildFileBySha1(filePath, sha1Sum, cacheDir) if result: destFile = filePath[:filePath.rfind('.')] if os.path.exists(destFile) and generateSha1Sum(destFile) == sha1Sum: logger.info("%s is already current" % destFile) continue logger.info("%s => %s" % (extFilePath, destFile)) shutil.copyfile(extFilePath, destFile)
def __getGlobalFileList__(self): globalFiles = [] if self._globalFiles is None or len(self._globalFiles) == 0: return globalFiles for gFile in self._globalFiles: if isValidGlobalFileSuffix(gFile): globalFiles.append(gFile) continue if isValidGlobalSha1Suffix(gFile): # external file sha1Sum = readSha1SumFromSha1File(gFile) (result, path) = obtainKIDSPatchFileBySha1(gFile, sha1Sum, DEFAULT_CACHE_DIR) if not result: logger.error("Could not obtain global file for %s" % gFile) raise Exception("Error getting global file for %s" % gFile) globalFiles.append(path) if len(globalFiles) > 0: logger.info("global file lists %s" % globalFiles) return globalFiles