[llvm-commits] [llvm] r75669 - in /llvm/trunk/utils/bugpoint: ./ RemoteRunSafely.sh

Viktor Kutuzov vkutuzov at accesssoftek.com
Tue Jul 14 13:09:15 PDT 2009


Author: vkutuzov
Date: Tue Jul 14 15:08:45 2009
New Revision: 75669

URL: http://llvm.org/viewvc/llvm-project?rev=75669&view=rev
Log:
Helper script to use bugpoint with a remote target.

Added:
    llvm/trunk/utils/bugpoint/
    llvm/trunk/utils/bugpoint/RemoteRunSafely.sh

Added: llvm/trunk/utils/bugpoint/RemoteRunSafely.sh
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/bugpoint/RemoteRunSafely.sh?rev=75669&view=auto

==============================================================================
--- llvm/trunk/utils/bugpoint/RemoteRunSafely.sh (added)
+++ llvm/trunk/utils/bugpoint/RemoteRunSafely.sh Tue Jul 14 15:08:45 2009
@@ -0,0 +1,108 @@
+#!/bin/sh
+#
+# Program:  RemoteRunSafely.sh
+#
+# Synopsis: This script simply runs another program remotely using rsh.
+#           It always returns the another program exit code.
+#
+#           (?) only exit statuses that indicates that the program could not be executed
+#           normally is considered to indicate a test failure.
+#
+# Syntax: 
+#
+#   RemoteRunSafely.sh <hostname> [-l <login_name>] [-p <port>]
+#                <program> <args...>
+#
+#   where:
+#     <hostname>    is the remote host to execute the program,
+#     <login_name>  is the username on the remote host,
+#     <port>        is the port used by the remote client,
+#     <program>     is the path to the program to run,
+#     <args...>     are the arguments to pass to the program.
+#
+
+printUsageAndExit()
+{
+  echo "Usage:"
+  echo "./RemoteRunSafely.sh <hostname> [-l <login_name>] [-p <port>] " \
+       "[cd <working_dir>] <program> <args...>"
+  exit 1
+}
+
+moreArgsExpected()
+{
+  # $1 - remaining number of arguments
+  # $2 - number of arguments to shift
+  if [ $1 -lt $2 ]
+  then
+    echo "Error: Wrong number of argumants."
+    printUsageAndExit
+  fi
+}
+
+# Save a copy of the original arguments in a string before we
+# clobber them with the shift command.
+ORIG_ARGS="$*"
+#DEBUG: echo 'GOT: '$ORIG_ARGS
+
+moreArgsExpected $# 1
+RHOST=$1
+shift 1
+
+RUSER=`id -un`
+RCLIENT=ssh
+RPORT=
+WORKING_DIR=
+
+moreArgsExpected $# 1
+if [ $1 = "-l" ]; then
+  moreArgsExpected $# 2
+  RUSER=$2
+  shift 2
+fi
+moreArgsExpected $# 1
+if [ $1 = "-p" ]; then
+  moreArgsExpected $# 2
+  RPORT="-p $2"
+  shift 2
+fi
+
+moreArgsExpected $# 1
+PROGRAM=$(basename $1)
+WORKING_DIR=$(dirname $1)
+shift 1
+
+#DEBUG: echo 'DIR='${0%%`basename $0`}
+#DEBUG: echo 'RHOST='$RHOST
+#DEBUG: echo 'RUSER='$RUSER
+#DEBUG: echo 'PROGRAM='$PROGRAM
+#DEBUG: echo 'WORKING_DIR='$WORKING_DIR
+#DEBUG: echo 'ARGS='$*
+
+# Sanity check
+if [ "$RHOST" = "" -o "$PROGRAM" = "" ]; then
+  printUsageAndExit
+fi
+
+# Local program file must exist and be execuatble
+local_program=$WORKING_DIR"/"$PROGRAM
+if [ ! -x "$local_program" ]; then
+  echo "File "$local_program" does not exist or is not an executable.."
+  exit 2
+fi
+
+connection=$RUSER'@'$RHOST
+remote="./"$PROGRAM
+(
+  cat $local_program |        \
+  $RCLIENT $connection $RPORT \
+   'rm -f '$remote' ; '       \
+   'cat > '$remote' ; chmod +x '$remote' ; '$remote' '$*' ; ' \
+   'echo exit $? ; '          \
+   'rm -f '$remote
+)
+
+#DEBUG: err=$?
+#DEBUG: echo script exit $err
+#DEBUG: exit $err
+





More information about the llvm-commits mailing list