[yocto] [PATCH 2/3] [PATCH]Fixed bug 2922 - Yocto-BSP main page checks for build/output location generate error pop-up on properties pages
Ioana Grigoropol
ioanax.grigoropol at intel.com
Thu Aug 16 08:13:45 PDT 2012
checks for build location :
- if no location is specified, use metadataLocation/build
- if a directory is specified
- if it does not exist -> create it under metadataLocation
- if it does exist -> oe-init-build-env - create conf/ hierachy
- skip if already there
- collect error output for build directory creation
- checks for output location :
- if the output directory already exists -> show error & disable
next(the yocto-bsp script will fail if the directory already exists)
Signed-off-by: Ioana Grigoropol <ioanax.grigoropol at intel.com>
---
.../sdk/remotetools/wizards/bsp/MainPage.java | 96 +++++++++++++-------
1 file changed, 64 insertions(+), 32 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 b729ad1..e5a21d1 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
@@ -251,28 +251,33 @@ public class MainPage extends WizardPage {
labelQArch.setEnabled(false);
comboQArch.setEnabled(false);
}
+ } else if (widget == textBuildLoc){
+ status = checkBuildDir();
}
-
- checkBuildDir();
-
- String build_dir = textBuildLoc.getText();
- String output_dir = textBspOutputLoc.getText();
- String bsp_name = textBspName.getText();
- if (!output_dir.isEmpty() && output_dir.matches(build_dir)) {
- status = new Status(IStatus.ERROR, "not_used", 0,
- "You've set BSP output directory the same as build directory, please leave output directory empty for this scenario!", null);
- }
+ String buildDir = textBuildLoc.getText();
+ String outputDir = textBspOutputLoc.getText();
+ String bspName = textBspName.getText();
- if (build_dir.startsWith(metadataLoc) && output_dir.isEmpty() && !bsp_name.isEmpty()) {
- String bsp_dir_str = metadataLoc + "/meta-" + bsp_name;
- File bsp_dir = new File(bsp_dir_str);
- if (bsp_dir.exists()) {
+ if (!outputDir.isEmpty()){
+ if (outputDir.matches(buildDir)) {
+ status = new Status(IStatus.ERROR, "not_used", 0,
+ "You've set BSP output directory the same as build directory, please leave output directory empty for this scenario!", null);
+ } else {
+ File outputDirectory = new File(outputDir);
+ if (outputDirectory.exists()){
+ status = new Status(IStatus.ERROR, "not_used", 0,
+ "Your BSP output directory points to an exiting directory!", null);
+ }
+ }
+ } else if (buildDir.startsWith(metadataLoc) && !bspName.isEmpty()) {
+ String bspDirStr = metadataLoc + "/meta-" + bspName;
+ File bspDir = new File(bspDirStr);
+ if (bspDir.exists()) {
status = new Status(IStatus.ERROR, "not_used", 0,
- "Your BSP with name: " + bsp_name + " already exist under directory: " + bsp_dir_str + ", please change your bsp name!", null);
+ "Your BSP with name: " + bspName + " already exist under directory: " + bspDirStr + ", please change your bsp name!", null);
}
}
- validatePage();
if (status.getSeverity() == IStatus.ERROR)
setErrorMessage(status.getMessage());
@@ -281,25 +286,52 @@ public class MainPage extends WizardPage {
canFlipToNextPage();
}
- private void checkBuildDir() {
- String metadata_dir = textMetadataLoc.getText();
- String builddir_str = textBuildLoc.getText();
+ private Status checkBuildDir() {
+
+ String metadataLoc = textMetadataLoc.getText();
+ String buildLoc = textBuildLoc.getText();
+
+ if (buildLoc.isEmpty()) {
+ buildLoc = metadataLoc + "/build";
+ return createBuildDir(buildLoc);
+ } else {
+ File buildLocDir = new File(buildLoc);
+ if (!buildLocDir.exists()) {
+ return createBuildDir(metadataLoc + "/" + buildLoc);
+ } else if (buildLocDir.isDirectory()) {
+ return createBuildDir(buildLoc);
+ } else {
+ return new Status(IStatus.ERROR, "not_used", 0, "Invalid build location: Make sure the build location is a directory!", null);
+ }
+ }
+ }
+
+ private Status createBuildDir(String buildLoc) {
+ String metadataDir = textMetadataLoc.getText();
- File build_dir = null;
- if ((builddir_str == null) || builddir_str.isEmpty())
- builddir_str = metadata_dir + "/build";
-
- build_dir = new File(builddir_str);
+ // 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 + "/oe-init-build-env " + buildLoc;
- if (!build_dir.exists()) {
- String create_builddir_cmd = metadata_dir + "/oe-init-build-env " + builddir_str;
- try {
- Runtime rt = Runtime.getRuntime();
- Process proc = rt.exec(new String[] {"sh", "-c", create_builddir_cmd});
- proc.waitFor();
- } catch (Throwable t) {
- t.printStackTrace();
+ System.out.println(createBuildDirCmd);
+ 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);
}
}
--
1.7.9.5
More information about the yocto
mailing list