#! /bin/bash
#*******************************************************************************
# E.S.O. - ALMA project
#
# "@(#) $Id$"
#
# who        when        what
# --------   ----------  ----------------------------------------------
# agrimstrup 2007-07-10  created
#

#************************************************************************
#   NAME
#
#   SYNOPSIS
#
#   DESCRIPTION
#
#   FILES
#
#   ENVIRONMENT
#
#   RETURN VALUES
#
#   CAUTIONS
#
#   EXAMPLES
#
#   SEE ALSO
#
#   BUGS
#
#------------------------------------------------------------------------
#

#
# Install Python Modules
#
#set -x
#export PYTHON_ROOT=/alma/$ALMASW_RELEASE/Python

# Load functions
. standardUtilities
#
# Fetch operating system and release version
#
os_discovery

LOG=buildPyModules.log
CWD=`pwd`
#
exec > $LOG 2>&1

date

if [ ! -d $PYTHON_ROOT ]
then
  echo "$PYTHON_ROOT not found, cannot continue..."
  exit 1
fi

PYTHON_INTR=$PYTHON_ROOT/bin/python

echo installing Python Modules

echo $SEPARATOR
if [ ${OS} = "LINUX" ] 
then
	echo "Installing on $DISTRO $OS version $REL"
else
	echo "Installing on $OS version $REL"
fi

if [     ${DISTRO}-${REL} != "SOLARIS-5.8"       \
     -a  ${DISTRO}-${REL} != "RHLX-7.2"           \
     -a  ${DISTRO}-${REL} != "RHLX-7.3"           \
     -a  ${DISTRO}-${REL} != "RHLX-9"           \
     -a  ${DISTRO}-${REL} != "RHEL-4"           \
     -a  ${DISTRO}-${REL} != "RHEL-5"           \
     -a  ${DISTRO}-${REL} != "RHEL-5.3"           \
     -a  ${DISTRO}-${REL} != "SL-4.1"           \
     -a  ${DISTRO}-${REL} != "SL-5.3"           \
   ]
then
    echo "OS not supported. Proceeding as for Linux RH 9"
    echo ""
fi

#
# Python - Python-2.6.5
#
# Notes: See README for help
#
cd ../PRODUCTS

if [ ! -e ../PRODUCTS/distribute-0.6.10.tar.gz ]
then
  echo Error: distribute sources are missing
else
  echo "== Building distribute"
  tar -zxf distribute-0.6.10.tar.gz
  pushd distribute-0.6.10
  $PYTHON_INTR setup.py install
  popd
fi


if [ ! -e ../PRODUCTS/pysnmp-4.1.13a.tar.gz ]
then
  echo Error: PySNMP sources are missing
else
  echo "== Building PySNMP"
  tar -zxf pysnmp-4.1.13a.tar.gz
  pushd pysnmp-4.1.13a
  $PYTHON_INTR setup.py install
  popd
fi


if [ ! -e ../PRODUCTS/python-ldap-2.3.11.tar.gz ]
then
  echo Error: Python LDAP sources are missing
else
  echo "== Building Python LDAP"
  tar -zxf python-ldap-2.3.11.tar.gz
  pushd python-ldap-2.3.11
  cat setup.cfg | sed 's/local\/openldap-REL_ENG_2_1\///' >> setup.cfg.tmp
  mv setup.cfg.tmp setup.cfg 
  $PYTHON_INTR setup.py install
  popd
fi

if [ ! -e ../PRODUCTS/numpy-1.4.1.tar.gz ]
then
  echo Error: numpy sources are missing
else
  echo "== Building numpy"
  export BLAS=/usr/lib/libblas.so
  export LAPACK=/usr/lib/liblapack.so
  tar -zxf numpy-1.4.1.tar.gz
  pushd numpy-1.4.1
  $PYTHON_INTR setup.py build --fcompiler=gnu95
  $PYTHON_INTR setup.py install
  popd
fi

if [ ! -e ../PRODUCTS/gnuplot-py-1.8.tar.gz ]
then
  echo Error: GnuPlot Py sources are missing
else
  echo "== Building GnuPlot Py"
  tar -zxf gnuplot-py-1.8.tar.gz
  pushd gnuplot-py-1.8
  $PYTHON_INTR setup.py install
  popd
fi

if [ ! -e ../PRODUCTS/matplotlib-0.99.3.tar.gz ]
then
  echo Error: matplotlib sources are missing
