def get_installed_kernels(chroot=None): kernels = [ ] rpmdb = getRpmDB(rpmconfig, "/var/lib/rpm", chroot) rpmdb.open() if not rpmdb.read(): return kernels hash = rpmdb.searchProvides("kernel", 0, "") rpmdb.close() version = { } for pkg in hash: ver = "%s-%s" % (pkg["version"], pkg["release"]) if pkg["name"][:7] == "kernel-": ver += pkg["name"][7:] version[pkg] = ver sorted_list = [ ] for pkg in hash: found = False evr = evrSplit(version[pkg]) for j in xrange(len(sorted_list)): pkg2 = sorted_list[j] evr2 = evrSplit(version[pkg2]) if labelCompare(evr, evr2) > 0: sorted_list.insert(j, pkg) found = True break if not found: sorted_list.append(pkg) kernels = [ version[pkg] for pkg in sorted_list ] return kernels
def get_installed_kernels(chroot=None): kernels = [] rpmdb = getRpmDB(rpmconfig, "/var/lib/rpm", chroot) rpmdb.open() if not rpmdb.read(): return kernels hash = rpmdb.searchProvides("kernel", 0, "") rpmdb.close() version = {} for pkg in hash: ver = "%s-%s" % (pkg["version"], pkg["release"]) if pkg["name"][:7] == "kernel-": ver += pkg["name"][7:] version[pkg] = ver sorted_list = [] for pkg in hash: found = False evr = evrSplit(version[pkg]) for j in xrange(len(sorted_list)): pkg2 = sorted_list[j] evr2 = evrSplit(version[pkg2]) if labelCompare(evr, evr2) > 0: sorted_list.insert(j, pkg) found = True break if not found: sorted_list.append(pkg) kernels = [version[pkg] for pkg in sorted_list] return kernels
def _search(self, db, attr, name, flag, version): data = db.get(name, '') result = {} evr = functions.evrSplit(version) for id, idx in self.iterIdIdx(data): pkg = self.getPkgById(id) if not pkg: continue dep = pkg[attr][idx] name_, flag_, version_ = dep[:3] if version == "": result.setdefault(pkg, [ ]).append(dep) elif functions.rangeCompare(flag, evr, flag_, functions.evrSplit(version_)): result.setdefault(pkg, [ ]).append(dep) elif version_ == "": result.setdefault(pkg, [ ]).append(dep) return result
def search(self, name, flag, version): """Return a list of RpmPackage's matching the Requires: (name, RPMSENSE_* flag, EVR string).""" if not self.hash.has_key(name): return {} evr = functions.evrSplit(version) ret = {} for (f, v, rpm) in self.hash[name]: if rpm in ret: continue if version == "": ret.setdefault(rpm, []).append((name, f, v)) continue if functions.rangeCompare(flag, evr, f, functions.evrSplit(v)): ret.setdefault(rpm, []).append((name, f, v)) continue if v == "": ret.setdefault(rpm, []).append((name, f, v)) return ret
def search(self, name, flag, version): """Return a list of RpmPackage's matching the Requires: (name, RPMSENSE_* flag, EVR string).""" if not self.hash.has_key(name): return { } evr = functions.evrSplit(version) ret = { } for (f, v, rpm) in self.hash[name]: if rpm in ret: continue if version == "": ret.setdefault(rpm, [ ]).append((name, f, v)) continue if functions.rangeCompare(flag, evr, f, functions.evrSplit(v)): ret.setdefault(rpm, [ ]).append((name, f, v)) continue if v == "": ret.setdefault(rpm, [ ]).append((name, f, v)) return ret
def search(self, name, flag, version): # s/Conflicts/Obsoletes/ in ObsoletesList """Return a list of RpmPackage's with Conflicts: matching (name, RPMSENSE_* flag, EVR string).""" if not self.hash.has_key(name): return {} evr = functions.evrSplit(version) ret = {} for entry in self.hash[name]: f, v = entry[:2] rpm = entry[-1] if rpm in ret: continue if version == "": ret.setdefault(rpm, []).append((name, ) + entry[:-1]) continue if functions.rangeCompare(flag, evr, f, functions.evrSplit(v)): ret.setdefault(rpm, []).append((name, ) + entry[:-1]) continue return ret
def search(self, name, flag, version): # s/Conflicts/Obsoletes/ in ObsoletesList """Return a list of RpmPackage's with Conflicts: matching (name, RPMSENSE_* flag, EVR string).""" if not self.hash.has_key(name): return { } evr = functions.evrSplit(version) ret = { } for entry in self.hash[name]: f, v = entry[:2] rpm = entry[-1] if rpm in ret: continue if version == "": ret.setdefault(rpm, [ ]).append( (name,) + entry[:-1] ) continue if functions.rangeCompare(flag, evr, f, functions.evrSplit(v)): ret.setdefault(rpm, [ ]).append( (name,) + entry[:-1] ) continue return ret
def __executePkgTriggers(self, pkg, flag, triggername, tnumPkgs, buildroot=''): """Execute all triggers of matching "flag" of a package that are tiggered by the package itself Return 1 on success, 0 on failure.""" result = 1 evr = (pkg.getEpoch(), pkg["version"], pkg["release"]) for name, f, v, prog, script in pkg["triggers"]: if (functions.rangeCompare(flag, evr, f, functions.evrSplit(v)) or v == ""): try: runScript(prog, script, [tnumPkgs, tnumPkgs], chroot=buildroot) except (IOError, OSError), e: log.error("%s: Error running trigger %s script: %s", pkg.getNEVRA(), triggername, e) result = 0
def __generateDeps(self, node, pkg, name): """Add RPM-specific dependency info for RpmPackage pkg dependencies "name".""" dnode = node.newChild(None, 'rpm:%s' % name, None) deps = self.__filterDuplicateDeps(pkg[name]) for dep in deps: enode = dnode.newChild(None, 'rpm:entry', None) enode.newProp('name', dep[0]) if dep[1] != "": if (dep[1] & RPMSENSE_SENSEMASK) != 0: enode.newProp('flags', self.flagmap[dep[1] & RPMSENSE_SENSEMASK]) if isLegacyPreReq(dep[1]) or isInstallPreReq(dep[1]): enode.newProp('pre', '1') if dep[2] != "": e,v,r = functions.evrSplit(dep[2]) enode.newProp('epoch', e) enode.newProp('ver', v) if r != "": enode.newProp('rel', r)
def __generateDeps(self, node, pkg, name): """Add RPM-specific dependency info for RpmPackage pkg dependencies "name".""" dnode = node.newChild(None, 'rpm:%s' % name, None) deps = self.__filterDuplicateDeps(pkg[name]) for dep in deps: enode = dnode.newChild(None, 'rpm:entry', None) enode.newProp('name', dep[0]) if dep[1] != "": if (dep[1] & RPMSENSE_SENSEMASK) != 0: enode.newProp('flags', self.flagmap[dep[1] & RPMSENSE_SENSEMASK]) if isLegacyPreReq(dep[1]) or isInstallPreReq(dep[1]): enode.newProp('pre', '1') if dep[2] != "": e, v, r = functions.evrSplit(dep[2]) enode.newProp('epoch', e) enode.newProp('ver', v) if r != "": enode.newProp('rel', r)