diff --git a/build/tasks/src/org/jetbrains/intellij/build/logging/BuildMessageLogger.kt b/build/tasks/src/org/jetbrains/intellij/build/logging/BuildMessageLogger.kt index 50c137847076..e74a9adadbb6 100644 --- a/build/tasks/src/org/jetbrains/intellij/build/logging/BuildMessageLogger.kt +++ b/build/tasks/src/org/jetbrains/intellij/build/logging/BuildMessageLogger.kt @@ -2,6 +2,7 @@ package org.jetbrains.intellij.build.logging import org.jetbrains.annotations.ApiStatus +import org.jetbrains.intellij.build.BuildScriptsLoggedError abstract class BuildMessageLogger { abstract fun processMessage(message: LogMessage) @@ -35,9 +36,18 @@ class ConsoleBuildMessageLogger : BuildMessageLoggerBase() { } override fun processMessage(message: LogMessage) { - // reported by trace exporter - if (message.kind != LogMessage.Kind.BLOCK_STARTED && message.kind != LogMessage.Kind.BLOCK_FINISHED) { - super.processMessage(message) + when (message.kind) { + // reported by trace exporter + LogMessage.Kind.BLOCK_STARTED, LogMessage.Kind.BLOCK_FINISHED -> {} + // failing-fast upon a build problem + LogMessage.Kind.BUILD_PROBLEM -> throw BuildScriptsLoggedError(message.text) + LogMessage.Kind.COMPILATION_ERRORS -> { + check(message is CompilationErrorsLogMessage) { + "Unexpected compilation errors message type: ${message::class.java.canonicalName}" + } + throw BuildScriptsLoggedError(message.errorMessages.joinToString(prefix = "${message.text}:\n", separator = "\n")) + } + else -> super.processMessage(message) } } diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/BuildContext.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/BuildContext.kt index 87cbe9e55e46..1e1888b78fab 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/BuildContext.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/BuildContext.kt @@ -7,7 +7,6 @@ import kotlinx.collections.immutable.PersistentMap import kotlinx.collections.immutable.persistentMapOf import kotlinx.coroutines.CoroutineScope import kotlinx.serialization.Serializable -import org.jetbrains.intellij.build.dependencies.TeamCityHelper import org.jetbrains.intellij.build.io.DEFAULT_TIMEOUT import org.jetbrains.intellij.build.productRunner.IntellijProductRunner import org.jetbrains.intellij.build.telemetry.use @@ -185,14 +184,9 @@ suspend inline fun BuildContext.executeStep( throw e } catch (e: Throwable) { - if (TeamCityHelper.isUnderTeamCity) { - span.recordException(e) - options.buildStepListener.onFailure(stepId = stepId, failure = e, messages = messages) - null - } - else { - throw e - } + span.recordException(e) + options.buildStepListener.onFailure(stepId = stepId, failure = e, messages = messages) + null } finally { options.buildStepListener.onCompletion(stepId, messages) diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/logging/BuildMessagesImpl.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/logging/BuildMessagesImpl.kt index fea2f0916866..16f0cca7ee25 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/logging/BuildMessagesImpl.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/logging/BuildMessagesImpl.kt @@ -187,6 +187,9 @@ private class DebugLogger { } } +/** + * Used unconditionally by both [TeamCityBuildMessageLogger] and [ConsoleBuildMessageLogger] + */ private class PrintWriterBuildMessageLogger( private val output: StringBuilder, private val disposer: Consumer,