[yocto] [PATCH 05/13] plugins/cmake: Added run method to configure Job

Atanas Gegov atanas.gegov.oss at gmail.com
Thu May 23 01:39:44 PDT 2013


From: Atanas Gegov <atanas.gegov at bmw-carit.de>

The job executes the configure step of the project
using the "cmake" command. The output is
presented in a new console.
---
 .../managedbuilder/job/ExecuteConfigureJob.java    |   25 ++++++++++
 .../cmake/managedbuilder/util/ConsoleUtility.java  |   49 ++++++++++++++++++++
 2 files changed, 74 insertions(+)
 create mode 100644 plugins/org.yocto.cmake.managedbuilder/src/org/yocto/cmake/managedbuilder/util/ConsoleUtility.java

diff --git a/plugins/org.yocto.cmake.managedbuilder/src/org/yocto/cmake/managedbuilder/job/ExecuteConfigureJob.java b/plugins/org.yocto.cmake.managedbuilder/src/org/yocto/cmake/managedbuilder/job/ExecuteConfigureJob.java
index ebed4bb..29e708e 100644
--- a/plugins/org.yocto.cmake.managedbuilder/src/org/yocto/cmake/managedbuilder/job/ExecuteConfigureJob.java
+++ b/plugins/org.yocto.cmake.managedbuilder/src/org/yocto/cmake/managedbuilder/job/ExecuteConfigureJob.java
@@ -92,6 +92,31 @@ public class ExecuteConfigureJob extends Job {
 	 */
 	@Override
 	protected IStatus run(IProgressMonitor monitor) {
+		monitor.beginTask(
+				YoctoCMakeMessages.getString("ExecuteConfigureJob.runConfigure"), 20); //$NON-NLS-1$
+
+		IOConsoleOutputStream cos =
+				ConsoleUtility.getConsoleOutput(YoctoCMakeMessages.getFormattedString("ExecuteConfigureJob.consoleName", //$NON-NLS-1$
+						project.getName()));
+		monitor.worked(1);
+
+		try {
+			return buildProject(monitor, cos);
+		} catch (IOException e) {
+			return new Status(Status.ERROR,
+					Activator.PLUGIN_ID, Status.OK,
+					YoctoCMakeMessages.getString("ExecuteConfigureJob.error.couldNotStart"), e); //$NON-NLS-1$
+		} catch (InterruptedException e) {
+			return new Status(Status.WARNING,
+					Activator.PLUGIN_ID,
+					YoctoCMakeMessages.getString("ExecuteConfigureJob.warning.aborted")); //$NON-NLS-1$
+		} finally {
+			try {
+				cos.close();
+			} catch (IOException e) {
+				cos = null;
+			}
+		}
 	}
 
 	private IStatus buildProject(IProgressMonitor monitor,
diff --git a/plugins/org.yocto.cmake.managedbuilder/src/org/yocto/cmake/managedbuilder/util/ConsoleUtility.java b/plugins/org.yocto.cmake.managedbuilder/src/org/yocto/cmake/managedbuilder/util/ConsoleUtility.java
new file mode 100644
index 0000000..9fb31e5
--- /dev/null
+++ b/plugins/org.yocto.cmake.managedbuilder/src/org/yocto/cmake/managedbuilder/util/ConsoleUtility.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2013 BMW Car IT GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * BMW Car IT - initial API and implementation
+ *******************************************************************************/
+package org.yocto.cmake.managedbuilder.util;
+
+import org.eclipse.ui.console.ConsolePlugin;
+import org.eclipse.ui.console.IConsole;
+import org.eclipse.ui.console.IOConsoleOutputStream;
+import org.eclipse.ui.console.MessageConsole;
+
+
+public class ConsoleUtility {
+
+	public static IOConsoleOutputStream getConsoleOutput(String consoleName) {
+		return getConsole(consoleName).newOutputStream();
+	}
+
+	public static MessageConsole getConsole(String consoleName) {
+		MessageConsole foundConsole = findConsole(consoleName);
+		if (foundConsole != null) {
+			foundConsole.clearConsole();
+		} else {
+			foundConsole = new MessageConsole(consoleName, null);
+			ConsolePlugin.getDefault().
+			getConsoleManager().addConsoles(new IConsole[] { foundConsole });
+		}
+
+		return foundConsole;
+	}
+
+	public static MessageConsole findConsole(String consoleName) {
+		IConsole[] consoles =
+				ConsolePlugin.getDefault().getConsoleManager().getConsoles();
+		for (IConsole console : consoles) {
+			if (console.getName().equals(consoleName)) {
+				return (MessageConsole) console;
+			}
+		}
+
+		return null;
+	}
+}
-- 
1.7.9.5




More information about the yocto mailing list