rpms/module-init-tools/devel module-init-tools.spec, 1.31, 1.32 weak-modules, 1.5, 1.6
fedora-cvs-commits at redhat.com
fedora-cvs-commits at redhat.com
Tue Aug 1 05:44:09 UTC 2006
Author: jcm
Update of /cvs/dist/rpms/module-init-tools/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv32297
Modified Files:
module-init-tools.spec weak-modules
Log Message:
don't use RPM for deps. I was wrong.
Index: module-init-tools.spec
===================================================================
RCS file: /cvs/dist/rpms/module-init-tools/devel/module-init-tools.spec,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -r1.31 -r1.32
--- module-init-tools.spec 31 Jul 2006 01:53:30 -0000 1.31
+++ module-init-tools.spec 1 Aug 2006 05:44:05 -0000 1.32
@@ -2,7 +2,7 @@
Summary: Kernel module management utilities.
Name: module-init-tools
Version: 3.3
-Release: 0.pre1.4.6
+Release: 0.pre1.4.7
License: GPL
Group: System Environment/Kernel
Source: http://ftp.kernel.org/pub/linux/utils/kernel/module-init-tools/module-init-tools-%{version}%{preversion}.tar.bz2
@@ -98,6 +98,9 @@
%ghost %config %verify(not md5 size mtime) /etc/modprobe.conf
%changelog
+* Tue Aug 1 2006 Jon Masters <jcm at redhat.com> - 3.3-0.pre1.4.7
+- Change dependency calculation in weak-modules so it doesn't use RPM.
+
* Sun Jul 30 2006 Jon Masters <jcm at redhat.com> - 3.3-0.pre1.4.6
- Don't call depmod on removing a kernel.
- Warn rather than exit if we can't process weak-updates on new kernel
Index: weak-modules
===================================================================
RCS file: /cvs/dist/rpms/module-init-tools/devel/weak-modules,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- weak-modules 31 Jul 2006 01:53:30 -0000 1.5
+++ weak-modules 1 Aug 2006 05:44:05 -0000 1.6
@@ -5,15 +5,15 @@
# Author: Jon Masters <jcm at redhat.com>
#
# When we add and remove kernels from the system, we need to ensure that we
-# keep the symbolic links in /lib/modules up to date. This script drives RPM
-# to find out which driver updates are compatible with installed kernels.
+# keep the symbolic links in /lib/modules up to date. This script magically
+# checks the ABI compatibility of weak-updates and symlinks as appropriate.
#
# This software may be freely redistributed under the terms of the GNU
# General Public License (GPL).
__author__ = "Jon Masters <jcm at redhat.com>"
-__version__ = "1.0"
-__date__ = "2006/07/30 08:00:00"
+__version__ = "2.0"
+__date__ = "2006/08/01 06:30:00"
__copyright__ = "Copyright (C) 2006 Red Hat, Inc"
__license__ = "GPL"
@@ -91,64 +91,52 @@
# Store the module version in a dictionary.
modules[module] = { "kver": kver,
- "package": "",
"kabireq": []
}
-def module_kabideps(modules):
+def module_kabi(modules):
"""Calculate the kabideps for a set of modules"""
for module in modules:
- pinfo = os.popen("rpm -q --whatprovides " + module)
- in_line = pinfo.readline()
- pinfo.close()
- if in_line == "":
- print "Cannot find installed package for module: " \
- + module
- sys.exit(1)
- package = (string.split(in_line))[0]
-
- # Store the module package in a dictionary.
- modules[module]["package"] = package
-
- pinfo = os.popen("rpm -q --requires " + package)
- p = re.compile('^kernel\(([^\)]*)\) = (.*)$')
+ minfo = os.popen("/sbin/modprobe --dump-modversions "+module)
while true:
- in_line = (string.strip(pinfo.readline()))
+ in_line = minfo.readline()
if in_line == "":
break
- m = p.match(in_line)
- if m:
- modules[module]["kabireq"].append(in_line)
- pinfo.close()
+ symver,symbol = string.split(in_line)
+ kabireq=symbol+"="+symver
+ modules[module]["kabireq"].append(kabireq)
+ minfo.close()
-def kernel_kabideps(kernels):
+def kernel_kabi(kernels):
"""For each installed kernel, determine the full set of kABI deps for
that kernel and store in a giant dictionary hash."""
- kinfo = os.popen("rpm -q kernel")
+ kinfo = os.popen("ls /lib/modules")
while true:
- in_line = (string.strip(kinfo.readline()))
- if in_line == "":
+ kernel = (string.strip(kinfo.readline()))
+ if kernel == "":
break
-
- kernel=in_line
- kernelver=re.sub("kernel-","",in_line)
- kdeps = os.popen("rpm -q --provides " + kernel)
+ symvers="/boot/symvers-"+kernel+".gz"
+ if not os.path.isfile(symvers):
+ # That kernel is not actually installed
+ continue
- p = re.compile('^kernel\(([^\)]*)\) = (.*)$')
+ kdeps = os.popen("zcat "+symvers)
+ p = re.compile('^(0x[0-9a-f]+)\t([0-9a-zA-Z_]+)\t.*$')
while true:
- in_line = (string.strip(kdeps.readline()))
+ in_line = kdeps.readline()
if in_line == "":
break
m = p.match(in_line)
+
if m:
- kabi=in_line
- if kernels.has_key(kernelver):
- kernels[kernelver].append([kabi])
+ kabi=m.group(2)+"="+m.group(1)
+ if kernels.has_key(kernel):
+ kernels[kernel].append([kabi])
else:
- kernels[kernelver] = [[kabi]]
+ kernels[kernel] = [[kabi]]
kdeps.close()
kinfo.close()
@@ -181,7 +169,6 @@
if all_matched:
# All kABI deps are good
-
if compatibles.has_key(kernel):
compatibles[kernel].append(module)
else:
@@ -216,8 +203,8 @@
compatibles={}
read_modules(modules)
- module_kabideps(modules)
- kernel_kabideps(kernels)
+ module_kabi(modules)
+ kernel_kabi(kernels)
check_compatibility(modules,kernels,compatibles)
#debug
@@ -236,7 +223,7 @@
if not m:
print "Non-standard module location"
sys.exit(1)
- mod_kern=m.group(1)
+ mod_kern=modules[modfile]["kver"]
weak_dir="/lib/modules/" + kernel \
+ "/weak-updates/" + m.group(2)
weak_link=weak_dir+"/"+m.group(3)
@@ -261,7 +248,7 @@
kernels = {}
read_modules(modules)
- kernel_kabideps(kernels)
+ kernel_kabi(kernels)
p = re.compile('^.*/lib/modules/([^/]*)/extra/(.*)/(.*)$')
for module in modules:
@@ -326,23 +313,18 @@
# Store the module version in a dictionary.
modules[module] = { "kver": kver,
- "package": "",
"kabireq": []
}
modfiles.close()
- module_kabideps(modules)
- kernel_kabideps(kernels)
+ module_kabi(modules)
+ kernel_kabi(kernels)
check_compatibility(modules,kernels,compatibles)
if not compatibles.has_key(kernel):
print "**** weak-modules did not process this kernel ****"
- print "weak-updates links not updated for " + kernel
- print "Please run /sbin/weak-modules --add-kernel `uname -r`"
- print "in order to update kernel module compatibility links."
- # Don't error this result because the above warning is enough.
- sys.exit(0)
+ sys.exit(1)
p = re.compile('^.*/lib/modules/([^/]*)/extra/(.*)/(.*)$')
for module in range(0,len(compatibles[kernel])):
@@ -351,7 +333,7 @@
if not m:
print "Non-standard module location"
sys.exit(1)
- mod_kern=m.group(1)
+ mod_kern=modules[modfile]["kver"]
weak_dir="/lib/modules/" + kernel \
+ "/weak-updates/" + m.group(2)
weak_link=weak_dir+"/"+m.group(3)
More information about the fedora-cvs-commits
mailing list