All pastes #14445 Raw Edit

Untitled

public text v1 · immutable
#14445 ·published 2005-06-14 03:29 UTC
rendered paste body
#!/bin/bash

#
# Planeshift CVS installer
# install and build planeshift from cvs for debian (or debian like) systems
# by beedauchon with some help from http://icarus.uic.edu/~ssenne1/
#

CODATE="2005-05-18"
intRevision="12"

doMysql=false
help=false
noPsup=false
noUpdate=false
version=false
psupmode=false
sqlOnly=false

# 
MYOS=`/bin/uname -s`
if [ $MYOS != "Linux" ] || [ ! -e "/usr/bin/apt-get" ]; then
  echo "...you're not running a debian gnu/linux compatible system ! exiting..."
  exit;
fi

if [ $USER = "root" ]; then
  echo "...installing required packages..."
  apt-get install bison-1.35 flex-old libmng-dev libmikmod2-dev libogg-dev libvorbis-dev zlib1g-dev libpng3-dev libjpeg62-dev xlibmesa-glu-dev python2.3-dev autoconf automake1.8 libcurl3-dev jam cvs
  exit;
elif [ ! -e "/usr/bin/jam" ]; then
  echo "...jam not found, please run this script as root to install required packages, exiting..."
  exit;
else
  MYPSHOME=/home/$USER/ps
fi

# define funs

showUsage() {
echo "Usage: `basename $0` [OPTION]..."
echo "Install and build planeshift from cvs for debian (or debian like) systems"
echo "Run it as root to install required packages"
echo "Run it as a normal user to checkout and build"
echo "Once built if you want to reconfigure"
echo " you have to remove manually the Jamfile or the Makefile in the chosen target dir"
echo "Options :"
echo " -p, --path            the path where you want to checkout and build planeshift components"
echo "                       if not specified it defaults to /home/$USER/ps"
echo "--psver=MB             install planeshift Molecular Blue"
echo "--psver=HEAD           install bleeding edge planeshift"
echo "--codate=YYYY-MM-DD    install with date rev"
echo "--nocvsup              do not update from CVS if dirs exist"
echo "--nopsup               do not run planeshift updater at exit"
echo " -u, --mysqluser=      mysql username"
echo " -p, --mysqlpassword=  mysql password"
echo "                       (should prompt if one is needed and not specified)"
echo "--domysql              setup mysql database"
echo "                       note:  if the database already exists, the database will be DELETED"
echo "--dbonly               deletes old mysql database and installs new one, then quits"
echo " -h, --help            show the help"
echo " -v, --version         show the name and version"
}

showVersion() {
echo "`basename $0` v$intRevision"
}

getParams() {
ac_prev=
for ac_option
do
 # If the previous option needs an argument, assign it
 if test -n "$argument"; then
  eval "$argument=\$option"
  ac_prev=
  continue
 fi
 userInput=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
#  Accept the important Cygnus configure options, so we can diagnose typos
 
 case $ac_option in
  -help | --help | -h)
   help=true;;
  -version | --version | -v)
   version=true;;
  -path=* | --path=* | --pat=* | --pa=* | --p=*)
   export target=$userInput ;;
  -ve | -verbose | --verbose | --verbos | --verbo | --verb)
   verbose=3 ;;
  -q | -quiet | --quiet | --quie | --qui | --qu | --q)
   verbose=2 ;;
  -s | -silent | --silent | --silen | --sile | --sil)
   verbose=1 ;;
  -psversion=* | --psversion=* | -psv=* | -psv* | --psver=*)
   psversion=$userInput ;;
  --mysqluser=* | -u* | --user=* |--mysql=*)
   mysqluser=$userInput ;;
  --mysqlpassword=* | -p* | --password=*)
   mysqlpassword=$userInput;;
  --domysql | --do-mysql | --dodb | --dodatabase)
   doMysql=true;;
  --nopsup | --skippsup | --ignorepsup)
   noPsup=false;;
  --nocvsup | --skipcvsup | --ignorecvsup)
   noUpdate=true;;
  --dbonly | --databaseonly | --mysqlonly)
   sqlOnly=true;;
  --debug)
   mode=--enable-debug;;
