summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorAlbert Cheng <acheng@hdfgroup.org>2002-06-12 19:31:53 (GMT)
committerAlbert Cheng <acheng@hdfgroup.org>2002-06-12 19:31:53 (GMT)
commit665ea1c36fa7f3a958f0f37c3a79a39639e5bd50 (patch)
treeb3a62864d3fb800fda456d48d06178e80ffb8951 /tools
parent1ae81a8edeecd7ed38371fe6c0ffdbf13c74362b (diff)
downloadhdf5-665ea1c36fa7f3a958f0f37c3a79a39639e5bd50.zip
hdf5-665ea1c36fa7f3a958f0f37c3a79a39639e5bd50.tar.gz
hdf5-665ea1c36fa7f3a958f0f37c3a79a39639e5bd50.tar.bz2
[svn-r5606] Purpose:
New tool Description: This updates compiler tools (e.g., h5cc) with new directory where the HDF5 software has been installed. Platforms tested: modi4.
Diffstat (limited to 'tools')
-rwxr-xr-xtools/misc/h5redeploy152
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