#!/bin/sh
#-----------------------------------------------------------------------
#
# VISIT-INSTALL-OPEN - Install the visit distributions on the open
#                      network.
#
# Author: Eric Brugger
# Date:   October 27, 2000
#
# Usage:
#    visit-install-open [-beta | -private | -public] -v <version>
#
# Modifications:
#   Brad Whitlock, Tue Mar 7 14:08:59 PST 2006
#   Added -b bank to the visit-install invokations.
#
#   Hank Childs, Wed Oct 17 16:25:14 PDT 2007
#   Add a subject line to the status e-mail.
#
#   Hank Childs, Sat May  2 13:26:51 CDT 2009
#   Change config file to "llnl_open".
#
#   Eric Brugger, Fri Nov  5 15:22:54 PDT 2010
#   I replaced yana with aztec.
#
#   Eric Brugger, Mon May 16 14:53:23 PDT 2011
#   I added glory and redsky.
#
#   Eric Brugger, Fri Aug  5 09:53:51 PDT 2011
#   I added kickit.
#
#   Eric Brugger, Tue Sep  6 14:13:59 PDT 2011
#   I added rzzeus.
#
#   Brad Whitlock, Wed Oct 12 10:01:07 PDT 2011
#   Install as llnl_open_cz or llnl_open_rz depending on machine.
#
#   Eric Brugger, Mon Jan 23 13:52:00 PST 2012
#   I added sidious.
#
#   Eric Brugger, Thu Mar  1 12:56:56 PST 2012
#   I added ubuntu1104_64.
#
#   Eric Brugger, Thu May  3 08:30:22 PDT 2012
#   I removed ellipse and xchem.  I modified hoth, kickit, sidious and
#   aztec for various reasons.  I updated the e-mail addresses.
#
#   Eric Brugger, Tue May 15 11:08:05 PDT 2012
#   I changed the name of the ubuntu 11 executable.
#
#   Eric Brugger, Wed Jun 13 08:40:31 PDT 2012
#   I added atlas and rzthriller.
#
#   Eric Brugger, Mon Jul 30 10:21:57 PDT 2012
#   I replaced atlas with prism.
#
#   Eric Brugger, Wed Sep 26 17:11:04 PDT 2012
#   I deleted prism.
#
#   Eric Brugger, Wed Nov 14 10:45:59 PST 2012
#   I deleted hoth. I made the sidious install off by default. I modified
#   the kickit installation since it is now a linux-x86_64 system instead
#   of a linux-intel system.
#
#   Eric Brugger, Tue Oct 22 11:11:01 PDT 2013
#   I removed rzthriller.
#
#   Eric Brugger, Wed Dec 10 13:32:49 PST 2014
#   I added ubuntu1404_64.
#
#   Eric Brugger, Thu Feb 19 09:14:29 PST 2015
#   I removed redsky.
#
#   Kathleen Biagas, Thu May  7 09:35:34 PDT 2015
#   Added vulcan, changed rzuseq bank to wbronze.
#
#   Eric Brugger, Thu Sep 24 09:17:41 PDT 2015
#   I removed sidious.
#
#   Eric Brugger, Tue Nov 22 16:23:56 PST 2016
#   I added quartz.
#
#   Eric Brugger, Mon Jan  9 13:50:10 PST 2017
#   I replaced aztec with surface.
#
#   Eric Brugger, Tue Feb  7 10:42:05 PST 2017
#   I added rztrona.
#
#   Eric Brugger, Fri Feb 17 12:16:04 PST 2017
#   I changed the bank for all the LLNL systems from bdivp to wbronze.
#
#   Eric Brugger, Wed Jun 21 11:23:41 PDT 2017
#   I replaced surface with cab.
#
#   Eric Brugger, Fri Sep 22 11:39:17 PDT 2017
#   I replaced rzzeus with rzalastor.
#
#   Eric Brugger, Mon Mar 19 14:21:54 PDT 2018
#   I removed the modifications to the internallauncher for toss3
#   systems. I made a change in internallauncher and customlauncher
#   that made this unnecessary.
#
#   Eric Brugger, Tue Apr  3 11:09:51 PDT 2018
#   I deleted ubuntu1104_64 and added ifyou (Fedora Core 27).
#
#   Eric Brugger, Wed Oct 17 16:56:58 PDT 2018
#   I deleted cab.
#
#   Eric Brugger, Fri Nov 30 11:11:41 PST 2018
#   I added lassen.
#
#   Eric Brugger, Fri Dec 14 11:52:47 PST 2018
#   I updated quartz for 3.0.0b.
#
#   Eric Brugger, Mon Feb 25 12:31:14 PST 2019
#   I updated rztrona for 3.0.0b and removed rzalastor.
#
#   Eric Brugger, Mon Mar  4 08:28:54 PST 2019
#   I added cooley.
#
#   Eric Brugger, Tue Mar  5 12:35:11 PST 2019
#   I added rzansel. I deleted carver and glory.
#
#   Eric Brugger, Thu Sep 26 17:28:15 PDT 2019
#   I removed special logic for installing on toss3 systems. I removed
#   ifyou and ubuntu1404_64.
#
#   Eric Brugger, Mon Jan 13 15:34:55 PST 2020
#   I removed rzuseq and vulcan.
#
#-----------------------------------------------------------------------

