Search in sources :

Example 1 with ModuleChunk

use of org.jetbrains.jps.ModuleChunk in project intellij-community by JetBrains.

the class IncProjectBuilder method runBuildersForChunk.

private boolean runBuildersForChunk(final CompileContext context, final BuildTargetChunk chunk) throws ProjectBuildException, IOException {
    Set<? extends BuildTarget<?>> targets = chunk.getTargets();
    if (targets.size() > 1) {
        Set<ModuleBuildTarget> moduleTargets = new LinkedHashSet<>();
        for (BuildTarget<?> target : targets) {
            if (target instanceof ModuleBuildTarget) {
                moduleTargets.add((ModuleBuildTarget) target);
            } else {
                String targetsString = StringUtil.join(targets, (Function<BuildTarget<?>, String>) target1 -> StringUtil.decapitalize(target1.getPresentableName()), ", ");
                context.processMessage(new CompilerMessage("", BuildMessage.Kind.ERROR, "Cannot build " + StringUtil.decapitalize(target.getPresentableName()) + " because it is included into a circular dependency (" + targetsString + ")"));
                return false;
            }
        }
        return runModuleLevelBuilders(context, new ModuleChunk(moduleTargets));
    }
    final BuildTarget<?> target = targets.iterator().next();
    if (target instanceof ModuleBuildTarget) {
        return runModuleLevelBuilders(context, new ModuleChunk(Collections.singleton((ModuleBuildTarget) target)));
    }
    // In general the set of files corresponding to changed source file may be different
    // Need this for example, to keep up with case changes in file names  for case-insensitive OSes: 
    // deleting the output before copying is the only way to ensure the case of the output file's name is exactly the same as source file's case
    cleanOldOutputs(context, target);
    final List<TargetBuilder<?, ?>> builders = BuilderRegistry.getInstance().getTargetBuilders();
    final float builderProgressDelta = 1.0f / builders.size();
    for (TargetBuilder<?, ?> builder : builders) {
        buildTarget(target, context, builder);
        updateDoneFraction(context, builderProgressDelta);
    }
    return true;
}
Also used : com.intellij.openapi.util(com.intellij.openapi.util) BuildTargetConfiguration(org.jetbrains.jps.incremental.storage.BuildTargetConfiguration) ExternalJavacManager(org.jetbrains.jps.javac.ExternalJavacManager) THashSet(gnu.trove.THashSet) CanceledStatus(org.jetbrains.jps.api.CanceledStatus) CompilationRound(org.jetbrains.jps.incremental.fs.CompilationRound) THashMap(gnu.trove.THashMap) FilesDelta(org.jetbrains.jps.incremental.fs.FilesDelta) org.jetbrains.jps.incremental.messages(org.jetbrains.jps.incremental.messages) Predicate(com.intellij.util.containers.Predicate) TimingLog(org.jetbrains.jps.TimingLog) JavaSourceRootDescriptor(org.jetbrains.jps.builders.java.JavaSourceRootDescriptor) ProjectDescriptor(org.jetbrains.jps.cmdline.ProjectDescriptor) SmartList(com.intellij.util.SmartList) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) JpsJavaCompilerConfiguration(org.jetbrains.jps.model.java.compiler.JpsJavaCompilerConfiguration) FileUtil(com.intellij.openapi.util.io.FileUtil) Logger(com.intellij.openapi.diagnostic.Logger) BuildRunner(org.jetbrains.jps.cmdline.BuildRunner) MultiMap(com.intellij.util.containers.MultiMap) Method(java.lang.reflect.Method) BuildFSState(org.jetbrains.jps.incremental.fs.BuildFSState) ModuleChunk(org.jetbrains.jps.ModuleChunk) java.util.concurrent(java.util.concurrent) PersistentEnumerator(com.intellij.util.io.PersistentEnumerator) JpsModule(org.jetbrains.jps.model.module.JpsModule) DirtyFilesHolderBase(org.jetbrains.jps.builders.impl.DirtyFilesHolderBase) InvocationTargetException(java.lang.reflect.InvocationTargetException) Nullable(org.jetbrains.annotations.Nullable) Function(com.intellij.util.Function) NotNull(org.jetbrains.annotations.NotNull) ModuleExcludeIndex(org.jetbrains.jps.indices.ModuleExcludeIndex) OutputToTargetRegistry(org.jetbrains.jps.incremental.storage.OutputToTargetRegistry) java.util(java.util) Proxy(java.lang.reflect.Proxy) SharedThreadPool(org.jetbrains.jps.service.SharedThreadPool) SourceToOutputMapping(org.jetbrains.jps.builders.storage.SourceToOutputMapping) ContainerUtil(com.intellij.util.containers.ContainerUtil) ProjectBuilderLogger(org.jetbrains.jps.builders.logging.ProjectBuilderLogger) AtomicReference(java.util.concurrent.atomic.AtomicReference) GlobalOptions(org.jetbrains.jps.api.GlobalOptions) BuildDataCorruptedException(org.jetbrains.jps.builders.storage.BuildDataCorruptedException) JpsJavaExtensionService(org.jetbrains.jps.model.java.JpsJavaExtensionService) BuildTargetChunk(org.jetbrains.jps.builders.impl.BuildTargetChunk) BoundedTaskExecutor(com.intellij.util.concurrency.BoundedTaskExecutor) OneToManyPathsMapping(org.jetbrains.jps.incremental.storage.OneToManyPathsMapping) StringUtil(com.intellij.openapi.util.text.StringUtil) IOException(java.io.IOException) File(java.io.File) JavaBuilderUtil(org.jetbrains.jps.builders.java.JavaBuilderUtil) org.jetbrains.jps.builders(org.jetbrains.jps.builders) AtomicLong(java.util.concurrent.atomic.AtomicLong) JavacMain(org.jetbrains.jps.javac.JavacMain) Callbacks(org.jetbrains.jps.builders.java.dependencyView.Callbacks) InvocationHandler(java.lang.reflect.InvocationHandler) MappingFailedException(com.intellij.util.io.MappingFailedException) BuildOutputConsumerImpl(org.jetbrains.jps.builders.impl.BuildOutputConsumerImpl) JpsPathUtil(org.jetbrains.jps.util.JpsPathUtil) ModuleChunk(org.jetbrains.jps.ModuleChunk)

Aggregations

Logger (com.intellij.openapi.diagnostic.Logger)1 com.intellij.openapi.util (com.intellij.openapi.util)1 FileUtil (com.intellij.openapi.util.io.FileUtil)1 StringUtil (com.intellij.openapi.util.text.StringUtil)1 Function (com.intellij.util.Function)1 SmartList (com.intellij.util.SmartList)1 BoundedTaskExecutor (com.intellij.util.concurrency.BoundedTaskExecutor)1 ContainerUtil (com.intellij.util.containers.ContainerUtil)1 MultiMap (com.intellij.util.containers.MultiMap)1 Predicate (com.intellij.util.containers.Predicate)1 MappingFailedException (com.intellij.util.io.MappingFailedException)1 PersistentEnumerator (com.intellij.util.io.PersistentEnumerator)1 THashMap (gnu.trove.THashMap)1 THashSet (gnu.trove.THashSet)1 File (java.io.File)1 IOException (java.io.IOException)1 InvocationHandler (java.lang.reflect.InvocationHandler)1 InvocationTargetException (java.lang.reflect.InvocationTargetException)1 Method (java.lang.reflect.Method)1 Proxy (java.lang.reflect.Proxy)1