ENH: Improved robustness of remote invocation. Added more documentation.

This commit is contained in:
Brad King 2003-02-03 23:08:54 -05:00
parent 8c161e7fe3
commit d1d92f7678

View File

@ -19,23 +19,40 @@
# #
# CMake UNIX Release Script. # CMake UNIX Release Script.
# #
# Run with no arguments for documentation.
#
[ -z "$REMOTE" ] && SELF="$0" # Release version number.
CVSROOT=":pserver:anonymous@www.cmake.org:/cvsroot/CMake"
CVSROOT_GREP=":pserver:anonymous@www.cmake.org:[0-9]*/cvsroot/CMake"
TAG="Release-1-6-2" TAG="Release-1-6-2"
VERSION="1.6.2" VERSION="1.6.2"
RELEASE="1" RELEASE="1"
PREVIOUS_VERSION="1.4.7" PREVIOUS_VERSION="1.4.7"
PREVIOUS_RELEASE="1" PREVIOUS_RELEASE="1"
# CVSROOT setting used to check out CMake.
CVSROOT=":pserver:anonymous@www.cmake.org:/cvsroot/CMake"
CVSROOT_GREP=":pserver:anonymous@www.cmake.org:[0-9]*/cvsroot/CMake"
# CMake release root directory.
RELEASE_ROOT_NAME="CMakeReleaseRoot" RELEASE_ROOT_NAME="CMakeReleaseRoot"
RELEASE_ROOT="${HOME}/${RELEASE_ROOT_NAME}" RELEASE_ROOT="${HOME}/${RELEASE_ROOT_NAME}"
# Installation prefix used during tarball creation. Tarballs are
# relative to the installation prefix and do not include this in their
# paths.
PREFIX="/usr/local"
# Directory relative to PREFIX where documentation should be placed.
DOC_DIR="/doc/cmake"
# No default compiler. The config file must provide it.
CC="" CC=""
CXX="" CXX=""
CFLAGS="" CFLAGS=""
CXXFLAGS="" CXXFLAGS=""
PREFIX="/usr/local"
DOC_DIR="/doc/cmake" # Details of remote invocation.
[ -z "$REMOTE" ] && SELF="$0"
#----------------------------------------------------------------------------- #-----------------------------------------------------------------------------
usage() usage()
@ -115,14 +132,18 @@ check_host()
# key authentication and no password. # key authentication and no password.
remote() remote()
{ {
if [ ! -z "$REMOTE" ]; then
echo "Cannot do recursive remote calls."
return 1
fi
check_host "$1" || return 1 check_host "$1" || return 1
shift shift
REMOTE_TASK="$@" RTASK="'$1'"; shift; for i in "$@"; do RTASK="${RTASK} '$i'"; done
RESULT=0 RESULT=0
echo "------- Running remote task on $HOST. -------" && echo "------- Running remote task on $HOST. -------" &&
(echo "REMOTE=\"1\"" && (echo "REMOTE=\"1\"" &&
echo "TASK=\"${REMOTE_TASK}\"" && (echo TASK=\"`(eval echo '${RTASK}') | (sed 's/"/\\\\"/g')`\") &&
cat $SELF) | ssh "$HOST" /bin/sh 2>/dev/null || RESULT=1 cat $SELF) | ssh -e none "$HOST" /bin/sh || RESULT=1
echo "-------- Remote task on $HOST done. --------" && echo "-------- Remote task on $HOST done. --------" &&
return $RESULT return $RESULT
} }
@ -647,12 +668,20 @@ osx_install()
) >Logs/osx_install.log 2>&1 || error_log Logs/osx_install.log ) >Logs/osx_install.log 2>&1 || error_log Logs/osx_install.log
} }
if [ -z "$TASK" ]; then #-----------------------------------------------------------------------------
[ -z "$REMOTE" ] && TASK="$@" run()
fi {
CMD="'$1'"; shift; for i in "$@"; do CMD="${CMD} '$i'"; done
eval "$CMD"
}
if [ -z "$TASK" ]; then # Determine task and evaluate it.
TASK="usage" if [ -z "$TASK" ] && [ -z "$REMOTE" ] ; then
if [ -z "$1" ]; then
usage
else
run "$@"
fi
else
[ -z "$TASK" ] || eval run "$TASK"
fi fi
eval $TASK