#!/bin/sh # $Revision: 1.13 $ # $Date: 2006-11-16 04:21:17 $ # Author: Ferdi Franceschini (ffr@ansto.gov.au) # Last revision by $Author: dcl $ # Deploys SICServer and configuration files to # an instrument control computer. # It requires a MANIFEST.TXT file for each instrument usage() { cat <.nbi... or ics1-test.nbi... for test TARGET_DIR is the top part of the directory tree defaults to /usr/local or /usr/local/TEST_SICS/ for test tail directories in TARGET_DIR will be created on TARGET_HOST if necessary. Examples: ./deploySICS.sh -n echidna prepares deployment of echidna (./hrpd) to directory /usr/local/sics on isc1-echidna.nbi.ansto.gov.au ./deploySICS.sh -n reflectometer/test prepares deployment of platypus (./reflectometer) to directory usr/local/TEST_SICS/platypus on isc1-test.nbi.ansto.gov.au ./deploySICS.sh -n test/echidna localhost $HOME prepares deployment of echidna (./hrpd) to directory $HOME/TEST_SICS/echidna on localhost EOF } if [ "$1" = "-n" ] then DEPLOY="NO" shift else DEPLOY="YES" fi if [ $# -eq 0 -o $# -gt 3 ] then usage exit 1 fi TESTING=$(dirname "$1") INSTRUMENT=$(basename "$1") if [ "$INSTRUMENT" = "test" ] then TESTING=$(basename "$1") INSTRUMENT=$(dirname "$1") fi SRCDIR="." TEMPDIR=$HOME/tmp # Set the destination host # instrument name and the # instrument src directory case $INSTRUMENT in echidna|hrpd) INSTRUMENT=echidna DESTHOST=${2:-ics1-echidna.nbi.ansto.gov.au} INSTSRC=hrpd;; wombat|hipd) INSTRUMENT=wombat DESTHOST=${2:-ics1-wombat.nbi.ansto.gov.au} INSTSRC=hipd;; koala|qld) INSTRUMENT=koala DESTHOST=${2:-ics1-koala.nbi.ansto.gov.au} INSTSRC=qld;; platypus|reflectometer) INSTRUMENT=platypus DESTHOST=${2:-ics1-platypus.nbi.ansto.gov.au} INSTSRC=reflectometer;; kowari|rsd) INSTRUMENT=kowari DESTHOST=${2:-ics1-kowari.nbi.ansto.gov.au} INSTSRC=rsd;; quokka|sans) INSTRUMENT=quokka DESTHOST=${2:-ics1-quokka.nbi.ansto.gov.au} INSTSRC=sans;; pelican|pas) INSTRUMENT=pelican DESTHOST=${2:-ics1-pelican.nbi.ansto.gov.au} INSTSRC=pas;; taipan|tas) INSTRUMENT=taipan DESTHOST=${2:-ics1-taipan.nbi.ansto.gov.au} INSTSRC=tas;; esac if [ "$TESTING" = "test" ] then DESTHOST=${2:-ics1-test.nbi.ansto.gov.au} DESTDIR=${3:-/usr/local}/TEST_SICS/$INSTRUMENT TARDIR=$DESTDIR # remove and recreate the temporary directory rm -fr $TEMPDIR/$DESTDIR mkdir -p $TEMPDIR/$DESTDIR #copy TEST_SICS/fakeDMC and remove CVS any directories cp -a $SRCDIR/TEST_SICS/* $TEMPDIR/$DESTDIR rm -fr $(find $TEMPDIR/$DESTDIR -name CVS) # step down to the sics directory DESTDIR=$DESTDIR/sics mkdir -p $TEMPDIR/$DESTDIR else DESTDIR=${3:-/usr/local}/sics TARDIR=$DESTDIR # remove and recreate the temporary directory rm -fr $TEMPDIR/$DESTDIR mkdir -p $TEMPDIR/$DESTDIR fi echo "Deploying $INSTRUMENT to $DESTHOST:$DESTDIR" if [ "$DESTHOST" = "localhost" ] then EXTRACT="tar vxz -C /" else EXTRACT="ssh $DESTHOST tar vxz -C /" fi if [ ! -e $SRCDIR/MANIFEST.TXT ] then echo "$SRCDIR/MANIFEST.TXT not found" exit 1 fi if [ ! -e $SRCDIR/$INSTSRC/MANIFEST.TXT ] then echo "$SRCDIR/$INSTSRC/MANIFEST.TXT not found" echo "You must list the files required for $INSTRUMENT in the manifest" exit 1 fi # Generate instrument description xml ./hipadaba/gen_hpdbxml.tcl $INSTRUMENT # Get list of files to copy COMMON=$(for f in $(cat $SRCDIR/MANIFEST.TXT); do echo -n "$SRCDIR/$f "; done) INSTSPEC=$(for f in $(cat $INSTSRC/MANIFEST.TXT); do echo -n "$INSTSRC/$f "; done) mkdir -p $TEMPDIR/$DESTDIR/{server,data,log,tmp} cp $COMMON $INSTSPEC $TEMPDIR/$DESTDIR/server cp ../SICServer $TEMPDIR/$DESTDIR/server # Create a manifest of the files installed on the IC host echo "Date: $(date -Iminutes)" > $TEMPDIR/$DESTDIR/server/MANIFEST.TXT echo -e "The following files were installed by $USER\n" >> $TEMPDIR/$DESTDIR/server/MANIFEST.TXT cat $SRCDIR/MANIFEST.TXT $SRCDIR/$INSTSRC/MANIFEST.TXT >> $TEMPDIR/$DESTDIR/server/MANIFEST.TXT cd $TEMPDIR # Strip leading / from DESTDIR and extract to destination if [ "$DEPLOY" = "YES" ] then tar -cz ${TARDIR:1} | $EXTRACT else echo "tar -cz ${TARDIR:1} | $EXTRACT" fi