- ShellSession is used as a wrapper for a remote shell used for running commands on a remote machine with bitbake environment - move ShellSession org.yocto.remote.plugin since it is part of remote utilities - remove shell session class from remotetools plugin - modify org.yocto.sdk.remotetools to use implementation from org.yocto.remote.utils
Signed-off-by: Ioana Grigoropol <[email protected]> --- .../src/org/yocto/remote/utils}/ShellSession.java | 68 ++++++++------------ .../sdk/remotetools/actions/SystemtapModel.java | 2 +- 2 files changed, 28 insertions(+), 42 deletions(-) rename plugins/{org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools => org.yocto.remote.utils/src/org/yocto/remote/utils}/ShellSession.java (95%) diff --git a/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/ShellSession.java b/plugins/org.yocto.remote.utils/src/org/yocto/remote/utils/ShellSession.java similarity index 95% rename from plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/ShellSession.java rename to plugins/org.yocto.remote.utils/src/org/yocto/remote/utils/ShellSession.java index 5602798..751933f 100644 --- a/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/ShellSession.java +++ b/plugins/org.yocto.remote.utils/src/org/yocto/remote/utils/ShellSession.java @@ -9,7 +9,7 @@ * Ken Gilmer - initial API and implementation * Jessica Zhang - Adopt for Yocto Tools plugin *******************************************************************************/ -package org.yocto.sdk.remotetools; +package org.yocto.remote.utils; import java.io.BufferedReader; import java.io.File; @@ -37,38 +37,36 @@ public class ShellSession { /** * String used to isolate command execution */ - //public static final String TERMINATOR = "#234o987dsfkcqiuwey18837032843259d"; public static final String TERMINATOR = "build$"; public static final String LT = System.getProperty("line.separator"); - + private Process process; + + private OutputStream pos = null; + + private String shellPath = null; + private final String initCmd; + private final File root; + + private OutputStreamWriter out; + public static String getFilePath(String file) throws IOException { File f = new File(file); - + if (!f.exists() || f.isDirectory()) { throw new IOException("Path passed is not a file: " + file); } - + StringBuffer sb = new StringBuffer(); - + String elems[] = file.split(File.separator); - + for (int i = 0; i < elems.length - 1; ++i) { sb.append(elems[i]); sb.append(File.separator); } - + return sb.toString(); } - private Process process; - - private OutputStream pos = null; - - private String shellPath = null; - private final String initCmd; - private final File root; - - private OutputStreamWriter out; - public ShellSession(int shellType, File root, String initCmd, OutputStream out) throws IOException { this.root = root; @@ -82,31 +80,31 @@ public class ShellSession { shellPath = "/bin/sh"; } shellPath = "/bin/bash"; - + initializeShell(); } private void initializeShell() throws IOException { process = Runtime.getRuntime().exec(shellPath); pos = process.getOutputStream(); - + if (root != null) { execute("cd " + root.getAbsolutePath()); } - + if (initCmd != null) { execute("source " + initCmd); } } - synchronized + synchronized public String execute(String command, int[] retCode) throws IOException { String errorMessage = null; - + interrupt = false; out.write(command); out.write(LT); - + sendToProcessAndTerminate(command); if (process.getErrorStream().available() > 0) { @@ -119,7 +117,7 @@ public class ShellSession { if (!msg_str.contains("WARNING")) errorMessage = "Error while executing: " + command + LT + new String(msg); } - + BufferedReader br = new BufferedReader(new InputStreamReader(process .getInputStream())); @@ -155,11 +153,11 @@ public class ShellSession { return sb.toString(); } - synchronized + synchronized public void execute(String command) throws IOException { interrupt = false; String errorMessage = null; - + sendToProcessAndTerminate(command); boolean cancel = false; try { @@ -206,7 +204,7 @@ public class ShellSession { } catch (InvocationTargetException e1) { e1.printStackTrace(); } - } + } out.flush(); if (errorMessage != null) { throw new IOException(errorMessage); @@ -302,23 +300,11 @@ public class ShellSession { } return accepted; } - - private void clearErrorStream(InputStream is) { - - try { - byte b[] = new byte[is.available()]; - is.read(b); - System.out.println("clearing: " + new String(b)); - } catch (IOException e) { - e.printStackTrace(); - //Ignore any error - } - } /** * Send command string to shell process and add special terminator string so * reader knows when output is complete. - * + * * @param command * @throws IOException */ diff --git a/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/SystemtapModel.java b/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/SystemtapModel.java index ed8960d..f443e00 100644 --- a/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/SystemtapModel.java +++ b/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/SystemtapModel.java @@ -19,7 +19,7 @@ import org.eclipse.ui.console.ConsolePlugin; import org.eclipse.ui.console.IConsole; import org.eclipse.ui.console.IConsoleManager; import org.eclipse.ui.console.MessageConsole; -import org.yocto.sdk.remotetools.ShellSession; +import org.yocto.remote.utils.ShellSession; public class SystemtapModel extends BaseModel { protected static final String DEFAULT_INIT_SCRIPT = "oe-init-build-env"; -- 1.7.9.5 _______________________________________________ yocto mailing list [email protected] https://lists.yoctoproject.org/listinfo/yocto
