#!/bin/sh
#-----------------------------------------------------------------------
#
# VISIT-INSTALL-CLOSED - Install the visit distributions on the closed
#                        network.
#
# Author: Eric Brugger
# Date:   February 12, 2001
#
# Usage:
#    visit-install-closed [-beta | -private | -public] -v <version>
#
# Modifications:
#   Brad Whitlock, Tue Mar 7 14:10:26 PST 2006
#   I added -b bdivp to the visit-install invokations.
#
#   Eric Brugger, Mon Apr  7 13:52:50 PDT 2008
#   Removed sc install.
#
#   Hank Childs, Sat May  2 13:26:51 CDT 2009
#   Renamed config file to llnl_closed.
#
#   Eric Brugger, Fri Nov  5 15:40:02 PDT 2010
#   Replaced hopi with inca and removed pruple.
#
#   Eric Brugger, Wed Jan  5 09:40:00 PST 2011
#   Added terminator.
#
#   Eric Brugger, Fri Mar 25 10:20:49 PDT 2011
#   Added cielo.
#
#   Eric Brugger, Mon Jul 30 10:31:10 PDT 2012
#   Added gremlin.
#
#   Eric Brugger, Wed Mar 20 11:49:58 PDT 2013
#   Deleted gremlin. Deleted terminator. Replaced termite with hitit.
#
#   Eric Brugger, Thu Jun 20 10:37:05 PDT 2013
#   I modified the hitit install since it is now an x86_64 system instead
#   of an i686 system.
#
#   Eric Brugger, Tue Jul  9 11:23:43 PDT 2013
#   I changed the gateway node to login to cielo.
#
#   Eric Brugger, Mon Nov 21 11:53:53 PST 2016
#   Deleted cielo. Added trinity.
#
#   Eric Brugger, Mon Nov 21 16:43:04 PST 2016
#   Added jade.
#
#   Eric Brugger, Mon Jan  9 13:52:57 PST 2017
#   I replaced inca with zin.
#
#   Eric Brugger, Tue Jan 17 17:12:11 PST 2017
#   I replaced hitit with winnipeg.
#
#   Eric Brugger, Fri Feb 17 12:17:29 PST 2017
#   I changed the bank for all the LLNL systems from bdivp to wbronze.
#
#-----------------------------------------------------------------------

test=no

user=`whoami`

#
# Parse the execute line, providing default values for error checking.
#
winnipeg=true
zin=true
jade=true
trinity=true

ver=undefined

#
# The loop is executed once for each symbol on the execute line.  This means
# that $1 may be blank for later executions of the loop if any "shift 2"
# commands are executed.  The variable abc is not used in the loop.
#
for abc
do
   case $1 in
      -none)
         winnipeg=false
         zin=false
         jade=false
         trinity=false
         shift
         ;;
      -winnipeg)
         winnipeg=false
         shift
         ;;
      +winnipeg)
         winnipeg=true
         shift
         ;;
      -zin)
         zin=false
         shift
         ;;
      +zin)
         zin=true
         shift
         ;;
      -jade)
         jade=false
         shift
         ;;
      +jade)
         jade=true
         shift
         ;;
      -trinity)
         trinity=false
         shift
         ;;
      +trinity)
         trinity=true
         shift
         ;;
      -v)
         ver=$2
         shift 2
         ;;
   esac
done

#
# Check that the version was provided.
#
if [ $ver = undefined ]
then
   echo "Usage: [-none] [-<machine name>] -v <version>"
   exit
fi

#
# Check that the visit install script is present.
#
if [ ! -e visit-install ]
then
   echo "visit-install is missing."
   exit
fi

ver2=`echo $ver | tr "." "_"`
ver=`echo $ver2 | tr "_" "."`

