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));
}
}
}