#!/bin/sh -x

########################################################
# note to self..                                       #
# Build script for Nvidia modules x86 & x86_64         #
# NOTE: It's better to boot without installing Xorg-7.7#
# then at the command prompt load Xorg                 #
#  "tce-load -i Xorg-7.7-3d.dev" without starting X    #
# If /etc/X11/xorg.conf does not exist then create an  #
# xorg.conf file " sudo Xorg -configure "              #
# copy /root/xorg.conf.new to /etc/X11/xorg.conf       #
# then run this script                                 #
# if successfull allow Nvidia to update xorg.conf file #
# then startx                                          #
# else save backup of Nvidia-Linux-xxx-xxx build dir   #
# manually chack status of *.ko files                  #
# create extension from nvidia_raw.tar or              #
# from manual nvidia.tar backup  (selecting " n " at   #
# prompt will create build dir backup)                 #
#                                                      #
# Edit version and options as necessary #30 & #130     #
########################################################

. /etc/init.d/tc-functions
useBusybox

# src ftp://download.nvidia.com/XFree86/Linux-x86_64/352.63/ 

# ***EDIT VERSION AS NECESSARY***
ver="340.96"

kerarch=$(uname -m)
kerbuild=$(uname -r)  # eg: 4.2.9-tinycore
arch=$(getBuild)
NVSRC="NVIDIA-Linux-${arch}-${ver}.run"

##******************************************
echo -e "\n\nFetching build dependencies... "

########################################################
# check if deps installed already,                     #
# if not then check if available locally & install,    #
# else download & install                              #
########################################################

tceinstalled="/usr/local/tce.installed"
tcepath="/etc/sysconfig/tcedir/optional"

deps="compiletc.tcz \
linux-kernel-sources-env.tcz \
Xorg-7.7-3d-dev.tcz \
graphics-${kerbuild}.tcz \
pkg-config.tcz \
xorg-server-dev.tcz \
squashfs-tools.tcz \
autoconf.tcz \
findutils.tcz \
procps.tcz \
bash.tcz"

for i in $deps ; do 

pkgname=${i%.*}

if [ ! -f ${tceinstalled}/"$pkgname" ]; then
	if [ -f ${tcepath}/"$i" ]; then
	  while [ ! -f ${tceinstalled}/"$pkgname" ]; do
	    tce-load -i "$pkgname"; sleep 0.5
	  done
	else
	    tce-load -wil "$pkgname"
	fi
fi
[ -f "${tceinstalled}/$pkgname" ] || echo "${RED}$i failed to load, exiting..${NORMAL}"
[ -f "${tceinstalled}/$pkgname" ] || exit 1
done

sleep 1
cd /tmp
##End of fetch deps
##******************************************

[ -e /lib/modules/${kerbuild}/build ] || cliorx linux-kernel-sources-env.sh

set -x
#pidof Xorg | xargs kill -9
#kill `pidof Xorg`
pkill Xorg

while [ -d /tmp/.X11-unix ]; do
sudo rm -rf /tmp/.X11-unix
done
while [ -f /tmp/.X0-lock ]; do
sudo rm -f /tmp/.X0-lock
done

cd /tmp

set +x; echo -e "\n\n ${BLUE}Export compiler flags... ${NORMAL}"; set -x
if [ "x$arch" == xx86_64 ]; then
# x86_64
echo "compile flags for $kerarch"
export CFLAGS="-mtune=generic -Os -pipe"
export CXXFLAGS="-mtune=generic -Os -pipe -fno-exceptions -fno-rtti"
else
# x86
echo "compile flags for $kerarch"
export CFLAGS="-march=i486 -mtune=i686 -Os -pipe"
export CXXFLAGS="-march=i486 -mtune=i686 -Os -pipe"
fi

sudo mkdir /etc/X11

[ -f /tmp/$NVSRC ] || sudo find ~/ -name "$NVSRC" -type f -exec sh -c 'exec cp -f "$@" /tmp' X '{}' +
[ -f /tmp/$NVSRC ] || wget -c http://us.download.nvidia.com/XFree86/$NVSRC
[ -f /tmp/$NVSRC ] && sudo chmod +x /tmp/$NVSRC || exit 2


cd /tmp
sudo touch NOW
sleep 5

if [ x"$arch" == xx86_64 ]; then
  if [ ! -e /lib64 ]; then
	sudo ln -s /lib /lib64
  fi
fi

# Options
sudo ./$NVSRC --keep --accept-license --no-cc-version-check --force-tls=classic 
# sudo ./$NVSRC --keep --accept-license 
# sudo ./$NVSRC --extract-only ; exit
# exit


echo "success??  answer y/n "
while read -r -n 1 -s yn; do
case $yn in
  y) 
    echo "OK "
    break
  ;;
  n) 
    [ -d "/tmp/${NVSRC%.*}" ] && tar -cvf nvidia.tar ${NVSRC%.*}
    [ -e /tmp/nvidia.tar ] && cp /tmp/nvidia.tar ~/nvidia.tar
    [ -e /etc/X11/xorg.conf ] && sudo cp /etc/X11/xorg.conf ~/xorg.conf
    [ -e ~/nvidia.tar ] || echo "build dir achive not saved "
    [ -e ~/xorg.conf ] || echo "xorg.conf not saved "
    sleep 15
    exit
  ;;
  *) 
    echo "invalid entry "
esac
done



sleep 1
sudo rm -f /usr/lib/libnvidia-tls.so.$ver

sudo nvidia-xconfig
sudo ldconfig
sudo depmod

## additional optional commands
[ -d /home/tc/nvidia_raw ] || mkdir -p /home/tc/nvidia_raw
sudo find /usr -newer /tmp/NOW -not -type d > /home/tc/nvidia_raw/nvidia_raw.list
sudo find /etc -newer /tmp/NOW -not -type d >> /home/tc/nvidia_raw/nvidia_raw.list
sudo find /lib -newer /tmp/NOW -not -type d | grep /lib/modules/${kerbuild}/kernel/drivers/ >> /home/tc/nvidia_raw/nvidia_raw.list
cd /home/tc/nvidia_raw
tar -T nvidia_raw.list -czvf nvidia_raw.tar.gz

cd /home/tc

#startx

exit
#mkdir -p /etc/X11
#nvidia-xconfig --force-generate
#sudo ln -s /lib/modules/${kerbuild}/kernel/drivers/video/nvidia.ko /usr/local/lib/xorg/modules/nvidia.ko




	




