[yocto] [PATCH] [Temp-Performance-Patch] Run each command in separate shell and close it accordingly
Ioana Grigoropol
ioanax.grigoropol at intel.com
Fri Jan 11 10:03:16 PST 2013
--needs more testing
Signed-off-by: Ioana Grigoropol <ioanax.grigoropol at intel.com>
---
plugins/org.yocto.bc.ui/META-INF/MANIFEST.MF | 1 +
.../src/org/yocto/bc/bitbake/ShellSession.java | 10 +-
.../org/yocto/bc/remote/utils/RemoteHelper.java | 289 ++++++++++++++++----
.../bc/remote/utils/YoctoRunnableWithProgress.java | 7 +-
.../bc/ui/wizards/NewBitBakeFileRecipeWizard.java | 3 +-
.../ui/wizards/NewBitBakeFileRecipeWizardPage.java | 78 +++---
6 files changed, 295 insertions(+), 93 deletions(-)
diff --git a/plugins/org.yocto.bc.ui/META-INF/MANIFEST.MF b/plugins/org.yocto.bc.ui/META-INF/MANIFEST.MF
index 1f0e63e..4e57f33 100644
--- a/plugins/org.yocto.bc.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.yocto.bc.ui/META-INF/MANIFEST.MF
@@ -29,6 +29,7 @@ Import-Package: org.eclipse.cdt.managedbuilder.core,
org.eclipse.rse.core,
org.eclipse.rse.core.model,
org.eclipse.rse.core.subsystems,
+ org.eclipse.rse.internal.services.local.shells,
org.eclipse.rse.services,
org.eclipse.rse.services.clientserver.messages,
org.eclipse.rse.services.files,
diff --git a/plugins/org.yocto.bc.ui/src/org/yocto/bc/bitbake/ShellSession.java b/plugins/org.yocto.bc.ui/src/org/yocto/bc/bitbake/ShellSession.java
index 6441029..449994c 100644
--- a/plugins/org.yocto.bc.ui/src/org/yocto/bc/bitbake/ShellSession.java
+++ b/plugins/org.yocto.bc.ui/src/org/yocto/bc/bitbake/ShellSession.java
@@ -87,8 +87,11 @@ public class ShellSession {
private void initializeShell(IProgressMonitor monitor) throws IOException {
try {
if (root != null) {
- RemoteHelper.runCommandRemote(projectInfo.getConnection(), new YoctoCommand("source " + initCmd, root.getAbsolutePath(), ""));
- RemoteHelper.runCommandRemote(projectInfo.getConnection(), new YoctoCommand(exportCmd, root.getAbsolutePath(), ""));
+ IHost connection = projectInfo.getConnection();
+// RemoteHelper.runCommandRemote(projectInfo.getConnection(), new YoctoCommand("source " + initCmd, root.getAbsolutePath(), ""));
+ RemoteHelper.handleRunCommandRemote(connection, new YoctoCommand("source " + initCmd, root.getAbsolutePath(), ""), monitor);
+// RemoteHelper.runCommandRemote(projectInfo.getConnection(), new YoctoCommand(exportCmd, root.getAbsolutePath(), ""));
+ RemoteHelper.handleRunCommandRemote(connection, new YoctoCommand(exportCmd, root.getAbsolutePath(), ""), monitor);
} else {
throw new Exception("Root file not found!");
}
@@ -107,7 +110,8 @@ public class ShellSession {
try {
if (projectInfo.getConnection() != null) {
- hasErrors = RemoteHelper.runCommandRemote(projectInfo.getConnection(), new YoctoCommand(command, root.getAbsolutePath() + "/build/", ""));
+// hasErrors = RemoteHelper.runCommandRemote(projectInfo.getConnection(), new YoctoCommand(command, root.getAbsolutePath() + "/build/", ""));
+ RemoteHelper.handleRunCommandRemote(projectInfo.getConnection(), new YoctoCommand(command, root.getAbsolutePath() + "/build/", ""), new NullProgressMonitor());
// return RemoteHelper.getProcessBuffer(projectInfo.getConnection()).getMergedOutputLines();
return root.getAbsolutePath() + "/build/";
}
diff --git a/plugins/org.yocto.bc.ui/src/org/yocto/bc/remote/utils/RemoteHelper.java b/plugins/org.yocto.bc.ui/src/org/yocto/bc/remote/utils/RemoteHelper.java
index 814e3a5..6b8ebfc 100644
--- a/plugins/org.yocto.bc.ui/src/org/yocto/bc/remote/utils/RemoteHelper.java
+++ b/plugins/org.yocto.bc.ui/src/org/yocto/bc/remote/utils/RemoteHelper.java
@@ -10,9 +10,12 @@
********************************************************************************/
package org.yocto.bc.remote.utils;
+import java.io.BufferedReader;
import java.io.File;
+import java.io.InputStreamReader;
import java.net.URI;
import java.net.URISyntaxException;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -25,16 +28,20 @@ import org.eclipse.core.runtime.OperationCanceledException;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.osgi.util.NLS;
import org.eclipse.ptp.remote.core.IRemoteConnection;
import org.eclipse.rse.core.RSECorePlugin;
import org.eclipse.rse.core.model.IHost;
import org.eclipse.rse.core.model.ISystemRegistry;
import org.eclipse.rse.core.subsystems.ISubSystem;
+import org.eclipse.rse.internal.services.local.shells.LocalShellService;
import org.eclipse.rse.services.IService;
import org.eclipse.rse.services.clientserver.messages.SystemMessageException;
import org.eclipse.rse.services.files.IFileService;
import org.eclipse.rse.services.files.IHostFile;
+import org.eclipse.rse.services.shells.HostShellProcessAdapter;
import org.eclipse.rse.services.shells.IHostShell;
+import org.eclipse.rse.services.shells.IShellService;
import org.eclipse.rse.subsystems.files.core.model.RemoteFileUtility;
import org.eclipse.rse.subsystems.files.core.servicesubsystem.FileServiceSubSystem;
import org.eclipse.rse.subsystems.files.core.servicesubsystem.IFileServiceSubSystem;
@@ -49,6 +56,78 @@ public class RemoteHelper {
public static final int TOTALWORKLOAD = 100;
private static Map<IHost, RemoteMachine> machines;
+ public static Map<String, String> environment;
+ public static final String PROXY = "proxy";
+
+ public static ISubSystem getCmdSubsystem(IHost host) {
+ if (host == null)
+ return null;
+ ISubSystem[] subSystems = host.getSubSystems();
+ for (int i = 0; i < subSystems.length; i++) {
+ if (subSystems[i] instanceof IRemoteCmdSubSystem)
+ return subSystems[i];
+ }
+ return null;
+ }
+ public static ISubSystem getConnectedCmdService(
+ IHost currentConnection, IProgressMonitor monitor) throws Exception {
+ final ISubSystem subsystem = getCmdSubsystem(currentConnection);
+
+ if (subsystem == null)
+ throw new Exception(Messages.ErrorNoSubsystem);
+
+ try {
+ subsystem.connect(monitor, false);
+ } catch (CoreException e) {
+ throw e;
+ } catch (OperationCanceledException e) {
+ throw new CoreException(Status.CANCEL_STATUS);
+ }
+
+ if (!subsystem.isConnected())
+ throw new Exception(Messages.ErrorConnectSubsystem);
+
+
+ return (subsystem);
+ }
+ public static void getRemoteEnvProxyVars(IHost connection, String initialDir, IProgressMonitor monitor){
+ try {
+ if (environment != null && !environment.isEmpty())
+ return;
+
+ environment = new HashMap<String, String>();
+
+ IShellService shellService = (IShellService) getConnectedShellService(connection, new SubProgressMonitor(monitor, 7));
+
+
+ HostShellProcessAdapter p = null;
+ ProcessStreamBuffer buffer = null;
+ try {
+ SubProgressMonitor subMonitor = new SubProgressMonitor(monitor, 3);
+ IHostShell hostShell = shellService.runCommand(initialDir, "env" + " ; echo " + TERMINATOR + "; exit;", new String[]{}, subMonitor);
+ p = new HostShellProcessAdapter(hostShell);
+ buffer = processOutput(p, subMonitor);
+ for(int i = 0; i < buffer.getOutputLines().size(); i++) {
+ String out = buffer.getOutputLines().get(i);
+ String[] tokens = out.split("=");
+ if (tokens.length != 2)
+ continue;
+ String varName = tokens[0];
+ String varValue = tokens[1];
+ if (varName.contains(PROXY))
+ environment.put(varName, varValue);
+ }
+ } catch (Exception e) {
+ if (p != null) {
+ p.destroy();
+ }
+ e.printStackTrace();
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
public static RemoteMachine getRemoteMachine(IHost connection){
if (!getMachines().containsKey(connection))
getMachines().put(connection, new RemoteMachine(connection));
@@ -198,15 +277,115 @@ public class RemoteHelper {
return getRemoteMachine(connection).getShellService(monitor);
}
- public static ISubSystem getCmdSubsystem(IHost host) {
- if (host == null)
- return null;
- ISubSystem[] subSystems = host.getSubSystems();
- for (int i = 0; i < subSystems.length; i++) {
- if (subSystems[i] instanceof IRemoteCmdSubSystem)
- return subSystems[i];
+ public static void handleRunCommandRemote(IHost connection, YoctoCommand cmd, IProgressMonitor monitor){
+ try {
+ Process process = testRunCommandRemote(connection, cmd, monitor);
+ cmd.setProcessBuffer(processOutput(process, monitor));
+ } catch (Exception e) {
+ e.printStackTrace();
}
- return null;
+ }
+ private static ProcessStreamBuffer processOutput(Process process, IProgressMonitor monitor) throws Exception {
+ if (process == null)
+ throw new Exception("An error has occured while trying to run remote command!");
+ ProcessStreamBuffer processBuffer = new ProcessStreamBuffer();
+
+ BufferedReader inbr = new BufferedReader(new InputStreamReader(process.getInputStream()));
+ BufferedReader errbr = new BufferedReader(new InputStreamReader(process.getErrorStream()));
+ boolean cancel = false;
+ while (!cancel) {
+ if(monitor.isCanceled()) {
+ cancel = true;
+ throw new InterruptedException("User Cancelled");
+ }
+ StringBuffer buffer = new StringBuffer();
+ int c;
+ while ((c = errbr.read()) != -1) {
+ char ch = (char) c;
+ buffer.append(ch);
+ if (ch == '\n'){
+ String str = buffer.toString();
+ processBuffer.addErrorLine(str);
+ System.out.println(str);
+ if (str.trim().equals(TERMINATOR)) {
+ break;
+ }
+ buffer.delete(0, buffer.length());
+ }
+ }
+
+ while ((c = inbr.read()) != -1) {
+ char ch = (char) c;
+ buffer.append(ch);
+ if (ch == '\n'){
+ String str = buffer.toString();
+ processBuffer.addOutputLine(str);
+ System.out.println(str);
+ if (str.trim().equals(TERMINATOR)) {
+ break;
+ }
+ buffer.delete(0, buffer.length());
+ }
+ }
+ cancel = true;
+ }
+ return processBuffer;
+ }
+
+ public static String[] prepareEnvString(IHost connection, String initialDir, IProgressMonitor monitor){
+ IShellService shellService;
+ String[] env = null;
+ try {
+ shellService = (IShellService) getConnectedShellService(connection, new SubProgressMonitor(monitor, 7));
+ if (shellService instanceof LocalShellService) {
+ env = shellService.getHostEnvironment();
+ } else {
+ List<String> envList = new ArrayList<String>();
+ getRemoteEnvProxyVars(connection, initialDir, monitor);
+ String value = "";
+ for (String varName : environment.keySet()){
+ value = varName + "=" + environment.get(varName);
+ envList.add(value);
+ }
+ env = envList.toArray(new String[envList.size()]);
+ }
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ return env;
+ }
+ public static Process testRunCommandRemote(IHost connection, YoctoCommand cmd,
+ IProgressMonitor monitor) throws CoreException {
+
+ monitor.beginTask(NLS.bind(Messages.RemoteShellExec_1,
+ cmd, cmd.getArguments()), 10);
+
+ String remoteCommand = cmd + " " + cmd.getArguments() + " ; echo " + TERMINATOR + "; exit ;";
+
+ IShellService shellService;
+ Process p = null;
+// boolean cancel = false;
+ try {
+ shellService = (IShellService) getConnectedShellService(connection, new SubProgressMonitor(monitor, 7));
+
+ String env[] = prepareEnvString(connection, cmd.getInitialDirectory(), monitor);
+
+ try {
+ IHostShell hostShell = shellService.runCommand(cmd.getInitialDirectory(), remoteCommand, env, new SubProgressMonitor(monitor, 3));
+ p = new HostShellProcessAdapter(hostShell);
+
+ } catch (Exception e) {
+ if (p != null) {
+ p.destroy();
+ }
+ e.printStackTrace();
+ }
+ } catch (Exception e1) {
+ e1.printStackTrace();
+ }
+ return p;
}
public static void getRemoteFile(IHost connection, String localExePath, String remoteExePath,
@@ -248,53 +427,53 @@ public class RemoteHelper {
return null;
}
- public static boolean runCommandRemote(final IHost connection, final YoctoCommand cmd) throws Exception {
- final String remoteCommand = cmd.getCommand() + " " + cmd.getArguments();
- final boolean hasErrors = false;
-
- if (!cmd.getInitialDirectory().isEmpty()) {
- writeToShell(connection, "cd " + cmd.getInitialDirectory());
- }
- if (!hasErrors)
- writeToShell(connection, remoteCommand);
-
- return hasErrors;
- }
-
- public static boolean writeToShell(final IHost connection, final String remoteCommand){
- new Thread(new Runnable() {
- @Override
- public void run() {
- try {
- YoctoHostShellProcessAdapter adapter = getHostShellProcessAdapter(connection);
- String fullRemoteCommand = remoteCommand + "; echo " + TERMINATOR + ";";
- adapter.setLastCommand(fullRemoteCommand);
- getHostShell(connection).writeToShell(fullRemoteCommand);
- while (!adapter.isFinished())
- Thread.sleep(2);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }).run();
- return true;
- }
-
- public static void runBatchRemote(IHost connection, List<YoctoCommand> cmds, boolean displayOutput) throws CoreException {
- try {
- String remoteCommand = "";
- for (YoctoCommand cmd : cmds) {
- remoteCommand = cmd.getCommand() + " " + cmd.getArguments();
- if (!cmd.getInitialDirectory().isEmpty()) {
- writeToShell(connection, "cd " + cmd.getInitialDirectory());
- }
- writeToShell(connection, remoteCommand);
- }
-
- } catch (Exception e1) {
- e1.printStackTrace();
- }
- }
+// public static boolean runCommandRemote(final IHost connection, final YoctoCommand cmd) throws Exception {
+// final String remoteCommand = cmd.getCommand() + " " + cmd.getArguments();
+// final boolean hasErrors = false;
+//
+// if (!cmd.getInitialDirectory().isEmpty()) {
+// writeToShell(connection, "cd " + cmd.getInitialDirectory());
+// }
+// if (!hasErrors)
+// writeToShell(connection, remoteCommand);
+//
+// return hasErrors;
+// }
+//
+// public static boolean writeToShell(final IHost connection, final String remoteCommand){
+// new Thread(new Runnable() {
+// @Override
+// public void run() {
+// try {
+// YoctoHostShellProcessAdapter adapter = getHostShellProcessAdapter(connection);
+// String fullRemoteCommand = remoteCommand + "; echo " + TERMINATOR + "; exit ;";
+// adapter.setLastCommand(fullRemoteCommand);
+// getHostShell(connection).writeToShell(fullRemoteCommand);
+// while (!adapter.isFinished())
+// Thread.sleep(2);
+// } catch (Exception e) {
+// e.printStackTrace();
+// }
+// }
+// }).run();
+// return true;
+// }
+
+// public static void runBatchRemote(IHost connection, List<YoctoCommand> cmds, boolean displayOutput) throws CoreException {
+// try {
+// String remoteCommand = "";
+// for (YoctoCommand cmd : cmds) {
+// remoteCommand = cmd.getCommand() + " " + cmd.getArguments();
+// if (!cmd.getInitialDirectory().isEmpty()) {
+// writeToShell(connection, "cd " + cmd.getInitialDirectory());
+// }
+// writeToShell(connection, remoteCommand);
+// }
+//
+// } catch (Exception e1) {
+// e1.printStackTrace();
+// }
+// }
/**
* Throws a core exception with an error status object built from the given
diff --git a/plugins/org.yocto.bc.ui/src/org/yocto/bc/remote/utils/YoctoRunnableWithProgress.java b/plugins/org.yocto.bc.ui/src/org/yocto/bc/remote/utils/YoctoRunnableWithProgress.java
index b6ed2b8..82ba0ba 100644
--- a/plugins/org.yocto.bc.ui/src/org/yocto/bc/remote/utils/YoctoRunnableWithProgress.java
+++ b/plugins/org.yocto.bc.ui/src/org/yocto/bc/remote/utils/YoctoRunnableWithProgress.java
@@ -20,7 +20,7 @@ public class YoctoRunnableWithProgress extends YoctoHostShellProcessAdapter
private String cmd;
private String args;
private IProgressMonitor monitor;
-
+
public YoctoRunnableWithProgress(IHostShell hostShell,
ProcessStreamBuffer processStreamBuffer,
CommandResponseHandler commandResponseHandler) throws IOException {
@@ -33,7 +33,7 @@ public class YoctoRunnableWithProgress extends YoctoHostShellProcessAdapter
try {
this.monitor = monitor;
this.monitor.beginTask(taskName, RemoteHelper.TOTALWORKLOAD);
-
+
if (!remoteConnection.isOpen()) {
try {
remoteConnection.open(monitor);
@@ -48,7 +48,8 @@ public class YoctoRunnableWithProgress extends YoctoHostShellProcessAdapter
try {
IHost connection = RemoteHelper.getRemoteConnectionByName(remoteConnection.getName());
- RemoteHelper.runCommandRemote(connection, new YoctoCommand(cmd, "", args));
+// RemoteHelper.runCommandRemote(connection, new YoctoCommand(cmd, "", args));
+ RemoteHelper.handleRunCommandRemote(connection, new YoctoCommand(cmd, "", args), monitor);
} catch (Exception e) {
e.printStackTrace();
} finally {
diff --git a/plugins/org.yocto.bc.ui/src/org/yocto/bc/ui/wizards/NewBitBakeFileRecipeWizard.java b/plugins/org.yocto.bc.ui/src/org/yocto/bc/ui/wizards/NewBitBakeFileRecipeWizard.java
index 7345b77..66c4b9d 100644
--- a/plugins/org.yocto.bc.ui/src/org/yocto/bc/ui/wizards/NewBitBakeFileRecipeWizard.java
+++ b/plugins/org.yocto.bc.ui/src/org/yocto/bc/ui/wizards/NewBitBakeFileRecipeWizard.java
@@ -204,7 +204,8 @@ public class NewBitBakeFileRecipeWizard extends Wizard implements INewWizard {
public void run(IProgressMonitor monitor) throws InvocationTargetException {
try {
doFinish(element, monitor);
- RemoteHelper.runCommandRemote(connection, new YoctoCommand("rm -rf " + element.getMetaDir() + "/temp", "", ""));
+// RemoteHelper.runCommandRemote(connection, new YoctoCommand("rm -rf " + element.getMetaDir() + "/temp", "", ""));
+ RemoteHelper.handleRunCommandRemote(connection, new YoctoCommand("rm -rf " + element.getMetaDir() + "/temp", "", ""), monitor);
} catch (Exception e) {
throw new InvocationTargetException(e);
} finally {
diff --git a/plugins/org.yocto.bc.ui/src/org/yocto/bc/ui/wizards/NewBitBakeFileRecipeWizardPage.java b/plugins/org.yocto.bc.ui/src/org/yocto/bc/ui/wizards/NewBitBakeFileRecipeWizardPage.java
index a52c2fe..114a484 100644
--- a/plugins/org.yocto.bc.ui/src/org/yocto/bc/ui/wizards/NewBitBakeFileRecipeWizardPage.java
+++ b/plugins/org.yocto.bc.ui/src/org/yocto/bc/ui/wizards/NewBitBakeFileRecipeWizardPage.java
@@ -91,7 +91,6 @@ public class NewBitBakeFileRecipeWizardPage extends WizardPage {
private static final String MIRRORS_FILE = "mirrors.bbclass";
private static final String CLASSES_FOLDER = "classes";
private static final String COPYING_FILE = "COPYING";
- private static final String WHITESPACES = "\\s+";
private static final String CMAKE_LIST = "cmakelists.txt";
private static final String CMAKE = "cmake";
private static final String SETUP_SCRIPT = "setup.py";
@@ -104,9 +103,9 @@ public class NewBitBakeFileRecipeWizardPage extends WizardPage {
private HashMap<String, String> mirrorTable;
private URI extractDir;
- private YoctoCommand licenseChecksumCmd;
- protected YoctoCommand md5YCmd;
- protected YoctoCommand sha256YCmd;
+ protected ProcessStreamBuffer md5Buffer;
+ protected ProcessStreamBuffer sha256Buffer;
+ protected ProcessStreamBuffer md5CopyingBuffer;
public NewBitBakeFileRecipeWizardPage(ISelection selection, IHost connection) {
super("wizardPage");
@@ -331,7 +330,7 @@ public class NewBitBakeFileRecipeWizardPage extends WizardPage {
}
private void handleLocalPopulate(URI srcURI, IProgressMonitor monitor) {
- populateLicenseFileChecksum(srcURI);
+ populateLicenseFileChecksum(srcURI, monitor);
populateInheritance(srcURI, monitor);
}
@@ -345,47 +344,61 @@ public class NewBitBakeFileRecipeWizardPage extends WizardPage {
public void run(IProgressMonitor monitor) throws InvocationTargetException,
InterruptedException {
monitor.beginTask("Populating recipe fields ... ", 100);
- List<YoctoCommand> commands = new ArrayList<YoctoCommand>();
+// List<YoctoCommand> commands = new ArrayList<YoctoCommand>();
try {
String metaDirLocPath = metaDirLoc.getPath();
monitor.subTask("Cleaning environment");
- commands.add(new YoctoCommand("rm -rf " + TEMP_FOLDER_NAME, metaDirLocPath, ""));
- commands.add(new YoctoCommand( "mkdir " + TEMP_FOLDER_NAME, metaDirLocPath, ""));
+// commands.add(new YoctoCommand("rm -rf " + TEMP_FOLDER_NAME, metaDirLocPath, ""));
+ YoctoCommand rmYCmd = new YoctoCommand("rm -rf " + TEMP_FOLDER_NAME, metaDirLocPath, "");
+ RemoteHelper.handleRunCommandRemote(connection, rmYCmd, monitor);
+
+// commands.add(new YoctoCommand( "mkdir " + TEMP_FOLDER_NAME, metaDirLocPath, ""));
+ YoctoCommand mkdirYCmd = new YoctoCommand( "mkdir " + TEMP_FOLDER_NAME, metaDirLocPath, "");
+ RemoteHelper.handleRunCommandRemote(connection, mkdirYCmd, monitor);
+
updateTempFolderPath();
monitor.worked(10);
monitor.subTask("Downloading package sources");
- commands.add(new YoctoCommand("wget " + srcURI.toURL(), tempFolderPath, ""));
+// commands.add(new YoctoCommand("wget " + srcURI.toURL(), tempFolderPath, ""));
updateTempFolderPath();
- RemoteHelper.runBatchRemote(connection, commands, true);
+// RemoteHelper.runBatchRemote(connection, commands, true);
- commands.clear();
+ YoctoCommand wgetYCmd = new YoctoCommand("wget " + srcURI.toURL(), tempFolderPath, "");
+ RemoteHelper.handleRunCommandRemote(connection, wgetYCmd, monitor);
+
+// commands.clear();
monitor.worked(50);
monitor.subTask("Compute package checksums");
String md5Cmd = "md5sum " + srcFileNameExt;
- md5YCmd = new YoctoCommand(md5Cmd, tempFolderPath, "");
- RemoteHelper.runCommandRemote(connection, md5YCmd);
+ YoctoCommand md5YCmd = new YoctoCommand(md5Cmd, tempFolderPath, "");
+// RemoteHelper.runCommandRemote(connection, md5YCmd);
+ RemoteHelper.handleRunCommandRemote(connection, md5YCmd, monitor);
+ md5Buffer = md5YCmd.getProcessBuffer();
monitor.worked(60);
String sha256Cmd = "sha256sum " + srcFileNameExt;
- sha256YCmd = new YoctoCommand(sha256Cmd, tempFolderPath, "");
- RemoteHelper.runCommandRemote(connection, sha256YCmd);
+ YoctoCommand sha256YCmd = new YoctoCommand(sha256Cmd, tempFolderPath, "");
+// RemoteHelper.runCommandRemote(connection, sha256YCmd);
+ RemoteHelper.handleRunCommandRemote(connection, sha256YCmd, monitor);
+ sha256Buffer = sha256YCmd.getProcessBuffer();
monitor.worked(70);
monitor.subTask("Extracting package");
- extractDir = extractPackage(srcURI);
+ extractDir = extractPackage(srcURI, monitor);
monitor.worked(80);
- licenseChecksumCmd = populateLicenseFileChecksum(extractDir);
+ YoctoCommand licenseChecksumCmd = populateLicenseFileChecksum(extractDir, monitor);
+ md5CopyingBuffer = licenseChecksumCmd.getProcessBuffer();
monitor.subTask("Creating mirror lookup table");
- mirrorTable = createMirrorLookupTable();
+ mirrorTable = createMirrorLookupTable(monitor);
monitor.worked(90);
monitor.done();
@@ -397,20 +410,20 @@ public class NewBitBakeFileRecipeWizardPage extends WizardPage {
updateSrcUri(mirrorTable, srcURI);
populateInheritance(extractDir, monitor);
- String md5Val = retrieveSum(srcFileNameExt, md5Pattern);
+ String md5Val = md5Buffer.getOutputLineContaining(srcFileNameExt, md5Pattern);
md5sumText.setText(Pattern.matches(md5Pattern, md5Val) ? md5Val : "");
- String sha256Val = retrieveSum(srcFileNameExt, sha256Pattern);
+ String sha256Val = sha256Buffer.getOutputLineContaining(srcFileNameExt, sha256Pattern);
sha256sumText.setText(Pattern.matches(sha256Pattern, sha256Val) ? sha256Val : "");
- String checkSumVal = retrieveSum(COPYING_FILE, md5Pattern);
+ String checkSumVal = md5CopyingBuffer.getOutputLineContaining(COPYING_FILE, md5Pattern);
checksumText.setText(RemoteHelper.createNewURI(extractDir, COPYING_FILE).toString() + ";md5=" + (Pattern.matches(md5Pattern, checkSumVal) ? checkSumVal : ""));
}
- private String retrieveSum(String arg, String pattern) {
- ProcessStreamBuffer buffer = RemoteHelper.getProcessBuffer(this.connection);
- return buffer.getOutputLineContaining(arg, pattern);
- }
+// private String retrieveSum(String arg, String pattern) {
+// ProcessStreamBuffer buffer = RemoteHelper.getProcessBuffer(this.connection);
+// return buffer.getOutputLineContaining(arg, pattern);
+// }
- private URI extractPackage(URI srcURI) {
+ private URI extractPackage(URI srcURI, IProgressMonitor monitor) {
try {
String path = srcFileNameExt;
String tarCmd = "tar ";
@@ -420,7 +433,8 @@ public class NewBitBakeFileRecipeWizardPage extends WizardPage {
tarCmd += "-xvf ";
}
- RemoteHelper.runCommandRemote(connection, new YoctoCommand(tarCmd + path, tempFolderPath, ""));
+// RemoteHelper.runCommandRemote(connection, new YoctoCommand(tarCmd + path, tempFolderPath, ""));
+ RemoteHelper.handleRunCommandRemote(connection, new YoctoCommand(tarCmd + path, tempFolderPath, ""), new NullProgressMonitor());
return RemoteHelper.createNewURI(metaDirLoc, TEMP_FOLDER_NAME + "/" + srcFileName);
@@ -456,13 +470,14 @@ public class NewBitBakeFileRecipeWizardPage extends WizardPage {
}
}
- private YoctoCommand populateLicenseFileChecksum(URI extractDir) {
+ private YoctoCommand populateLicenseFileChecksum(URI extractDir, IProgressMonitor monitor) {
if (extractDir == null)
throw new RuntimeException("Something went wrong during source extraction!");
try {
YoctoCommand catCmd = new YoctoCommand("md5sum " + COPYING_FILE, extractDir.getPath(), "");
- RemoteHelper.runCommandRemote(connection, catCmd);
+// RemoteHelper.runCommandRemote(connection, catCmd);
+ RemoteHelper.handleRunCommandRemote(connection, catCmd, monitor);
return catCmd;
} catch (Exception e) {
throw new RuntimeException("Unable to process file for MD5 calculation", e);
@@ -491,11 +506,12 @@ public class NewBitBakeFileRecipeWizardPage extends WizardPage {
return "";
}
- private HashMap<String, String> createMirrorLookupTable() throws Exception {
+ private HashMap<String, String> createMirrorLookupTable(IProgressMonitor monitor) throws Exception {
HashMap<String, String> mirrorMap = new HashMap<String, String>();
YoctoCommand cmd = new YoctoCommand("cat " + MIRRORS_FILE, getMetaFolderPath() + CLASSES_FOLDER, "");
- RemoteHelper.runCommandRemote(connection, cmd);
+// RemoteHelper.runCommandRemote(connection, cmd);
+ RemoteHelper.handleRunCommandRemote(connection, cmd, monitor);
if (!cmd.getProcessBuffer().hasErrors()){
String delims = "[\\t]+";
--
1.7.9.5
More information about the yocto
mailing list