From 2881a51155925b4cbac37cb23a5136ba3edbaf76 Mon Sep 17 00:00:00 2001 From: Mike Hiretsky Date: Wed, 21 Jul 2010 10:37:48 +0400 Subject: [PATCH] Change fill method of video driver --- pym/cl_fill.py | 53 ++++++++++++++++++++++++++++++++++---------------- 1 file changed, 36 insertions(+), 17 deletions(-) diff --git a/pym/cl_fill.py b/pym/cl_fill.py index 3e0ffe0..95e7a81 100644 --- a/pym/cl_fill.py +++ b/pym/cl_fill.py @@ -23,6 +23,7 @@ import cl_overriding from cl_ldap import ldapUser from cl_datavars import glob_attr +from os.path import exists as pathexists class clLocale: lang = { @@ -765,22 +766,28 @@ class fillVars(glob_attr): xorg_conf = '/etc/X11/xorg.conf' # Try analize Xorg.{DISPLAY}.log display = os.environ.get('DISPLAY') - if display and os.path.exists(xorg_modules_dir): - list_avialable_drivers = os.listdir(xorg_modules_dir) - if list_avialable_drivers: - reDriver = re.compile('|'.join(list_avialable_drivers)) - display_number = re.search(r':(\d+)\..*', display) - if display_number: - xorg_log_file = '/var/log/Xorg.%s.log' % \ - display_number.group(1) - if os.path.exists(xorg_log_file): - matchStrs = [i for i in open(xorg_log_file) - if "drv" in i and reDriver.search(i)] - if matchStrs: - resDriver = re.search(r'([^/]+)_drv.so', - matchStrs[-1]) - if resDriver: - return resDriver.group(1) + if pathexists(xorg_modules_dir): + list_avialable_drivers = \ + map(lambda x: x[:-7], + filter(lambda x: x.endswith('_drv.so'), + os.listdir(xorg_modules_dir))) + else: + list_avialable_drivers = [] + if display and list_avialable_drivers: + reDriver = re.compile('|'.join(map(lambda x: "%s_drv.so"%x, + list_avialable_drivers))) + display_number = re.search(r':(\d+)\..*', display) + if display_number: + xorg_log_file = '/var/log/Xorg.%s.log' % \ + display_number.group(1) + if os.path.exists(xorg_log_file): + matchStrs = [i for i in open(xorg_log_file) + if "drv" in i and reDriver.search(i)] + if matchStrs: + resDriver = re.search(r'([^/]+)_drv.so', + matchStrs[-1]) + if resDriver: + return resDriver.group(1) # analize /etc/X11/xorg.conf if os.path.exists(xorg_conf): @@ -791,7 +798,19 @@ class fillVars(glob_attr): matchSect.group(0),re.S) if resDriver: return resDriver.group(1) - return "vesa" + defaultDriver = { + 'vesa':'vesa', + 'nvidia':'nvidia' if "nvidia" in list_avialable_drivers else "nv", + 'ati':'fglrx' if "fglrx" in list_avialable_drivers else "radeon", + 'intel':'intel', + 'via':'via', + 'vmware':'vmware'} + hr_video = self.Get('hr_video') + if hr_video in defaultDriver and \ + defaultDriver[hr_video] in list_avialable_drivers: + return defaultDriver[hr_video] + else: + return "vesa" def get_hr_video(self): """Производитель видеокарты"""