esac
done
}

parseParams() {
if [ $help = "true" ]; then
  showUsage
  exit;
elif [ $version = "true" ]; then
  showVersion
  exit;
fi

echo "Planeshift CVS installer revision $intRevision started..."

if [ -n "$mysqluser" ]  ; then
  export MYSQLPARAM="-u $mysqluser"
fi
if [ -n "$mysqlpassword" ]; then
  export MYSQLPARAM="$MYSQLPARAM -p $mysqlpassword"
fi

if [ $sqlOnly  = "true" ]; then
  buildDatabase
  exit;
fi

if [ -n "$target" ]; then
  PSHOME=$target
elif [ -z $PSHOME ]; then
  PSHOME=$MYPSHOME
fi
if [ -d $PSHOME ]; then
  echo "...found ps home dir..."
else
  echo "...creating ps home dir..."
  mkdir -p $PSHOME
fi

if [ -z $psversion ]; then
  psversion=" "
  export VERSION="$CODATE"
  export CALD3DARG="-D$CODATE"
  export PSARG="-D$CODATE"
  export CSARG="-D$CODATE"
  export CELARG="-D$CODATE"
elif [ $psversion = "MB" ]; then
  export VERSION="MB"
  export CALD3DARG="-D2003-05-16"
  export PSARG="-rMB010"
  export CSARG="-rPRE_THING_FACTORIES"
  export CELARG="-D2003-05-16"
elif [ $psversion = "HEAD" ]; then
  export VERSION="HEAD"
  export CALD3DARG=""
  export PSARG=""
  export CSARG=""
  export CELARG=""
fi
}

doExports() {
export LD_LIBRARY_PATH=$PSHOME/cal3d/src/cal3d/.libs/:$LD_LIBRARY_PATH
export CRYSTAL=$PSHOME/CS
export CEL=$PSHOME/cel
export CSCONFPATH=$PSHOME/cel
}

getFromCvs() {
###################################
#$1=directory name (on server)
#$2=modulename
#$3=arguments
###################################
cd $PSHOME
export CVSROOT=:pserver:anonymous@cvs.sourceforge.net:/cvsroot/$1
skipCvs=false

if [ -d $PSHOME/$2 ] && [ $noUpdate = "false" ]; then
 echo "...found $2, using update..."
 cd $PSHOME
 CVSMODE="update -PAdC"
 psupmode=true
elif [ $noUpdate = "true" ]; then
 echo "...found $2, skipping update..."
 skipCvs=true
else
 echo "...the $2 directory has not been found, using checkout"
 cd $PSHOME
 CVSMODE=checkout
fi

if [ $skipCvs = "false" ]; then
  cvs -z3 -Q -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/$1 $CVSMODE $3  $2
  while [ $? != 0 ]; do
    echo "...failed to $CVSMODE $2, retrying in 5 seconds..."
    sleep 5
    cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/$1 $CVSMODE $3  $2
  done
fi
}

BuildCal3d() {
cd $PSHOME/cal3d
if [ ! -e "Makefile" ]; then
  ./autogen.sh 
  ./configure
else
  echo "...cal3d Makefile, found skipping configure..."
fi
echo "...building cal3d..."
make
}

BuildCs() {
cd $PSHOME/CS
if [ ! -e "Jamfile" ] || [ $psupmode = "true" ]; then
  ./configure --enable-debug --with-libcal3d=../cal3d/src/cal3d/.libs/ CPPFLAGS="-I ../cal3d/src/"
else
  echo "...CS Jamfile found, skipping configure..."
fi
echo "...building CS..."
jam libs
jam plugins
jam cs-config
}

