Tagging module BootManager - BootManager-3.2-20
[bootmanager.git] / source / systeminfo.py
index 9997342..973c817 100755 (executable)
@@ -26,27 +26,7 @@ import popen2
 import re
 import errno
 import ModelOptions
-try:
-    from pypciscan import get_devices
-except:
-    def get_devices():
-        """ This is a replacement to the version in pypciscan library for 3.3 and lower bootcds 
-        that will help maintain backward compatibility.  This version has limitations wrt accuracy
-        that the library does not.  In particular it is limited to the output of
-        lspci and 'forces' all devices to appear on the '0000' domain, rather than
-        where they actually are."""
-
-        ret = {}
-        #pci = os.popen("lspci -nm | sed -e 's/\"//g'", 'r')
-        pci = os.popen("lspci -nm | sed -e 's/\"//g' -e 's/Class //g'", 'r')
-        for line in pci:
-            l = line[:-1]
-            f = l.split(" ")
-            key = "0000:%s" % f[0]
-            ret[key] = (int(f[2],16), int(f[3],16), 0xffff, 0xffff, int(f[1],16) << 8)
-        return ret
-
-import pypcimap
+from pypci import *
 from Exceptions import *
 
 """
@@ -66,9 +46,6 @@ DEVICES_SCANNED_FLAG= "/tmp/devices_scanned"
 BLOCKS_PER_GB = pow(10, 9) / 1024.0;
 
 
-# -n is numeric ids (no lookup), -m is machine readable
-LSPCI_CMD= "/sbin/lspci -nm"
-
 MODULE_CLASS_NETWORK= "network"
 MODULE_CLASS_SCSI= "scsi"
 
@@ -301,7 +278,10 @@ def get_system_modules( vars = {}, log = sys.stderr):
     # XXX: this is really similar to what BootCD/conf_files/pl_hwinit does. merge?
     pcidevs = get_devices()
 
-    for (slot, dev) in pcidevs.iteritems():
+    devlist=pcidevs.keys()
+    devlist.sort()
+    for slot in devlist:
+        dev = pcidevs[slot]
         base = (dev[4] & 0xff0000) >> 16
         if base not in (PCI_BASE_CLASS_STORAGE,
                         PCI_BASE_CLASS_NETWORK):