#!/bin/sh
#-----------------------------------------------------------------------
#
# VISIT-BUILD-CLOSED - Build the visit distributions on the closed
#                      network.
#
# Author: Eric Brugger
# Date:   February 12, 2001
#
# Usage:
#    visit-build-closed -d <distribution>
#
#
# Modifications:
#
#   Hank Childs, Mon Oct 15 09:04:12 PDT 2007
#   Add some print statements for usability.
#
#   Hank Childs, Thu Oct 18 15:40:05 PDT 2007
#   Add ksh support for sunset.
#
#   Hank Childs, Mon Oct 22 09:25:47 PDT 2007
#   More ksh support for sunset.
#
#   Hank Childs, Sat Feb  9 14:18:54 PST 2008
#   Change clearcase_bin to svn_bin.
#
#   Eric Brugger, Mon Apr  7 13:51:23 PDT 2008
#   Removed sc build.
#
#   Brad Whitlock, Tue Dec  2 13:49:50 PST 2008
#   Add --prefix for Linux targets so we can use -rpath for the engine
#   wrapper library. I commented out sunset since Qt4 does not build
#   there.
#
#-----------------------------------------------------------------------

test=no

user=`whoami`

#
# Parse the execute line, providing default values for error checking.
#
crier=true
purple=true
hopi=true

dist=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)
         crier=false
         purple=false
         hopi=false
         shift
         ;;
      -crier)
         crier=false
         shift
         ;;
      +crier)
         crier=true
         shift
         ;;
      -purple)
         purple=false
         shift
         ;;
      +purple)
         purple=true
         shift
         ;;
      -hopi)
         hopi=false
         shift
         ;;
      +hopi)
         hopi=true
         shift
         ;;
      -d)
         dist=$2
         shift 2
         ;;
   esac
done

#
# Check that the distribution name was provided.
#
if [ $dist = undefined ]
then
   echo "Usage: [-none] [-<machine name>] -d <distribution>"
   echo "Valid machine names:"
   echo "    crier (B-Div, Linux),"
   echo "    purple (LC, AIX),"
   echo "    hopi (LC, x86_64)"
   exit
fi

#
# Check that the distribution exists.
#
distfile=$dist.tar.gz
if [ ! -f $distfile ]
then
   echo "Distribution file doesn't exist."
   exit
fi

#
# Build on crier.
#
rm -f crier
cat <<EOF > crier
#!/bin/sh
if test ! -e /export/scratch/$user ; then
   mkdir /export/scratch/$user
fi
if test ! -e /export/scratch/$user/crier ; then
   mkdir /export/scratch/$user/crier