else
  echo "== Building matplotlib"
  tar -zxf matplotlib-0.99.3.tar.gz;
  pushd matplotlib-0.99.3

  if [ "$OSYSTEM" = "$CYGWIN_VER" ]; then
    patch setupext.py < ../matplotlib-0.99.3.patch
    cat setupext.py | sed s/\'cygwin\'\ :\ \\[/\'cygwin\'\ :\ \\[os.environ\\[\'PYTHON_ROOT\'\\],/g >> setupext.py.tmp
  else
    cat setupext.py | sed s/\'linux2\'\ :\ \\[/\'linux2\'\ :\ \\[os.environ\\[\'PYTHON_ROOT\'\\],/g >> setupext.py.tmp
  fi
  mv setupext.py.tmp setupext.py

  cat setup.py | sed s/BUILD_GTKAGG\ \ \ \ \ \ \ =\ \'auto\'/BUILD_GTKAGG=0/g >> setup.py.tmp
  mv setup.py.tmp setup.py

  cat setup.py | sed s/BUILD_GTK\ \ \ \ \ \ \ \ \ \ =\ \'auto\'/BUILD_GTK=0/g >> setup.py.tmp
  mv setup.py.tmp setup.py

  cat setup.py | sed s/BUILD_TKAGG\ \ \ \ \ \ \ \ =\ \'auto\'/BUILD_TKAGG=1/g >> setup.py.tmp
  mv setup.py.tmp setup.py

  export BUILD_AGG=1
  $PYTHON_INTR setup.py build
  $PYTHON_INTR setup.py install 


  echo "== Configuring matplotlib"
  pushd ${PYTHON_ROOT}/lib/python2.6/site-packages/matplotlib/mpl-data
  cp matplotlibrc matplotlibrc.dist
  cat matplotlibrc | sed s/backend\ \ \ \ \ \ :\ GTKAgg/backend\ \ \ \ \ \ :\ TkAgg/g >> matplotlibrc.tmp
  mv matplotlibrc.tmp matplotlibrc
  cat matplotlibrc | sed s/#interactive\ \ :\ False/interactive\ \ :\ True/g >> matplotlibrc.tmp
  mv matplotlibrc.tmp matplotlibrc
  popd
  popd
fi

if [ ! -e ../PRODUCTS/scipy-0.7.2.tar.gz ]
then
  echo Error: numpy sources are missing
else
  echo "== Building scipy"
  tar -zxf scipy-0.7.2.tar.gz
  pushd scipy-0.7.2
  $PYTHON_INTR setup.py config_fc --fcompiler=gnu95 install
  popd
fi

if [ ! -e ../PRODUCTS/pexpect-2.3.tar.gz ]
then
  echo Error: pexpect sources are missing
else
  echo "== Building pexpect"
  tar -zxf pexpect-2.3.tar.gz
  pushd pexpect-2.3
  $PYTHON_INTR setup.py install 
  popd
fi

if [ ! -e ../PRODUCTS/pychecker-0.8.17.tar.gz ]
then
  echo Error: pychecker sources are missing
else
  echo "== Building pychecker"
  tar -zxf pychecker-0.8.17.tar.gz
  pushd pychecker-0.8.17
  $PYTHON_INTR setup.py install 
  popd
fi

if [ ! -e ../PRODUCTS/coverage-3.3.1.tar.gz ]
then
  echo Error: coverage sources are missing
else
  echo "== Building coverage"
  tar -zxf coverage-3.3.1.tar.gz
  pushd coverage-3.3.1
  $PYTHON_INTR setup.py install 
  popd
fi

if [ ! -e ../PRODUCTS/mock-0.6.0.zip ]
then
  echo Error: Python Mock sources are missing
else
  echo "== Installing Python Mock Objects"
  unzip -oj mock-0.6.0.zip mock-0.6.0/mock.py mock-0.6.0/testcase.py mock-0.6.0/testutils.py -d $PYTHON_ROOT/lib/python2.6/site-packages/
fi

if [ ! -e ../PRODUCTS/pythoscope-0.4.3.tar.gz ]
then
  echo Error: Pythoscope sources are missing
else
  echo "== Installing Pythoscope"
  tar -zxf pythoscope-0.4.3.tar.gz
  pushd pythoscope-0.4.3
  $PYTHON_INTR setup.py install 
  popd
fi

if [ ! -e ../PRODUCTS/nose-0.11.3.tar.gz ]
then
  echo Error: nose sources are missing
else
  echo "== Installing nose"
  tar -zxf nose-0.11.3.tar.gz
  pushd nose-0.11.3
  $PYTHON_INTR setup.py install 
  popd
fi

if [ ! -e ../PRODUCTS/pylint-0.20.0.tar.gz \
     -o ! -e ../PRODUCTS/logilab-astng-0.20.0.tar.gz \
     -o ! -e ../PRODUCTS/logilab-common-0.50.1.tar.gz \
   ]
