[yum-cvs] yum/config.py yum/__init__.py yum/misc.py
Seth Vidal
skvidal at linux.duke.edu
Tue Oct 2 16:17:24 UTC 2007
yum/__init__.py | 5 ++---
yum/config.py | 7 ++++---
yum/misc.py | 20 +++++++++++++++-----
3 files changed, 21 insertions(+), 11 deletions(-)
New commits:
commit 41567c811ada35824864865a60623e706d1dc66b
Author: Seth Vidal <skvidal at fedoraproject.org>
Date: Tue Oct 2 12:15:29 2007 -0400
close bug: 296771 - handle case where running kernel is in a package we don't expect
diff --git a/yum/__init__.py b/yum/__init__.py
index f738e3e..f27b4bf 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -2212,6 +2212,7 @@ class YumBase(depsolve.Depsolve):
return
toremove = []
+ (cur_kernel_v, cur_kernel_r) = misc.get_running_kernel_version_release(self.ts)
for instpkg in self.conf.installonlypkgs:
for m in self.tsInfo.getMembers():
if (m.name == instpkg or instpkg in m.po.provides_names) \
@@ -2219,11 +2220,9 @@ class YumBase(depsolve.Depsolve):
installed = self.rpmdb.searchNevra(name=m.name)
if len(installed) >= self.conf.installonly_limit - 1: # since we're adding one
numleft = len(installed) - self.conf.installonly_limit + 1
- (curv, curr) = misc.get_running_kernel_version_release()
-
installed.sort(packages.comparePoEVR)
for po in installed:
- if (po.version, po.release) == (curv, curr):
+ if (po.version, po.release) == (cur_kernel_v, cur_kernel_r):
# don't remove running
continue
if numleft == 0:
diff --git a/yum/config.py b/yum/config.py
index a091c03..bf00852 100644
--- a/yum/config.py
+++ b/yum/config.py
@@ -495,13 +495,14 @@ class YumConf(StartupConf):
proxy_password = Option()
installonlypkgs = ListOption(['kernel', 'kernel-bigmem',
'kernel-enterprise','kernel-smp', 'kernel-modules', 'kernel-debug',
- 'kernel-unsupported', 'kernel-source', 'kernel-devel'])
+ 'kernel-unsupported', 'kernel-source', 'kernel-devel', 'kernel-PAE',
+ 'kernel-PAE-debug'])
installonly_limit = IntOption(0)
kernelpkgnames = ListOption(['kernel','kernel-smp', 'kernel-enterprise',
- 'kernel-bigmem', 'kernel-BOOT'])
+ 'kernel-bigmem', 'kernel-BOOT', 'kernel-PAE', 'kernel-PAE-debug'])
exactarchlist = ListOption(['kernel', 'kernel-smp', 'glibc',
'kernel-hugemem', 'kernel-enterprise', 'kernel-bigmem',
- 'kernel-devel'])
+ 'kernel-devel', 'kernel-PAE', 'kernel-PAE-debug'])
tsflags = ListOption()
assumeyes = BoolOption(False)
diff --git a/yum/misc.py b/yum/misc.py
index a16cb72..101d3bd 100644
--- a/yum/misc.py
+++ b/yum/misc.py
@@ -355,18 +355,28 @@ def bunzipFile(source,dest):
destination.close()
s_fn.close()
-def get_running_kernel_version_release():
+def get_running_kernel_version_release(ts):
"""This takes the output of uname and figures out the (version, release)
tuple for the running kernel."""
ver = os.uname()[2]
# FIXME this should probably get passed this list from somewhere in config
# possibly from the kernelpkgnames option
for s in ("bigmem", "enterprise", "smp", "hugemem", "PAE", "rt",
- "guest", "hypervisor", "xen0", "xenU", "xen", "debug"):
+ "guest", "hypervisor", "xen0", "xenU", "xen", "debug",
+ "PAE-debug"):
if ver.endswith(s):
- ver = ver.replace(s, "")
- if ver.find("-") != -1:
- (v, r) = ver.split("-", 1)
+ reduced = ver.replace(s, "")
+ if reduced.find("-") != -1:
+ (v, r) = reduced.split("-", 1)
return (v, r)
+
+ # we've got nothing so far, so... we glob for the file that MIGHT have
+ # this kernels and then look up the file in our rpmdb
+ fns = glob.glob('/boot/vmlinuz*%s*' % ver)
+ for fn in fns:
+ mi = ts.dbMatch('basenames', fn)
+ for h in mi:
+ return (h['version'], h['release'])
+
return (None, None)
More information about the Yum-cvs-commits
mailing list