def _handleDependencies(self, deplist): '''Handle any unresolved dependencies returned by the TransactionSet.check() method. ''' stillUnresolved = [] for (unsatisfiedPkg, reqNameVer, _needsFlag, suggestedPkg, _sense) \ in deplist: if reqNameVer[1]: reqString = "%s-%s" % reqNameVer else: reqString = reqNameVer[0] msg = "Package %s-%s-%s requires %s" % \ (unsatisfiedPkg + (reqString,)) log.info(msg) if userchoices.getResolveDeps() and suggestedPkg: package = suggestedPkg[0] log.info(" resolving dependency with %s" % package.fullSrcPath) self.ts.addInstall(package.header, (package,), 'u') self.totalSize += (package.header[rpm.RPMTAG_SIZE] / SIZE_MB) elif userchoices.getIgnoreDeps(): log.info(" ignoring dependency") else: log.error("unable to resolve dependency -- %s" % msg) stillUnresolved.append(msg) return stillUnresolved
def _handleDependencies(self, deplist): '''Handle any unresolved dependencies returned by the TransactionSet.check() method. ''' stillUnresolved = [] for (unsatisfiedPkg, reqNameVer, _needsFlag, suggestedPkg, _sense) \ in deplist: if reqNameVer[1]: reqString = "%s-%s" % reqNameVer else: reqString = reqNameVer[0] msg = "Package %s-%s-%s requires %s" % \ (unsatisfiedPkg + (reqString,)) log.info(msg) if userchoices.getResolveDeps() and suggestedPkg: package = suggestedPkg[0] log.info(" resolving dependency with %s" % package.fullSrcPath) self.ts.addInstall(package.header, (package, ), 'u') self.totalSize += (package.header[rpm.RPMTAG_SIZE] / SIZE_MB) elif userchoices.getIgnoreDeps(): log.info(" ignoring dependency") else: log.error("unable to resolve dependency -- %s" % msg) stillUnresolved.append(msg) return stillUnresolved
def installPackages(self): #self.ts.setProbFilter(rpm.RPMPROB_FILTER_DISKSPACE) # CPD - magic setColor(3) method which fixes all of your RPM woes. # this actually tells rpmlib to allow both i386 and x86_64 # rpms. self.ts.setColor(RPMCOLOR_32BIT | RPMCOLOR_64BIT) for package in self.packages: rpmHeader = package.header # callbackArgs find their way into InstallCallback.runCallback callbackArgs = (package, ) if (package.requirement == "required" or (package.requirement == "recommended" and package.name not in userchoices.getPackagesNotToInstall()) or (package.requirement == "optional" and package.name in userchoices.getPackagesToInstall())): self.ts.addInstall(rpmHeader, callbackArgs, 'u') self.totalSize += (rpmHeader[rpm.RPMTAG_SIZE] / SIZE_MB) elif userchoices.getResolveDeps(): # Make the packages 'available' for automatic dependency stuff. self.ts.addInstall(rpmHeader, callbackArgs, 'a') else: log.info("skipping optional package %s" % package.name) cb = InstallCallback(self.totalSize, len(self.packages), self.uiHook) while True: unsatisfiedDeps = self.ts.check(dependencyCheckCallback) if not unsatisfiedDeps: break stillUnresolved = self._handleDependencies(unsatisfiedDeps) if stillUnresolved: raise UnsatisfiedDependencyException(stillUnresolved) self.ts.order() self.checkForProblems() buf = "Packages to install (post-check):" # XXX - rpm.ts objects aren't completely wrapped. normally you'd # want to check to see if there are any entries in it but there # is no way to call len() for rpmPkg in self.ts: buf += " %s-%s-%s-%s" % \ (rpmPkg.N(), rpmPkg.V(), rpmPkg.R(), rpmPkg.A()) log.info(buf) if self.uiHook: self.uiHook.pushStatusGroup(self.totalSize) self.ts.run(cb.runCallback, 0) self.checkForProblems() if self.uiHook: self.uiHook.popStatusGroup()
def installPackages(self): #self.ts.setProbFilter(rpm.RPMPROB_FILTER_DISKSPACE) # CPD - magic setColor(3) method which fixes all of your RPM woes. # this actually tells rpmlib to allow both i386 and x86_64 # rpms. self.ts.setColor(RPMCOLOR_32BIT | RPMCOLOR_64BIT) for package in self.packages: rpmHeader = package.header # callbackArgs find their way into InstallCallback.runCallback callbackArgs = (package,) if (package.requirement == "required" or (package.requirement == "recommended" and package.name not in userchoices.getPackagesNotToInstall()) or (package.requirement == "optional" and package.name in userchoices.getPackagesToInstall())): self.ts.addInstall(rpmHeader, callbackArgs, 'u') self.totalSize += (rpmHeader[rpm.RPMTAG_SIZE] / SIZE_MB) elif userchoices.getResolveDeps(): # Make the packages 'available' for automatic dependency stuff. self.ts.addInstall(rpmHeader, callbackArgs, 'a') else: log.info("skipping optional package %s" % package.name) cb = InstallCallback(self.totalSize, len(self.packages), self.uiHook) while True: unsatisfiedDeps = self.ts.check(dependencyCheckCallback) if not unsatisfiedDeps: break stillUnresolved = self._handleDependencies(unsatisfiedDeps) if stillUnresolved: raise UnsatisfiedDependencyException(stillUnresolved) self.ts.order() self.checkForProblems() buf = "Packages to install (post-check):" # XXX - rpm.ts objects aren't completely wrapped. normally you'd # want to check to see if there are any entries in it but there # is no way to call len() for rpmPkg in self.ts: buf += " %s-%s-%s-%s" % \ (rpmPkg.N(), rpmPkg.V(), rpmPkg.R(), rpmPkg.A()) log.info(buf) if self.uiHook: self.uiHook.pushStatusGroup(self.totalSize) self.ts.run(cb.runCallback, 0) self.checkForProblems() if self.uiHook: self.uiHook.popStatusGroup()
def _genPackages(): retval = "" flags = "" if userchoices.getResolveDeps(): flags += " --resolvedeps" if userchoices.getIgnoreDeps(): flags += " --ignoredeps" retval += "%%packages%s\n" % flags for pkg in userchoices.getPackagesToInstall(): retval += "%s\n" % pkg for pkg in userchoices.getPackagesNotToInstall(): retval += "-%s\n" % pkg return retval