fi
rm -rf /export/scratch/$user/crier/visitbuild
mkdir /export/scratch/$user/crier/visitbuild
mv crier_$dist.tar.gz /export/scratch/$user/crier/visitbuild/$dist.tar.gz
cd /export/scratch/$user/crier/visitbuild
gunzip -c $dist.tar.gz | tar xvf - > buildlog 2>&1
cd $dist/src
ver=\`cat VERSION\`
ver2=\`echo \$ver | tr "." "_"\`
LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/usr/gapps/visit/gcc/3.2.3/linux_redhat7/lib
export LD_LIBRARY_PATH
/usr/gapps/visit/cmake/2.8.0/linux-i686_gcc-3.2.3/bin/cmake . -DCMAKE_BUILD_TYPE=Release -DVISIT_INSTALL_THIRD_PARTY=ON >> ../../buildlog 2>&1
make -j 4 >> ../../buildlog 2>&1
make package >> ../../buildlog 2>&1
mv visit\$ver2.linux-intel.tar.gz ../..
cd ../..
rm -f resultlog
echo "        build of visit on crier"        > resultlog 2>&1
echo "       -------------------------"       >> resultlog 2>&1
echo ""                                       >> resultlog 2>&1
ls -l                                         >> resultlog 2>&1
echo ""                                       >> resultlog 2>&1
echo "number of database plugins = "\`ls $dist/src/plugins/databases/libI* | wc -l\` >> resultlog 2>&1
echo "number of operator plugins = "\`ls $dist/src/plugins/operators/libI* | wc -l\` >> resultlog 2>&1
echo "number of plot plugins = "\`ls $dist/src/plugins/plots/libI* | wc -l\` >> resultlog 2>&1
echo ""                                       >> resultlog 2>&1
echo "The database plugins:"                  >> resultlog 2>&1
ls $dist/src/plugins/databases/libI* | sed "s/$dist\/src\/plugins\/databases\/libI//" | sed "s/Database.so//" >> resultlog 2>&1
EOF
 
if [ $crier = true ]
then
   if [ $test = no ]
   then
      echo "Building on crier"
      scp -P 22 crier crier:crier_buildit
      scp -P 22 $dist.tar.gz crier:crier_$dist.tar.gz
      ssh -p 22 crier "chmod 750 crier_buildit;./crier_buildit" &
   fi
fi

#
# Build on purple, both 32 and 64 bit versions.
#
rm -f purple32
cat <<EOF > purple32
#!/bin/sh
PATH=/usr/local/bin:\$PATH
if test ! -d /p/gscratch3/$user ; then
   mkdir /p/gscratch3/$user
fi
if test ! -d /p/gscratch3/$user/purple32 ; then
   mkdir /p/gscratch3/$user/purple32
fi
rm -rf /p/gscratch3/$user/purple32/visitbuild
mkdir /p/gscratch3/$user/purple32/visitbuild
mv purple32_$dist.tar.gz /p/gscratch3/$user/purple32/visitbuild/$dist.tar.gz
cd /p/gscratch3/$user/purple32/visitbuild
gunzip -c $dist.tar.gz | tar xvf - > buildlog 2>&1
cd $dist/src
ver=\`cat VERSION\`
ver2=\`echo \$ver | tr "." "_"\`
OBJECT_MODE=32
export OBJECT_MODE
cp config-site/purple1441_32.cmake config-site/purple1441.cmake
/usr/gapps/visit/cmake/2.8.0/aix_xlc_32/bin/cmake . -DCMAKE_BUILD_TYPE=Release-DVISIT_INSTALL_THIRD_PARTY=ON >> ../../buildlog 2>&1
gmake -j 3 >> ../../buildlog 2>&1
gmake -j 3 package >> ../../buildlog 2>&1
mv visit\$ver2.ibm-aix-pwr.tar.gz ../..
cd ../..
echo "        build of visit on purple"       > resultlog 2>&1
echo "       --------------------------"      >> resultlog 2>&1
echo ""                                       >> resultlog 2>&1
ls -l                                         >> resultlog 2>&1
echo ""                                       >> resultlog 2>&1
echo "            32 bit build"               >> resultlog 2>&1
echo ""                                       >> resultlog 2>&1
echo "number of database plugins = "\`ls $dist/src/plugins/databases/libI* | wc -l\` >> resultlog 2>&1
echo "number of operator plugins = "\`ls $dist/src/plugins/operators/libI* | wc -l\` >> resultlog 2>&1
echo "number of plot plugins = "\`ls $dist/src/plugins/plots/libI* | wc -l\` >> resultlog 2>&1
echo ""                                       >> resultlog 2>&1
echo "The database plugins:"                  >> resultlog 2>&1
ls $dist/src/plugins/databases/libI* | sed "s/$dist\/src\/plugins\/databases\/libI//" | sed "s/Database.so//" >> resultlog 2>&1
EOF

rm -f purple64
cat <<EOF > purple64
#!/bin/sh
PATH=/usr/local/bin:\$PATH
if test ! -d /p/gscratch3/$user ; then
   mkdir /p/gscratch3/$user
fi
if test ! -d /p/gscratch3/$user/purple64 ; then
   mkdir /p/gscratch3/$user/purple64
fi
rm -rf /p/gscratch3/$user/purple64/visitbuild
mkdir /p/gscratch3/$user/purple64/visitbuild
mv purple64_$dist.tar.gz /p/gscratch3/$user/purple64/visitbuild/$dist.tar.gz
cd /p/gscratch3/$user/purple64/visitbuild
gunzip -c $dist.tar.gz | tar xvf - > buildlog 2>&1
cd $dist/src
ver=\`cat VERSION\`
ver2=\`echo \$ver | tr "." "_"\`
OBJECT_MODE=64
export OBJECT_MODE
/usr/gapps/visit/cmake/2.8.0/aix_xlc_64/bin/cmake . -DCMAKE_BUILD_TYPE=Release-DVISIT_INSTALL_THIRD_PARTY=ON >> ../../buildlog 2>&1
gmake -j 3 >> ../../buildlog 2>&1
gmake -j 3 package >> ../../buildlog 2>&1
mv visit\$ver2.ibm-aix-pwr64.tar.gz ../..
cd ../..
echo "        build of visit on purple"       > resultlog 2>&1
echo "       --------------------------"      >> resultlog 2>&1
echo ""                                       >> resultlog 2>&1
ls -l                                         >> resultlog 2>&1
echo ""                                       >> resultlog 2>&1
echo "            64 bit build"               >> resultlog 2>&1
echo ""                                       >> resultlog 2>&1
echo "number of database plugins = "\`ls $dist/src/plugins/databases/libI* | wc -l\` >> resultlog 2>&1
echo "number of operator plugins = "\`ls $dist/src/plugins/operators/libI* | wc -l\` >> resultlog 2>&1
echo "number of plot plugins = "\`ls $dist/src/plugins/plots/libI* | wc -l\` >> resultlog 2>&1
echo ""                                       >> resultlog 2>&1
echo "The database plugins:"                  >> resultlog 2>&1
ls $dist/src/plugins/databases/libI* | sed "s/$dist\/src\/plugins\/databases\/libI//" | sed "s/Database.so//" >> resultlog 2>&1
EOF

if [ $purple = true ]
then
   if [ $test = no ]
   then
      echo "Building on purple"
      scp purple32 purple:purple32_buildit
      scp purple64 purple:purple64_buildit
      scp $dist.tar.gz purple:purple32_$dist.tar.gz
      scp $dist.tar.gz purple:purple64_$dist.tar.gz
      ssh purple "chmod 750 purple32_buildit;./purple32_buildit" &
      ssh purple "chmod 750 purple64_buildit;./purple64_buildit" &
   fi
fi

#
# Build on hopi.
#
rm -f hopi
cat <<EOF > hopi
#!/bin/sh
XLOCALEDIR=/usr/lib/X11/locale
PATH=/usr/bin/X11:\$PATH
if test ! -d /usr/tmp/$user ; then
   mkdir /usr/tmp/$user
fi
if test ! -d /usr/tmp/$user/hopi ; then
   mkdir /usr/tmp/$user/hopi
fi
rm -rf /usr/tmp/$user/hopi/visitbuild
mkdir /usr/tmp/$user/hopi/visitbuild
mv hopi_$dist.tar.gz /usr/tmp/$user/hopi/visitbuild/$dist.tar.gz
cd /usr/tmp/$user/hopi/visitbuild
gunzip -c $dist.tar.gz | tar xvf - > buildlog 2>&1
cd $dist/src
ver=\`cat VERSION\`
ver2=\`echo \$ver | tr "." "_"\`
/usr/gapps/visit/cmake/2.8.0/linux-x86_64_gcc-4.1.2/bin/cmake . -DCMAKE_BUILD_TYPE=Release -DVISIT_INSTALL_THIRD_PARTY=ON >> ../../buildlog 2>&1
make -j 6 >> ../../buildlog 2>&1
make -j 6 package >> ../../buildlog 2>&1
mv visit\$ver2.linux-x86_64.tar.gz ../..
cd ../..
rm -f resultlog
echo "        build of visit on hopi"         > resultlog 2>&1
echo "       ------------------------"        >> resultlog 2>&1
echo ""                                       >> resultlog 2>&1
ls -l                                         >> resultlog 2>&1
echo ""                                       >> resultlog 2>&1
echo "number of database plugins = "\`ls $dist/src/plugins/databases/libI* | wc -l\` >> resultlog 2>&1
echo "number of operator plugins = "\`ls $dist/src/plugins/operators/libI* | wc -l\` >> resultlog 2>&1
echo "number of plot plugins = "\`ls $dist/src/plugins/plots/libI* | wc -l\` >> resultlog 2>&1
echo ""                                       >> resultlog 2>&1
echo "The database plugins:"                  >> resultlog 2>&1
ls $dist/src/plugins/databases/libI* | sed "s/$dist\/src\/plugins\/databases\/libI//" | sed "s/Database.so//" >> resultlog 2>&1
EOF

if [ $hopi = true ]
then
   if [ $test = no ]
   then
      echo "Building on hopi"
      scp hopi hopi3:hopi_buildit
      scp $dist.tar.gz hopi3:hopi_$dist.tar.gz
      ssh hopi3 "chmod 750 hopi_buildit;./hopi_buildit" &
   fi
fi

#
# Clean up.
#
if [ $test = no ]
then
   rm -f crier purple32 purple64 hopi
fi
