mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-03-31 17:10:47 +08:00
[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.
This commit is contained in:
parent
1ae81a8ede
commit
665ea1c36f
152
tools/misc/h5redeploy
Executable file
152
tools/misc/h5redeploy
Executable file
@ -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
|
Loading…
x
Reference in New Issue
Block a user