hdf5/tools/misc/h5redeploy.in
Albert Cheng b0bcccf0ee [svn-r6457] Purpose:
new feature
Description:
    Added a force mode (-force) which turns off prompting, just do it.
Platforms tested:
    Tested h5committest {arabica (fortran), eirene (fortran, C++)
	modi4 (parallel, fortran)}? no
    [If no, why not?] It is just a shell script.  Tested it in eirene.
Misc. update:
    Will check in the updated RELEASE and document files.
2003-03-04 18:06:13 -05:00

161 lines
3.4 KiB
Bash
Executable File

#! /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|help This help message"
echo " -echo Show all the shell commands executed"
echo " -force No prompt, just do it"
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 setting="
sed -e "/^prefix=/s/prefix=//p" -e d $t
echo " new setting="\""$prefix"\"
done
}
# Report Error message
ERROR()
{
echo "***ERROR***"
echo "$1"
}
# Main
#
# Initialization
h5tools=h5cc
fmode= # default off
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
;;
-force)
fmode=yes
;;
*)
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
# Ask confirmation unless fmode is on
if [ x-$fmode = x- ]; then
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
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