Allow use of ssh to perform remote execution.
authorEvan Cheng <evan.cheng@apple.com>
Tue, 9 Sep 2008 06:11:26 +0000 (06:11 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Tue, 9 Sep 2008 06:11:26 +0000 (06:11 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55979 91177308-0d34-0410-b5e6-96231b3b80d8

tools/bugpoint/ToolRunner.cpp
tools/bugpoint/ToolRunner.h

index d25ce6c306f1a0ba5339e0e52614233e32564e92..d4cea9fa499218121ffc8352f59429459bf09a70 100644 (file)
@@ -25,12 +25,20 @@ using namespace llvm;
 
 namespace {
   cl::opt<std::string>
-  RSHHost("rsh-host",
-          cl::desc("Remote execution (rsh) host"));
+  RemoteClient("remote-client",
+               cl::desc("Remote execution client (rsh/ssh)"));
 
   cl::opt<std::string>
-  RSHUser("rsh-user",
-          cl::desc("Remote execution (rsh) user id"));
+  RemoteHost("remote-host",
+             cl::desc("Remote execution (rsh/ssh) host"));
+
+  cl::opt<std::string>
+  RemoteUser("remote-user",
+             cl::desc("Remote execution (rsh/ssh) user id"));
+
+  cl::opt<std::string>
+  RemoteExtra("remote-extra-options",
+          cl::desc("Remote execution (rsh/ssh) extra options"));
 }
 
 ToolExecutionError::~ToolExecutionError() throw() { }
@@ -597,13 +605,16 @@ int GCC::ExecuteProgram(const std::string &ProgramFile,
 
   std::vector<const char*> ProgramArgs;
 
-  if (RSHPath.isEmpty())
+  if (RemoteClientPath.isEmpty())
     ProgramArgs.push_back(OutputBinary.c_str());
   else {
-    ProgramArgs.push_back(RSHPath.c_str());
-    ProgramArgs.push_back(RSHHost.c_str());
+    ProgramArgs.push_back(RemoteClientPath.c_str());
+    ProgramArgs.push_back(RemoteHost.c_str());
     ProgramArgs.push_back("-l");
-    ProgramArgs.push_back(RSHUser.c_str());
+    ProgramArgs.push_back(RemoteUser.c_str());
+    if (!RemoteExtra.empty()) {
+      ProgramArgs.push_back(RemoteExtra.c_str());
+    }
 
     char* env_pwd = getenv("PWD");
     std::string Exec = "cd ";
@@ -628,12 +639,12 @@ int GCC::ExecuteProgram(const std::string &ProgramFile,
 
   FileRemover OutputBinaryRemover(OutputBinary);
 
-  if (RSHPath.isEmpty())
+  if (RemoteClientPath.isEmpty())
     return RunProgramWithTimeout(OutputBinary, &ProgramArgs[0],
         sys::Path(InputFile), sys::Path(OutputFile), sys::Path(OutputFile),
         Timeout, MemoryLimit);
   else
-    return RunProgramWithTimeout(sys::Path(RSHPath), &ProgramArgs[0],
+    return RunProgramWithTimeout(sys::Path(RemoteClientPath), &ProgramArgs[0],
         sys::Path(InputFile), sys::Path(OutputFile), sys::Path(OutputFile),
         Timeout, MemoryLimit);
 }
@@ -721,10 +732,10 @@ GCC *GCC::create(const std::string &ProgramPath, std::string &Message) {
     return 0;
   }
 
-  sys::Path RSHPath;
-  if (!RSHHost.empty())
-    RSHPath = FindExecutable("rsh", ProgramPath);
+  sys::Path RemoteClientPath;
+  if (!RemoteClient.empty())
+    RemoteClientPath = FindExecutable(RemoteClient.c_str(), ProgramPath);
 
   Message = "Found gcc: " + GCCPath.toString() + "\n";
-  return new GCC(GCCPath, RSHPath);
+  return new GCC(GCCPath, RemoteClientPath);
 }
index 0cc5426b083fa7ad914f4cf355742362a813a884..c7ec1c5da6364f473c8f3044f5b4937f23c542f6 100644 (file)
@@ -44,9 +44,9 @@ public:
 //
 class GCC {
   sys::Path GCCPath;          // The path to the gcc executable
-  sys::Path RSHPath;          // The path to the rsh executable
-  GCC(const sys::Path &gccPath, const sys::Path &rshPath)
-    : GCCPath(gccPath), RSHPath(rshPath) { }
+  sys::Path RemoteClientPath; // The path to the rsh / ssh executable
+  GCC(const sys::Path &gccPath, const sys::Path &RemotePath)
+    : GCCPath(gccPath), RemoteClientPath(RemotePath) { }
 public:
   enum FileType { AsmFile, CFile };