From 381398c207362ed2fc2b7405ed453f397f12d901 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Fri, 17 Aug 2012 19:54:31 -0500
Subject: LinHES-config: xconfig.sh - Added a check to abort driver
 removal/install if nvidia pkg is not available for install.  Only works for
 nvidia  should be expanded later for other drivers - Removed cruft

refs #831
---
 abs/core/LinHES-config/xconfig.sh | 432 +++++++++-----------------------------
 1 file changed, 102 insertions(+), 330 deletions(-)

diff --git a/abs/core/LinHES-config/xconfig.sh b/abs/core/LinHES-config/xconfig.sh
index a601352..7024566 100755
--- a/abs/core/LinHES-config/xconfig.sh
+++ b/abs/core/LinHES-config/xconfig.sh
@@ -11,10 +11,8 @@ do
 
 done
 BASE=""
+MYTH_RUN_STATUS="1"
 . /etc/profile
-NVIDIA_96XX="$TEMPLATES/xorg/96xx_supported.txt"
-NVIDIA_173="$TEMPLATES/xorg/173_supported.txt"
-NVIDIA_SUPPORTED="$TEMPLATES/xorg/nvidia_supported.txt"
 
 MYTHHOME=$BASE/home/mythtv
 
@@ -32,163 +30,26 @@ function Xvalues {
         CARDID=`lspci -n | grep "$VGAPCIID" | grep 10de | cut -d" " -f3 | cut -d: -f2`
         VENDORID=`lspci -n | grep "$VGAPCIID" | grep 10de | cut -d" " -f3 | cut -d: -f1`
     fi
-
     echo "Detected $VGACARDTYPE as the video card type"
-    #currentmode=`cat "$BASE/etc/X11/xorg.conf" | grep Modes | awk -Fs '{ print $2 }'`
 }
 
 function presetupX {
-    if [ -f /etc/sysconfig/IGNORE_X ]
+
+    if  [ "$XIgnoreConfig" = 1 ]
     then
-        echo "Will not run xconfig.sh due to presence of /etc/sysconfig/IGNORE_X"
-        return 1
-    else
-        if  [ "$XIgnoreConfig" = 1 ]
+        echo "Using User supplied X"
+        if [ -f "$MYTHHOME/templates/xorg.user" ]
         then
-            echo "Using User supplied X"
-            if [ -f "$MYTHHOME/templates/xorg.user" ]
-            then
-                cp -f "$MYTHHOME/templates/xorg.user" "$XORG_CONF"
-            else
-                echo "Didn't find the file"
-                echo "Copy your config file to $MYTHHOME/templates/xorg.user" > "$XORG_CONF"
-            fi
+            cp -f "$MYTHHOME/templates/xorg.user" "$XORG_CONF"
         else
-            #if [ "$XUseAdvanced" = 1 ]
-            #then
-            #    setupAdvancedX
-            #else
-                setupX
-            #fi
+            echo "Didn't find the file"
+            echo "Copy your config file to $MYTHHOME/templates/xorg.user" > "$XORG_CONF"
         fi
+    else
+        setupX
     fi
 
-}
-
-function setupAdvancedX {
 
-    echo "#Doing the advanced X setup" >> $LOGFILE
-    #Xcategory=`echo "$Xresadvanced" | cut -d_ -f1`
-    #Xres=`echo "$Xresadvanced" | cut -d_ -f2`
-
-    Xcategory=`echo "$Xresadvanced" | cut -d_ -f1`
-    Xres=${Xres}
-    #echo "$Xcategory"
-    #echo $Xres
-    if [ "$Xcategory" = "Nvidia" ]
-    then
-        #Xres=""
-        if [ "$XnVidia1080p" = "1" ]
-        then
-            Xres="${Xres} 1920x1080_60"
-        fi
-        if [ "$XnVidia1080i" = "1" ]
-        then
-            Xres="${Xres} 1920x1080_60i"
-        fi
-        if [ "$XnVidia720p" = "1" ]
-        then
-            Xres="${Xres} 1280x720_60"
-        fi
-        if [ "$XnVidia480p" = "1" ]
-        then
-            Xres="${Xres} 720x480_60"
-        fi
-        #ML="\t Modes ${Xres}"
-#     else
-#         ML="\t Modes \"${Xres}\""
-    fi
-
-    case $Xcardtype in
-        NVIDIA|nVidia|nvidia)
-            nvidia_driver_install
-            case $Xconnection in
-                DVI)    ConnectedMonitor=DFP ;;
-                vga)    ConnectedMonitor=CRT;;
-                Auto)   ConnectedMonitor=Auto;;
-                TV)     ConnectedMonitor=TV
-                        nvidia-xconfig -c /etc/X11/xorg.conf.d/20-automv.conf --tv-standard="$XTVstandard"
-                        nvidia-xconfig -c /etc/X11/xorg.conf.d/20-automv.conf  --tv-out-format="$XTVconnection"
-                    #    echo "Option \"TVStandard\" \"$XTVstandard\""  >>/tmp/options
-                    #    echo "Option \"TVOutFormat\" \"$XTVconnection\"" >> /tmp/options
-                    ;;
-                *)      ConnectedMonitor=Auto;;
-            esac
-            if [ "$ConnectedMonitor" = Auto ]
-            then
-                echo "auto connection"
-            else
-                nvidia-xconfig -c /etc/X11/xorg.conf.d/20-automv.conf   --connected-monitor="$ConnectedMonitor"
-                #echo "Option \"ConnectedMonitor\" \"$ConnectedMonitor\"" >> /tmp/options
-                #echo "Option \"FlatPanelProperties\" \"Scaling = centered, Dithering = enabled\"" >> /tmp/options
-                #echo "Option \"DigitalVibrance\" \"0\"" >> /tmp/options
-            fi
-#
-#             if  [ "$XignoreEDID" = 1 ]
-#             then
-#                 EDIDvalue=true
-#                 EDIDFREQ=false
-#                 DS="    DisplaySize $XDisplaysize"
-#                 HS="    HorizSync   $XHsync"
-#                 VR="    VertRefresh $XVrefresh"
-#             else
-#                 EDIDvalue=false
-#                 EDIDFREQ=true
-#                 DS="# Display size edid used "
-#                 HS="# Hsync edid used "
-#                 VR="# Vertrefresh edid used "
-#             fi
-#             echo "Option  \"UseEdidFreqs\" \"$EDIDFREQ\"" >> /tmp/options
-#             echo "Option  \"IgnoreEDID\" \"$EDIDvalue\"" >> /tmp/options
-#
-#
-#             sed -e "s/^.*Modes.*$/${ML}/" \
-#                 -e "/INSERT MODELINE/r  $TEMPLATES/xorg/modeline.$Xcategory" \
-#                 -e "s/^.*DisplaySize.*$/ $DS/" \
-#                 -e "s/^#.*HorizSync.*$/ $HS/g" \
-#                 -e "s/^#.*VertRefresh.*$/ $VR/g" \
-#                 -e "/INSERT HERE/r /tmp/options" "$TEMPLATES/xorg/xorg.conf.nvidia" > "$XORG_CONF"
-
-            #nvidia-xconfig -c /etc/X11/xorg.conf.d/20-automv.conf --mode-list=\"${Xres}\"
-            eval nvidia-xconfig -c /etc/X11/xorg.conf.d/20-automv.conf --mode-list=\"${Xres}\"
-            ;;
-
-        ati|ATI)
-            case $Xconnection in
-                DVI)    ConnectedMonitor="tmds1,nocrt1,notv";;
-                VGA)    ConnectedMonitor="crt1,notmds1,notv" ;;
-                TV)     ConnectedMonitor="tv,nocrt1,notmds1"
-                        echo "Option \"TVStandard\" \"$XTVstandard\""  >>/tmp/options
-                        echo "Option \"TVFormat\" \"$XTVconnection\"" >> /tmp/options
-                    ;;
-            esac
-            if  [ "$XignoreEDID" = 1 ]
-            then
-                DS="    DisplaySize $XDisplaysize"
-                HS="    HorizSync   $XHsync"
-                VR="    VertRefresh $XVrefresh"
-            else
-                DS="# Display size edid used "
-                HS="# Hsync edid used "
-                VR="# Vertrefresh edid used "
-            fi
-
-            echo "Option \"ForceMonitors\" \"$ConnectedMonitor\"" >> /tmp/options
-
-            sed -e "s/^.*Modes.*$/\t $ML/" \
-                -e "/INSERT MODELINE/r  $TEMPLATES/xorg/modeline.$Xcategory" \
-                -e "s/^.*DisplaySize.*$/ $DS/" \
-                -e "s/^#.*HorizSync.*$/ $HS/g" \
-                -e "s/^#.*VertRefresh.*$/ $VR/g" \
-                -e "/INSERT HERE/r /tmp/options" "$TEMPLATES/xorg/xorg.conf.ati"  > "$XORG_CONF"
-            ;;
-
-
-
-        *)
-            echo "unknown card type"
-            ;;
-    esac
 }
 
 function nvidia_prepare {
@@ -205,137 +66,81 @@ function nvidia_prepare {
 
 }
 
-function nvidia_driver_install {
-
+function pkg_check () {
+    echo "  Checking for $1 in cache or online"
+    pacman --noconfirm -Sw $1 >> $LOGFILE 2>&1
+    rc=$?
+    if [ $rc != 0 ]
+    then
+        echo "  Couldn't find $1 for install, aborting"
+        echo "  Couldn't find $1 for install, aborting" >> $LOGFILE 2>&1
+        exit 1
+    fi
 
-        cp "$TEMPLATES/xorg/xorg.conf.nvidia"  $BASE/etc/X11/xorg.conf.d/20-automv.conf
 
-        installed=0
-        if [ "$TESTMODE" != "test" ]
-        then
 
+    }
 
-            grep -qi "$CARDID" "$NVIDIA_SUPPORTED"
-            if [ $? = 0 ]
-            then
-                #install latest drivers
-                echo "Installing current nvidia drivers"
-                nvidia_prepare
-                pacman --noconfirm  -S nvidia nvidia-utils >> $LOGFILE 2>&1
-                installed=1
-            fi
-
-            if [ $installed = 0 ]
-            then
-                #nvidia check right here
-                grep -qi "$CARDID" "$NVIDIA_96XX"
-                if [ $? = 0 ]
-                then
-                    #install 96xx drivers
-                    echo "Installing nvidia 96xx drivers"
-                    nvidia_prepare
-                    pacman --noconfirm  -S nvidia-96xx nvidia-96xx-utils  >> $LOGFILE 2>&1
-                    installed=1
-                fi
-            fi
-
-            if [ $installed = 0 ]
-            then
-                grep -qi "$CARDID" "$NVIDIA_173"
-                if [ $? = 0 ]
-                then
-                    #install latest drivers
-                    echo "Installing 173 nvidia drivers"
-                    nvidia_prepare
-                    pacman --noconfirm  -S nvidia-173xx nvidia-173xx-utils >> $LOGFILE 2>&1
-                    installed=1
-                fi
-            fi
-
-            if [ $installed = 0 ]
-            then
-                #this is a failsafe, can't find the right driver, then use the latest'
-                #install latest drivers
-                echo "Couldn't find the card in the supported list"
-                echo "Installing current nvidia drivers"
+function nvidia_driver_install {
 
-                nvidia_prepare
-                pacman --noconfirm  -S nvidia nvidia-utils >> $LOGFILE 2>&1
-                installed=1
-            fi
+    cp "$TEMPLATES/xorg/xorg.conf.nvidia"  $BASE/etc/X11/xorg.conf.d/20-automv.conf
+    #grep -qi "$CARDID" "$NVIDIA_SUPPORTED"
 
+    #if [ $? = 0 ]
+    #then
+        #install latest drivers
+        pkg_check nvidia-utils
+        echo "Installing current nvidia drivers"
+        nvidia_prepare
+        pacman --noconfirm  -S nvidia nvidia-utils >> $LOGFILE 2>&1
+        installed=1
+    #fi
 
-        fi
+    if [ \"$Xres\" = "Auto" ]
+    then
+        nvidia-xconfig -c /etc/X11/xorg.conf.d/20-automv.conf --mode-list="nvidia-auto-select"
+    else
+        #nvidia-xconfig -c /etc/X11/xorg.conf.d/20-automv.conf --mode-list=$Xres
+        eval nvidia-xconfig -c /etc/X11/xorg.conf.d/20-automv.conf --mode-list=\"${Xres}\"
+    fi
 
+    echo "/usr/lib/libXvMCNVIDIA_dynamic.so.1" > "$XVMC_CONFIG"
+}
 
-        if [ \"$Xres\" = "Auto" ]
-        then
-            nvidia-xconfig -c /etc/X11/xorg.conf.d/20-automv.conf --mode-list="nvidia-auto-select"
-        else
-            #nvidia-xconfig -c /etc/X11/xorg.conf.d/20-automv.conf --mode-list=$Xres
-            eval nvidia-xconfig -c /etc/X11/xorg.conf.d/20-automv.conf --mode-list=\"${Xres}\"
-        fi
+# if [ "$Xcategory" = "Nvidia" ]
+# then
+# #Xres=""
+# if [ "$XnVidia1080p" = "1" ]
+# then
+# Xres="${Xres} 1920x1080_60"
+# fi
+# if [ "$XnVidia1080i" = "1" ]
+# then
+# Xres="${Xres} 1920x1080_60i"
+# fi
+# if [ "$XnVidia720p" = "1" ]
+# then
+# Xres="${Xres} 1280x720_60"
+# fi
+# if [ "$XnVidia480p" = "1" ]
+# then
+# Xres="${Xres} 720x480_60"
+# fi
 
-        echo "/usr/lib/libXvMCNVIDIA_dynamic.so.1" > "$XVMC_CONFIG"
-        #rm $BASE/etc/X11/xorg.conf.d/20-nvidia.conf
-}
 
 
 function setupX {
     Xvalues
-    #echo "$currentmode  ____   ${Xres}"
-    #if [ "${currentmode}" != \"${Xres}\" ]
     if [ x = x ]
     then
         case $VGACARDTYPE in
-            nVidia)
+            NVIDIA|nVidia|nvidia)
                     nvidia_driver_install
                 ;;
 
-      #      VMware)
-      #              sed -e "s/^.*Modes.*$/\t Modes \"${Xres}\"/" "$TEMPLATES/xorg/xorg.conf.vmware" > "$XORG_CONF"
-      #              ;;
-
-            VIA|S3)
-                # There are actually multiple options here
-                # xf86-video-openchrome
-                # xf86-video-unichrome
-                # There is also a seperate driver for the Unichrome Pro
-                if [ ${Xres} = Auto ]
-                then
-                    sed -e "/^.*Modes.*$/d" "$TEMPLATES/xorg/xorg.conf.via" > "$XORG_CONF"
-                else
-                    sed -e "s/^.*Modes.*$/\t Modes \"${Xres}\"/" "$TEMPLATES/xorg/xorg.conf.via" > "$XORG_CONF"
-                fi
-                if [ "$TESTMODE" != "test" ]
-                then
-                    if [ "$OPENCHROME" = "1" ]
-                    then
-                        pacman --noconfirm  -R nvidia nvidia-utils >> $LOGFILE 2>&1
-                        pacman --noconfirm  -S libgl unichrome-dri xf86-video-openchrome >> $LOGFILE 2>&1
-                    else
-                        pacman --noconfirm  -R nvidia nvidia-utils >> $LOGFILE 2>&1
-                        pacman --noconfirm  -S libgl unichrome-dri xf86-video-unichrome >> $LOGFILE 2>&1
-                    fi
-                fi
-                # I'm making educated guesses here...
-                if lspci | grep "VGA" | grep -qi "Unichrome Pro"
-                then
-                    if [ -f "/usr/lib/libchromeXvMCPro.so.1" ]
-                    then
-	                echo "/usr/lib/libchromeXvMCPro.so.1" > "$XVMC_CONFIG"
-                    else
-	                echo "/usr/lib/libviaXvMCPro.so.1" > "$XVMC_CONFIG"
-                    fi
-                else
-                    if [ -f "/usr/lib/libchromeXvMC.so.1" ]
-                    then
-	                echo "/usr/lib/libchromeXvMC.so.1" > "$XVMC_CONFIG"
-                    else
-                        echo "/usr/lib/libviaXvMC.so.1" > "$XVMC_CONFIG"
-                    fi
-                fi
-                ;;
+            VMware)
+                    sed -e "s/^.*Modes.*$/\t Modes \"${Xres}\"/" "$TEMPLATES/xorg/xorg.conf.vmware" > "$XORG_CONF"
+                    ;;
 
             Intel|intel)
                if [ ${Xres} = Auto ]