#
# Install on winnipeg.
#
rm -f winnipeg
cat <<EOF > winnipeg
#!/bin/sh
./visit-install -private -c llnl_closed -g visit -b wbronze -gw -l $ver linux-x86_64-winnipeg /misc/gapps/visit > installlog 2>&1
rm -f resultlog
echo ""                                          > resultlog 2>&1
echo "        install of visit on winnipeg"      >> resultlog 2>&1
echo "       ------------------------------"     >> resultlog 2>&1
echo ""                                          >> resultlog 2>&1
df -k /misc/gapps/visit                          >> resultlog 2>&1
echo ""                                          >> resultlog 2>&1
ls -l /misc/gapps/visit/$ver+/linux-x86_64/bin   >> resultlog 2>&1
echo ""                                          >> resultlog 2>&1
echo "number of database plugins = "\`ls /misc/gapps/visit/$ver+/linux-x86_64/plugins/databases/libI* | wc -l\` >> resultlog 2>&1
echo "number of operator plugins = "\`ls /misc/gapps/visit/$ver+/linux-x86_64/plugins/operators/libI* | wc -l\` >> resultlog 2>&1
echo "number of plot plugins = "\`ls /misc/gapps/visit/$ver+/linux-x86_64/plugins/plots/libI* | wc -l\` >> resultlog 2>&1
echo ""                                          >> resultlog 2>&1
echo "The database plugins:"                     >> resultlog 2>&1
ls /misc/gapps/visit/$ver+/linux-x86_64/plugins/databases/libI* | sed "s/\/misc\/gapps\/visit\/$ver+\/linux-x86_64\/plugins\/databases\/libI//" | sed "s/Database.so//" >> resultlog 2>&1
mv resultlog resultlog.winnipeg
EOF

if [ $winnipeg = true ]
then
   if [ $test = no ]
   then
      scp -P 22 winnipeg:winnipeg/visitbuild/visit$ver2.linux-x86_64.tar.gz visit$ver2.linux-x86_64-winnipeg.tar.gz
      scp -P 22 visit$ver2.linux-x86_64-winnipeg.tar.gz winnipeg:
      scp -P 22 visit-install winnipeg:
      scp -P 22 winnipeg winnipeg:winnipeg_install
      ssh -p 22 winnipeg "chmod 750 winnipeg_install;./winnipeg_install"
   fi
fi

#
# Install on zin.
#
rm -f zin
cat <<EOF > zin
#!/bin/sh
./visit-install -private -c llnl_closed -g visit -b wbronze -gw -l $ver linux-x86_64-zin /usr/gapps/visit > installlog 2>&1
cp /usr/gapps/visit/nvidia304-libs/*.304.54 /usr/gapps/visit/$ver+/linux-x86_64/lib
ln -s libGL.so.304.54 /usr/gapps/visit/$ver+/linux-x86_64/lib/libGL.so
ln -s libGL.so.304.54 /usr/gapps/visit/$ver+/linux-x86_64/lib/libGL.so.1
chmod 775 /usr/gapps/visit/$ver+/linux-x86_64/lib/*.304.54
chgrp visit /usr/gapps/visit/$ver+/linux-x86_64/lib/*.304.54
rm -f resultlog
echo ""                                            > resultlog 2>&1
echo "        install of visit on zin"             >> resultlog 2>&1
echo "       -------------------------"            >> resultlog 2>&1
echo ""                                            >> resultlog 2>&1
df -k /usr/gapps/visit                             >> resultlog 2>&1
echo ""                                            >> resultlog 2>&1
ls -l /usr/gapps/visit/$ver+/linux-x86_64/bin      >> resultlog 2>&1
echo ""                                            >> resultlog 2>&1
echo "number of database plugins = "\`ls /usr/gapps/visit/$ver+/linux-x86_64/plugins/databases/libI* | wc -l\` >> resultlog 2>&1
echo "number of operator plugins = "\`ls /usr/gapps/visit/$ver+/linux-x86_64/plugins/operators/libI* | wc -l\` >> resultlog 2>&1
echo "number of plot plugins = "\`ls /usr/gapps/visit/$ver+/linux-x86_64/plugins/plots/libI* | wc -l\` >> resultlog 2>&1
echo ""                                            >> resultlog 2>&1
echo "The database plugins:"                       >> resultlog 2>&1
ls /usr/gapps/visit/$ver+/linux-x86_64/plugins/databases/libI* | sed "s/\/usr\/gapps\/visit\/$ver+\/linux-x86_64\/plugins\/databases\/libI//" | sed "s/Database.so//" >> resultlog 2>&1
mv resultlog resultlog.zin
EOF

if [ $zin = true ]
then
   if [ $test = no ]
   then
      scp zin497:/usr/tmp/$user/zin/visitbuild/visit$ver2.linux-x86_64.tar.gz visit$ver2.linux-x86_64-zin.tar.gz
      scp visit$ver2.linux-x86_64-zin.tar.gz zin497:
      scp visit-install zin497:
      scp zin zin497:zin_install
      ssh zin497 "chmod 750 zin_install;./zin_install"
   fi
fi

#
# Install on jade.
#
rm -f jade
cat <<EOF > jade
#!/bin/sh
rm -rf /usr/gapps/visit/toss3
./visit-install -private -c llnl_closed -g visit -b wbronze -gw -l $ver linux-x86_64-jade /usr/gapps/visit/toss3 > installlog 2>&1
mv /usr/gapps/visit/toss3/$ver+/linux-x86_64 /usr/gapps/visit/$ver+/linux-x86_64-toss3
rm -rf /usr/gapps/visit/toss3
sed -i "/arch = \"linux-x86_64\"/ i 16SPACESif GETENV(\"SYS_TYPE\") == \"toss_3_x86_64_ib\" or GETENV(\"SYS_TYPE\") == \"toss_3_x86_64\":" /usr/gapps/visit/$ver+/bin/internallauncher
sed -i "/arch = \"linux-x86_64\"/ i 20SPACESarch = \"linux-x86_64-toss3\"" /usr/gapps/visit/$ver+/bin/internallauncher
sed -i "/arch = \"linux-x86_64\"/ i 16SPACESelse:" /usr/gapps/visit/$ver+/bin/internallauncher
sed -i "s/arch = \"linux-x86_64\"/    arch = \"linux-x86_64\"/" /usr/gapps/visit/$ver+/bin/internallauncher
sed -i "s/16SPACES/                /" /usr/gapps/visit/$ver+/bin/internallauncher
sed -i "s/20SPACES/                    /" /usr/gapps/visit/$ver+/bin/internallauncher
cp /usr/gapps/visit/nvidia304-libs/*.304.54 /usr/gapps/visit/$ver+/linux-x86_64-toss3/lib
ln -s libGL.so.304.54 /usr/gapps/visit/$ver+/linux-x86_64-toss3/lib/libGL.so
ln -s libGL.so.304.54 /usr/gapps/visit/$ver+/linux-x86_64-toss3/lib/libGL.so.1
chmod 775 /usr/gapps/visit/$ver+/linux-x86_64-toss3/lib/*.304.54
chgrp visit /usr/gapps/visit/$ver+/linux-x86_64-toss3/lib/*.304.54
rm -f resultlog
echo ""                                              > resultlog 2>&1
echo "        install of visit on jade"              >> resultlog 2>&1
echo "       --------------------------"             >> resultlog 2>&1
echo ""                                              >> resultlog 2>&1
df -k /usr/gapps/visit                               >> resultlog 2>&1
echo ""                                              >> resultlog 2>&1
ls -l /usr/gapps/visit/$ver+/linux-x86_64-toss3/bin  >> resultlog 2>&1
echo ""                                              >> resultlog 2>&1
echo "number of database plugins = "\`ls /usr/gapps/visit/$ver+/linux-x86_64-toss3/plugins/databases/libI* | wc -l\` >> resultlog 2>&1
echo "number of operator plugins = "\`ls /usr/gapps/visit/$ver+/linux-x86_64-toss3/plugins/operators/libI* | wc -l\` >> resultlog 2>&1
echo "number of plot plugins = "\`ls /usr/gapps/visit/$ver+/linux-x86_64-toss3/plugins/plots/libI* | wc -l\` >> resultlog 2>&1
echo ""                                              >> resultlog 2>&1
echo "The database plugins:"                         >> resultlog 2>&1
ls /usr/gapps/visit/$ver+/linux-x86_64-toss3/plugins/databases/libI* | sed "s/\/usr\/gapps\/visit\/$ver+\/linux-x86_64-toss3\/plugins\/databases\/libI//" | sed "s/Database.so//" >> resultlog 2>&1
mv resultlog resultlog.jade
EOF

if [ $jade = true ]
then
   if [ $test = no ]
   then
      scp jade962:/usr/tmp/$user/jade/visitbuild/visit$ver2.linux-x86_64.tar.gz visit$ver2.linux-x86_64-jade.tar.gz
      scp visit$ver2.linux-x86_64-jade.tar.gz jade:
      scp visit-install jade:
      scp jade jade:jade_install
      ssh jade "chmod 750 jade_install;./jade_install"
   fi
fi

#
# Install on trinity.
#
rm -f trinity
cat <<EOF > trinity
#!/bin/sh
./visit-install -private -c llnl_closed -l $ver linux-x86_64-trinity /usr/projects/views/visit > installlog 2>&1
rm -f resultlog
echo ""                                                > resultlog 2>&1
echo "        install of visit on trinity"             >> resultlog 2>&1
echo "       -----------------------------"            >> resultlog 2>&1
echo ""                                                >> resultlog 2>&1
df -k /usr/projects/views/visit                        >> resultlog 2>&1
echo ""                                                >> resultlog 2>&1
ls -l /usr/projects/views/visit/$ver+/linux-x86_64/bin >> resultlog 2>&1
echo ""                                                >> resultlog 2>&1
echo "number of database plugins = "\`ls /usr/projects/views/visit/$ver+/linux-x86_64/plugins/databases/libI* | wc -l\` >> resultlog 2>&1
echo "number of operator plugins = "\`ls /usr/projects/views/visit/$ver+/linux-x86_64/plugins/operators/libI* | wc -l\` >> resultlog 2>&1
echo "number of plot plugins = "\`ls /usr/projects/views/visit/$ver+/linux-x86_64/plugins/plots/libI* | wc -l\` >> resultlog 2>&1
echo ""                                                >> resultlog 2>&1
echo "The database plugins:"                           >> resultlog 2>&1
ls /usr/projects/views/visit/$ver+/linux-x86_64/plugins/databases/libI* | sed "s/\/usr\/projects\/views\/visit\/$ver+\/linux-x86_64\/plugins\/databases\/libI//" | sed "s/Database.so//" >> resultlog 2>&1
mv resultlog resultlog.trinity
EOF

if [ $trinity = true ]
then
   if [ $test = no ]
   then
      cp /tmp/$user/trinity/visitbuild/visit$ver2.linux-x86_64.tar.gz visit$ver2.linux-x86_64-trinity.tar.gz
      cp trinity trinity_install
      chmod 750 trinity_install;./trinity_install
   fi
fi

#
# Clean up.
#
if [ $test = no ]
then
   rm -f winnipeg zin jade trinity
fi
