diff options
2 files changed, 12 insertions, 3 deletions
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/InternalBuildRunner.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/InternalBuildRunner.java index e48974cb29a..7618eeae26d 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/InternalBuildRunner.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/InternalBuildRunner.java @@ -128,6 +128,12 @@ public class InternalBuildRunner extends AbstractBuildRunner { status = dBuilder.build(stdout, stderr, new SubProgressMonitor(monitor, TICKS_EXECUTE_COMMAND, SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK)); } else { status = ParallelBuilder.build(des, null, null, stdout, stderr, new SubProgressMonitor(monitor, TICKS_EXECUTE_COMMAND, SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK), resumeOnErr, buildIncrementaly); + // Bug 403670: + // Make sure the build configuration's rebuild status is updated with the result of + // this successful build. In the non-parallel case this happens within dBuilder.build + // (the cBS is passed as an instance of IResourceRebuildStateContainer). + if (status == ParallelBuilder.STATUS_OK) + cBS.setState(0); buildRunnerHelper.printLine(ManagedMakeMessages.getFormattedString("CommonBuilder.7", Integer.toString(ParallelBuilder.lastThreadsUsed))); //$NON-NLS-1$ } diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/buildmodel/ParallelBuilder.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/buildmodel/ParallelBuilder.java index b6e41fd3345..6295a545746 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/buildmodel/ParallelBuilder.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/buildmodel/ParallelBuilder.java @@ -200,6 +200,9 @@ public class ParallelBuilder { * @param monitor Progress monitor * @param resumeOnErrors If true, build process will not stop when * compilation errors encountered + * @return the status of the operation, one of {@link ParallelBuilder#STATUS_OK}, + * {@link ParallelBuilder#STATUS_ERROR}, {@link ParallelBuilder#STATUS_CANCELED}, or {@link + * ParallelBuilder#STATUS_INVALID}. * */ static public int build(IBuildDescription des, IPath cwd, GenDirInfo dirs, OutputStream out, OutputStream err, IProgressMonitor monitor, boolean resumeOnErrors, boolean buildIncrementally) { IConfiguration cfg = des.getConfiguration(); @@ -214,12 +217,12 @@ public class ParallelBuilder { builder.sortQueue(); monitor.beginTask("", builder.queue.size()); //$NON-NLS-1$ BuildProcessManager buildProcessManager = new BuildProcessManager(out, err, true, threads); - builder.dispatch(buildProcessManager); + int status = builder.dispatch(buildProcessManager); lastThreadsUsed = buildProcessManager.getThreadsUsed(); monitor.done(); - return IBuildModelBuilder.STATUS_OK; + return status; } - + /** * Initializes parallel builder */ |