Merge remote-tracking branch 'origin/master'

This commit is contained in:
anna
2013-03-01 13:52:18 +01:00
9 changed files with 42 additions and 25 deletions
@@ -18,6 +18,7 @@ package org.jetbrains.jps.builders;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jps.builders.storage.BuildDataPaths;
import org.jetbrains.jps.cmdline.ProjectDescriptor;
import org.jetbrains.jps.incremental.CompileContext;
import org.jetbrains.jps.indices.IgnoredFileIndex;
import org.jetbrains.jps.indices.ModuleExcludeIndex;
@@ -46,7 +47,7 @@ public abstract class BuildTarget<R extends BuildRootDescriptor> {
public abstract Collection<BuildTarget<?>> computeDependencies(BuildTargetRegistry targetRegistry, TargetOutputIndex outputIndex);
public void writeConfiguration(PrintWriter out, BuildDataPaths dataPaths, BuildRootIndex buildRootIndex) {
public void writeConfiguration(ProjectDescriptor pd, PrintWriter out) {
}
@NotNull
@@ -51,13 +51,13 @@ public class BuildOperations {
if (context.isProjectRebuild()) {
FSOperations.markDirtyFiles(context, target, timestamps, true, null, null);
pd.fsState.markInitialScanPerformed(target);
configuration.save();
configuration.save(context);
}
else if (context.getScope().isRecompilationForced(target) || configuration.isTargetDirty(context) || configuration.outputRootWasDeleted(context)) {
initTargetFSState(context, target, true);
IncProjectBuilder.clearOutputFiles(context, target);
pd.dataManager.cleanTargetStorages(target);
configuration.save();
configuration.save(context);
}
else if (!pd.fsState.isInitialScanPerformed(target)) {
initTargetFSState(context, target, false);
@@ -23,11 +23,15 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jps.ProjectPaths;
import org.jetbrains.jps.api.GlobalOptions;
import org.jetbrains.jps.builders.*;
import org.jetbrains.jps.builders.BuildTarget;
import org.jetbrains.jps.builders.BuildTargetRegistry;
import org.jetbrains.jps.builders.ModuleBasedTarget;
import org.jetbrains.jps.builders.TargetOutputIndex;
import org.jetbrains.jps.builders.java.ExcludedJavaSourceRootProvider;
import org.jetbrains.jps.builders.java.JavaModuleBuildTargetType;
import org.jetbrains.jps.builders.java.JavaSourceRootDescriptor;
import org.jetbrains.jps.builders.storage.BuildDataPaths;
import org.jetbrains.jps.cmdline.ProjectDescriptor;
import org.jetbrains.jps.indices.IgnoredFileIndex;
import org.jetbrains.jps.indices.ModuleExcludeIndex;
import org.jetbrains.jps.model.JpsModel;
@@ -153,7 +157,7 @@ public final class ModuleBuildTarget extends JVMModuleBuildTarget<JavaSourceRoot
}
@Override
public void writeConfiguration(PrintWriter out, BuildDataPaths dataPaths, BuildRootIndex buildRootIndex) {
public void writeConfiguration(ProjectDescriptor pd, PrintWriter out) {
final JpsModule module = getModule();
int fingerprint = getDependenciesFingerprint();
@@ -169,6 +173,12 @@ public final class ModuleBuildTarget extends JVMModuleBuildTarget<JavaSourceRoot
fingerprint += bytecodeTarget.hashCode();
}
final CompilerEncodingConfiguration encodingConfig = pd.getEncodingConfiguration();
final String encoding = encodingConfig.getPreferredModuleEncoding(module);
if (encoding != null) {
fingerprint += encoding.hashCode();
}
out.write(Integer.toHexString(fingerprint));
}
@@ -27,6 +27,7 @@ import org.jetbrains.jps.builders.java.ExcludedJavaSourceRootProvider;
import org.jetbrains.jps.builders.java.ResourceRootDescriptor;
import org.jetbrains.jps.builders.java.ResourcesTargetType;
import org.jetbrains.jps.builders.storage.BuildDataPaths;
import org.jetbrains.jps.cmdline.ProjectDescriptor;
import org.jetbrains.jps.indices.IgnoredFileIndex;
import org.jetbrains.jps.indices.ModuleExcludeIndex;
import org.jetbrains.jps.model.JpsModel;
@@ -116,9 +117,10 @@ public final class ResourcesTarget extends JVMModuleBuildTarget<ResourceRootDesc
}
@Override
public void writeConfiguration(PrintWriter out, BuildDataPaths dataPaths, BuildRootIndex buildRootIndex) {
public void writeConfiguration(ProjectDescriptor pd, PrintWriter out) {
int fingerprint = 0;
final List<ResourceRootDescriptor> roots = buildRootIndex.getTargetRoots(this, null);
final BuildRootIndex rootIndex = pd.getBuildRootIndex();
final List<ResourceRootDescriptor> roots = rootIndex.getTargetRoots(this, null);
for (ResourceRootDescriptor root : roots) {
fingerprint += FileUtil.fileHashCode(root.getRootFile());
fingerprint += root.getPackagePrefix().hashCode();
@@ -22,6 +22,7 @@ import com.intellij.util.SmartList;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.builders.*;
import org.jetbrains.jps.builders.storage.BuildDataPaths;
import org.jetbrains.jps.cmdline.ProjectDescriptor;
import org.jetbrains.jps.incremental.CompileContext;
import org.jetbrains.jps.incremental.artifacts.builders.LayoutElementBuildersRegistry;
import org.jetbrains.jps.incremental.artifacts.impl.JpsArtifactUtil;
@@ -106,9 +107,10 @@ public class ArtifactBuildTarget extends BuildTarget<ArtifactRootDescriptor> {
}
@Override
public void writeConfiguration(PrintWriter out, BuildDataPaths dataPaths, BuildRootIndex buildRootIndex) {
public void writeConfiguration(ProjectDescriptor pd, PrintWriter out) {
out.println(StringUtil.notNullize(myArtifact.getOutputPath()));
for (ArtifactRootDescriptor descriptor : buildRootIndex.getTargetRoots(this, null)) {
final BuildRootIndex rootIndex = pd.getBuildRootIndex();
for (ArtifactRootDescriptor descriptor : rootIndex.getTargetRoots(this, null)) {
descriptor.writeConfiguration(out);
}
}
@@ -65,7 +65,7 @@ public class BuildTargetConfiguration {
}
public boolean isTargetDirty(CompileContext context) {
final String currentState = getCurrentState();
final String currentState = getCurrentState(context);
if (!currentState.equals(myConfiguration)) {
LOG.debug(myTarget + " configuration was changed:");
LOG.debug("Old:");
@@ -88,13 +88,13 @@ public class BuildTargetConfiguration {
return false;
}
public void save() {
public void save(CompileContext context) {
try {
File configFile = getConfigFile();
FileUtil.createParentDirs(configFile);
Writer out = new BufferedWriter(new FileWriter(configFile));
try {
String current = getCurrentState();
String current = getCurrentState(context);
out.write(current);
myConfiguration = current;
}
@@ -115,18 +115,18 @@ public class BuildTargetConfiguration {
return new File(myTargetsState.getDataPaths().getTargetDataRoot(myTarget), "nonexistent-outputs.dat");
}
private String getCurrentState() {
private String getCurrentState(CompileContext context) {
String state = myCurrentState;
if (state == null) {
myCurrentState = state = saveToString();
myCurrentState = state = saveToString(context);
}
return state;
}
private String saveToString() {
private String saveToString(CompileContext context) {
StringWriter out = new StringWriter();
//noinspection IOResourceOpenedButNotSafelyClosed
myTarget.writeConfiguration(new PrintWriter(out), myTargetsState.getDataPaths(), myTargetsState.getBuildRootIndex());
myTarget.writeConfiguration(context.getProjectDescriptor(), new PrintWriter(out));
return out.toString();
}
@@ -10,10 +10,10 @@ import org.jetbrains.jps.android.AndroidJpsUtil;
import org.jetbrains.jps.android.AndroidPlatform;
import org.jetbrains.jps.android.model.JpsAndroidModuleExtension;
import org.jetbrains.jps.builders.BuildRootDescriptor;
import org.jetbrains.jps.builders.BuildRootIndex;
import org.jetbrains.jps.builders.BuildTarget;
import org.jetbrains.jps.builders.java.JavaModuleBuildTargetType;
import org.jetbrains.jps.builders.storage.BuildDataPaths;
import org.jetbrains.jps.cmdline.ProjectDescriptor;
import org.jetbrains.jps.incremental.CompileContext;
import org.jetbrains.jps.incremental.ModuleBuildTarget;
import org.jetbrains.jps.indices.IgnoredFileIndex;
@@ -34,9 +34,8 @@ public class AndroidDexBuildTarget extends AndroidBuildTarget {
}
@Override
public void writeConfiguration(PrintWriter out, BuildDataPaths dataPaths, BuildRootIndex buildRootIndex) {
super.writeConfiguration(out, dataPaths, buildRootIndex);
public void writeConfiguration(ProjectDescriptor pd, PrintWriter out) {
super.writeConfiguration(pd, out);
// todo: write compiler settings
}
@@ -26,7 +26,6 @@ import com.intellij.openapi.progress.ProgressManager;
import com.intellij.openapi.progress.Task;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.util.Ref;
import com.intellij.openapi.util.ThrowableComputable;
import com.intellij.openapi.util.text.StringUtil;
import git4idea.config.GitVcsApplicationSettings;
@@ -42,6 +41,7 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.atomic.AtomicReference;
/**
* Various utility methods for the GutHub plugin.
@@ -86,8 +86,8 @@ public class GithubUtil {
private static <T> T doAccessToGithubWithModalProgress(@NotNull final Project project,
@NotNull final ThrowableComputable<T, IOException> computable) throws IOException {
final Ref<T> result = new Ref<T>();
final Ref<IOException> exception = new Ref<IOException>();
final AtomicReference<T> result = new AtomicReference<T>();
final AtomicReference<IOException> exception = new AtomicReference<IOException>();
ProgressManager.getInstance().run(new Task.Modal(project, "Access to GitHub", true) {
public void run(@NotNull ProgressIndicator indicator) {
try {
@@ -98,7 +98,8 @@ public class GithubUtil {
}
}
});
if (exception.isNull()) {
//noinspection ThrowableResultOfMethodCallIgnored
if (exception.get() == null) {
return result.get();
}
throw exception.get();
@@ -22,6 +22,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jps.builders.*;
import org.jetbrains.jps.builders.storage.BuildDataPaths;
import org.jetbrains.jps.cmdline.ProjectDescriptor;
import org.jetbrains.jps.incremental.CompileContext;
import org.jetbrains.jps.indices.IgnoredFileIndex;
import org.jetbrains.jps.indices.ModuleExcludeIndex;
@@ -141,7 +142,8 @@ public class MavenResourcesTarget extends ModuleBasedTarget<MavenResourceRootDes
}
@Override
public void writeConfiguration(PrintWriter out, BuildDataPaths dataPaths, BuildRootIndex buildRootIndex) {
public void writeConfiguration(ProjectDescriptor pd, PrintWriter out) {
final BuildDataPaths dataPaths = pd.getTargetsState().getDataPaths();
final MavenModuleResourceConfiguration configuration = getModuleResourcesConfiguration(dataPaths);
if (configuration != null) {
out.write(Integer.toHexString(configuration.computeConfigurationHash(isTests())));