#!/usr/bin/python # # genmodinfo # # Copyright (C) 2007 Red Hat, Inc. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # import commands import os import string import sys uname = os.uname()[2] if len(sys.argv) > 1: path = sys.argv[1] else: path = '/lib/modules/%s' % (uname,) mods = {} for root, dirs, files in os.walk(path): for file in files: mods[file] = os.path.join(root,file) modules = { 'scsi_hostadapter' : [ 'block' ], 'eth' : [ 'networking'] } blacklist = ("floppy", "scsi_mod", "libiscsi", "b43", "prism54", "b43legacy", "p54pci", "iwl3945", "iwl4965", "adm8211", "atmel", "at76_usb", "ipw2100", "ipw2200", "rt2400pci", "rt2500pci", "rt2500usb", "rt61pci", "rt73usb", "rtl8187", "zd1211rw-mac80211", "ath5k", "bcm4318") list = {} for modtype in modules.keys(): list[modtype] = {} for file in modules[modtype]: try: f = open('%s/modules.%s' % (path,file),'r') except: continue lines = f.readlines() f.close() for line in lines: line = line.strip() if mods.has_key(line): desc = commands.getoutput("modinfo -F description %s" % (mods[line])) modname = line[:-3] if modname in blacklist: continue if desc and len(desc) > 65: desc = desc[:65] if not desc: desc = "%s driver" % (modname,) modinfo = """ %s %s "%s" """ % (modname, modtype, desc) list[modtype][modname] = modinfo print "Version 0" for type in list.keys(): modlist = list[type].keys() modlist.sort() for m in modlist: print list[type][m]