[yocto] [PATCH] [Bug #3963][eclipse-poky][branch:denzil]
Ioana Grigoropol
ioanax.grigoropol at intel.com
Tue Jan 15 08:40:16 PST 2013
- source oe-init-build-env each time a command is ran using yocto-bsp tool
Signed-off-by: Ioana Grigoropol <ioanax.grigoropol at intel.com>
---
.../sdk/remotetools/wizards/bsp/MainPage.java | 86 ++++++++++++++++++--
.../remotetools/wizards/bsp/PropertiesPage.java | 16 ++--
2 files changed, 89 insertions(+), 13 deletions(-)
diff --git a/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/wizards/bsp/MainPage.java b/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/wizards/bsp/MainPage.java
index aa1c124..f7dea27 100644
--- a/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/wizards/bsp/MainPage.java
+++ b/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/wizards/bsp/MainPage.java
@@ -56,6 +56,7 @@ public class MainPage extends WizardPage {
private static final String PROPERTIES_CMD_PREFIX = "yocto-bsp list ";
private static final String PROPERTIES_CMD_SURFIX = " properties -o ";
private static final String PROPERTIES_FILE = "/tmp/properties.json";
+ static final String INIT_FILE = "/oe-init-build-env";
private Button btnMetadataLoc;
private Button btnBspOutLoc;
@@ -287,8 +288,18 @@ public class MainPage extends WizardPage {
}
bspElem.setBspName(bspname);
+// if (!textBspOutLoc.getText().isEmpty())
+// bspElem.setBspOutLoc(textBspOutLoc.getText());
if (!textBspOutLoc.getText().isEmpty())
bspElem.setBspOutLoc(textBspOutLoc.getText());
+ else
+ bspElem.setBspOutLoc("");
+ if (!textBspOutLoc.getText().isEmpty())
+ bspElem.setBuildLoc(textBspOutLoc.getText());
+ else {
+ bspElem.setBuildLoc(metadata_loc + "/build");
+ checkBuildDir();
+ }
bspElem.setMetadataLoc(metadata_loc);
bspElem.setKarch(karch);
bspElem.setQarch(qarch);
@@ -296,6 +307,53 @@ public class MainPage extends WizardPage {
return true;
}
+ private Status createBuildDir(String buildLoc) {
+ String metadataDir = textMetadataLoc.getText();
+
+ // if we do not change the directory to metadata location the script will be looked into the directory indicated by user.dir system property
+ // system.property usually points to the location from where eclipse was started
+ String createBuildDirCmd = "cd " + metadataDir + ";source " + metadataDir + INIT_FILE + " " + buildLoc;
+
+ try {
+ ProcessBuilder builder = new ProcessBuilder(new String[] {"sh", "-c", createBuildDirCmd});
+ Process proc = builder.start();
+ InputStream errorStream = proc.getErrorStream();
+ InputStreamReader isr = new InputStreamReader(errorStream);
+ BufferedReader br = new BufferedReader(isr);
+ String line = null;
+ String status = "";
+ while ( (line = br.readLine()) != null) {
+ status += line;
+ }
+
+ if (proc.waitFor() != 0)
+ return new Status(IStatus.ERROR, "not_used", 0, status, null);;
+ return new Status(IStatus.OK, "not_used", 0, "", null);
+ } catch (Exception e) {
+ return new Status(IStatus.ERROR, "not_used", 0, e.getMessage(), null);
+ }
+ }
+ private Status checkBuildDir() {
+
+ String metadataLoc = textMetadataLoc.getText();
+
+ String buildLoc = metadataLoc + "/build";
+ return createBuildDir(buildLoc);
+ }
+ private String getBuildDir() {
+
+ String metadataLoc = textMetadataLoc.getText();
+ String buildLoc = textBspOutLoc.getText();
+
+ if (buildLoc.isEmpty()) {
+ buildLoc = metadataLoc + "/build";
+ }
+ File buildLocDir = new File(buildLoc);
+ if (!buildLocDir.exists()) {
+ createBuildDir(buildLoc);
+ }
+ return buildLoc;
+ }
private boolean createPropertiesFile() {
String create_properties_cmd = bspElem.getMetadataLoc() + "/scripts/" +
@@ -319,14 +377,22 @@ public class MainPage extends WizardPage {
}
return true;
}
-
+ private String getSourceCmd(){
+ String metadataLoc = textMetadataLoc.getText();
+ return "source " + metadataLoc + INIT_FILE + " " + getBuildDir() +" > temps; rm -rf temps;";
+ }
private ArrayList<String> getKArches() {
ArrayList<String> karches = new ArrayList<String>();
-
- String get_karch_cmd = textMetadataLoc.getText() + "/scripts/" + KARCH_CMD;
+ String metadataLoc = textMetadataLoc.getText();
+
+ String get_karch_cmd = getSourceCmd() + metadataLoc + "/scripts/" + KARCH_CMD;
try {
- Runtime rt = Runtime.getRuntime();
- Process proc = rt.exec(get_karch_cmd);
+// Runtime rt = Runtime.getRuntime();
+// Process proc = rt.exec(get_karch_cmd);
+
+ ProcessBuilder builder = new ProcessBuilder(new String[] {"sh", "-c", get_karch_cmd});
+ Process proc = builder.start();
+
InputStream stdin = proc.getInputStream();
InputStreamReader isr = new InputStreamReader(stdin);
BufferedReader br = new BufferedReader(isr);
@@ -351,11 +417,15 @@ public class MainPage extends WizardPage {
private ArrayList<String> getQArches() {
ArrayList<String> qarches = new ArrayList<String>();
+ String metadataLoc = textMetadataLoc.getText();
- String get_qarch_cmd = textMetadataLoc.getText() + "/scripts/" + QARCH_CMD;
+ String get_qarch_cmd = getSourceCmd() + metadataLoc + "/scripts/" + QARCH_CMD;
try {
- Runtime rt = Runtime.getRuntime();
- Process proc = rt.exec(get_qarch_cmd);
+// Runtime rt = Runtime.getRuntime();
+// Process proc = rt.exec(get_qarch_cmd);
+ ProcessBuilder builder = new ProcessBuilder(new String[] {"sh", "-c", get_qarch_cmd});
+ Process proc = builder.start();
+
InputStream stdin = proc.getInputStream();
InputStreamReader isr = new InputStreamReader(stdin);
BufferedReader br = new BufferedReader(isr);
diff --git a/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/wizards/bsp/PropertiesPage.java b/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/wizards/bsp/PropertiesPage.java
index a5e220e..61bd2e5 100644
--- a/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/wizards/bsp/PropertiesPage.java
+++ b/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/wizards/bsp/PropertiesPage.java
@@ -398,7 +398,7 @@ public class PropertiesPage extends WizardPage {
existingButton.setSelection(false);
kbCombo.removeAll();
- kb_property = "\"" + kernel_choice + "\"."+NEW_KBRANCH_NAME;
+ kb_property = "\\\"" + kernel_choice + "\\\"."+NEW_KBRANCH_NAME;
String[] values = getValues(kb_property);
if (values != null)
kbCombo.setItems(values);
@@ -435,14 +435,20 @@ public class PropertiesPage extends WizardPage {
canFlipToNextPage();
getWizard().getContainer().updateButtons();
}
-
+ private String getSourceCmd(){
+ String metadataLoc = bspElem.getMetadataLoc();
+ return "source " + metadataLoc + MainPage.INIT_FILE +" > temps; rm -rf temps;";
+ }
private String[] getValues(String property) {
ArrayList<String> values = new ArrayList<String>();
- String values_cmd = bspElem.getMetadataLoc() + "/scripts/" + VALUES_CMD_PREFIX + bspElem.getKarch() + VALUES_CMD_SURFIX + property;
+ String values_cmd = getSourceCmd() + bspElem.getMetadataLoc() + "/scripts/" + VALUES_CMD_PREFIX + bspElem.getKarch() + VALUES_CMD_SURFIX + property;
try {
- Runtime rt = Runtime.getRuntime();
- Process proc = rt.exec(values_cmd);
+// Runtime rt = Runtime.getRuntime();
+// Process proc = rt.exec(values_cmd);
+ ProcessBuilder builder = new ProcessBuilder(new String[] {"sh", "-c", values_cmd});
+ Process proc = builder.start();
+
InputStream stdin = proc.getInputStream();
InputStreamReader isr = new InputStreamReader(stdin);
BufferedReader br = new BufferedReader(isr);
--
1.7.9.5
More information about the yocto
mailing list