diff options
-rwxr-xr-x | tools/misc/h5redeploy | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/tools/misc/h5redeploy b/tools/misc/h5redeploy new file mode 100755 index 0000000..a10df35 --- /dev/null +++ b/tools/misc/h5redeploy @@ -0,0 +1,152 @@ +#! /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 |