BuildCel() {
cd $PSHOME/cel
if [ ! -e "Jamfile" ] || [ $psupmode = "true" ]; then
./configure --enable-debug
else
  echo "...cel Jamfile found, skipping configure..."
fi
echo "...building cel..."
jam -a
}

BuildPlaneshift() {
cd $PSHOME/planeshift
if [ -h $PSHOME/planeshift/cal3d ]; then
  echo "...found cal3d link in planeshift dir..."
else
  ln -s ../cal3d/src/cal3d/ cal3d
fi
if [ ! -e "Jamfile" ] || [ $psupmode = "true" ]; then
  ./autogen.sh
  ./configure --enable-debug --with-libcal3d=$PSHOME/cal3d
else
  echo "...planeshift Jamfile found, skipping configure..."
fi
echo "...building planeshift..."
jam -a
}

RunPsUpdater() {
# planeshift updater

if [ $noPsup = "false" ]; then
  cd $PSHOME/planeshift
  if [ -e "updater" ]; then
    echo "...running planeshift updater..."
    ./updater --auto
  else
    echo "...updater not found..."
  fi
  cd ..
fi
}

buildDatabase() {
echo "...creating planeshift database..."
mysql $MYSQLPARAM --exec="drop database planeshift;"
mysql $MYSQLPARAM --exec="create database planeshift;"
mysql $MYSQLPARAM --exec="GRANT ALL PRIVILEGES ON *.* TO planeshift@localhost IDENTIFIED BY 'planeshift' WITH GRANT OPTION;"
cd $PSHOME/planeshift/src/server/database/mysql/
mysql -u planeshift -pplaneshift --exec="source create_all.sql;"
}

theEnd() {
cd $PSHOME
#this makes the file that runs the client, works well for version control
#instead of exporting variables from ~/.bashrc, this
#allows the user to have both cvs and molecular blue installed
if [ ! -e "run_ps_client" ]; then
  echo "#!/bin/bash" > run_ps_client
  echo "export CRYSTAL=$PSHOME/CS" >> run_ps_client
  echo "export CEL=$PSHOME/cel/" >> run_ps_client
  echo "export CSCONFPATH=$PSHOME/cel/" >> run_ps_client
  echo "cd $PSHOME/planeshift" >> run_ps_client
  echo "./psclient \$@" >> run_ps_client
  chmod +x run_ps_client
fi
#this makes the file that runs the server, works well for version control
if [ ! -e "run_ps_server" ]; then
  echo "#!/bin/bash" > run_ps_server
  echo "export CRYSTAL=$PSHOME/CS" >> run_ps_server
  echo "export CEL=$PSHOME/cel/" >> run_ps_server
  echo "export CSCONFPATH=$PSHOME/cel/" >> run_ps_server
  echo "cd $PSHOME/planeshift" >> run_ps_server
  echo "./psserver \$@" >> run_ps_server
  chmod +x run_ps_server
fi
# TODO make one of these for the npcclient
echo "============================"
echo "  to run planeshift client :"
echo "  cd $PSHOME"
echo "  ./run_ps_client"
echo "============================"
echo "  to run planeshift server :"
echo "  cd $PSHOME"
echo "  ./run_ps_server"
echo "============================"
}

# main

getParams $@
parseParams

doExports

# checkout sources

echo "...checking sources for version $VERSION..."

getFromCvs cal3d cal3d "$CALD3DARG"
getFromCvs crystal CS "$CSARG"
getFromCvs cel cel "$CELARG"
getFromCvs planeshift planeshift "$PSARG"

# build targets

echo "...building all targets..."

if [ $psupmode = "true" ]; then
  echo "...update mode, all configure script will be rerunned..."
fi

BuildCal3d
BuildCs
BuildCel
BuildPlaneshift

if [ $doMysql = "true" ]; then
  buildDatabase
fi

RunPsUpdater
theEnd

echo "...all tasks finished"