Skip to content

Commit 2928d93

Browse files
author
jan
committed
Clean should not try to remove the buildfolder
As deleting the build folder causes issues. Centralised a method on the configuration so there is only one implementation
1 parent 0a402d7 commit 2928d93

File tree

5 files changed

+40
-33
lines changed

5 files changed

+40
-33
lines changed

io.sloeber.autoBuild/src/io/sloeber/autoBuild/api/IAutoBuildConfigurationDescription.java

+10
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
import org.eclipse.core.resources.IFolder;
2020
import org.eclipse.core.resources.IProject;
2121
import org.eclipse.core.resources.IResource;
22+
import org.eclipse.core.runtime.IProgressMonitor;
23+
2224
import io.sloeber.autoBuild.buildTools.api.IBuildTools;
2325
import io.sloeber.autoBuild.buildTools.api.IBuildToolsManager.ToolFlavour;
2426
import io.sloeber.autoBuild.integration.AutoBuildConfigurationDescription;
@@ -454,5 +456,13 @@ public static ICSourceEntry[] getResolvedSourceEntries(IAutoBuildConfigurationDe
454456
*/
455457
public LinkedHashMap<String, String> getPostbuildSteps();
456458

459+
/***
460+
* delete the build folder
461+
* Not actually deletes the build folder but all the members.
462+
*
463+
* @param monitor
464+
*/
465+
void deleteBuildFolder(IProgressMonitor monitor);
466+
457467

458468
}

io.sloeber.autoBuild/src/io/sloeber/autoBuild/extensionPoint/providers/BuildRunnerForMake.java

+2-8
Original file line numberDiff line numberDiff line change
@@ -64,14 +64,8 @@ public class BuildRunnerForMake implements IBuildRunner {
6464
@Override
6565
public void invokeClean(int kind, IAutoBuildConfigurationDescription autoData,
6666
IMarkerGenerator markerGenerator, IConsole console, IProgressMonitor monitor) throws CoreException {
67-
IFolder buildRoot = autoData.getBuildFolder();
68-
if(!buildRoot.exists()) {
69-
return ;
70-
}
71-
//Do not delete the build folder as it may be in use with other processes (like discovery)
72-
for(IResource curMember:buildRoot.members()) {
73-
curMember.delete(true, monitor);
74-
}
67+
autoData.deleteBuildFolder(monitor);
68+
7569
//buildRoot.create(true, true, monitor);
7670
// for now I do not run make clean due to the fact rm -f is probably not on the system path
7771
//return invokeBuild(IncrementalProjectBuilder.CLEAN_BUILD, envp, autoData, markerGenerator, console, monitor);

io.sloeber.autoBuild/src/io/sloeber/autoBuild/extensionPoint/providers/InternalBuildRunner.java

+1-10
Original file line numberDiff line numberDiff line change
@@ -86,16 +86,7 @@ private static void createFolder(IFolder folder, boolean force, boolean local, I
8686
@Override
8787
public void invokeClean(int kind, IAutoBuildConfigurationDescription autoData, IMarkerGenerator markerGenerator,
8888
IConsole console, IProgressMonitor monitor) throws CoreException {
89-
IFolder buildRoot = autoData.getBuildFolder();
90-
if(!buildRoot.exists()) {
91-
return ;
92-
}
93-
//Do not delete the build folder as it may be in use with other processes (like discovery)
94-
for(IResource curMember:buildRoot.members()) {
95-
curMember.delete(true, monitor);
96-
}
97-
// buildRoot.delete(true, monitor);
98-
// buildRoot.create(true, true, monitor);
89+
autoData.deleteBuildFolder(monitor);
9990
return ;
10091
}
10192

io.sloeber.autoBuild/src/io/sloeber/autoBuild/integration/AutoBuildConfigurationDescription.java

+25-6
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,10 @@
3333
import org.eclipse.core.runtime.CoreException;
3434
import org.eclipse.core.runtime.IPath;
3535
import org.eclipse.core.runtime.IProgressMonitor;
36+
import org.eclipse.core.runtime.IStatus;
3637
import org.eclipse.core.runtime.NullProgressMonitor;
3738
import org.eclipse.core.runtime.Platform;
39+
import org.eclipse.core.runtime.Status;
3840
import org.osgi.framework.Bundle;
3941

4042
import io.sloeber.autoBuild.api.AutoBuildCommon;
@@ -1128,16 +1130,33 @@ public void forceCleanBeforeBuild() {
11281130
myForceCleanBeforeBuild = true;
11291131
}
11301132

1131-
public void forceFullBuildIfNeeded(IProgressMonitor monitor) throws CoreException {
1133+
public void forceFullBuildIfNeeded(IProgressMonitor monitor) {
11321134
if (myForceCleanBeforeBuild) {
11331135
myForceCleanBeforeBuild = false;
1134-
IFolder buildFolder = getBuildFolder();
1135-
if (buildFolder != null && buildFolder.exists()) {
1136-
buildFolder.delete(true, monitor);
1137-
}
1138-
1136+
deleteBuildFolder(monitor);
11391137
}
1138+
}
11401139

1140+
@Override
1141+
public void deleteBuildFolder(IProgressMonitor monitor) {
1142+
//Do not delete the build folder as it may be in use with other processes (like discovery)
1143+
1144+
IFolder buildFolder = getBuildFolder();
1145+
if (buildFolder != null && buildFolder.exists()) {
1146+
try {
1147+
for(IResource curMember:buildFolder.members()) {
1148+
try {
1149+
curMember.delete(true, monitor);
1150+
} catch (CoreException e) {
1151+
Activator.log(new Status(IStatus.ERROR, Activator.PLUGIN_ID,
1152+
"Failed to delete member "+curMember.getName(), e));
1153+
}
1154+
1155+
}
1156+
} catch (CoreException e) {
1157+
e.printStackTrace();
1158+
}
1159+
}
11411160
}
11421161

11431162
private static String getSpecFile(String languageId) {

io.sloeber.core/src/io/sloeber/core/tools/Helpers.java

+2-9
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.eclipse.core.runtime.IPath;
2424
import org.eclipse.core.runtime.IProgressMonitor;
2525
import org.eclipse.core.runtime.IStatus;
26+
import org.eclipse.core.runtime.NullProgressMonitor;
2627
import org.eclipse.core.runtime.Status;
2728
import org.eclipse.ui.console.ConsolePlugin;
2829
import org.eclipse.ui.console.IConsole;
@@ -285,15 +286,7 @@ public static void deleteBuildFolder(IProject project, String cfgName) {
285286
IAutoBuildConfigurationDescription autoData = IAutoBuildConfigurationDescription
286287
.getConfig(cdtConfigurationDescription);
287288

288-
IFolder buildFolder = autoData.getBuildFolder();
289-
if (buildFolder.exists()) {
290-
try {
291-
buildFolder.delete(true, null);
292-
} catch (CoreException e) {
293-
Activator.log(new Status(IStatus.ERROR, CORE_PLUGIN_ID,
294-
Messages.Helpers_delete_folder_failed.replace(FOLDER, cfgName), e));
295-
}
296-
}
289+
autoData.deleteBuildFolder(new NullProgressMonitor());
297290
}
298291

299292
/**

0 commit comments

Comments
 (0)