User:Xavivars/ApertiumInstaller

From Apertium
Jump to navigation Jump to search

Script per a instalar automàticament LTTOOLBOX, APERTIUM, un paquet d'idioma i habilitar el mode d'estadístiques.

#!/bin/bash

######################################################################################
#
#   APERTIUM INSTALL
#
######################################################################################
errormsg()
{
	cat - << EOF
S'ha produït un error mentre s'insta\u0140lava el paquet $1.
Comproveu els errors que s'han produït i contacteu amb l'administrador del vostre sistema.

EOF
}


fullusage()
{
    cat - << EOF
This script installs lttoolbox and apertium packages, as well as language pairs defined as arguments.
Aquest guió instal·la els paquets lttoolbox i apertium, i els parells de llengües definits com a arguments.
EOF
usage	
}

usage()
{
    cat - << EOF
    usage:   $0 [-h|--help] [-l pair [-s]] [-i|--install local|global [-p path]]
    example: $0 -l es-ca -i global
EOF
}

while getopts ":hl:i:p:s" opt ; do
    case $opt in
        h ) fullusage ; exit 1;;
        l ) APERTLANG=$OPTARG ;;
        i ) TYPEINSTALL=$OPTARG ;;
		p ) PREFIX=$OPTARG ;;
		s ) STATS=1 ;;
        ? ) echo "An invalid option was encountered."; echo "S'ha trobat una opció invàlida."; echo; usage ; exit 1;;
        * ) echo "An unexpected error occured."; echo "S'ha produit un error desconegut."; echo; usage ; exit 1 ;;
    esac
done
shift $((OPTIND - 1))

if [ x$APERTLANG != x ]; then
	echo "Language selected: $APERTLANG"
else
	echo "No language pair selected"
fi

if [ x$TYPEINSTALL != x ]; then
	echo "$TYPEINSTALL installation mode"
	if [ x$TYPEINSTALL != xlocal ]; then
		TYPEINSTALL=global
	fi
else
	echo "Default installation mode"
fi


###
# preparem la ruta de la instalacio
#

if [ x$TYPEINSTALL = xlocal ]; then
	if [ x$PREFIX = x ]; then
		PREFIX=~/local/
	fi
	MKINST=""
else
	PREFIX=/usr/local/
	MKINST="sudo "
fi

PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ 
export PKG_CONFIG_PATH
LD_LIBRARY_PATH=$PREFIX/lib
export LD_LIBRARY_PATH
PATH=$PREFIX/bin/:$PATH
export PATH
LOGFILE=`pwd`/`date +%Y%m%e-%H%M%S`.logfile


###
# comprovem si ja està insta\u0140lat lttoolbox, i actuem
# en consecuència
#
echo "Insta\u0140lant el paquet LTTOOLBOX..."
if [ ! -e $PREFIX/bin/lt-proc ]; then
	# no existeix lttoolbox, per tant l'insta\u0140lem

	for f in *lttoolbox*;do LTTOOLBOXPACK=$f;break;done
	LTTOOLBOXFOLDER=`tar tzf $LTTOOLBOXPACK | head -n 1`

	tar xzf $LTTOOLBOXPACK

	if [ x$LTTOOLBOXFOLDER != x ]; then
		if [ -d $LTTOOLBOXFOLDER ]; then			
			cd $LTTOOLBOXFOLDER
			
			if [ -e ./configure ]; then
				./configure --prefix=$PREFIX >> $LOGFILE 2>&1 
			else
				./autogen.sh --prefix=$PREFIX >> $LOGFILE 2>&1
			fi

			make >> $LOGFILE 2>&1
			$MKINST make install >> $LOGFILE 2>&1
			rm -rf * >> $LOGFILE 2>&1
			rm -rf .* >> $LOGFILE 2>&1
			cd ..
			rmdir $LTTOOLBOXFOLDER
		
			TOADDPATH="PATH=$PREFIX/bin/:\$PATH;export PATH;"
			echo "" >> ~/.bashrc
			echo $TOADDPATH >> ~/.bashrc
			echo "" >> ~/.bashrc

			echo "LTTOOLBOX insta\u0140lat correctament"
		fi
	fi

