From c8f6c6c24d5ff3c45fbb2e0c9ae6a40425a03c08 Mon Sep 17 00:00:00 2001 From: nik Date: Wed, 19 Sep 2012 12:22:49 +0400 Subject: [PATCH] external compiler: fixed scope for standalone build --- .../jetbrains/jps/api/CmdlineProtoUtil.java | 2 +- .../jetbrains/jps/cmdline/BuildRunner.java | 15 ++++++------- .../jetbrains/jps/cmdline/BuildSession.java | 2 +- .../org/jetbrains/jps/build/Standalone.java | 21 ++++++++++--------- 4 files changed, 19 insertions(+), 21 deletions(-) diff --git a/jps/jps-builders/src/org/jetbrains/jps/api/CmdlineProtoUtil.java b/jps/jps-builders/src/org/jetbrains/jps/api/CmdlineProtoUtil.java index 28e8de91ee90..dc95cadacd09 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/api/CmdlineProtoUtil.java +++ b/jps/jps-builders/src/org/jetbrains/jps/api/CmdlineProtoUtil.java @@ -54,7 +54,7 @@ public class CmdlineProtoUtil { ); } - private static TargetTypeBuildScope createAllTargetsScope(BuildTargetType type) { + public static TargetTypeBuildScope createAllTargetsScope(BuildTargetType type) { return TargetTypeBuildScope.newBuilder() .setTypeId(type.getTypeId()) .setAllTargets(true) diff --git a/jps/jps-builders/src/org/jetbrains/jps/cmdline/BuildRunner.java b/jps/jps-builders/src/org/jetbrains/jps/cmdline/BuildRunner.java index b9698f93f2eb..92ee2430d5a0 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/cmdline/BuildRunner.java +++ b/jps/jps-builders/src/org/jetbrains/jps/cmdline/BuildRunner.java @@ -6,7 +6,6 @@ import gnu.trove.THashSet; import org.jetbrains.annotations.Nullable; import org.jetbrains.jps.api.BuildType; import org.jetbrains.jps.api.CanceledStatus; -import org.jetbrains.jps.api.CmdlineRemoteProto; import org.jetbrains.jps.api.GlobalOptions; import org.jetbrains.jps.builders.BuildTarget; import org.jetbrains.jps.builders.BuildTargetType; @@ -37,12 +36,12 @@ public class BuildRunner { public static final boolean PARALLEL_BUILD_ENABLED = Boolean.parseBoolean(System.getProperty(GlobalOptions.COMPILE_PARALLEL_OPTION, "false")); private static final boolean STORE_TEMP_CACHES_IN_MEMORY = PARALLEL_BUILD_ENABLED || System.getProperty(GlobalOptions.USE_MEMORY_TEMP_CACHE_OPTION) != null; private final JpsModelLoader myModelLoader; - private final List myScopes; + private final List myScopes; private final List myFilePaths; private final Map myBuilderParams; private boolean myForceCleanCaches; - public BuildRunner(JpsModelLoader modelLoader, List scopes, List filePaths, Map builderParams) { + public BuildRunner(JpsModelLoader modelLoader, List scopes, List filePaths, Map builderParams) { myModelLoader = modelLoader; myScopes = scopes; myFilePaths = filePaths; @@ -88,14 +87,14 @@ public class BuildRunner { } public void runBuild(ProjectDescriptor pd, CanceledStatus cs, @Nullable Callbacks.ConstantAffectionResolver constantSearch, - MessageHandler msgHandler, final boolean includeTests, BuildType buildType) throws Exception { + MessageHandler msgHandler, BuildType buildType) throws Exception { for (int attempt = 0; attempt < 2; attempt++) { if (myForceCleanCaches && myScopes.isEmpty() && myFilePaths.isEmpty()) { // if compilation scope is the whole project and cache rebuild is forced, use PROJECT_REBUILD for faster compilation buildType = BuildType.PROJECT_REBUILD; } - final CompileScope compileScope = createCompilationScope(buildType, pd, myScopes, myFilePaths, includeTests); + final CompileScope compileScope = createCompilationScope(buildType, pd, myScopes, myFilePaths); final IncProjectBuilder builder = new IncProjectBuilder(pd, BuilderRegistry.getInstance(), myBuilderParams, cs, constantSearch); builder.addMessageHandler(msgHandler); try { @@ -131,10 +130,8 @@ public class BuildRunner { } } - private static CompileScope createCompilationScope(BuildType buildType, - ProjectDescriptor pd, - List scopes, - Collection paths, boolean includeTests) throws Exception { + private static CompileScope createCompilationScope(BuildType buildType, ProjectDescriptor pd, List scopes, + Collection paths) throws Exception { Set targetTypes = new HashSet(); Set targets = new HashSet(); Map> files; diff --git a/jps/jps-builders/src/org/jetbrains/jps/cmdline/BuildSession.java b/jps/jps-builders/src/org/jetbrains/jps/cmdline/BuildSession.java index 795356487208..0b848b2a0f4b 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/cmdline/BuildSession.java +++ b/jps/jps-builders/src/org/jetbrains/jps/cmdline/BuildSession.java @@ -184,7 +184,7 @@ final class BuildSession implements Runnable, CanceledStatus { // ensure events from controller are processed after FSState initialization myEventsProcessor.startProcessing(); - myBuildRunner.runBuild(pd, cs, myConstantSearch, msgHandler, true, myBuildType); + myBuildRunner.runBuild(pd, cs, myConstantSearch, msgHandler, myBuildType); } finally { saveData(fsState, dataStorageRoot); diff --git a/jps/standalone-builder/src/org/jetbrains/jps/build/Standalone.java b/jps/standalone-builder/src/org/jetbrains/jps/build/Standalone.java index fe0965f176e2..bac617288301 100644 --- a/jps/standalone-builder/src/org/jetbrains/jps/build/Standalone.java +++ b/jps/standalone-builder/src/org/jetbrains/jps/build/Standalone.java @@ -6,7 +6,6 @@ import com.sampullara.cli.Args; import com.sampullara.cli.Argument; import org.jetbrains.jps.api.BuildType; import org.jetbrains.jps.api.CanceledStatus; -import org.jetbrains.jps.api.CmdlineProtoUtil; import org.jetbrains.jps.builders.java.JavaModuleBuildTargetType; import org.jetbrains.jps.cmdline.BuildRunner; import org.jetbrains.jps.cmdline.JpsModelLoader; @@ -123,23 +122,25 @@ public class Standalone { public static void runBuild(JpsModelLoader loader, final File dataStorageRoot, BuildType buildType, Set modulesSet, List artifactsList, final boolean includeTests, final MessageHandler messageHandler) throws Exception { List scopes = new ArrayList(); - if (modulesSet.isEmpty()) { - scopes.addAll(CmdlineProtoUtil.createAllModulesScopes()); - } - else { - for (JavaModuleBuildTargetType type : JavaModuleBuildTargetType.ALL_TYPES) { - if (includeTests || !type.isTests()) { - scopes.add(TargetTypeBuildScope.newBuilder().setTypeId(type.getTypeId()).addAllTargetId(modulesSet).build()); + for (JavaModuleBuildTargetType type : JavaModuleBuildTargetType.ALL_TYPES) { + if (includeTests || !type.isTests()) { + TargetTypeBuildScope.Builder builder = TargetTypeBuildScope.newBuilder().setTypeId(type.getTypeId()); + if (modulesSet.isEmpty()) { + builder.setAllTargets(true); } + else { + builder.addAllTargetId(modulesSet); + } + scopes.add(builder.build()); } } - if (artifactsList.isEmpty()) { + if (!artifactsList.isEmpty()) { scopes.add(TargetTypeBuildScope.newBuilder().setTypeId(ArtifactBuildTargetType.INSTANCE.getTypeId()).addAllTargetId(artifactsList).build()); } final BuildRunner buildRunner = new BuildRunner(loader, scopes, Collections.emptyList(), Collections.emptyMap()); ProjectDescriptor descriptor = buildRunner.load(messageHandler, dataStorageRoot, new BuildFSState(true)); try { - buildRunner.runBuild(descriptor, CanceledStatus.NULL, null, messageHandler, includeTests, buildType); + buildRunner.runBuild(descriptor, CanceledStatus.NULL, null, messageHandler, buildType); } finally { descriptor.release();