def execute(self): if self._executed: return False self._executed = True Log.cout(Log.INFO, 'Save root state...') if not self._ainstRoot.checkRoot(): Log.cout(Log.ERROR, 'Check ainst root failed') return False saveDir = self._ainstRoot.getRootVarAinstDir('save') settingsDir = self._ainstRoot.getRootVarAinstDir('settings') tmpDir = self._ainstRoot.getRootVarAinstDir('tmp') if not saveDir or not settingsDir or not tmpDir: Log.cout(Log.ERROR, 'There is not save, settings or tmp dir in installroot') return False if not self._ainstRoot.isValidAinstRoot(): Log.cout(Log.ERROR, '%s is invalid ainst root' % self._ainstRoot.getRoot()) return False reader = AinstRootReader(self._ainstRoot) activePkgs = reader.getActivePackages() activePkgNames = [pkgName for pkgName, pkgVer, mtime in activePkgs] activePkgInfos = [(pkgVer, mtime) for pkgName, pkgVer, mtime in activePkgs] activePkgInfos = sorted(activePkgInfos, key=lambda pkg: pkg[1]) pkgSettings = reader.getPkgSettings(activePkgNames) state = RootState(time.time(), self._command, self._ainstRoot.getRoot(), common.AINST_VERSION, activePkgInfos, pkgSettings) content = RootStateStreamer().toString(state) if not content: Log.cout(Log.ERROR, 'Generate root state content failed') return False stateFileName = reader.getNextStateFileName() self._tmpFile = tmpDir + stateFileName if not file_util.writeToFile(self._tmpFile, content): Log.cout(Log.ERROR, 'Write state to %s failed' % self._tmpFile) return False saveFile = saveDir + stateFileName if self._saveFile: saveFile = self._saveFile if not file_util.move(self._tmpFile, saveFile): Log.cout(Log.ERROR, 'Move root state file %s failed' % saveFile) self.undo() return False self._stateFileName = saveFile return True
def execute(self): if self._executed: return False self._executed = True Log.cout(Log.INFO, 'Save root state...') if not self._ainstRoot.checkRoot(): Log.cout(Log.ERROR, 'Check ainst root failed') return False saveDir = self._ainstRoot.getRootVarAinstDir('save') settingsDir = self._ainstRoot.getRootVarAinstDir('settings') tmpDir = self._ainstRoot.getRootVarAinstDir('tmp') if not saveDir or not settingsDir or not tmpDir: Log.cout(Log.ERROR, 'There is not save, settings or tmp dir in installroot') return False if not self._ainstRoot.isValidAinstRoot(): Log.cout(Log.ERROR, '%s is invalid ainst root' % self._ainstRoot.getRoot()) return False reader = AinstRootReader(self._ainstRoot) activePkgs = reader.getActivePackages() activePkgNames = [pkgName for pkgName, pkgVer, mtime in activePkgs] activePkgInfos = [(pkgVer, mtime) for pkgName, pkgVer, mtime in activePkgs] activePkgInfos = sorted(activePkgInfos, key = lambda pkg : pkg[1]) pkgSettings = reader.getPkgSettings(activePkgNames) state = RootState(time.time(), self._command, self._ainstRoot.getRoot(), common.AINST_VERSION, activePkgInfos, pkgSettings) content = RootStateStreamer().toString(state) if not content: Log.cout(Log.ERROR, 'Generate root state content failed') return False stateFileName = reader.getNextStateFileName() self._tmpFile = tmpDir + stateFileName if not file_util.writeToFile(self._tmpFile, content): Log.cout(Log.ERROR, 'Write state to %s failed' % self._tmpFile) return False saveFile = saveDir + stateFileName if self._saveFile: saveFile = self._saveFile if not file_util.move(self._tmpFile, saveFile): Log.cout(Log.ERROR, 'Move root state file %s failed' % saveFile) self.undo() return False self._stateFileName = saveFile return True
def buildInstalledPkgRepoSack(self): sack = PackageSack() ainstRoot = AinstRoot(self._installRoot) if not ainstRoot.isValidAinstRoot(): Log.cout(Log.DEBUG, '%s is invalid ainst root' % self._installRoot) return None reader = AinstRootReader(ainstRoot) installPkgMetas = reader.getInstallPkgMetas() if installPkgMetas is None: Log.cout(Log.DEBUG, 'Get install meta of %s failed' % self._installRoot) return None for pkgVer, rpmPath in installPkgMetas: pkg = LocalRpmPackage(rpmPath) if pkg.init(): sack.addPackageObject(pkg) return sack
def buildInstalledPkgSack(self): sack = PackageSack() ainstRoot = AinstRoot(self._installRoot) if not ainstRoot.isValidAinstRoot(): Log.cout(Log.DEBUG, '%s is invalid ainst root' % self._installRoot) return None reader = AinstRootReader(ainstRoot) installPkgMetas = reader.getInstallPkgMetas() if installPkgMetas is None: Log.cout(Log.DEBUG, 'Get install meta of %s failed' % self._installRoot) return None for pkgVer, rpmPath in installPkgMetas: header = rpmutils.readRpmHeader(rpmPath) if header: repo = FakeRepository(self._installRoot, True) pkg = AinstRpmPackage(header, repo) sack.addPackageObject(pkg) return sack
def buildActivePkgSack(self): sack = PackageSack() ainstRoot = AinstRoot(self._installRoot) if not ainstRoot.isValidAinstRoot(): Log.cout(Log.DEBUG, '%s is invalid ainst root' % self._installRoot) return None reader = AinstRootReader(ainstRoot) activePkgMetas = reader.getActivePkgMetas() if activePkgMetas is None: Log.cout(Log.DEBUG, 'Get active meta of %s failed' % self._installRoot) return None for pkgName, rpmPath, aicfPath in activePkgMetas: aicfInfo = None if file_util.isFile(aicfPath): aicfInfo = AicfParser().parse(aicfPath) header = rpmutils.readRpmHeader(rpmPath) if header: repo = FakeRepository(self._installRoot, True) pkg = AinstRpmPackage(header, repo, aicfInfo) sack.addPackageObject(pkg) return sack