@@ -349,10 +154,11 @@ function setupX {
                     pacman --noconfirm -R nvidia-utils >> $LOGFILE 2>&1
                     pacman --noconfirm -S libgl >> $LOGFILE 2>&1
                 fi
-	        echo "/usr/lib/libIntelXvMC.so.1" > "$XVMC_CONFIG"
+                echo "/usr/lib/libIntelXvMC.so.1" > "$XVMC_CONFIG"
                 ;;
 
-            vesa|InnoTek)
+            vesa|InnoTek|*)
+                echo "Using the vesa driver"
                 if [ ${Xres} = Auto ]
                 then
                     sed -e "/^.*Modes.*$/d" "$TEMPLATES/xorg/xorg.conf.vesa" > "$XORG_CONF"
@@ -361,38 +167,13 @@ function setupX {
                 fi
                 ;;
 
-            *)
-                XCONF=/root/xorg.conf.new
-                XCONFB=/etc/X11/xorg.conf.install
-                X -configure
-                if [ -f "$XCONF" ]
-                then
-                    echo "Using $XCONF"
-                    if [ ${Xres} = Auto ]
-                    then
-                        grep -v Modes "$XCONF" | sed -e 's/dev\/mouse/dev\/psaux/g'> "$XORG_CONF"
-                    else
-                        grep -v Modes "$XCONF" | sed -e "/Depth.*16/a Modes \"${Xres}\" " -e "/Depth.*24/a Modes \"${Xres}\""     -e 's/dev\/mouse/dev\/psaux/g'> "$XORG_CONF"
-                    fi
-                elif [ -f "$XCONFB" ]
-                then
-                    echo "Using $XCONFB"
-                    if [ ${Xres} = Auto ]
-                    then
-                        sed -e "/^.*Modes.*$/d" "$XCONFB" > "$XORG_CONF"
-                    else
-                        sed -e "s/^.*Modes.*$/\t Modes \"${Xres}\"/" "$XCONFB" > "$XORG_CONF"
-                    fi
-                else
-                    echo "Xorg configuration failed"
-                fi
-                rm -f "$XCONF"  >> $LOGFILE 2>&1
-                ;;
         esac
     fi
 
 }
 
