Esempio n. 1
0
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
Esempio n. 2
0
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
Esempio n. 3
0
 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
Esempio n. 4
0
    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
Esempio n. 5
0
    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
Esempio n. 6
0
    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
Esempio n. 7
0
    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
Esempio n. 8
0
    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
Esempio n. 9
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)
Esempio n. 10
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)
Esempio n. 11
0
    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