[Yocto #4223] Signed-off-by: Adrian Dudau <adrian.du...@enea.com> --- .../src/org/yocto/sdk/remotetools/Messages.java | 1 + .../org/yocto/sdk/remotetools/ShellSession.java | 6 +++-- .../sdk/remotetools/actions/SystemtapHandler.java | 3 ++- .../sdk/remotetools/actions/SystemtapModel.java | 6 +++-- .../actions/SystemtapSettingDialog.java | 28 ++++++++++++++++++++ .../org/yocto/sdk/remotetools/messages.properties | 1 + 6 files changed, 40 insertions(+), 5 deletions(-)
diff --git a/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/Messages.java b/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/Messages.java index 66ba62b..cbf2b05 100644 --- a/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/Messages.java +++ b/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/Messages.java @@ -40,6 +40,7 @@ public class Messages extends NLS { public static String TerminalViewer_text; //public static String Systemtap_KO_Text; public static String Metadata_Location; + public static String Builddir_Location; public static String User_ID; public static String Remote_Host; public static String Systemtap_Script; diff --git a/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/ShellSession.java b/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/ShellSession.java index 5602798..cbc8e55 100644 --- a/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/ShellSession.java +++ b/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/ShellSession.java @@ -66,12 +66,14 @@ public class ShellSession { private String shellPath = null; private final String initCmd; private final File root; + private final File builddir; private OutputStreamWriter out; - public ShellSession(int shellType, File root, String initCmd, OutputStream out) throws IOException { + public ShellSession(int shellType, File root, File builddir, String initCmd, OutputStream out) throws IOException { this.root = root; + this.builddir = builddir; this.initCmd = initCmd; if (out == null) { this.out = new OutputStreamWriter(null); @@ -95,7 +97,7 @@ public class ShellSession { } if (initCmd != null) { - execute("source " + initCmd); + execute("source " + initCmd + " " + builddir.getAbsolutePath()); } } diff --git a/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/SystemtapHandler.java b/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/SystemtapHandler.java index 87094ee..dc11e39 100644 --- a/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/SystemtapHandler.java +++ b/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/SystemtapHandler.java @@ -35,6 +35,7 @@ public class SystemtapHandler extends AbstractHandler { setting.open(); String metadata_location = ((SystemtapSettingDialog)setting).getMetadataLocation(); + String builddir_location = ((SystemtapSettingDialog)setting).getBuilddirLocation(); String remote_host = ((SystemtapSettingDialog)setting).getRemoteHost(); String user_id = ((SystemtapSettingDialog)setting).getUserID(); String systemtap_script = ((SystemtapSettingDialog)setting).getSystemtapScript(); @@ -42,7 +43,7 @@ public class SystemtapHandler extends AbstractHandler { if(setting.open() == BaseSettingDialog.OK) { IProgressService progressService = PlatformUI.getWorkbench().getProgressService(); - SystemtapModel op = new SystemtapModel(metadata_location,remote_host, user_id, systemtap_script, + SystemtapModel op = new SystemtapModel(metadata_location, builddir_location, remote_host, user_id, systemtap_script, systemtap_args,window.getShell().getDisplay()); try { progressService.busyCursorWhile(op); 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 0d22d97..c834097 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 @@ -26,6 +26,7 @@ public class SystemtapModel extends BaseModel { protected static final String SYSTEMTAP_CONSOLE = "Systemtap Console"; protected MessageConsole sessionConsole; private String metadata_location; + private String builddir_location; private String remote_host; private String user_id; private String systemtap_script; @@ -33,9 +34,10 @@ public class SystemtapModel extends BaseModel { Display display; - public SystemtapModel(String metadata_location, String remote_host, String user_id, String systemtap_script, String systemtap_args, Display display) { + public SystemtapModel(String metadata_location, String builddir_location, String remote_host, String user_id, String systemtap_script, String systemtap_args, Display display) { super(null); this.metadata_location=metadata_location; + this.builddir_location=builddir_location; this.remote_host=remote_host; this.user_id=user_id; this.systemtap_script=systemtap_script; @@ -68,7 +70,7 @@ public class SystemtapModel extends BaseModel { throws InvocationTargetException, InterruptedException { try { ShellSession shell = new ShellSession(ShellSession.SHELL_TYPE_BASH, - new File(this.metadata_location), + new File(this.metadata_location), new File(this.builddir_location), DEFAULT_INIT_SCRIPT, sessionConsole.newOutputStream()); boolean acceptedKey = shell.ensureKnownHostKey(user_id, remote_host); if (acceptedKey) { diff --git a/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/SystemtapSettingDialog.java b/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/SystemtapSettingDialog.java index 8b4703c..2104ee8 100644 --- a/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/SystemtapSettingDialog.java +++ b/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/SystemtapSettingDialog.java @@ -37,18 +37,21 @@ public class SystemtapSettingDialog extends Dialog { static protected String TITLE="Systemtap Crosstap"; protected String title; protected String metadata_location; + protected String builddir_location; protected String systemtap_script; protected String user_id; protected String remote_host; protected String systemtap_args; protected boolean okPressed; protected Button metadataLocationBtn; + protected Button builddirLocationBtn; protected Button systemtapScriptBtn; protected Text userIDText; protected Text remoteHostText; protected Text systemtapArgsText; protected Text systemtapScriptText; protected Text metadataLocationText; + protected Text builddirLocationText; protected SystemtapSettingDialog(Shell parentShell, String title) { super(parentShell); @@ -75,6 +78,10 @@ public class SystemtapSettingDialog extends Dialog { return metadata_location; } + public String getBuilddirLocation() { + return builddir_location; + } + public String getRemoteHost() { return remote_host; } @@ -119,6 +126,14 @@ public class SystemtapSettingDialog extends Dialog { metadataLocationBtn = addDirSelectButton(textContainer, metadataLocationText); label = new Label(projComp, SWT.NONE); + label.setText(Messages.Builddir_Location); + textContainer = new Composite(projComp, SWT.NONE); + textContainer.setLayout(new GridLayout(2, false)); + textContainer.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); + builddirLocationText = (Text)addTextControl(textContainer, builddir_location); + builddirLocationBtn = addDirSelectButton(textContainer, builddirLocationText); + + label = new Label(projComp, SWT.NONE); label.setText(Messages.User_ID); userIDText = new Text(projComp, SWT.SINGLE | SWT.BORDER); @@ -219,6 +234,19 @@ public class SystemtapSettingDialog extends Dialog { CommonHelper.showErrorDialog("SystemTap Error", null, "The specified metadata location is not a directory!"); return; } + builddir_location = builddirLocationText.getText(); + if ( (builddir_location == null) || builddir_location.isEmpty()) { + CommonHelper.showErrorDialog("SystemTap Error", null, "Please specify your builddir location!"); + return; + } + File builddir_dir = new File(builddir_location); + if (!builddir_dir.exists()) { + CommonHelper.showErrorDialog("SystemTap Error", null, "The specified builddir location does not exist!"); + } + if (!metadata_dir.isDirectory()) { + CommonHelper.showErrorDialog("SystemTap Error", null, "The specified builddir location is not a directory!"); + return; + } user_id = userIDText.getText(); if ( (user_id == null) || user_id.isEmpty()) { CommonHelper.showErrorDialog("SystemTap Error", null, "Please specify remote user id!"); diff --git a/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/messages.properties b/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/messages.properties index 7bbf987..2d6d8af 100644 --- a/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/messages.properties +++ b/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/messages.properties @@ -35,6 +35,7 @@ Powertop_ShowPid_Text=show pids in wakeups list TerminalViewer_text=This view is dedicated to Yocto Remote tools. Please use the "Yocto Remote Tools" menu to open the view. //Systemtap_KO_Text=Kernel Module: Metadata_Location=Metadata Location: +Builddir_Location=Build dir Location: User_ID=User ID: Remote_Host=Remote Host: Systemtap_Script=Systemtap Script: -- 1.7.9.5 _______________________________________________ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto