de52d92
### Eclipse Workspace Patch 1.0
de52d92
#P org.eclipse.linuxtools.cdt.autotools.core
de52d92
Index: src/org/eclipse/linuxtools/cdt/autotools/core/AutotoolsNewProjectNature.java
de52d92
===================================================================
de52d92
--- src/org/eclipse/linuxtools/cdt/autotools/core/AutotoolsNewProjectNature.java	(revision 24339)
de52d92
+++ src/org/eclipse/linuxtools/cdt/autotools/core/AutotoolsNewProjectNature.java	(working copy)
de52d92
@@ -20,9 +20,16 @@
de52d92
 import org.eclipse.core.resources.IProject;
de52d92
 import org.eclipse.core.resources.IProjectDescription;
de52d92
 import org.eclipse.core.resources.IProjectNature;
de52d92
+import org.eclipse.core.resources.IWorkspace;
de52d92
+import org.eclipse.core.resources.IWorkspaceRunnable;
de52d92
+import org.eclipse.core.resources.ResourcesPlugin;
de52d92
 import org.eclipse.core.runtime.CoreException;
de52d92
 import org.eclipse.core.runtime.IProgressMonitor;
de52d92
+import org.eclipse.core.runtime.IStatus;
de52d92
 import org.eclipse.core.runtime.NullProgressMonitor;
de52d92
+import org.eclipse.core.runtime.Status;
de52d92
+import org.eclipse.core.runtime.jobs.ISchedulingRule;
de52d92
+import org.eclipse.core.runtime.jobs.Job;
de52d92
 import org.eclipse.linuxtools.internal.cdt.autotools.core.AutotoolsConfigurationBuilder;
de52d92
 
de52d92
 public class AutotoolsNewProjectNature implements IProjectNature {
de52d92
@@ -94,9 +101,45 @@
de52d92
 				commandList.add(command);
de52d92
 			}
de52d92
 		}
de52d92
-		ICommand[] newCommands = new ICommand[commandList.size()];
de52d92
-		description.setBuildSpec(commandList.toArray(newCommands));
de52d92
-		project.setDescription(description, new NullProgressMonitor());
de52d92
+		final ICommand[] newCommands = commandList.toArray(new ICommand[commandList.size()]);
de52d92
+		if (newCommands.length == commands.length) {
de52d92
+			boolean hasCorrectBuilderCommands = true;
de52d92
+			for (int j = 0; j < commands.length; ++j) {
de52d92
+				if (!commands[j].getBuilderName().equals(newCommands[j])) {
de52d92
+					hasCorrectBuilderCommands = false;
de52d92
+					break;
de52d92
+				}
de52d92
+			}
de52d92
+			if (hasCorrectBuilderCommands)
de52d92
+				return;
de52d92
+		}
de52d92
+		final ISchedulingRule rule = ResourcesPlugin.getWorkspace().getRoot();
de52d92
+		final IProject proj = project;
de52d92
+
de52d92
+		Job backgroundJob = new Job("Autotools Set Project Description") {
de52d92
+			/* (non-Javadoc)
de52d92
+			 * @see org.eclipse.core.runtime.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor)
de52d92
+			 */
de52d92
+			protected IStatus run(IProgressMonitor monitor) {
de52d92
+				try {
de52d92
+					ResourcesPlugin.getWorkspace().run(new IWorkspaceRunnable() {
de52d92
+
de52d92
+						public void run(IProgressMonitor monitor) throws CoreException {
de52d92
+
de52d92
+							IProjectDescription description = proj.getDescription();
de52d92
+							description.setBuildSpec(newCommands);
de52d92
+							proj.setDescription(description, new NullProgressMonitor());
de52d92
+						}
de52d92
+					}, rule, IWorkspace.AVOID_UPDATE, monitor);
de52d92
+				} catch (CoreException e) {
de52d92
+					return e.getStatus();
de52d92
+				}
de52d92
+				IStatus returnStatus = Status.OK_STATUS;
de52d92
+				return returnStatus;
de52d92
+			}
de52d92
+		};
de52d92
+		backgroundJob.setRule(rule);
de52d92
+		backgroundJob.schedule();
de52d92
 	}
de52d92
 
de52d92
 	/**