mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
force project rebuild when switching between internal and external make implementations
This commit is contained in:
@@ -23,13 +23,16 @@ import com.intellij.openapi.options.Configurable;
|
||||
import com.intellij.openapi.options.ConfigurationException;
|
||||
import com.intellij.openapi.options.SearchableConfigurable;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.event.ItemEvent;
|
||||
import java.awt.event.ItemListener;
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.StringTokenizer;
|
||||
|
||||
public class CompilerUIConfigurable implements SearchableConfigurable, Configurable.NoScroll {
|
||||
@@ -97,7 +100,7 @@ public class CompilerUIConfigurable implements SearchableConfigurable, Configura
|
||||
final CompilerWorkspaceConfiguration workspaceConfiguration = CompilerWorkspaceConfiguration.getInstance(myProject);
|
||||
workspaceConfiguration.AUTO_SHOW_ERRORS_IN_EDITOR = myCbAutoShowFirstError.isSelected();
|
||||
workspaceConfiguration.CLEAR_OUTPUT_DIRECTORY = myCbClearOutputDirectory.isSelected();
|
||||
boolean wasUsing = workspaceConfiguration.USE_COMPILE_SERVER;
|
||||
boolean wasUsingExternalMake = workspaceConfiguration.USE_COMPILE_SERVER;
|
||||
workspaceConfiguration.USE_COMPILE_SERVER = myCbUseCompileServer.isSelected();
|
||||
workspaceConfiguration.MAKE_PROJECT_ON_SAVE = myCbMakeProjectOnSave.isSelected();
|
||||
workspaceConfiguration.ALLOW_AUTOMAKE_WHILE_RUNNING_APPLICATION = myCbAllowAutomakeWhileRunningApplication.isSelected();
|
||||
@@ -109,14 +112,7 @@ public class CompilerUIConfigurable implements SearchableConfigurable, Configura
|
||||
|
||||
// this will schedule for compilation all files that might become compilable after resource patterns' changing
|
||||
final TranslatingCompilerFilesMonitor monitor = TranslatingCompilerFilesMonitor.getInstance();
|
||||
if (!workspaceConfiguration.USE_COMPILE_SERVER) {
|
||||
if (wasUsing) {
|
||||
CompileServerManager.getInstance().shutdownServer();
|
||||
monitor.watchProject(myProject);
|
||||
monitor.scanSourcesForCompilableFiles(myProject);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (workspaceConfiguration.USE_COMPILE_SERVER) {
|
||||
monitor.suspendProject(myProject);
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
public void run() {
|
||||
@@ -125,6 +121,26 @@ public class CompilerUIConfigurable implements SearchableConfigurable, Configura
|
||||
}
|
||||
});
|
||||
}
|
||||
else {
|
||||
// use old make
|
||||
if (wasUsingExternalMake) {
|
||||
CompileServerManager.getInstance().shutdownServer();
|
||||
monitor.watchProject(myProject);
|
||||
monitor.scanSourcesForCompilableFiles(myProject);
|
||||
if (!myProject.isDefault()) {
|
||||
final File buildSystem = BuildManager.getInstance().getBuildSystemDirectory();
|
||||
final File[] subdirs = buildSystem.listFiles();
|
||||
if (subdirs != null) {
|
||||
final String prefix = myProject.getName().toLowerCase(Locale.US) + "_";
|
||||
for (File subdir : subdirs) {
|
||||
if (subdir.getName().startsWith(prefix)) {
|
||||
FileUtil.asyncDelete(subdir);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void applyResourcePatterns(String extensionString, final CompilerConfigurationImpl configuration)
|
||||
|
||||
@@ -746,7 +746,7 @@ public class BuildManager implements ApplicationComponent{
|
||||
cmdLine.addParameter(Integer.toString(port));
|
||||
cmdLine.addParameter(sessionId.toString());
|
||||
|
||||
final File workDirectory = new File(mySystemDirectory, SYSTEM_ROOT);
|
||||
final File workDirectory = getBuildSystemDirectory();
|
||||
workDirectory.mkdirs();
|
||||
ensureLogConfigExists(workDirectory);
|
||||
|
||||
@@ -757,6 +757,10 @@ public class BuildManager implements ApplicationComponent{
|
||||
return cmdLine.createProcess();
|
||||
}
|
||||
|
||||
public File getBuildSystemDirectory() {
|
||||
return new File(mySystemDirectory, SYSTEM_ROOT);
|
||||
}
|
||||
|
||||
private static int getMinorVersion(String vs) {
|
||||
final int dashIndex = vs.lastIndexOf('_');
|
||||
if (dashIndex >= 0) {
|
||||
|
||||
@@ -164,7 +164,12 @@ final class BuildSession implements Runnable, CanceledStatus {
|
||||
boolean forceCleanCaches = false;
|
||||
ProjectDescriptor pd;
|
||||
final Project project = loadProject(projectPath);
|
||||
|
||||
final File dataStorageRoot = Utils.getDataStorageRoot(project);
|
||||
if (!dataStorageRoot.exists()) {
|
||||
// invoked the very first time for this project. Force full rebuild
|
||||
buildType = BuildType.PROJECT_REBUILD;
|
||||
}
|
||||
|
||||
final boolean inMemoryMappingsDelta = System.getProperty(GlobalOptions.USE_MEMORY_TEMP_CACHE_OPTION) != null;
|
||||
ProjectTimestamps projectTimestamps = null;
|
||||
|
||||
Reference in New Issue
Block a user