source: pkg/viola/main/kde-guidance/trunk/debian/patches/kubuntu_20_displayconfig_dynamic_driver_list.patch @ 3444

Revision 3444, 4.7 KB checked in by alanbach-guest, 5 years ago (diff)
  • Sync'd with Ubuntu 0.8.0svn20080103-0ubuntu9
  • displayconfig/displayconfigabstraction.py

    diff -Nur -x '*.orig' -x '*~' kde-guidance-0.8.0svn20080103/displayconfig/displayconfigabstraction.py kde-guidance-0.8.0svn20080103.new/displayconfig/displayconfigabstraction.py
    old new  
    99import xorgconfig 
    1010import ScanPCI 
    1111import csv 
     12import re 
    1213from execwithcapture import * 
    1314 
    1415"""Classes for dealing with X.org configuration in a sane way. 
     
    25202521        self.vendordb = {}  
    25212522        self.driverdb = {} 
    25222523 
    2523         self.drivers = ["ati", "glint", "vga", "fbdev"] 
    2524         #FIXME 
    2525         #if arch() .startswith("sparc"): 
    2526         #    self.drivers.extend(["sunbw2", "suncg14", "suncg3", "suncg6", "sunffb", "sunleo", "suntcx"]) 
    2527         #else: 
    2528         self.drivers.extend(["apm", "ark", "chips", "cirrus", "cyrix", "glide", 
    2529                              "i128", "i740", "i810", "intel", "imstt", "mga",  
    2530                              "neomagic", "newport", "nsc", "nv", "rendition",  
    2531                              "r128", "radeon", "vesa", "s3", "s3virge",  
    2532                              "savage", "siliconmotion", "sis", "tdfx", "tga",  
    2533                              "trident", "tseng", "vmware"]) 
     2524        self.drivers = self._getAvailableDrivers() 
    25342525 
    25352526        self.proprietary_drivers = [] 
    25362527 
     
    25472538    def getAllGfxCardModelNames(self): 
    25482539        return self.db.keys() 
    25492540 
     2541    def _getDriverDirs(self): 
     2542        "Returns a list of directories where X driver files may be located" 
     2543 
     2544        # Fallback dir: 
     2545        defaultDirs = ["/usr/lib/xorg/modules/drivers/"] 
     2546 
     2547        # Get display number: 
     2548        display_number = 0 
     2549        if "DISPLAY" in os.environ: 
     2550            display_name = os.environ["DISPLAY"] 
     2551            displayRE = re.compile("^.*:(\d+)\.\d+$") 
     2552            m = displayRE.match(display_name) 
     2553            if m: 
     2554                display_number = int(m.group(1)) 
     2555            else: 
     2556                print "failed to parse display number from '%s' - falling back to default (%d)" % (display_name, display_number) 
     2557        else: 
     2558            print "$DISPLAY not set - falling back to default number (%d)" % display_number 
     2559 
     2560        # Get the list of module paths from the Xorg log file: 
     2561        XLogfile = "/var/log/Xorg.%d.log" % display_number 
     2562        cmd = "awk -F \" ModulePath set to \" '/^\(..\) ModulePath set to (.*)/ {print $2}' %s" % XLogfile 
     2563 
     2564        baseList = os.popen(cmd).readline().strip().strip('"') 
     2565        if baseList == "": 
     2566            print "warning: failed to get module paths from '%s' - falling back to default" % XLogfile 
     2567            return defaultDirs 
     2568 
     2569        pathList = [] 
     2570        for basePath in baseList.split(","): 
     2571            pathList.append("%s/drivers/" % basePath) 
     2572 
     2573        return pathList 
     2574 
     2575    def _getAvailableDrivers(self): 
     2576        """ 
     2577        Returns the list of available X graphics drivers. 
     2578        Algorithm taken from Xorg source (see GenerateDriverlist() in xf86Config.C). 
     2579        """ 
     2580 
     2581        # These are drivers that cannot actually be used in xorg.conf, hence they are hidden: 
     2582        hiddenDrivers = ( 
     2583            "atimisc", # seems to be just the internal implementation for ati driver 
     2584            "dummy", # dummy driver without any output 
     2585            "v4l", # not an actual video device driver, but just the v4l module 
     2586            "ztv" # seems to be the TV output module for AMD Geode 
     2587        ) 
     2588 
     2589        drivers = [] 
     2590        driverDirectories = self._getDriverDirs() 
     2591 
     2592        driverNameRE = re.compile("^(.+)_drv.(s)?o$") 
     2593        for ddir in driverDirectories: 
     2594            try: 
     2595                driverFiles = os.listdir(ddir) 
     2596            except OSError: 
     2597                print "error reading directory '%s'" % ddir 
     2598                continue 
     2599            for f in driverFiles: 
     2600                m = driverNameRE.match(f) 
     2601                if m: 
     2602                    driverName = m.group(1) 
     2603                    if driverName in drivers: 
     2604                        print "ignoring duplicate driver '%s/%s'" % (ddir, f) 
     2605                    else: 
     2606                        if driverName in hiddenDrivers: 
     2607                            #print "ignoring hidden driver '%s'" % driverName 
     2608                            pass 
     2609                        else: 
     2610                            drivers.append(driverName) 
     2611                else: 
     2612                    #print "ignoring driver file with invalid name '%s'" % f 
     2613                    pass 
     2614        #print "found %d drivers" % len(drivers) 
     2615        return drivers 
     2616 
    25502617    def _checkProprietaryDrivers(self): 
    25512618        # Check for the NVidia driver. 
    25522619        # FIXME x86_64 => 'lib64' 
Note: See TracBrowser for help on using the repository browser.