#!/bin/bash

export LD_LIBRARY_PATH=./opt/tbupddlx:$LD_LIBRARY_PATH

SYSARC=`uname -m`
count=0

if [ -f "./opt/tbupddlx/i686" ]; then
	BUILDARC="i686"
	count=`expr $count + 1`
fi

if [ -f "./opt/tbupddlx/x86_64" ]; then
	BUILDARC="x86_64"
	count=`expr $count + 1`
fi

if [ -f "./opt/tbupddlx/armv5tejl" ]; then
	BUILDARC="armv5tejl"
	count=`expr $count + 1`
fi

if [ $count = 0 ]; then
	echo "Build architecture not specified. Bad build. Quitting..."
	exit 1
elif [ $count -gt 1 ]; then
	echo "Ambiguous architecture specification. Quitting..."
	exit 1
fi
	

if [ ! $SYSARC = $BUILDARC ]; then
	echo "Build architecture:	$BUILDARC" 
	echo "System architecture:	$SYSARC" 
	echo "Incompatible architectures, quitting..."
	exit 1
fi

if [ "$DISPLAY" == "" ] ; then
	echo "You must use \"su\" or \"kdesu\" to become the root user before installing";
	exit;
fi

echo "Processing..."

if [ ! -f ./opt/tbupddlx/libtbapi32.so.1 ] ; then
	ln opt/tbupddlx/libtbapi32.so.1.0.0 opt/tbupddlx/libtbapi32.so.1 >& /dev/null
fi
if [ ! -f ./opt/tbupddlx/libtbapi64.so.1 ] ; then
	ln opt/tbupddlx/libtbapi64.so.1.0.0 opt/tbupddlx/libtbapi64.so.1 >& /dev/null
fi

if [ ! -f ./opt/tbupddlx/libusb-1.0.so.0 ] ; then
	ln opt/tbupddlx/libusb-1.0.so.0.0.0 opt/tbupddlx/libusb-1.0.so.0 >& /dev/null
fi

ln -s  libACE.so.5.6.2 ./opt/tbupddlx/libACE-5.6.2.so >& /dev/null


## SE Linux processing and library installation needed for install to work
if [ -d /selinux ] ; then
	chcon -t texrel_shlib_t ./opt/tbupddlx/*.so >& /dev/null;
fi

##
rm ./opt/tbupddlx/libusb-0.1.so.4 >& /dev/null

#if [ -d /usr/local/lib64 ] ; then
#    cp ./opt/tbupddlx/*.so* /usr/local/lib64 >& /dev/null
#    cp ./opt/tbupddlx/libACE.so.5.6.0 /usr/local/lib64 >& /dev/null
#    /sbin/ldconfig /usr/local/lib64 >& /dev/null
#else
#    cp ./opt/tbupddlx/*.so* /usr/local/lib >& /dev/null
#    cp ./opt/tbupddlx/libACE.so.5.6.0 /usr/local/lib >& /dev/null
#    cp ./opt/tbupddlx/libXaw.so.7 /usr/local/lib >& /dev/null
#    /sbin/ldconfig /usr/local/lib >& /dev/null
#fi

## in fc13 we find that these libs are considered unsecured when runing the script - revert to /usr/...
#rm ./opt/tbupddlx/libtbapi*.so*  >& /dev/null

if [ -d /selinux ] ; then
	if [ -d /usr/local/lib ] ; then
		chcon -t texrel_shlib_t /usr/local/lib/*.so* >& /dev/null;
	fi
	if [ -d /usr/local/lib64 ] ; then
		chcon -t texrel_shlib_t /usr/local/lib64/*.so* >& /dev/null;
	fi
fi

## Copying of tmp files and killing of old UPDD processes that could interfere with install

rm -r /tmp/tbtemp >& /dev/null;
mkdir -p /tmp/tbtemp/opt >& /dev/null;
cp -R ./opt/tbupddlx /tmp/tbtemp/opt >& /dev/null;
chmod a+w /tmp/tbtemp/opt/tbupddlx/tbupdd.ini >& /dev/null;

#needed for dist.txt
mkdir -p /opt/tbupddlx >& /dev/null

## Run dcu to allow user to select controller and distribution	       
./opt/tbupddlx/dcu /setup >& /dev/null
script_exit_value=$?
if [ "${script_exit_value}" -ne "0" ] ; then
        echo "Install failed"
else

## get kill off running processes and kill driver process so they can be replaced
rm /opt/tbupddlx/tbupddwu  >& /dev/null;
killall tbupddwu >& /dev/null;
killall dcu >& /dev/null;
killall tbcalib >& /dev/null;
killall aidaemon >& /dev/null;

## Ok! Lets copy some files and run some processes...       	
	rm /tbupddlx/tbupddlx >& /dev/null
	cp -R /tmp/tbtemp/opt/tbupddlx /opt >& /dev/null
				
	if [ -d /usr/lib/xorg/modules/input ] ; then
	    cp /opt/tbupddlx/xf86_tbupddlx_drv.so /usr/lib/xorg/modules/input >& /dev/null
	    chcon -t texrel_shlib_t /usr/lib/xorg/modules/input/xf86_tbupddlx_drv.so >& /dev/null
	fi

	if [ -d /usr/lib64/xorg/modules/input ] ; then
	    cp /opt/tbupddlx/xf86_tbupddlx_drv.so /usr/lib64/xorg/modules/input >& /dev/null
	    chcon -t texrel_shlib_t /usr/lib64/xorg/modules/input/xf86_tbupddlx_drv.so >& /dev/null
	fi

	if [ -d /usr/X11R6/lib/modules/input ] ; then
	    cp /opt/tbupddlx/xf86_tbupddlx.o /usr/X11R6/lib/modules/input >& /dev/null	    
	fi	

	if [ -d /usr/X11R6/lib64/modules/input ] ; then	
	    cp /opt/tbupddlx/xf86_tbupddlx.o /usr/X11R6/lib64/modules/input >& /dev/null
	fi

	cp /opt/tbupddlx/10x11-updd /etc/X11/Xsession.d >& /dev/null
	cp /opt/tbupddlx/tblinuxmouse /usr/bin >& /dev/null
	cp /opt/tbupddlx/aidaemon /usr/bin >& /dev/null
	
	#cp /opt/tbupddlx/*.so /usr/local/lib
	mkfifo /opt/tbupddlx/comReadPipe >& /dev/null
	chmod 666 /opt/tbupddlx/comReadPipe >& /dev/null
	chmod -R a+r /opt/tbupddlx >& /dev/null
	chmod -R a+x /opt/tbupddlx >& /dev/null
	chmod a+w /opt/tbupddlx/Calibrate >& /dev/null
	chmod a+w /opt/tbupddlx/Console >& /dev/null
	mkdir /opt/tbupddlx/toolbars >& /dev/null
	mv "/opt/tbupddlx/event selector.ini" /opt/tbupddlx/toolbars >& /dev/null
	## perl /opt/tbupddlx/installaidaemon.pl  >& /dev/null
	cp /opt/tbupddlx/aidaemon.desktop /etc/xdg/autostart >& /dev/null
	perl /opt/tbupddlx/xins  >& /dev/null #note that distribution scripts are executed in xins

	/opt/tbupddlx/tbupddwu >& /dev/null &

if [ -d /selinux ] ; then
		chcon -t texrel_shlib_t /opt/tbupddlx/*.so* >& /dev/null;
fi

	
	echo $DISPLAY > /opt/tbupddlx/mouseenv 

## Run success dialogue
	./opt/tbupddlx/dcu /setup2  >& /dev/null
fi