test=no

user=`whoami`

#
# Set the user e-mail address.
#
emailName=brugger1@llnl.gov
case $user in
   biagas2)
      emailName=biagas2@llnl.gov
      ;;
   kbonnell)
      emailName=biagas2@llnl.gov
      ;;
   brugger1)
      emailName=brugger1@llnl.gov
      ;;
   brugger)
      emailName=brugger1@llnl.gov
      ;;
   harrison37)
      emailName=cyrush@llnl.gov
      ;;
   cyrush)
      emailName=cyrush@llnl.gov
      ;;
   mcmiller)
      emailName=miller86@llnl.gov
      ;;
   miller)
      emailName=miller86@llnl.gov
      ;;
esac

#
# Parse the execute line, providing default values for error checking.
#
kickit=true
quartz=true
lassen=true
rztrona=true
rzansel=true
cooley=false

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)
         kickit=false
         quartz=false
         lassen=false
         rztrona=false
         rzansel=false
         shift
         ;;
      -kickit)
         kickit=false
         shift
         ;;
      +kickit)
         kickit=true
         shift
         ;;
      -quartz)
         quartz=false
         shift
         ;;
      +quartz)
         quartz=true
         shift
         ;;
      -lassen)
         lassen=false
         shift
         ;;
      +lassen)
         lassen=true
         shift
         ;;
      -rztrona)
         rztrona=false
         shift
         ;;
      +rztrona)
         rztrona=true
         shift
         ;;
      -rzansel)
         rzansel=false
         shift
         ;;
      +rzansel)
         rzansel=true
         shift
         ;;
      -cooley)
         cooley=false
         shift
         ;;
      +cooley)
         cooley=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 kickit.
#
rm -f kickit
cat <<EOF > kickit
#!/bin/sh
./visit-install -private -c llnl_open -g visit -b wbronze -gw -l $ver linux-x86_64-rhel7 /usr/gapps/visit > installlog 2>&1
rm -f resultlog
echo "        install of visit on kickit"          > 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
EOF

if [ $kickit = true ]
then
   if [ $test = no ]
   then
      scp kickit:/home/$user/kickit/visitbuild/visit$ver2.linux-x86_64.tar.gz visit$ver2.linux-x86_64-rhel7.tar.gz
      scp kickit:/home/$user/kickit/visitbuild/visit$ver2.linux-x86_64-wmesa.tar.gz visit$ver2.linux-x86_64-rhel7-wmesa.tar.gz
      scp visit$ver2.linux-x86_64-rhel7.tar.gz kickit:visit$ver2.linux-x86_64-rhel7.tar.gz
      scp visit-install kickit:
      scp kickit kickit:kickit_install
      ssh kickit "chmod 750 kickit_install;./kickit_install"
   fi
fi

#
# Install on quartz.
#
rm -f quartz
cat <<EOF > quartz
#!/bin/sh
./visit-install -private -c llnl_open_cz -g visit -b wbronze -gw -l $ver linux-x86_64-quartz /usr/gapps/visit > installlog 2>&1
rm -f resultlog
echo ""                                              > resultlog 2>&1
echo "        install of visit on quartz"            >> 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.quartz
EOF

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