else
	echo "LTTOOLBOX ja està insta\u0140lat"
fi



if [ ! -e $PREFIX/bin/lt-proc ]; then

	errormsg "lttoolbox"
	exit 1

fi
###
# comprovem si ja està insta\u0140lat apertium, i actuem
# en consecuència
#
echo "Insta\u0140lant el paquet APERTIUM..."
if [ ! -e $PREFIX/bin/apertium-transfer ]; then
	# no existeix apertium, per tant l'insta\u0140lem
	
	for f in *apertium*;do APERTIUMPACK=$f;break;done
	APERTIUMFOLDER=`tar tzf $APERTIUMPACK | head -n 1`


	tar xzf $APERTIUMPACK

	if [ x$APERTIUMFOLDER != x ]; then
		if [ -d $APERTIUMFOLDER ]; then			
			cd $APERTIUMFOLDER

			if [ -e ./configure ]; then
				./configure --prefix=$PREFIX >> $LOGFILE 2>&1
			else
				./autogen.sh --prefix=$PREFIX >> $LOGFILE 2>&1
			fi

			make >> $LOGFILE 2>&1
			$MKINST make install >> $LOGFILE 2>&1
			rm -rf * >> $LOGFILE 2>&1
			rm -rf .* >> $LOGFILE 2>&1
			cd ..
			rmdir $APERTIUMFOLDER

			echo "APERTIUM insta\u0140lat correctament"
		fi
	fi

else
	echo "APERTIUM ja està insta\u0140lat"
fi

if [ ! -e $PREFIX/bin/apertium-transfer ]; then

	errormsg "apertium"
	exit 1

fi


###
# si no cal instalar paquet d'idioma...
#

if [ x$APERTLANG = x ]; then
	exit 1;
fi


###
# comprovem si està insta\u0140lat el paquet d'idioma
#
echo "Insta\u0140lant el paquet d'idioma $APERTLANG..."
if [ ! -e $PREFIX/share/apertium/apertium-$APERTLANG ]; then
	# no existeix lttoolbox, per tant l'insta\u0140lem
	
	for f in *apertium*"$APERTLANG"*;do LANGPACK=$f;break;done
	LANGFOLDER=`tar tzf $LANGPACK | head -n 1`

	tar xzf $LANGPACK

	if [ x$LANGFOLDER != x ]; then
		if [ -d $LANGFOLDER ]; then			
			cd $LANGFOLDER
			echo $PKG_CONFIG_PATH
			if [ -e ./configure ]; then
				./configure --prefix=$PREFIX >> $LOGFILE 2>&1
			else
				./autogen.sh --prefix=$PREFIX >> $LOGFILE 2>&1
			fi

			make >> $LOGFILE 2>&1
			$MKINST make install >> $LOGFILE 2>&1
			rm -rf * >> $LOGFILE 2>&1
			rm -rf .* >> $LOGFILE 2>&1
			cd ..
			rmdir $LANGFOLDER

			echo "APERTIUM-$APERTLANG insta\u0140lat correctament"
		fi
	fi

else
	echo "APERTIUM-$APERTLANG ja està insta\u0140lat"
fi

if [ ! -e $PREFIX/share/apertium/apertium-$APERTLANG ]; then

	errormsg "apertium-"$APERTLANG
	exit 1

fi


###
# una vegada instalat el paquet d'idioma, habilitem
# els modes d'estadístiques
#

if [ x$STATS != x ]; then

	echo "Habilitant el mode d'estadístiques..."

	MODES=`find $PREFIX/share/apertium/apertium-$APERTLANG -name '*.mode'  -exec basename {} .mode \;`

	for arg in $MODES
	do

		RUTA=$PREFIX/share/apertium/modes/
		MODE=$RUTA$arg.mode
		ESTADISTIQUES=$RUTA$arg-estadistiques.mode

		echo "		... direcció $arg"

		sed -e "s/automorf\.bin |/automorf\.bin \> \$LOGSDIR.tmp.\$SEC.org;/" < $MODE |\
		sed -e "s/\.prob |/\.prob < \$LOGSDIR.tmp.\$SEC.org |/" > $ESTADISTIQUES

	done
fi