summaryrefslogtreecommitdiffstats
path: root/abs/core/LinHES-config
diff options
context:
space:
mode:
authorJames Meyer <james.meyer@operamail.com>2012-08-24 00:40:15 (GMT)
committerJames Meyer <james.meyer@operamail.com>2012-08-24 00:40:23 (GMT)
commit3a594ad38241da5087d34584ba70ca06e7be97c4 (patch)
tree617a14e327af8a1fe159a025b5d1afcad2edde19 /abs/core/LinHES-config
parent282e9e588e6d8a62a7b1d3f18963e3787fb6f88a (diff)
downloadlinhes_pkgbuild-3a594ad38241da5087d34584ba70ca06e7be97c4.zip
linhes_pkgbuild-3a594ad38241da5087d34584ba70ca06e7be97c4.tar.gz
linhes_pkgbuild-3a594ad38241da5087d34584ba70ca06e7be97c4.tar.bz2
LinHES-config: added print_xorg_res.py this feeds the ui to list valid modelines as X detects them. This provides a consistent interface.
Also updated xconfig.sh todo something with the XRes value and configuring xorg.
Diffstat (limited to 'abs/core/LinHES-config')
-rw-r--r--abs/core/LinHES-config/PKGBUILD21
-rw-r--r--abs/core/LinHES-config/print_xorg_res.py128
-rwxr-xr-xabs/core/LinHES-config/xconfig.sh47
3 files changed, 181 insertions, 15 deletions
diff --git a/abs/core/LinHES-config/PKGBUILD b/abs/core/LinHES-config/PKGBUILD
index d395bbc..0ea9210 100644
--- a/abs/core/LinHES-config/PKGBUILD
+++ b/abs/core/LinHES-config/PKGBUILD
@@ -1,11 +1,11 @@
pkgname=LinHES-config
pkgver=2.3
-pkgrel=81
+pkgrel=83
conflicts=(MythVantage-config MythVantage-config-dev LinHES-config-dev LinHes-config )
pkgdesc="Install and configure your system"
depends=('bc' 'libstatgrab' 'mysql-python' 'expect' 'curl' 'dnsutils' 'parted'
'sg3_utils' 'nmbscan' 'system-templates' 'rsync' 'python-parted'
- 'python-pexpect' 'python-netifaces'
+ 'python-pexpect' 'python-netifaces'
'python-iplib' 'mythinstall>=2-10' 'sudo')
#LinHES-timezone
arch=('i686' 'x86_64')
@@ -46,8 +46,9 @@ source=(mv_install.py 09_mythvantge_runit_grub
systemconfig.py
myth_user_call.py
mythvantage.cfg
- config-sudo.rules
- hdhr.conf blacklist_nouveau.conf blacklist_pcspkr.conf )
+ config-sudo.rules
+ hdhr.conf blacklist_nouveau.conf blacklist_pcspkr.conf
+ print_xorg_res.py )
backup=(etc/mythvantage.cfg)
install=config.install
@@ -95,6 +96,7 @@ build() {
install -m 0755 mv_hostype.py $MVDIR/bin/
install -m 0755 mv_supplemental.py $MVDIR/bin/
install -m 0755 systemconfig.py $MVDIR/bin/
+ install -m 0755 print_xorg_res.py $MVDIR/bin/
install -m 0755 mythvantage.cfg $startdir/pkg/etc/
#README file displayed on install
@@ -107,13 +109,13 @@ build() {
#sudo rules
mkdir -p $startdir/pkg/etc/sudoers.d/
- chmod 750 $startdir/pkg/etc/sudoers.d/
- chown -R root:root $startdir/pkg/etc/sudoers.d
+ chmod 750 $startdir/pkg/etc/sudoers.d/
+ chown -R root:root $startdir/pkg/etc/sudoers.d
install -o root -g root -m 0750 config-sudo.rules $startdir/pkg/etc/sudoers.d/config_sudo
#sysctrl conf
install -o root -g root -D -m 0755 hdhr.conf $startdir/pkg/etc/sysctl.d/hdhr.conf
-
+
#modules blacklist files
install -o root -g root -D -m 0755 blacklist_pcspkr.conf $startdir/pkg/etc/modprobe.d/blacklist_pcspkr.conf
install -o root -g root -D -m 0755 blacklist_nouveau.conf $startdir/pkg/etc/modprobe.d/blacklist_nouveau.conf
@@ -129,7 +131,7 @@ md5sums=('0b29bb0819aad086f612699815132ec5'
'68199e861c2933ccbb84735b9b440157'
'2a7f3b34e522acfd08283b86c8926aba'
'60103d94ada98ac583fea620294f14d3'
- '36b0ce0589fd522217f90e0d0e5315c0'
+ '61e1e5cc957a0ce99a8a24501efab88c'
'ecf9e5df20683a769c4a8a8f2d65de85'
'895d4e842d7457a48a6d2ce0e9c833b7'
'8ba06c2ce6129371548cc360ccca27f8'
@@ -158,4 +160,5 @@ md5sums=('0b29bb0819aad086f612699815132ec5'
'4804aa93aaad3dfcfff08cd9ffd68836'
'0fa6fffd87f350380d45f1f8a5b7babe'
'6ec39b010c0ed8901ea896c7e153d330'
- '3866086e6af5e3528a66eff492f2f4dd')
+ '3866086e6af5e3528a66eff492f2f4dd'
+ 'c9279fa095af624ee3d9bc75d3328360')
diff --git a/abs/core/LinHES-config/print_xorg_res.py b/abs/core/LinHES-config/print_xorg_res.py
new file mode 100644
index 0000000..3b7ce56
--- /dev/null
+++ b/abs/core/LinHES-config/print_xorg_res.py
@@ -0,0 +1,128 @@
+#!/usr/bin/python2
+# -*- coding: utf-8 -*-
+
+__author__ = "James Meyer"
+__date__ = "August 23rd 2012"
+
+
+from subprocess import Popen, PIPE
+import re
+
+class available_display_res():
+ def __init__(self):
+
+ self.mode_list=[]
+ self.videocard = self.find_video_card()
+
+ if self.videocard == "nvidia":
+ self.parse_modeline_nvidia()
+ else:
+ self.sizes_xrandr()
+ #elif self.videocard == "intel":
+ #self.sizes_xrandr()
+ #elif self.videocard == "vmware":
+ #self.sizes_xrandr()
+ #elif self.videocard == "vesa":
+ #self.sizes_parse_log()
+
+
+ def getlist(self):
+ return self.mode_list
+
+ def getvc(self):
+ return self.videocard
+
+ def find_video_card(self):
+ videocard=""
+ conf_file="/etc/X11/xorg.conf.d/20-automv.conf"
+ lines=[]
+ try:
+ f=open(conf_file,'r')
+ lines=f.readlines()
+ f.close()
+ except:
+ print " find_video_card: couldn't read in %s" %conf_file
+ videocard = "unknown"
+
+ for line in lines:
+ parsed=line.split()
+ if parsed[0].strip() == "Driver":
+ videocard = parsed[1].strip('''"''')
+ break
+
+ return videocard
+
+ def parse_modeline_nvidia(self):
+ self.mode_list=[]
+ conf_file="/var/log/Xorg.0.log"
+ lines=[]
+ try:
+ f=open(conf_file,'r')
+ lines=f.readlines()
+ f.close()
+ except:
+ print " parse_modeline_nvidia: couldn't read in %s" %conf_file
+ self.mode_list=["Auto"]
+ #now parse the list looking for modelines
+ search="Modes in ModePool"
+ searchindex=[]
+ for line in lines:
+ if line.find(search) > 4 :
+ searchindex.append(lines.index(line))
+ search="End of ModePool"
+
+ if len(searchindex) == 2:
+ break
+ #extract the modelines
+ #[ 29.858] (II) NVIDIA(GPU-0): "nvidia-auto-select" : 2560 x 1600 @ 59.9 Hz (from: EDID)
+ try:
+ modelines = lines[searchindex[0]+1:searchindex[1]-1]
+ for i in modelines:
+ self.mode_list.append(i.split('''"''')[1])
+ except:
+ self.mode_list=["nvidia-auto-select"]
+
+
+ def sizes_parse_log(self):
+ self.mode_list=["parse_log_list"]
+
+ def sizes_xrandr(self):
+ """List all sizes detected by xrandr,
+ ordered by the next resolution to cycle to"""
+ size_re = re.compile("^ ([0-9]*x[0-9]*)\W*[0-9]*\.[0-9]*(\*)?")
+ p1 = Popen(['xrandr'], stdout=PIPE)
+ sizes = []
+ current_size_index = 0
+ for line in p1.communicate()[0].split("\n"):
+ m = size_re.match(line)
+ if m:
+ sizes.append(m.group(1))
+ if m.group(2) == "*":
+ current_size_index = len(sizes) - 1
+ #return sizes[current_size_index+1:] + sizes[:current_size_index+1]
+ self.mode_list = sizes[current_size_index+1:] + sizes[:current_size_index+1]
+
+def go():
+ mode = available_display_res()
+ vc = mode.getvc()
+ modelist = mode.getlist()
+ print vc
+
+ for i in modelist:
+ print i
+ conf_file="/tmp/modelines"
+ try:
+ f=open(conf_file,'w')
+ for i in modelist:
+ f.write(i)
+ f.write("\n")
+ f.close()
+ except:
+ print " print_xorg_res: couldn't write modelines to %s" %conf_file
+
+
+
+
+if __name__ == '__main__':
+ go()
+
diff --git a/abs/core/LinHES-config/xconfig.sh b/abs/core/LinHES-config/xconfig.sh
index 73e4a5e..f832e66 100755
--- a/abs/core/LinHES-config/xconfig.sh
+++ b/abs/core/LinHES-config/xconfig.sh
@@ -144,6 +144,22 @@ function intel_driver_install {
# Xres="${Xres} 720x480_60"
# fi
+function set_res {
+ echo " Setting modeline to ${Xres}"
+ echo " Setting modeline to ${Xres}" >> $LOGFILE 2>&1
+ cat > /etc/X11/xorg.conf.d/30-screen.conf <<EOF
+ Section "Screen"
+ Identifier "Screen0" #Collapse Monitor and Device section to Screen section
+ Device "Device0"
+ Monitor "Monitor0"
+ DefaultDepth 24 #Choose the depth (16||24)
+ SubSection "Display"
+ Depth 24
+ Modes "${Xres}" #Choose the resolution
+ EndSubSection
+ EndSection
+EOF
+}
function setupX {
@@ -153,6 +169,12 @@ function setupX {
case $VGACARDTYPE in
NVIDIA|nVidia|nvidia)
nvidia_driver_install
+ if [ ${Xres} != "Auto" ]
+ then
+ set_res
+ else
+ rm -f /etc/X11/xorg.conf.d/30-screen.conf
+ fi
;;
VMware)
@@ -163,22 +185,35 @@ function setupX {
echo "#!/bin/bash" > /etc/X11/autostart/vmware.sh
echo "/usr/bin/vmware-user-suid-wrapper" >> /etc/X11/autostart/vmware.sh
chmod 755 /etc/X11/autostart/vmware.sh
+ if [ ${Xres} != "Auto" ]
+ then
+ set_res
+ else
+ rm -f /etc/X11/xorg.conf.d/30-screen.conf
+ fi
;;
Intel|intel)
intel_driver_install
cp $TEMPLATES/xorg/xorg.intel /etc/X11/xorg.conf.d/20-automv.conf
+ if [ ${Xres} != "Auto" ]
+ then
+ set_res
+ else
+ rm -f /etc/X11/xorg.conf.d/30-screen.conf
+ fi
;;
vesa|InnoTek|*) #leaving this as * and vesa for no real reason other then it's explicit to catch vesa
vesa_driver_install
cp $TEMPLATES/xorg/xorg.vesa /etc/X11/xorg.conf.d/20-automv.conf
-# if [ ${Xres} = Auto ]
-# then
-# sed -e "/^.*Modes.*$/d" "$TEMPLATES/xorg/xorg.conf.vesa" > "$XORG_CONF"
-# else
-# sed -e "s/^.*Modes.*$/\t Modes \"${Xres}\"/" "$TEMPLATES/xorg/xorg.conf.vesa" > "$XORG_CONF"
-# fi
+ if [ ${Xres} != "Auto" ]
+ then
+ set_res
+ else
+ rm -f /etc/X11/xorg.conf.d/30-screen.conf
+ fi
+
;;
esac