+
+#---------------------------------------------------------------------------------
 #MAIN
 
 
@@ -400,52 +181,43 @@ LINE=`grep -i xorg /etc/mythvantage.cfg|grep -q False`
 rc=$?
 if  [ $rc = 0 ]
 then
-    echo "xorg configuration disabled in /etc/mythvantage.cfg"
-    exit 0
+    echo "**   xorg configuration disabled in /etc/mythvantage.cfg"
+    exit 1
 fi
 
-TESTMODE="$1"
-if [ "$TESTMODE" = "test" ]
+if [ -f /etc/sysconfig/IGNORE_X ]
 then
-    XORG_CONF="/tmp/xorg.conf.test"
-    XVMC_CONFIG="/tmp/XvMCConfig.test"
-    XUseAdvanced="1"
-    XIgnoreConfig="${2}"
-    Xcardtype="${3}"
-    XIgnoreEDID="${4}"
-    Xconnection="${5}"
-    XHsync="${6}"
-    XVrefresh="${7}"
-    Xresadvanced="${8}"
-    XTVstandard="${9}"
-    XTVconnection="${10}"
-    XDisplaysize="${11}"
-else
-    if [ -f /etc/systemconfig ]
-    then
-        . /etc/systemconfig
-    else
-        Xres="800x600"
-    fi
-    CMDLINE=$(cat /proc/cmdline)
-    echo $CMDLINE | grep -q displayres
-    if [ $? = 0 ]
-    then
-        TEMPVAR=${CMDLINE#*displayres=}
-        DSR=${TEMPVAR%% *}
-    fi
-    if [ ! x$DSR = x ]
-    then
-        Xres=$DSR
-    fi
-    if [ ! x$DISPLAYRES = x ]
-    then
-        Xres=$DISPLAYRES
-    fi
+    echo "**   Will not run xconfig.sh due to presence of /etc/sysconfig/IGNORE_X"
+    exit 1
+fi
 
 
 
-    XORG_CONF="/etc/X11/xorg.conf"
-    XVMC_CONFIG="/etc/X11/XvMCConfig"
+if [ -f /etc/systemconfig ]
+then
+    . /etc/systemconfig
+else
+    Xres="800x600"
 fi
+CMDLINE=$(cat /proc/cmdline)
+echo $CMDLINE | grep -q displayres
+if [ $? = 0 ]
+then
+    TEMPVAR=${CMDLINE#*displayres=}
+    DSR=${TEMPVAR%% *}
+fi
+if [ ! x$DSR = x ]
+then
+    Xres=$DSR
+fi
+if [ ! x$DISPLAYRES = x ]
+then
+    Xres=$DISPLAYRES
+fi
+
+
+
+XORG_CONF="/etc/X11/xorg.conf"
+XVMC_CONFIG="/etc/X11/XvMCConfig"
+
 presetupX
-- 
cgit v0.12

