3 # kabitool - Red Hat kABI extraction tool (version 2)
5 # We use this script to generate RPM dependencies based on symversions.
7 # Author: Jon Masters <jcm@redhat.com>
8 # Copyright (C) 2009 Red Hat, Inc.
10 # This software may be freely redistributed under the terms of the GNU
11 # General Public License (GPL).
15 # 2009/08/01 - New version based on kABI dep plan for RHEL6.
18 __author__ = "Jon Masters <jcm@redhat.com>"
19 __version__ = "$Revisions: 2.0 $"
20 __date__ = "$Date: 2009/08/01 18:21:15 $"
21 __copyright__ = "Copyright (C) 2009 Red Hat, Inc"
34 def load_symbols(filename):
35 """Load the kernel exported symbols from Module.symvers."""
37 ksyms = open(filename,"r")
42 line = ksyms.readline()
47 checksum,symbol,path,license = string.split(line)
49 symbols[symbol] = dict(checksum=checksum,
55 def output_deps(depsfile,symbols):
57 deps_file = open(depsfile,"w")
59 for symbol in sorted(symbols.keys()):
60 deps_file.write("kernel("+symbol+") = " +
61 symbols[symbol]['checksum'] + "\n")
65 kabitool: process Module.symvers into useful exported kABI dependencies
67 kabitool [-k kernel] [-s symbols ]
69 -o The file to output sorted dependencies to
71 -s The Module.symvers file to import from
75 if __name__ == "__main__":
80 opts, args = getopt.getopt(sys.argv[1:], 'ho:s:')
91 if (symdeps_file == ""):
92 symdeps_file = "Module.symdeps"
94 if (symvers_file == ""):
95 symvers_file = "Module.symvers"
97 if not (os.path.isfile(symvers_file)):
98 print "cannot read Module.symvers file"
102 symbols = load_symbols(symvers_file)
103 output_deps(symdeps_file, symbols)