[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
rpms/module-init-tools/devel module-init-tools.spec, 1.26, 1.27 weak-modules, 1.1, 1.2
- From: fedora-cvs-commits redhat com
- To: fedora-cvs-commits redhat com
- Subject: rpms/module-init-tools/devel module-init-tools.spec, 1.26, 1.27 weak-modules, 1.1, 1.2
- Date: Sun, 30 Jul 2006 03:50:45 -0400
Author: jcm
Update of /cvs/dist/rpms/module-init-tools/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv25933
Modified Files:
module-init-tools.spec weak-modules
Log Message:
replaced weak-modules
Index: module-init-tools.spec
===================================================================
RCS file: /cvs/dist/rpms/module-init-tools/devel/module-init-tools.spec,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- module-init-tools.spec 12 Jul 2006 07:23:34 -0000 1.26
+++ module-init-tools.spec 30 Jul 2006 07:50:42 -0000 1.27
@@ -2,7 +2,7 @@
Summary: Kernel module management utilities.
Name: module-init-tools
Version: 3.3
-Release: 0.pre1.4.1
+Release: 0.pre1.4.2
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
+* Sun Jul 30 2006 Jon Masters <jcm redhat com> - 3.3-0.pre1.4.2
+- New weak-modules
+
* Wed Jul 12 2006 Jesse Keating <jkeating redhat com> - 3.3-0.pre1.4.1
- rebuild
Index: weak-modules
===================================================================
RCS file: /cvs/dist/rpms/module-init-tools/devel/weak-modules,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- weak-modules 14 Jun 2006 12:06:02 -0000 1.1
+++ weak-modules 30 Jul 2006 07:50:42 -0000 1.2
@@ -1,100 +1,41 @@
-#! /bin/bash
-
-# weak-modules - derived from weak-updates by Andreas Gruenbacher
-
-unset LANG LC_ALL LC_COLLATE
-
-# Check if MODULE is compatible with kernel release KREL.
-module_is_compatible() {
- declare module=$1 krel=$2 module_krel=$(krel_of_module "$module")
-
- if [ ! -e "$tmpdir/all-symvers-$krel-$module_krel" ]; then
- # Symbols exported by the "new" kernel
- if [ ! -e $tmpdir/symvers-$krel ]; then
- if [ -e /boot/symvers-$krel.gz ]; then
- zcat /boot/symvers-$krel.gz \
- | sed -r -ne 's:^0x0*([0-9a-f]+\t[0-9a-zA-Z_]+)\t.*:\1:p'
- fi > $tmpdir/symvers-$krel
- fi
-
- # Symbols that other add-on modules of the "old" kernel export
- # (and that this module may require)
- if [ ! -e "$tmpdir/extra-symvers-$module_krel" ]; then
- if [ -e /lib/modules/$module_krel/extra ]; then
- find /lib/modules/$module_krel/extra -name '*.ko' \
- | xargs nm \
- | sed -nre 's:^0*([0-9a-f]+) A __crc_(.*):\1 \2:p'
- fi > $tmpdir/extra-symvers-$module_krel
- fi
-
- sort -u $tmpdir/symvers-$krel $tmpdir/extra-symvers-$module_krel \
- > "$tmpdir/all-symvers-$krel-$module_krel"
- fi
-
- # If the module does not have modversions enabled, $tmpdir/modvers
- # will be empty.
- /sbin/modprobe --dump-modversions "$module" \
- | sed -r -e 's:^0x0*([0-9a-f]+\t.*):\1:' \
- | sort -u \
- > $tmpdir/modvers
-
- # Only include lines of the second file in the output that don't
- # match lines in the first file. (The default separator is
- # <space>, so we are matching the whole line.)
- join -j 1 -v 2 $tmpdir/all-symvers-$krel-$module_krel \
- $tmpdir/modvers > $tmpdir/join
-
- if [ ! -s $tmpdir/modvers ]; then
- echo "Warning: Module ${module##*/} from kernel $module_krel has no" \
- "modversions, so it cannot be reused for kernel $krel" >&2
- elif [ -s $tmpdir/join ]; then
- [ -n "$verbose" ] &&
- echo "Module ${module##*/} from kernel $module_krel is not compatible" \
- "with kernel $krel in symbols:" $(sed -e 's:.* ::' $tmpdir/join)
- else
- [ -n "$verbose" ] &&
- echo "Module ${module##*/} from kernel $module_krel is compatible" \
- "with kernel $krel"
- return 0
- fi
- return 1
-}
-
-# Compute the kernel release of a module.
-krel_of_module() {
- declare module=$1
- /sbin/modinfo -F vermagic "$module" | awk '{print $1}'
-}
-
-# Read a list of modules from standard input, convert the filenames into
-# absolute names, and compute the kernel release of each module.
-read_modules_list() {
- local IFS=$'\n'
- modules=($(cat))
-
- for ((n = 0; n < ${#modules[ ]}; n++)); do
- if [ ${modules[n]:0:1} != '/' ]; then
- modules[n]="$PWD/${modules[n]}"
- fi
- if [ -f "${modules[n]}" ]; then
- module_krels[n]=$(krel_of_module ${modules[n]})
- else
- # Try to extract the kernel release from the path
- set -- "${modules[n]#/lib/modules/}"
- module_krels[n]=${1%%/*}
- fi
- done
-}
-
-doit() {
- [ -n "$verbose" ] && echo "$@"
- [ -n "$dry_run" ] || "$@"
-}
-
-usage() {
- echo "Usage: ${0##*/} [options] {--add-modules|--remove-modules}"
- echo "${0##*/} [options] {--add-kernel|--remove-kernel} {kernel-release}"
- cat <<'EOF'
+#!/usr/bin/python
+#
+# weak-modules - Red Hat kABI comparison tool
+#
+# Author: Jon Masters <jcm 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.
+#
+# This software may be freely redistributed under the terms of the GNU
+# General Public License (GPL).
+
+__author__ = "Jon Masters <jcm redhat com>"
+__version__ = "1.0"
+__date__ = "2006/07/30 08:00:00"
+__copyright__ = "Copyright (C) 2006 Red Hat, Inc"
+__license__ = "GPL"
+
+import commands
+import getopt
+import os
+import re
+import sha
+import string
+import sys
+
+true = 1
+false = 0
+
+dry_run = "no"
+verbose = "no"
+
+def usage():
+ """Usage for weak-modules script"""
+ print "usage:\t" + sys.argv[0] + " [options] {--add-modules|--remove-modules}"
+ print "\t" + sys.argv[0] + " [options] {--add-kernel|--remove-kernel} {kernel-release}"
+ print """
--add-modules
Add a list of modules read from standard input. Create
symlinks in compatible kernel's weak-updates/ directory.
@@ -107,201 +48,394 @@
--add-kernel
Add compatibility symlinks for all compatible modules to the
- specified or running kernel.
+ specified kernel.
--remove-kernel
- Remove all compatibility symlinks for the specified or current
- kernel.
+ Remove all compatibility symlinks for the specified kernel.
--verbose
Print the commands executed.
-dry-run
Do not create/remove any files.
-EOF
- exit $1
-}
-
-[ -e /etc/sysconfig/kernel ] && source /etc/sysconfig/kernel
-
-unset ${!changed_modules_*} ${!changed_initrd_*}
-
-module_has_changed() {
- declare module=$1 krel=$2
-
- module=${module%.ko}
- module=${module##*/}
-
- eval "changed_modules_${krel//[^a-zA-Z0-9]/_}=$krel"
- case " $INITRD_MODULES " in
- *" $module "*)
- eval "changed_initrd_${krel//[^a-zA-Z0-9]/_}=$krel"
- ;;
- esac
-}
-
-options=`getopt -o h --long help,add-modules,remove-modules \
- --long add-kernel,remove-kernel,dry-run,verbose -- "$@"`
-
-[ $? -eq 0 ] || usage 1
-
-eval set -- "$options"
-
-while :; do
- case "$1" in
- --add-modules)
- add_modules=1
- ;;
- --remove-modules)
- remove_modules=1
- ;;
- --add-kernel)
- add_kernel=1
- ;;
- --remove-kernel)
- remove_kernel=1
- ;;
- --dry-run)
- dry_run=1
- ;;
- --verbose)
- verbose=1
- ;;
- -h|--help)
- usage 0
- ;;
- --)
- shift
- break
- ;;
- esac
- shift
-done
-
-if [ "$add_modules$remove_modules$add_kernel$remove_kernel" != 1 ]; then
- usage 1
-fi
-if [ -n "$add_kernel" -o -n "$remove_kernel" ]; then
- [ $# -gt 1 ] && usage 1
-else
- [ $# -ne 0 ] && usage 1
-fi
-
-tmpdir=$(mktemp -td ${0##*/}.XXXXXX)
-trap "rm -rf $tmpdir" EXIT
-trap "rm -rf $tmpdir" INT
-
-if [ -n "$add_modules" ]; then
- read_modules_list || exit 1
- if [ ${#modules[ ]} -gt 0 ]; then
- for krel in $(ls /lib/modules/); do
- [ -e "/boot/symvers-$krel.gz" ] || continue
- for ((n = 0; n < ${#modules[ ]}; n++)); do
- module="${modules[n]}"
- module_krel="${module_krels[n]}"
- case "$module" in
- /lib/modules/$krel/*)
- continue ;;
- esac
- subpath="${module#/lib/modules/$module_krel/extra}"
- weak_module="/lib/modules/$krel/weak-updates/${subpath#/}"
- if [ -r "$weak_module" ]; then
- weak_krel=$(krel_of_module "$weak_module")
- if [ "$weak_krel" != "$module_krel" ] &&
- [ "$(printf "%s\n" "$weak_krel" "$module_krel" \
- | /usr/lib/rpm/redhat/rpmsort | head -n 1)" = \
- "$module_krel" ]; then
- # Keep modules from more recent kernels.
- [ -n "$verbose" ] && echo \
-"Keeping module ${module##*/} from kernel $weak_krel for kernel $krel"
- continue
- fi
- fi
- if module_is_compatible $module $krel; then
- doit mkdir -p $(dirname $weak_module)
- doit ln -sf $module $weak_module
- module_has_changed $module $krel
- fi
- done
- done
- fi
-elif [ -n "$remove_modules" ]; then
- read_modules_list || exit 1
- if [ ${#modules[ ]} -gt 0 ]; then
- krels=($(ls /lib/modules/ | /usr/lib/rpm/redhat/rpmsort -r))
- for krel in "${krels[ ]}"; do
- [ -e "/boot/symvers-$krel.gz" ] || continue
- for ((n = 0; n < ${#modules[ ]}; n++)); do
- module="${modules[n]}"
- module_krel="${module_krels[n]}"
- subpath="${module#/lib/modules/$module_krel/extra}"
- weak_module="/lib/modules/$krel/weak-updates/${subpath#/}"
- if [ "$module" == "`readlink $weak_module`" ]; then
- [ -n "$verbose" ] && echo \
-"Removing compatible module ${module##*/} from kernel $krel"
- doit rm -f "$weak_module"
- for krel2 in "${krels[ ]}"; do
- [ -e "/boot/symvers-$krel2.gz" ] || continue
- module="/lib/modules/$krel2/extra/$subpath"
- [ -e "$module" ] || continue
- if module_is_compatible "$module" "$krel2"; then
- [ -n "$verbose" ] && echo \
-"Adding compatible module ${module##*/} from kernel $krel2 instead"
- doit ln -s "$module" "$weak_module"
- break
- fi
- done
- doit rmdir --parents --ignore-fail-on-non-empty \
- "$(dirname "$weak_module")"
- module_has_changed $module $krel
- fi
- done
- done
- fi
-elif [ -n "$add_kernel" ]; then
- add_krel=${1:-$(uname -r)}
- if [ ! -e "/boot/symvers-$add_krel.gz" ]; then
- echo "Symvers dump file /boot/symvers-$add_krel.gz" \
- "not found" >&2
- exit 1
- fi
- for krel in $(ls /lib/modules/ | /usr/lib/rpm/redhat/rpmsort -r); do
- [ "$add_krel" = "$krel" ] && continue
- [ -d /lib/modules/$krel/extra ] || continue
- for module in $(find /lib/modules/$krel/extra -name '*.ko'); do
- subpath="${module#/lib/modules/$krel/extra}"
- weak_module="/lib/modules/$add_krel/weak-updates/${subpath#/}"
- [ -e "$weak_module" ] && continue
- if module_is_compatible $module $add_krel; then
- doit mkdir -p $(dirname $weak_module)
- doit ln -sf $module $weak_module
- fi
- done
- done
-elif [ -n "$remove_kernel" ]; then
- remove_krel=${1:-$(uname -r)}
- weak_modules="/lib/modules/$remove_krel/weak-updates"
- doit rm -rf "$weak_modules"
-fi
-
-for krel in ${!changed_modules_*}; do
- krel=${!krel}
- [ -e "/boot/System.map-$krel" ] || continue
- /sbin/depmod -ae -F /boot/System.map-$krel $krel
-done
-
-for krel in ${!changed_initrd_*}; do
- krel=${!krel}
- [ -e "/boot/System.map-$krel" ] || continue
-
- image=
- for x in vmlinuz image vmlinux linux bzImage; do
- if [ -f "/boot/$x-$krel" ]; then
- image="$x"
- break
- fi
- done
- if [ -n "$image" ]; then
- /sbin/mkinitrd -k "/boot/$image-$krel" -i "/boot/initrd-$krel"
- fi
-done
+"""
+
+def read_modules(modules):
+ """Read a list of modules from standard input, convert the filenames
+ into absolute names and compute the kernel release of each module."""
+
+ while true:
+ in_line = sys.stdin.readline()
+ if in_line == "":
+ break
+ if in_line == "\n":
+ continue
+ if in_line[0] != '/':
+ module=os.getcwd()+"/"+in_line[:-1]
+ else:
+ module=in_line[:-1]
+
+ # Check it the module exists, extract vermagic, otherwise try
+ # to pull the information out of the path component
+ if os.path.isfile(module):
+ minfo = os.popen("/sbin/modinfo -F vermagic " + module)
+ kver = (string.split(minfo.readline()))[0]
+ else:
+ p = re.compile('^.*/lib/modules/([^/]*).*$')
+ m = p.match(module)
+ if m:
+ kver=m.group(1)
+ else:
+ print "cannot extract kernel version!"
+ sys.exit(1)
+
+ # Store the module version in a dictionary.
+ modules[module] = { "kver": kver,
+ "package": "",
+ "kabireq": []
+ }
+
+def module_kabideps(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\(([^\)]*)\) = (.*)$')
+ while true:
+ in_line = (string.strip(pinfo.readline()))
+ if in_line == "":
+ break
+ m = p.match(in_line)
+ if m:
+ modules[module]["kabireq"].append(in_line)
+ pinfo.close()
+
+def kernel_kabideps(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")
+ while true:
+ in_line = (string.strip(kinfo.readline()))
+ if in_line == "":
+ break
+
+ kernel=in_line
+ kernelver=re.sub("kernel-","",in_line)
+
+ kdeps = os.popen("rpm -q --provides " + kernel)
+
+ p = re.compile('^kernel\(([^\)]*)\) = (.*)$')
+ while true:
+ in_line = (string.strip(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])
+ else:
+ kernels[kernelver] = [[kabi]]
+
+ kdeps.close()
+ kinfo.close()
+
+ # debug
+ #for kernel in kernels:
+ # print "kernel " + kernel + ":"
+ # for i in range(0,len(kernels[kernel])):
+ # for j in range(0,len(kernels[kernel][i])):
+ # print "\t" + kernels[kernel][i][j]
+
+def check_compatibility(modules,kernels,compatibles):
+ """For each module, check which kernels it is compatible with."""
+
+ for module in modules:
+ for kernel in kernels:
+
+ all_matched=1
+ for i in range(0,len(modules[module]["kabireq"])):
+ module_abi=modules[module]["kabireq"][i]
+ matched=0
+ # Check this kABI req against a kernel
+ for j in range(0,len(kernels[kernel])):
+ for k in range(0,len(kernels[kernel][j])):
+ kernel_abi=kernels[kernel][j][k]
+ if kernel_abi==module_abi:
+ matched=1
+ if matched==0:
+ all_matched=0
+
+ if all_matched:
+ # All kABI deps are good
+
+ if compatibles.has_key(kernel):
+ compatibles[kernel].append(module)
+ else:
+ compatibles[kernel] = [module]
+
+def run_depmod(kernel):
+ """Run depmod against kernel."""
+
+ depmod_line="/sbin/depmod -ae -F " \
+ +"/boot/System.map-"+kernel \
+ +" "+kernel
+ if verbose == "yes":
+ print "depmod: " + depmod_line
+ os.system(depmod_line)
+
+def run_mkinitrd(kernel):
+ """Run mkinitrd against kernel."""
+
+ mkinitrd_line = "/sbin/mkinitrd --allow-missing -f /boot/initrd-"\
+ +kernel+".img "+kernel
+
+ if verbose == "yes":
+ print "mkinitrd: " + mkinitrd_line
+ os.system(mkinitrd_line)
+
+def add_modules():
+ """Read in a list of modules to add from std input. For each module,
+ attempt to create links in compatible kernel directories."""
+
+ modules={}
+ kernels={}
+ compatibles={}
+
+ read_modules(modules)
+ module_kabideps(modules)
+ kernel_kabideps(kernels)
+ check_compatibility(modules,kernels,compatibles)
+
+ #debug
+ #if verbose == "yes":
+ # print "**** Compatible kernels ****"
+ # for kernel in compatibles:
+ # print kernel + ":"
+ # for module in range(0,len(compatibles[kernel])):
+ # print "\t" + compatibles[kernel][module]
+
+ p = re.compile('^.*/lib/modules/([^/]*)/extra/(.*)/(.*)$')
+ for kernel in compatibles:
+ for module in range(0,len(compatibles[kernel])):
+ modfile=compatibles[kernel][module]
+ m = p.match(modfile)
+ if not m:
+ print "Non-standard module location"
+ sys.exit(1)
+ mod_kern=m.group(1)
+ weak_dir="/lib/modules/" + kernel \
+ + "/weak-updates/" + m.group(2)
+ weak_link=weak_dir+"/"+m.group(3)
+
+ if mod_kern != kernel:
+ # ignore the kernel that matches the module
+
+ if verbose == "yes":
+ print "create: " + weak_link
+
+ if dry_run == "no":
+ os.system("mkdir -p " + weak_dir)
+ os.system("ln -sf " + modfile + " " + weak_link)
+ run_depmod(kernel)
+ run_mkinitrd(kernel)
+
+def remove_modules():
+ """Read in a list of modules to remove from std input. Remove these
+ modules from all installed kernels"""
+
+ modules = {}
+ kernels = {}
+
+ read_modules(modules)
+ kernel_kabideps(kernels)
+
+ p = re.compile('^.*/lib/modules/([^/]*)/extra/(.*)/(.*)$')
+ for module in modules:
+
+ m = p.match(module)
+ if not m:
+ print "Non-standard module locations"
+ sys.exit(1)
+ weak_link=m.group(2)+"/"+m.group(3)
+
+ for kernel in kernels:
+
+ weak_dir = "/lib/modules/" + kernel \
+ + "/weak-updates/" + m.group(2)
+ weak_path = weak_dir +"/"+m.group(3)
+
+ if os.path.isfile(weak_path):
+ weak_modfile=os.readlink(weak_path)
+ if weak_modfile == module:
+ if verbose == "yes":
+ print "remove: " \
+ + weak_path
+ if dry_run == "no":
+ os.system("rm -f " +weak_path)
+
+ os.system("rmdir " +weak_dir)
+ run_depmod(kernel)
+ run_mkinitrd(kernel)
+
+def add_kernel(kernel):
+ """Add the (specified) system kernel and create update links."""
+
+ modules = {}
+ kernels = {}
+ compatibles = {}
+
+ if kernel == "":
+ status,kernel = commands.getstatusoutput('uname -r')
+
+ p = re.compile('^.*/lib/modules/([^/]*)/extra/(.*)/(.*)\.ko$')
+ modfiles=os.popen("find /lib/modules")
+ while true:
+ in_line=(modfiles.readline())[:-1]
+ if in_line == "":
+ break
+ m = p.match(in_line)
+ if not m:
+ continue
+ module=in_line
+
+ # Check it the module exists, extract vermagic, otherwise try
+ # to pull the information out of the path component
+ if os.path.isfile(module):
+ minfo = os.popen("/sbin/modinfo -F vermagic " + module)
+ kver = (string.split(minfo.readline()))[0]
+ minfo.close()
+
+ # Store the module version in a dictionary.
+ modules[module] = { "kver": kver,
+ "package": "",
+ "kabireq": []
+ }
+
+ modfiles.close()
+
+ module_kabideps(modules)
+ kernel_kabideps(kernels)
+ check_compatibility(modules,kernels,compatibles)
+
+ if not compatibles.has_key(kernel):
+ print "Cannot locate data on installed kernel!"
+ sys.exit(1)
+
+ p = re.compile('^.*/lib/modules/([^/]*)/extra/(.*)/(.*)$')
+ for module in range(0,len(compatibles[kernel])):
+ modfile=compatibles[kernel][module]
+ m = p.match(modfile)
+ if not m:
+ print "Non-standard module location"
+ sys.exit(1)
+ mod_kern=m.group(1)
+ weak_dir="/lib/modules/" + kernel \
+ + "/weak-updates/" + m.group(2)
+ weak_link=weak_dir+"/"+m.group(3)
+
+ if mod_kern != kernel:
+ # ignore the kernel that matches the module
+
+ if verbose == "yes":
+ print "create: " + weak_link
+ print " -> " + modfile
+
+ if dry_run == "no":
+ os.system("mkdir -p " + weak_dir)
+ os.system("ln -sf " + modfile + " " + weak_link)
+ run_depmod(kernel)
+ run_mkinitrd(kernel)
+
+def remove_kernel(kernel):
+ """Remove the given kernel from the system."""
+
+ weakup_dir = "/lib/modules/" + kernel + "/weak-updates"
+ if not os.path.isdir(weakup_dir):
+ print "No weak updates directory found."
+ sys.exit(0)
+ weak_updates = os.popen("find " + weakup_dir + " -iname \"*.ko\"")
+
+ while true:
+ in_line = (weak_updates.readline())[:-1]
+ if in_line == "":
+ break
+ module=in_line
+ p = re.compile('^.*/lib/modules/(.*)/weak-updates/(.*)/(.*)$')
+ m = p.match(module)
+ if not m:
+ print "Non standard module location!"
+ sys.exit(1)
+ weak_dir = weakup_dir+"/"+m.group(2)
+
+ if verbose == "yes":
+ print "remove: " + module
+
+ if dry_run == "no":
+ os.system("rm -f " + module)
+ os.system("rmdir " + weak_dir)
+ run_depmod(kernel)
+ run_mkinitrd(kernel)
+
+
+if __name__ == "__main__":
+
+ opts, args = getopt.getopt(sys.argv[1:], 'arh', [ 'add-modules', 'remove-modules', 'add-kernel=', 'remove-kernel=', 'dry-run', 'verbose', 'help' ])
+
+ do_add_modules=0
+ do_remove_modules=0
+ do_add_kernel=0
+ do_remove_kernel=0
+ kernel=""
+
+ for o, v in opts:
+ if o == '--add-modules' or o == '-a':
+ do_add_modules=1
+ if o == '--remove-modules' or o == 'r':
+ do_remove_modules=1
+ if o == '--add-kernel':
+ do_add_kernel=1
+ kernel=v
+ if o == '--remove-kernel':
+ do_remove_kernel=1
+ kernel=v
+ if o == '--dry-run':
+ dry_run="yes"
+ if o == '--verbose':
+ verbose="yes"
+ if o == '--help' or o == 'h':
+ usage()
+ sys.exit(0)
+
+ if do_add_modules==1:
+ add_modules()
+ sys.exit(0)
+
+ if do_remove_modules==1:
+ remove_modules()
+ sys.exit(0)
+
+ if do_add_kernel==1:
+ add_kernel(kernel)
+ sys.exit(0)
+
+ if do_remove_kernel==1:
+ remove_kernel(kernel)
+ sys.exit(0)
+
+ print "You didn't ask me to do anything! Here's some usage information!"
+ usage()
+ sys.exit(0)
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]