#! /bin/sh ## ## Copyright (C) 2002 ## National Center for Supercomputing Applications ## All rights reserved. ## ## Update HDF5 compiler tools after the HDF5 software has been installed ## in a new location. ## For help page, use "h5redeploy -h" # Function definitions # show help page usage() { # A wonderfully informative "usage" message. echo "usage: $prog_name [OPTIONS]" echo " OPTIONS:" echo " -help This help message." echo " -echo Show all the shell commands executed" echo " -prefix=DIR New directory to find HDF5 lib/ and include/" echo " subdirectories [default: current directory]" echo " -tool=TOOL Tool to update. TOOL must be in the current" echo " directory and writable. [default: $h5tools]" echo " -show Show the commands without executing them" echo " " exit 1 } # display variable values dump_vars(){ echo "====Showing all variable values=====" echo prefix=$prefix echo h5tools=$h5tools echo "====End Showing=====" } # show actions to be taken show_action() { echo "Update the following tools because they are now installed at a new directory" for t in $h5tools; do echo "${t}:" echo -n " current directory=" sed -e "/^prefix=/s/prefix=//p" -e d $t echo " new directory="\""$prefix"\" done } # Report Error message ERROR() { echo "***ERROR***" echo "$1" } # Main # # Initialization h5tools=h5cc prefix=`(cd ..;pwd)` # Parse options for arg in $@ ; do case "$arg" in -prefix=*) prefix="`expr "$arg" : '-prefix=\(.*\)'`" ;; -echo) set -x ;; -show) SHOW="echo" ;; -tool=*) h5tools="`expr "$arg" : '-tool=\(.*\)'`" ;; -help|help) usage ;; *) ERROR "Unknown Option($arg)" usage exit 1 ;; esac done # Sanity checks if [ ! -d $prefix ]; then ERROR "prefix($prefix) is not an existing directory" exit 1 fi for x in $h5tools; do if [ ! -w $x ]; then ERROR "h5tool($h5tools) is not found in the current directory or is not writable" exit 1 fi done # Show actions to be taken and get consent show_action echo -n "Continue? (yes/no)" read ansx ans=`echo $ansx | tr "[A-Z]" "[a-z]"` if [ x-$ans != x-yes ]; then echo ABORT. No tools changed. exit 1 fi # Create the update commands CMDFILE=/tmp/h5redeploy.$$ touch $CMDFILE chmod 0600 $CMDFILE echo "/^prefix/c" >> $CMDFILE echo prefix=\""$prefix"\" >> $CMDFILE echo . >> $CMDFILE (echo w; echo q) >> $CMDFILE # Update them if [ "$SHOW" = "echo" ]; then echo "===Update commands are:====" cat $CMDFILE echo "===End Update commands=====" fi for t in $h5tools; do echo Update $t ... COMMAND="ed - $t" if [ "$SHOW" = "echo" ]; then echo $COMMAND else $COMMAND < $CMDFILE fi done # Cleanup rm -f $CMDFILE exit 0 # Some possible future features to add # CCBASE - Name of the alternative C compiler # CLINKERBASE - Name of the alternative linker # LDFLAGS - Path to different libraries your application will link with # (this path should include the path to the zlib library) # LIBS - Libraries your application will link with