public void saveBuildState()

in sources/java-incremental-compilation/jvm-inc-builder/src/com/intellij/tools/build/bazel/jvmIncBuilder/BazelIncBuilder.java [365:408]


  public void saveBuildState(
    BuildContext context,
    NodeSourceSnapshot sourcesState, Iterable<ResourceGroup> resourcesState,
    Iterable<NodeSource> modifiedLibraries, Iterable<NodeSource> deletedLibraries
  ) {

    if (sourcesState != null) {
      if (context.hasErrors()) {
        ConfigurationState pastState = ConfigurationState.loadSavedState(context);
        new ConfigurationState(context.getPathMapper(), sourcesState, resourcesState, pastState.getLibraries(), context.getFlags()).save(context);
      }
      else {
        new ConfigurationState(context.getPathMapper(), sourcesState, resourcesState, context.getBinaryDependencies(), context.getFlags()).save(context);
      }
    }

    if (!context.hasErrors()) {
      try { // backup current deps content if the build was successful
        Set<Path> presentPaths = collect(filter(map(modifiedLibraries, context.getPathMapper()::toPath), Files::exists), new HashSet<>());
        Set<Path> deletedPaths = collect(map(deletedLibraries, context.getPathMapper()::toPath), new HashSet<>());
        Path outputZip = context.getOutputZip();
        if (Files.exists(outputZip)) {
          presentPaths.add(outputZip);
        }
        else {
          deletedPaths.add(outputZip);
        }
        Path abiOut = context.getAbiOutputZip();
        if (abiOut != null) {
          if (Files.exists(abiOut)) {
            presentPaths.add(abiOut);
          }
          else {
            deletedPaths.add(abiOut);
          }
        }
        StorageManager.backupDependencies(context, deletedPaths, presentPaths);
      }
      catch (Throwable e) {
        LOG.log(Level.SEVERE, "Error saving build state " + context.getTargetName(), e);
        context.report(Message.create(null, e));
      }
    }
  }