then
  echo Error: pylint sources are missing
else
  echo "== Building pylint"
  tar -xzf logilab-common-0.50.1.tar.gz
  pushd logilab-common-0.50.1
  $PYTHON_INTR setup.py install
  popd
  tar -xzf logilab-astng-0.20.0.tar.gz
  pushd logilab-astng-0.20.0
  $PYTHON_INTR setup.py install
  popd
  tar -zxf pylint-0.20.0.tar.gz
  pushd pylint-0.20.0
  $PYTHON_INTR setup.py install 
  popd
fi

if [ ! -e ../PRODUCTS/ipython-0.10.tar.gz \
     -o ! -e ../PRODUCTS/Twisted-10.1.0.tar.bz2 \
     -o ! -e ../PRODUCTS/zope.interface-3.6.1.tar.gz \
     -o ! -e ../PRODUCTS/Sphinx-0.6.5.tar.gz \
     -o ! -e ../PRODUCTS/pyOpenSSL-0.10.tar.gz \
     -o ! -e ../PRODUCTS/Pygments-1.3.1.tar.gz \
     -o ! -e ../PRODUCTS/foolscap-0.5.1.tar.gz \
     -o ! -e ../PRODUCTS/Jinja2-2.4.1.tar.gz \
     -o ! -e ../PRODUCTS/docutils-0.6.tar.gz \
]
then
  echo Error: ipython sources are missing
else
  echo "== Building IPython"
  tar -zxf Pygments-1.3.1.tar.gz
  pushd Pygments-1.3.1
  $PYTHON_INTR setup.py install 
  popd
  tar -zxf Jinja2-2.4.1.tar.gz
  pushd Jinja2-2.4.1
  $PYTHON_INTR setup.py install 
  popd
  tar -zxf docutils-0.6.tar.gz
  pushd docutils-0.6
  $PYTHON_INTR setup.py install 
  popd
  tar -zxf Sphinx-0.6.5.tar.gz
  pushd Sphinx-0.6.5
  $PYTHON_INTR setup.py install 
  popd
  tar -zxf zope.interface-3.6.1.tar.gz
  pushd zope.interface-3.6.1
  $PYTHON_INTR setup.py install 
  popd
  tar -jxf Twisted-10.1.0.tar.bz2
  pushd Twisted-10.1.0
  $PYTHON_INTR setup.py install 
  popd
  tar -zxf pyOpenSSL-0.10.tar.gz
  pushd pyOpenSSL-0.10
  $PYTHON_INTR setup.py install 
  popd
  tar -zxf foolscap-0.5.1.tar.gz
  pushd foolscap-0.5.1
  $PYTHON_INTR setup.py install 
  popd
  tar -zxf ipython-0.10.tar.gz
  pushd ipython-0.10
  $PYTHON_INTR setup.py install 
  popd
fi

if [ ! -e ../PRODUCTS/snakefood-1.4-20100716.tgz ]
then
  echo Error: snakefood sources are missing
else
  echo "== Installing snakefood"
  tar -xvzf snakefood-1.4-20100716.tgz
  pushd snakefood-1.4
  python setup.py install 
  popd
fi

#if [ ! -e ../PRODUCTS/pytz-2010h.tar.gz ]
#then
#  echo Error: pytz sources are missing
#else
#  echo "== Installing pytz"
#  tar -xvzf pytz-2010h.tar.gz
#  pushd pytz-2010h
#  python setup.py install 
#  popd
#fi

#if [ ! -e ../PRODUCTS/dbus-python-0.82.4.tar.gz ]
#then
#  echo Error: dbus-python sources are missing
#else
#  echo "== Installing dbus-python"
#  tar -xvzf dbus-python-0.82.4.tar.gz
#  pushd dbus-python-0.82.4
#  ./configure --prefix=$PYTHON_ROOT
#  make
#  make install
#  popd
#fi

#if [ ! -e ../PRODUCTS/Numeric-23.8.2.tar.gz ]
#then
#  echo Error: Numeric sources are missing
#else
#  echo "== Installing Numeric"
#  tar  -xvzf Numeric-23.8.2.tar.gz
#  pushd  Numeric-23.8.2
#  python setup.py install 
#  popd
#fi

#if [ ! -e ../PRODUCTS/ScientificPython-2.8.tar.gz ]
#then
#  echo Error: Scientific Python sources are missing
#else
#  echo "== Installing Scientific Python"
#  tar -xvzf ScientificPython-2.8.tar.gz
#  pushd ScientificPython-2.8
#  python setup.py install 
#  popd
#fi

cd $CWD
echo Python Module installation done!
date

