#! /bin/sh ## ## Copyright by the Board of Trustees of the University of Illinois. ## All rights reserved. ## ## Update HDF4 compiler tools after the HDF4 software has been installed ## in a new location. ## For help page, use "h5redeploy -help" # 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 HDF4 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: $h4tools]" 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 h4tools=$h4tools 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 $foundtools; do echo "${t}:" echo " 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 h4tools="h4cc h4fc" # possible hdf4 tools foundtools= # tools found and will be modified fmode= # force mode, default is 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=*) h4tools="`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 $h4tools; do if [ -f $x ]; then foundtools="$foundtools $x" if [ ! -w $x ]; then ERROR "h5tool($x) is not writable" exit 1 fi fi done if [ -z "$foundtools" ]; then ERROR "found no tools to modify" exit 1 fi # Show actions to be taken and get consent show_action # Ask confirmation unless fmode is on if [ x-$fmode = x- ]; then echo "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 $foundtools; 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