#
# Install on lassen.
#
rm -f lassen
cat <<EOF > lassen
#!/bin/sh
./visit-install -private -c llnl_open_cz -g visit -b wbronze -gw -l $ver linux-intel-lassen /usr/gapps/visit > installlog 2>&1
rm -f resultlog
echo ""                                              > resultlog 2>&1
echo "        install of visit on lassen"            >> 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-intel/bin         >> resultlog 2>&1
echo ""                                              >> resultlog 2>&1
echo "number of database plugins = "\`ls /usr/gapps/visit/$ver+/linux-intel/plugins/databases/libI* | wc -l\` >> resultlog 2>&1
echo "number of operator plugins = "\`ls /usr/gapps/visit/$ver+/linux-intel/plugins/operators/libI* | wc -l\` >> resultlog 2>&1
echo "number of plot plugins = "\`ls /usr/gapps/visit/$ver+/linux-intel/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-intel/plugins/databases/libI* | sed "s/\/usr\/gapps\/visit\/$ver+\/linux-intel\/plugins\/databases\/libI//" | sed "s/Database.so//" >> resultlog 2>&1
mv resultlog resultlog.lassen
EOF

if [ $lassen = true ]
then
   if [ $test = no ]
   then
      scp lassen708:/usr/tmp/$user/lassen/visitbuild/visit$ver2.linux-intel.tar.gz visit$ver2.linux-intel-lassen.tar.gz
      scp visit$ver2.linux-intel-lassen.tar.gz lassen:
      scp visit-install lassen:
      scp lassen lassen:lassen_install
      ssh lassen "chmod 750 lassen_install;./lassen_install"
   fi
fi

#
# Install on rztrona.
#
rm -f rztrona
cat <<EOF > rztrona
#!/bin/sh
./visit-install -private -c llnl_open_rz -g visit -b wbronze -gw -l $ver linux-rztrona /usr/gapps/visit > installlog 2>&1
rm -f resultlog
echo "        install of visit on rztrona"          > 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
mail -s "VisIt install ($ver): rztrona" $emailName < resultlog
EOF

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

#
# Install on rzansel
#
rm -f rzansel
cat <<EOF > rzansel
#!/bin/sh
./visit-install -private -c llnl_open_rz -g visit -b wbronze -gw -l $ver linux-rzansel /usr/gapps/visit > installlog 2>&1
rm -f resultlog
echo "        install of visit on rzansel"          > 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-intel/bin        >> resultlog 2>&1
echo ""                                             >> resultlog 2>&1
echo "number of database plugins = "\`ls /usr/gapps/visit/$ver+/linux-intel/plugins/databases/libI* | wc -l\` >> resultlog 2>&1
echo "number of operator plugins = "\`ls /usr/gapps/visit/$ver+/linux-intel/plugins/operators/libI* | wc -l\` >> resultlog 2>&1
echo "number of plot plugins = "\`ls /usr/gapps/visit/$ver+/linux-intel/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-intel/plugins/databases/libI* | sed "s/\/usr\/gapps\/visit\/$ver+\/linux-intel\/plugins\/databases\/libI//" | sed "s/Database.so//" >> resultlog 2>&1
mail -s "VisIt install ($ver): rzansel" $emailName < resultlog
EOF

if [ $rzansel = true ]
then
   if [ $test = no ]
   then
      scp rzansel61:/usr/tmp/$user/rzansel/visitbuild/visit$ver2.linux-intel.tar.gz visit$ver2.linux-rzansel.tar.gz
      scp visit$ver2.linux-rzansel.tar.gz rzansel:
      scp visit-install rzansel:
      scp rzansel rzansel:rzansel_install
      ssh rzansel "chmod 750 rzansel_install;./rzansel_install"
   fi
fi

#
# Install on cooley
#
rm -f cooley
cat <<EOF > cooley
#!/bin/sh
./visit-install -private -c anl -l $ver linux-cooley /soft/visualization/visit > installlog 2>&1
rm -f resultlog
echo "        install of visit on cooley"               > resultlog 2>&1
echo "       ----------------------------"              >> resultlog 2>&1
echo ""                                                 >> resultlog 2>&1
df -k /soft/visualization/visit                         >> resultlog 2>&1
echo ""                                                 >> resultlog 2>&1
ls -l /soft/visualization/visit/$ver+/linux-x86_64/bin  >> resultlog 2>&1
echo ""                                                 >> resultlog 2>&1
echo "number of database plugins = "\`ls /soft/visualization/visit/$ver+/linux-x86_64/plugins/databases/libI* | wc -l\` >> resultlog 2>&1
echo "number of operator plugins = "\`ls /soft/visualization/visit/$ver+/linux-x86_64/plugins/operators/libI* | wc -l\` >> resultlog 2>&1
echo "number of plot plugins = "\`ls /soft/visualization/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 /soft/visualization/visit/$ver+/linux-x86_64/plugins/databases/libI* | sed "s/soft\/visualization\/visit\/$ver+\/linux-x86_64\/plugins\/databases\/libI//" | sed "s/Database.so//" >> resultlog 2>&1
mail -s "VisIt install ($ver): cooley" $emailName < resultlog
EOF

if [ $cooley = true ]
then
   if [ $test = no ]
   then
      cp /home/ebrugger/cooley/visitbuild/visit$ver2.linux-x86_64.tar.gz visit$ver2.linux-cooley.tar.gz
      cp cooley cooley_install
      chmod 750 cooley_install;./cooley_install
   fi
fi

#
# Clean up.
#
if [ $test = no ]
then
   rm -f kickit quartz lassen rztrona rzansel cooley
fi
