From 2a391f733009774927a801eb81e7ac9071d428a2 Mon Sep 17 00:00:00 2001 From: "Nataliya.Valtman" Date: Tue, 18 Apr 2023 03:49:29 +0200 Subject: [PATCH] Move kotlin-build-statistic project to :compiler --- build-common/build.gradle.kts | 4 +- build.gradle.kts | 4 +- buildSrc/src/main/kotlin/tasks.kt | 1 - .../kotlin-build-statistics}/build.gradle.kts | 21 +------ .../build/report/metrics/BuildAttribute.kt | 0 .../build/report/metrics/BuildAttributes.kt | 0 .../build/report/metrics/BuildMetrics.kt | 0 .../report/metrics/BuildMetricsReporter.kt | 0 .../metrics/BuildMetricsReporterImpl.kt | 0 .../report/metrics/BuildPerformanceMetric.kt | 0 .../report/metrics/BuildPerformanceMetrics.kt | 0 .../kotlin/build/report/metrics/BuildTime.kt | 0 .../kotlin/build/report/metrics/BuildTimes.kt | 0 .../metrics/DoNothingBuildMetricsReporter.kt | 0 .../kotlin/build/report/metrics/GcMetrics.kt | 0 .../kotlin/build/report/reportSettings.kt | 0 .../statistics}/CompileStatisticsData.kt | 14 ++--- .../report/statistics}/HttpReportService.kt | 26 ++++----- .../statistics}/file/FileReportService.kt | 26 ++++----- .../file/PlainTextBuildReportWriter.kt | 2 +- .../build/report/statistics}/file/Printer.kt | 2 +- .../report/statistics}/formattingUtils.kt | 4 +- .../org/jetbrains/kotlin/cli/common/utils.kt | 11 +--- .../build.gradle.kts | 3 +- .../jetbrains/kotlin/ir/backend/js/klib.kt | 3 +- .../kotlin/codegen/GenerationUtils.kt | 3 +- .../org/jetbrains/kotlin/util/WithLogger.kt | 13 +---- .../kotlin/library/SingleFileResolve.kt | 3 +- .../kotlin/compilerRunner/KotlinLogger.kt | 7 ++- gradle/verification-metadata.xml | 7 +-- .../kotlin/compilerRunner/JpsKotlinLogger.kt | 8 ++- .../kotlin/jps/build/KotlinBuilder.kt | 4 +- .../kotlin/jps/statistic/JpsLoggerAdapter.kt | 32 ----------- ...rvice.kt => JpsStatisticsReportService.kt} | 57 ++++++++----------- .../konan/KonanLibrariesResolveSupport.kt | 3 +- .../org/jetbrains/kotlin/cli/klib/main.kt | 3 +- .../build.gradle.kts | 2 +- .../gradle/BuildStatisticsWithKtorIT.kt | 2 +- .../kotlin-gradle-plugin/build.gradle.kts | 4 +- .../GradleKotlinCompilerWork.kt | 2 +- .../gradle/logging/GradleKotlinLogger.kt | 6 +- .../kotlin/gradle/logging/SL4JKotlinLogger.kt | 8 ++- .../gradle/report/BuildMetricsService.kt | 16 ++++-- .../gradle/report/BuildReportsService.kt | 27 ++++----- .../kotlin/gradle/report/GradleLogger.kt | 31 ---------- .../gradle/report/GradleLoggerAdapter.kt | 34 +++++++++++ .../gradle/report/TaskExecutionResult.kt | 2 +- .../gradle/report/data/BuildExecutionData.kt | 4 +- .../kotlin/gradle/report/reportDataUtil.kt | 4 +- .../kotlin/gradle/utils/cacheKlibUtils.kt | 3 +- .../kotlin/gradle/unitTests/ReportDataTest.kt | 2 +- .../kotlin/commonizer/cli/CliLoggerAdapter.kt | 4 +- settings.gradle | 3 +- 53 files changed, 166 insertions(+), 249 deletions(-) rename {kotlin-build-statistic => compiler/build-tools/kotlin-build-statistics}/build.gradle.kts (54%) rename {kotlin-build-statistic => compiler/build-tools/kotlin-build-statistics}/src/org/jetbrains/kotlin/build/report/metrics/BuildAttribute.kt (100%) rename {kotlin-build-statistic => compiler/build-tools/kotlin-build-statistics}/src/org/jetbrains/kotlin/build/report/metrics/BuildAttributes.kt (100%) rename {kotlin-build-statistic => compiler/build-tools/kotlin-build-statistics}/src/org/jetbrains/kotlin/build/report/metrics/BuildMetrics.kt (100%) rename {kotlin-build-statistic => compiler/build-tools/kotlin-build-statistics}/src/org/jetbrains/kotlin/build/report/metrics/BuildMetricsReporter.kt (100%) rename {kotlin-build-statistic => compiler/build-tools/kotlin-build-statistics}/src/org/jetbrains/kotlin/build/report/metrics/BuildMetricsReporterImpl.kt (100%) rename {kotlin-build-statistic => compiler/build-tools/kotlin-build-statistics}/src/org/jetbrains/kotlin/build/report/metrics/BuildPerformanceMetric.kt (100%) rename {kotlin-build-statistic => compiler/build-tools/kotlin-build-statistics}/src/org/jetbrains/kotlin/build/report/metrics/BuildPerformanceMetrics.kt (100%) rename {kotlin-build-statistic => compiler/build-tools/kotlin-build-statistics}/src/org/jetbrains/kotlin/build/report/metrics/BuildTime.kt (100%) rename {kotlin-build-statistic => compiler/build-tools/kotlin-build-statistics}/src/org/jetbrains/kotlin/build/report/metrics/BuildTimes.kt (100%) rename {kotlin-build-statistic => compiler/build-tools/kotlin-build-statistics}/src/org/jetbrains/kotlin/build/report/metrics/DoNothingBuildMetricsReporter.kt (100%) rename {kotlin-build-statistic => compiler/build-tools/kotlin-build-statistics}/src/org/jetbrains/kotlin/build/report/metrics/GcMetrics.kt (100%) rename {kotlin-build-statistic => compiler/build-tools/kotlin-build-statistics}/src/org/jetbrains/kotlin/build/report/reportSettings.kt (100%) rename {kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/statistic => compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/statistics}/CompileStatisticsData.kt (90%) rename {kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/statistic => compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/statistics}/HttpReportService.kt (79%) rename {kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/statistic => compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/statistics}/file/FileReportService.kt (93%) rename {kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/statistic => compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/statistics}/file/PlainTextBuildReportWriter.kt (96%) rename {kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/statistic => compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/statistics}/file/Printer.kt (96%) rename {kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/statistic => compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/statistics}/formattingUtils.kt (88%) rename compiler/{compiler-runner-unshaded => util}/src/org/jetbrains/kotlin/compilerRunner/KotlinLogger.kt (68%) delete mode 100644 jps/jps-plugin/src/org/jetbrains/kotlin/jps/statistic/JpsLoggerAdapter.kt rename jps/jps-plugin/src/org/jetbrains/kotlin/jps/statistic/{KotlinBuilderReportService.kt => JpsStatisticsReportService.kt} (71%) delete mode 100644 libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/GradleLogger.kt create mode 100644 libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/GradleLoggerAdapter.kt diff --git a/build-common/build.gradle.kts b/build-common/build.gradle.kts index f2cc7945b5f..8782e30f16c 100644 --- a/build-common/build.gradle.kts +++ b/build-common/build.gradle.kts @@ -19,14 +19,14 @@ dependencies { compileOnly(intellijCore()) compileOnly(commonDependency("org.jetbrains.intellij.deps:asm-all")) compileOnly(commonDependency("org.jetbrains.intellij.deps:trove4j")) - compileOnly(project(":kotlin-build-statistic")) + compileOnly(project(":compiler:build-tools:kotlin-build-statistics")) testCompileOnly(project(":compiler:cli-common")) testApi(projectTests(":compiler:tests-common")) testApi(commonDependency("junit:junit")) testApi(protobufFull()) testApi(kotlinStdlib()) - testImplementation(project(":kotlin-build-statistic")) + testImplementation(project(":compiler:build-tools:kotlin-build-statistics")) testImplementation(commonDependency("org.jetbrains.kotlin:kotlin-reflect")) { isTransitive = false } testImplementation("org.reflections:reflections:0.10.2") } diff --git a/build.gradle.kts b/build.gradle.kts index b538b5b3ba5..68e3b782f33 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -143,7 +143,7 @@ val commonCompilerModules = arrayOf( ":analysis:project-structure", ":analysis:kt-references", ":kotlin-build-common", - ":kotlin-build-statistic", + ":compiler:build-tools:kotlin-build-statistics", ).also { extra["commonCompilerModules"] = it } val firCompilerCoreModules = arrayOf( @@ -264,7 +264,7 @@ extra["kotlinJpsPluginMavenDependencies"] = listOf( ":kotlin-util-klib", ":kotlin-util-klib-metadata", ":native:kotlin-native-utils", - ":kotlin-build-statistic", + ":compiler:build-tools:kotlin-build-statistics", ) extra["kotlinJpsPluginMavenDependenciesNonTransitiveLibs"] = listOf( diff --git a/buildSrc/src/main/kotlin/tasks.kt b/buildSrc/src/main/kotlin/tasks.kt index 71a473a9e2c..08e10c87943 100644 --- a/buildSrc/src/main/kotlin/tasks.kt +++ b/buildSrc/src/main/kotlin/tasks.kt @@ -81,7 +81,6 @@ val kotlinGradlePluginAndItsRequired = arrayOf( ":native:kotlin-klib-commonizer-api", ":compiler:build-tools:kotlin-build-tools-api", ":compiler:build-tools:kotlin-build-tools-impl", - ":compiler:kotlin-build-statistic" ) fun Task.dependsOnKotlinGradlePluginInstall() { diff --git a/kotlin-build-statistic/build.gradle.kts b/compiler/build-tools/kotlin-build-statistics/build.gradle.kts similarity index 54% rename from kotlin-build-statistic/build.gradle.kts rename to compiler/build-tools/kotlin-build-statistics/build.gradle.kts index 65f2f83506c..7ee4f0968ba 100644 --- a/kotlin-build-statistic/build.gradle.kts +++ b/compiler/build-tools/kotlin-build-statistics/build.gradle.kts @@ -25,23 +25,4 @@ sourceSets { "test" { projectDefault() } } -publish() - -runtimeJar() -sourcesJar() -javadocJar() - -testsJar() - -projectTest(parallel = true) - -projectTest("testJUnit5", jUnitMode = JUnitMode.JUnit5, parallel = true) { - useJUnitPlatform() -} - -// 1.9 level breaks Kotlin Gradle plugins via changes in enums (KT-48872) -// We limit api and LV until KGP will stop using Kotlin compiler directly (KT-56574) -tasks.withType>().configureEach { - compilerOptions.apiVersion.value(GradleKotlinVersion.KOTLIN_1_8).finalizeValueOnRead() - compilerOptions.languageVersion.value(GradleKotlinVersion.KOTLIN_1_8).finalizeValueOnRead() -} +projectTest(jUnitMode = JUnitMode.JUnit5, parallel = true) diff --git a/kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/metrics/BuildAttribute.kt b/compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/metrics/BuildAttribute.kt similarity index 100% rename from kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/metrics/BuildAttribute.kt rename to compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/metrics/BuildAttribute.kt diff --git a/kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/metrics/BuildAttributes.kt b/compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/metrics/BuildAttributes.kt similarity index 100% rename from kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/metrics/BuildAttributes.kt rename to compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/metrics/BuildAttributes.kt diff --git a/kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/metrics/BuildMetrics.kt b/compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/metrics/BuildMetrics.kt similarity index 100% rename from kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/metrics/BuildMetrics.kt rename to compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/metrics/BuildMetrics.kt diff --git a/kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/metrics/BuildMetricsReporter.kt b/compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/metrics/BuildMetricsReporter.kt similarity index 100% rename from kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/metrics/BuildMetricsReporter.kt rename to compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/metrics/BuildMetricsReporter.kt diff --git a/kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/metrics/BuildMetricsReporterImpl.kt b/compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/metrics/BuildMetricsReporterImpl.kt similarity index 100% rename from kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/metrics/BuildMetricsReporterImpl.kt rename to compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/metrics/BuildMetricsReporterImpl.kt diff --git a/kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/metrics/BuildPerformanceMetric.kt b/compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/metrics/BuildPerformanceMetric.kt similarity index 100% rename from kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/metrics/BuildPerformanceMetric.kt rename to compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/metrics/BuildPerformanceMetric.kt diff --git a/kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/metrics/BuildPerformanceMetrics.kt b/compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/metrics/BuildPerformanceMetrics.kt similarity index 100% rename from kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/metrics/BuildPerformanceMetrics.kt rename to compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/metrics/BuildPerformanceMetrics.kt diff --git a/kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/metrics/BuildTime.kt b/compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/metrics/BuildTime.kt similarity index 100% rename from kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/metrics/BuildTime.kt rename to compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/metrics/BuildTime.kt diff --git a/kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/metrics/BuildTimes.kt b/compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/metrics/BuildTimes.kt similarity index 100% rename from kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/metrics/BuildTimes.kt rename to compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/metrics/BuildTimes.kt diff --git a/kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/metrics/DoNothingBuildMetricsReporter.kt b/compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/metrics/DoNothingBuildMetricsReporter.kt similarity index 100% rename from kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/metrics/DoNothingBuildMetricsReporter.kt rename to compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/metrics/DoNothingBuildMetricsReporter.kt diff --git a/kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/metrics/GcMetrics.kt b/compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/metrics/GcMetrics.kt similarity index 100% rename from kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/metrics/GcMetrics.kt rename to compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/metrics/GcMetrics.kt diff --git a/kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/reportSettings.kt b/compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/reportSettings.kt similarity index 100% rename from kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/reportSettings.kt rename to compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/reportSettings.kt diff --git a/kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/statistic/CompileStatisticsData.kt b/compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/statistics/CompileStatisticsData.kt similarity index 90% rename from kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/statistic/CompileStatisticsData.kt rename to compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/statistics/CompileStatisticsData.kt index 1cc7de22598..7ea239ce617 100644 --- a/kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/statistic/CompileStatisticsData.kt +++ b/compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/statistics/CompileStatisticsData.kt @@ -3,7 +3,7 @@ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.build.report.statistic +package org.jetbrains.kotlin.build.report.statistics import org.jetbrains.kotlin.build.report.metrics.BuildAttribute import org.jetbrains.kotlin.build.report.metrics.BuildPerformanceMetric @@ -66,18 +66,18 @@ enum class BuildDataType { } //Sensitive data. This object is used directly for statistic via http -data class GradleBuildStartParameters( +data class BuildStartParameters( val tasks: List, - val excludedTasks: Set, - val currentDir: String?, - val projectProperties: List, - val systemProperties: List, + val excludedTasks: Set = emptySet(), + val currentDir: String? = null, + val projectProperties: List = emptyList(), + val systemProperties: List = emptyList(), ) : java.io.Serializable //Sensitive data. This object is used directly for statistic via http data class BuildFinishStatisticsData( val projectName: String, - val startParameters: GradleBuildStartParameters, + val startParameters: BuildStartParameters, val buildUuid: String = "Unset", val label: String?, val totalTime: Long, diff --git a/kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/statistic/HttpReportService.kt b/compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/statistics/HttpReportService.kt similarity index 79% rename from kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/statistic/HttpReportService.kt rename to compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/statistics/HttpReportService.kt index 97d29cbf602..c8699e1a8e1 100644 --- a/kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/statistic/HttpReportService.kt +++ b/compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/statistics/HttpReportService.kt @@ -3,10 +3,10 @@ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.build.report.statistic +package org.jetbrains.kotlin.build.report.statistics import com.google.gson.Gson -import org.jetbrains.kotlin.util.Logger +import org.jetbrains.kotlin.compilerRunner.KotlinLogger import java.io.IOException import java.io.Serializable import java.net.HttpURLConnection @@ -14,31 +14,29 @@ import java.net.URL import java.util.* import kotlin.system.measureTimeMillis -interface HttpReportService { - fun sendData(data: Any, log: Logger) -} - -class HttpReportServiceImpl( +class HttpReportService( private val url: String, private val password: String?, private val user: String?, -) : HttpReportService, Serializable { +) : Serializable { private var invalidUrl = false private var requestPreviousFailed = false - private fun checkResponseAndLog(connection: HttpURLConnection, log: Logger) { + private fun checkResponseAndLog(connection: HttpURLConnection, log: KotlinLogger) { val isResponseBad = connection.responseCode !in 200..299 if (isResponseBad) { val message = "Failed to send statistic to ${connection.url} with ${connection.responseCode}: ${connection.responseMessage}" if (!requestPreviousFailed) { - log.warning(message) + log.warn(message) + } else { + log.debug(message) } requestPreviousFailed = true } } - override fun sendData(data: Any, log: Logger) { + fun sendData(data: Any, log: KotlinLogger) { val elapsedTime = measureTimeMillis { if (invalidUrl) { return @@ -46,7 +44,7 @@ class HttpReportServiceImpl( val connection = try { URL(url).openConnection() as HttpURLConnection } catch (e: IOException) { - log.warning("Unable to open connection to ${url}: ${e.message}") + log.warn("Unable to open connection to ${url}: ${e.message}") invalidUrl = true return } @@ -67,12 +65,12 @@ class HttpReportServiceImpl( connection.connect() checkResponseAndLog(connection, log) } catch (e: Exception) { - log.warning("Unexpected exception happened ${e.message}: ${e.stackTrace}") + log.warn("Unexpected exception happened ${e.message}: ${e.stackTrace}") checkResponseAndLog(connection, log) } finally { connection.disconnect() } } - log.log("Report statistic by http takes $elapsedTime ms") + log.debug("Report statistic by http takes $elapsedTime ms") } } diff --git a/kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/statistic/file/FileReportService.kt b/compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/statistics/file/FileReportService.kt similarity index 93% rename from kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/statistic/file/FileReportService.kt rename to compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/statistics/file/FileReportService.kt index 70f3852d09f..ecd1331344b 100644 --- a/kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/statistic/file/FileReportService.kt +++ b/compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/statistics/file/FileReportService.kt @@ -3,15 +3,13 @@ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.build.report.statistic.file +package org.jetbrains.kotlin.build.report.statistics.file import org.jetbrains.kotlin.build.report.metrics.* -import org.jetbrains.kotlin.build.report.statistic.asString -import org.jetbrains.kotlin.build.report.statistic.formatSize -import org.jetbrains.kotlin.build.report.statistic.formatTime -import org.jetbrains.kotlin.build.report.statistic.CompileStatisticsData -import org.jetbrains.kotlin.build.report.statistic.GradleBuildStartParameters -import org.jetbrains.kotlin.util.Logger +import org.jetbrains.kotlin.build.report.statistics.* +import org.jetbrains.kotlin.build.report.statistics.asString +import org.jetbrains.kotlin.build.report.statistics.formatTime +import org.jetbrains.kotlin.compilerRunner.KotlinLogger import java.io.File import java.io.Serializable import java.text.SimpleDateFormat @@ -20,7 +18,7 @@ import java.util.* class FileReportService( private val outputFile: File, private val printMetrics: Boolean, - private val logger: Logger + private val logger: KotlinLogger ) : Serializable { companion object { private val formatter = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss").also { it.timeZone = TimeZone.getTimeZone("UTC")} @@ -29,9 +27,9 @@ class FileReportService( projectName: String, includeMetricsInReport: Boolean, buildData: List, - startParameters: GradleBuildStartParameters, + startParameters: BuildStartParameters, failureMessages: List, - logger: Logger + logger: KotlinLogger ) { val ts = SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(Calendar.getInstance().time) val reportFile = buildReportDir.resolve("$projectName-build-$ts.txt") @@ -48,8 +46,8 @@ class FileReportService( fun process( statisticsData: List, - startParameters: GradleBuildStartParameters, - failureMessages: List + startParameters: BuildStartParameters, + failureMessages: List = emptyList() ) { val buildReportPath = outputFile.toPath().toUri().toString() try { @@ -72,7 +70,7 @@ class FileReportService( private fun printBuildReport( statisticsData: List, - startParameters: GradleBuildStartParameters, + startParameters: BuildStartParameters, failureMessages: List ) { // NOTE: BuildExecutionData / BuildOperationRecord contains data for both tasks and transforms. @@ -97,7 +95,7 @@ class FileReportService( printTasksLog(statisticsData) } - private fun printBuildInfo(startParameters: GradleBuildStartParameters, failureMessages: List) { + private fun printBuildInfo(startParameters: BuildStartParameters, failureMessages: List) { p.withIndent("Gradle start parameters:") { startParameters.let { p.println("tasks = ${it.tasks}") diff --git a/kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/statistic/file/PlainTextBuildReportWriter.kt b/compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/statistics/file/PlainTextBuildReportWriter.kt similarity index 96% rename from kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/statistic/file/PlainTextBuildReportWriter.kt rename to compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/statistics/file/PlainTextBuildReportWriter.kt index 9d37c959f2b..1ef56206a87 100644 --- a/kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/statistic/file/PlainTextBuildReportWriter.kt +++ b/compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/statistics/file/PlainTextBuildReportWriter.kt @@ -3,7 +3,7 @@ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.build.report.statistic.file +package org.jetbrains.kotlin.build.report.statistics.file import java.util.* import kotlin.math.max diff --git a/kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/statistic/file/Printer.kt b/compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/statistics/file/Printer.kt similarity index 96% rename from kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/statistic/file/Printer.kt rename to compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/statistics/file/Printer.kt index ccec16865b8..a103f18bfae 100644 --- a/kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/statistic/file/Printer.kt +++ b/compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/statistics/file/Printer.kt @@ -3,7 +3,7 @@ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.build.report.statistic.file +package org.jetbrains.kotlin.build.report.statistics.file import java.io.IOException diff --git a/kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/statistic/formattingUtils.kt b/compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/statistics/formattingUtils.kt similarity index 88% rename from kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/statistic/formattingUtils.kt rename to compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/statistics/formattingUtils.kt index cb769d6143f..c75f7b805d0 100644 --- a/kotlin-build-statistic/src/org/jetbrains/kotlin/build/report/statistic/formattingUtils.kt +++ b/compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/statistics/formattingUtils.kt @@ -3,7 +3,7 @@ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.build.report.statistic +package org.jetbrains.kotlin.build.report.statistics internal fun formatTime(ms: Long): String { val seconds = ms.toDouble() / 1_000 @@ -14,7 +14,7 @@ private const val kbSize = 1024 private const val mbSize = kbSize * 1024 private const val gbSize = mbSize * 1024 -public fun formatSize(sizeInBytes: Long): String = when { +fun formatSize(sizeInBytes: Long): String = when { sizeInBytes / gbSize >= 1 -> "${(sizeInBytes.toDouble() / gbSize).asString(1)} GB" sizeInBytes / mbSize >= 1 -> "${(sizeInBytes.toDouble() / mbSize).asString(1)} MB" sizeInBytes / kbSize >= 1 -> "${(sizeInBytes.toDouble() / kbSize).asString(1)} KB" diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/common/utils.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/common/utils.kt index a162182fa6a..96cd10ea6f7 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/common/utils.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/common/utils.kt @@ -26,12 +26,7 @@ import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.isSubpackageOf import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.util.Logger -import org.jetbrains.kotlin.utils.KotlinPaths -import java.io.ByteArrayOutputStream import java.io.File -import java.util.zip.ZipEntry -import java.util.zip.ZipFile -import java.util.zip.ZipOutputStream import kotlin.system.exitProcess fun incrementalCompilationIsEnabled(arguments: CommonCompilerArguments): Boolean { @@ -87,7 +82,7 @@ fun getLibraryFromHome( fun MessageCollector.toLogger(): Logger = object : Logger { - override fun error(message: String, throwable: Throwable?) { + override fun error(message: String) { report(CompilerMessageSeverity.ERROR, message) } @@ -103,9 +98,5 @@ fun MessageCollector.toLogger(): Logger = override fun log(message: String) { report(CompilerMessageSeverity.LOGGING, message) } - - override fun lifecycle(message: String) { - report(CompilerMessageSeverity.INFO, message) - } } diff --git a/compiler/incremental-compilation-impl/build.gradle.kts b/compiler/incremental-compilation-impl/build.gradle.kts index 79213542376..332ffe0e4ba 100644 --- a/compiler/incremental-compilation-impl/build.gradle.kts +++ b/compiler/incremental-compilation-impl/build.gradle.kts @@ -18,7 +18,7 @@ dependencies { api(project(":compiler:backend.jvm.entrypoint")) api(project(":kotlin-build-common")) api(project(":daemon-common")) - api(project(":kotlin-build-statistic")) + api(project(":compiler:build-tools:kotlin-build-statistics")) compileOnly(intellijCore()) testApi(commonDependency("junit:junit")) @@ -29,7 +29,6 @@ dependencies { testApi(intellijCore()) testApi(commonDependency("org.jetbrains.intellij.deps:log4j")) testApi(commonDependency("org.jetbrains.intellij.deps:jdom")) - testApi(projectTests(":kotlin-build-statistic")) testImplementation(commonDependency("com.google.code.gson:gson")) testRuntimeOnly(commonDependency("org.jetbrains.kotlin:kotlin-reflect")) { isTransitive = false } diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt index daca0a0a225..1bfd29e3679 100644 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt +++ b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt @@ -106,9 +106,8 @@ val CompilerConfiguration.resolverLogger: Logger null -> DummyLogger else -> object : Logger { override fun log(message: String) = messageLogger.report(IrMessageLogger.Severity.INFO, message, null) - override fun error(message: String, throwable: Throwable?) = messageLogger.report(IrMessageLogger.Severity.ERROR, message, null) + override fun error(message: String) = messageLogger.report(IrMessageLogger.Severity.ERROR, message, null) override fun warning(message: String) = messageLogger.report(IrMessageLogger.Severity.WARNING, message, null) - override fun lifecycle(message: String) = messageLogger.report(IrMessageLogger.Severity.INFO, message, null) override fun fatal(message: String): Nothing { messageLogger.report(IrMessageLogger.Severity.ERROR, message, null) diff --git a/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt b/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt index dbb86866f7a..482dab42f4e 100644 --- a/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt +++ b/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt @@ -175,9 +175,8 @@ object GenerationUtils { fun messageCollectorLogger(collector: MessageCollector) = object : Logger { override fun warning(message: String) = collector.report(CompilerMessageSeverity.STRONG_WARNING, message) - override fun error(message: String, throwable: Throwable?) = collector.report(CompilerMessageSeverity.ERROR, message) + override fun error(message: String) = collector.report(CompilerMessageSeverity.ERROR, message) override fun log(message: String) = collector.report(CompilerMessageSeverity.LOGGING, message) - override fun lifecycle(message: String) = collector.report(CompilerMessageSeverity.INFO, message) override fun fatal(message: String): Nothing { collector.report(CompilerMessageSeverity.ERROR, message) (collector as? GroupingMessageCollector)?.flush() diff --git a/compiler/util-io/src/org/jetbrains/kotlin/util/WithLogger.kt b/compiler/util-io/src/org/jetbrains/kotlin/util/WithLogger.kt index 9ce4c361921..df03ffc5863 100644 --- a/compiler/util-io/src/org/jetbrains/kotlin/util/WithLogger.kt +++ b/compiler/util-io/src/org/jetbrains/kotlin/util/WithLogger.kt @@ -4,10 +4,9 @@ import kotlin.system.exitProcess interface Logger { fun log(message: String) - fun error(message: String, throwable: Throwable? = null) + fun error(message: String) fun warning(message: String) fun fatal(message: String): Nothing - fun lifecycle(message: String) } interface WithLogger { @@ -16,18 +15,10 @@ interface WithLogger { object DummyLogger : Logger { override fun log(message: String) = println(message) - override fun error(message: String, throwable: Throwable?) { - println("e: $message") - throwable?.also { - println("${it.message}:\n${it.stackTraceToString()} ") - } - } - + override fun error(message: String) = println("e: $message") override fun warning(message: String) = println("w: $message") override fun fatal(message: String): Nothing { println("e: $message") exitProcess(1) } - - override fun lifecycle(message: String) = println("i: $message") } diff --git a/compiler/util-klib/src/org/jetbrains/kotlin/library/SingleFileResolve.kt b/compiler/util-klib/src/org/jetbrains/kotlin/library/SingleFileResolve.kt index 58c76296e61..fc7e3a562ec 100644 --- a/compiler/util-klib/src/org/jetbrains/kotlin/library/SingleFileResolve.kt +++ b/compiler/util-klib/src/org/jetbrains/kotlin/library/SingleFileResolve.kt @@ -16,10 +16,9 @@ fun resolveSingleFileKlib( libraryFile: File, logger: Logger = object : Logger { override fun log(message: String) {} - override fun error(message: String, throwable: Throwable?) = kotlin.error("e: $message") + override fun error(message: String) = kotlin.error("e: $message") override fun warning(message: String) {} override fun fatal(message: String) = kotlin.error("e: $message") - override fun lifecycle(message: String) {} }, strategy: SingleFileKlibResolveStrategy = CompilerSingleFileKlibResolveStrategy ): KotlinLibrary = strategy.resolve(libraryFile, logger) diff --git a/compiler/compiler-runner-unshaded/src/org/jetbrains/kotlin/compilerRunner/KotlinLogger.kt b/compiler/util/src/org/jetbrains/kotlin/compilerRunner/KotlinLogger.kt similarity index 68% rename from compiler/compiler-runner-unshaded/src/org/jetbrains/kotlin/compilerRunner/KotlinLogger.kt rename to compiler/util/src/org/jetbrains/kotlin/compilerRunner/KotlinLogger.kt index 1414ca8df87..ae7950c3546 100644 --- a/compiler/compiler-runner-unshaded/src/org/jetbrains/kotlin/compilerRunner/KotlinLogger.kt +++ b/compiler/util/src/org/jetbrains/kotlin/compilerRunner/KotlinLogger.kt @@ -1,14 +1,15 @@ /* - * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ package org.jetbrains.kotlin.compilerRunner interface KotlinLogger { - fun error(msg: String) + val isDebugEnabled: Boolean + fun error(msg: String, throwable: Throwable? = null) fun warn(msg: String) fun info(msg: String) fun debug(msg: String) - val isDebugEnabled: Boolean + fun lifecycle(msg: String) } \ No newline at end of file diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index b811c57a126..3e04f4fedbb 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -17,10 +17,9 @@ - + - @@ -46,8 +45,6 @@ - - @@ -64,6 +61,8 @@ + + diff --git a/jps/jps-plugin/src/org/jetbrains/kotlin/compilerRunner/JpsKotlinLogger.kt b/jps/jps-plugin/src/org/jetbrains/kotlin/compilerRunner/JpsKotlinLogger.kt index 47aacea901f..0d36a8d0ee1 100644 --- a/jps/jps-plugin/src/org/jetbrains/kotlin/compilerRunner/JpsKotlinLogger.kt +++ b/jps/jps-plugin/src/org/jetbrains/kotlin/compilerRunner/JpsKotlinLogger.kt @@ -19,8 +19,8 @@ package org.jetbrains.kotlin.compilerRunner import com.intellij.openapi.diagnostic.Logger internal class JpsKotlinLogger(private val log: Logger) : KotlinLogger { - override fun error(msg: String) { - log.error(msg) + override fun error(msg: String, throwable: Throwable?) { + log.error(msg, throwable) } override fun warn(msg: String) { @@ -35,6 +35,10 @@ internal class JpsKotlinLogger(private val log: Logger) : KotlinLogger { log.debug(msg) } + override fun lifecycle(msg: String) { + log.info(msg) + } + override val isDebugEnabled: Boolean get() = log.isDebugEnabled } \ No newline at end of file diff --git a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt index 2b2497803fb..50d11018dd6 100644 --- a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt +++ b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt @@ -42,7 +42,7 @@ import org.jetbrains.kotlin.jps.KotlinJpsBundle import org.jetbrains.kotlin.jps.incremental.JpsIncrementalCache import org.jetbrains.kotlin.jps.incremental.JpsLookupStorageManager import org.jetbrains.kotlin.jps.model.kotlinKind -import org.jetbrains.kotlin.jps.statistic.KotlinBuilderReportService +import org.jetbrains.kotlin.jps.statistic.JpsStatisticsReportService import org.jetbrains.kotlin.jps.targets.KotlinJvmModuleBuildTarget import org.jetbrains.kotlin.jps.targets.KotlinModuleBuildTarget import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader @@ -68,7 +68,7 @@ class KotlinBuilder : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR) { System.getProperty("kotlin.jps.classesToLoadByParent")?.split(',')?.map { it.trim() } ?: emptyList() private val classPrefixesToLoadByParentFromRegistry = System.getProperty("kotlin.jps.classPrefixesToLoadByParent")?.split(',')?.map { it.trim() } ?: emptyList() - private val reportService = KotlinBuilderReportService() + private val reportService = JpsStatisticsReportService() val classesToLoadByParent: ClassCondition get() = ClassCondition { className -> diff --git a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/statistic/JpsLoggerAdapter.kt b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/statistic/JpsLoggerAdapter.kt deleted file mode 100644 index 9854b42fa95..00000000000 --- a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/statistic/JpsLoggerAdapter.kt +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.jps.statistic - -import com.intellij.openapi.diagnostic.Logger - -class JpsLoggerAdapter(private val log: Logger) : org.jetbrains.kotlin.util.Logger { - - override fun log(message: String) { - log.info(message) - } - - override fun warning(message: String) { - log.warn(message) - } - - override fun fatal(message: String): Nothing { - log.error(message) - kotlin.error(message) - } - - override fun error(message: String, throwable: Throwable?) { - log.error(message, throwable) - } - - override fun lifecycle(message: String) { - log.info(message) - } -} \ No newline at end of file diff --git a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/statistic/KotlinBuilderReportService.kt b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/statistic/JpsStatisticsReportService.kt similarity index 71% rename from jps/jps-plugin/src/org/jetbrains/kotlin/jps/statistic/KotlinBuilderReportService.kt rename to jps/jps-plugin/src/org/jetbrains/kotlin/jps/statistic/JpsStatisticsReportService.kt index 81e8cdfccae..ca19fee5bb7 100644 --- a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/statistic/KotlinBuilderReportService.kt +++ b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/statistic/JpsStatisticsReportService.kt @@ -10,10 +10,9 @@ import org.jetbrains.jps.incremental.CompileContext import org.jetbrains.kotlin.build.report.FileReportSettings import org.jetbrains.kotlin.build.report.HttpReportSettings import org.jetbrains.kotlin.build.report.metrics.* -import org.jetbrains.kotlin.build.report.statistic.BuildDataType -import org.jetbrains.kotlin.build.report.statistic.CompileStatisticsData -import org.jetbrains.kotlin.build.report.statistic.HttpReportServiceImpl -import org.jetbrains.kotlin.build.report.statistic.file.FileReportService +import org.jetbrains.kotlin.build.report.statistics.* +import org.jetbrains.kotlin.build.report.statistics.file.FileReportService +import org.jetbrains.kotlin.compilerRunner.JpsKotlinLogger import java.io.File import java.util.* import java.net.InetAddress @@ -22,11 +21,11 @@ interface JpsBuilderMetricReporter : BuildMetricsReporter { fun flush(context: CompileContext): CompileStatisticsData } -//single thread execution +private const val jpsBuildTaskName = "JPS build" + class JpsBuilderMetricReporterImpl(private val reporter: BuildMetricsReporterImpl) : JpsBuilderMetricReporter, BuildMetricsReporter by reporter { companion object { - private val log = Logger.getInstance("#org.jetbrains.kotlin.jps.statistic.KotlinBuilderMetricImpl") private val hostName: String? = try { InetAddress.getLocalHost().hostName } catch (_: Exception) { @@ -38,24 +37,24 @@ class JpsBuilderMetricReporterImpl(private val reporter: BuildMetricsReporterImp private val uuid = UUID.randomUUID() private val startTime = System.currentTimeMillis() - override fun flush(context: CompileContext/*, listener: BuildListener*/): CompileStatisticsData { + override fun flush(context: CompileContext): CompileStatisticsData { val buildMetrics = reporter.getMetrics() return CompileStatisticsData( projectName = context.projectDescriptor.project.name, - label = "JPS build", //TODO - taskName = "JPS build", - taskResult = "Unknown",//TODO + label = "JPS build", //TODO will be updated in KT-58026 + taskName = jpsBuildTaskName, + taskResult = "Unknown",//TODO will be updated in KT-58026 startTimeMs = startTime, durationMs = System.currentTimeMillis() - startTime, tags = emptySet(), buildUuid = uuid.toString(), - changes = emptyList(), //TODO - kotlinVersion = "kotlin_version", //TODO + changes = emptyList(), //TODO will be updated in KT-58026 + kotlinVersion = "kotlin_version", //TODO will be updated in KT-58026 hostName = hostName, finishTime = System.currentTimeMillis(), buildTimesMetrics = buildMetrics.buildTimes.asMapMs(), performanceMetrics = buildMetrics.buildPerformanceMetrics.asMap(), - compilerArguments = emptyList(), //TODO + compilerArguments = emptyList(), //TODO will be updated in KT-58026 nonIncrementalAttributes = emptySet(), type = BuildDataType.JPS_DATA.name, fromKotlinPlugin = true, @@ -71,14 +70,10 @@ class JpsBuilderMetricReporterImpl(private val reporter: BuildMetricsReporterImp } // TODO test UserDataHolder in CompileContext to store CompileStatisticsData.Build or KotlinBuilderMetric -class KotlinBuilderReportService( - private val fileReportSettings: FileReportSettings?, - private val httpReportSettings: HttpReportSettings? -) { - constructor() : this( - initFileReportSettings(), - initHttpReportSettings(), - ) +class JpsStatisticsReportService { + + private val fileReportSettings: FileReportSettings? = initFileReportSettings() + private val httpReportSettings: HttpReportSettings? = initHttpReportSettings() companion object { private fun initFileReportSettings(): FileReportSettings? { @@ -97,8 +92,8 @@ class KotlinBuilderReportService( private val contextMetrics = HashMap() private val log = Logger.getInstance("#org.jetbrains.kotlin.jps.statistic.KotlinBuilderReportService") - private val loggerAdapter = JpsLoggerAdapter(log) - private val httpService = httpReportSettings?.let { HttpReportServiceImpl(it.url, it.user, it.password) } + private val loggerAdapter = JpsKotlinLogger(log) + private val httpService = httpReportSettings?.let { HttpReportService(it.url, it.user, it.password) } fun buildStarted(context: CompileContext) { if (contextMetrics[context] != null) { log.error("Service already initialized for context") @@ -113,17 +108,13 @@ class KotlinBuilderReportService( return } - httpService?.sendData(metrics.flush(context), loggerAdapter) - fileReportSettings?.also { FileReportService(it.buildReportDir, true, loggerAdapter) } - } - - fun addMetric(context: CompileContext, metric: BuildTime, value: Long) { - val metrics = contextMetrics[context] - if (metrics == null) { - log.error("Service hasn't initialized for context") - return + val compileStatisticsData = metrics.flush(context) + httpService?.sendData(compileStatisticsData, loggerAdapter) + fileReportSettings?.also { + FileReportService(it.buildReportDir, true, loggerAdapter) + .process(listOf(compileStatisticsData), + BuildStartParameters(tasks = listOf(jpsBuildTaskName))) } - metrics.addTimeMetricNs(metric, value) } } diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanLibrariesResolveSupport.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanLibrariesResolveSupport.kt index 9f6f19303d6..5ff733af5f4 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanLibrariesResolveSupport.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanLibrariesResolveSupport.kt @@ -38,13 +38,12 @@ class KonanLibrariesResolveSupport( object : Logger { private val collector = configuration.getNotNull(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY) override fun warning(message: String)= collector.report(CompilerMessageSeverity.STRONG_WARNING, message) - override fun error(message: String, throwable: Throwable?) = collector.report(CompilerMessageSeverity.ERROR, message) + override fun error(message: String) = collector.report(CompilerMessageSeverity.ERROR, message) override fun log(message: String) = collector.report(CompilerMessageSeverity.LOGGING, message) override fun fatal(message: String): Nothing { collector.report(CompilerMessageSeverity.ERROR, message) throw KonanCompilationException() } - override fun lifecycle(message: String) =collector.report(CompilerMessageSeverity.LOGGING, message) } private val resolver = defaultResolver( diff --git a/kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/main.kt b/kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/main.kt index 2c03e1c6433..08385bcbcfa 100644 --- a/kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/main.kt +++ b/kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/main.kt @@ -88,10 +88,9 @@ fun error(text: String): Nothing { object KlibToolLogger : Logger { override fun warning(message: String) = org.jetbrains.kotlin.cli.klib.warn(message) - override fun error(message: String, throwable: Throwable?) = org.jetbrains.kotlin.cli.klib.warn(message) + override fun error(message: String) = org.jetbrains.kotlin.cli.klib.warn(message) override fun fatal(message: String) = org.jetbrains.kotlin.cli.klib.error(message) override fun log(message: String) = println(message) - override fun lifecycle(message: String) = println(message) } val defaultRepository = File(DependencyProcessor.localKonanDir.resolve("klib").absolutePath) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts index 291e220bba1..9ee2058e25e 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts @@ -74,7 +74,7 @@ dependencies { testImplementation(project(":kotlin-compiler-embeddable")) testImplementation(commonDependency("org.jetbrains.intellij.deps:jdom")) testImplementation(project(":compiler:cli-common")) - testImplementation(project(":kotlin-build-statistic")) + testImplementation(project(":compiler:build-tools:kotlin-build-statistics")) // testCompileOnly dependency on non-shaded artifacts is needed for IDE support // testRuntimeOnly on shaded artifact is needed for running tests with shaded compiler testCompileOnly(project(":kotlin-gradle-plugin-test-utils-embeddable")) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BuildStatisticsWithKtorIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BuildStatisticsWithKtorIT.kt index 0c706d486ab..9af5ac93385 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BuildStatisticsWithKtorIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BuildStatisticsWithKtorIT.kt @@ -18,7 +18,7 @@ import io.ktor.server.netty.* import io.ktor.util.* import io.ktor.util.collections.* import org.gradle.util.GradleVersion -import org.jetbrains.kotlin.build.report.statistic.* +import org.jetbrains.kotlin.build.report.statistics.* import org.jetbrains.kotlin.gradle.report.BuildReportType import org.jetbrains.kotlin.gradle.testbase.* import org.junit.jupiter.api.DisplayName diff --git a/libraries/tools/kotlin-gradle-plugin/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin/build.gradle.kts index 850ab169b19..4a0b8bd4fa9 100644 --- a/libraries/tools/kotlin-gradle-plugin/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin/build.gradle.kts @@ -52,12 +52,14 @@ dependencies { commonCompileOnly(intellijCore()) commonCompileOnly(commonDependency("org.jetbrains.teamcity:serviceMessages")) commonCompileOnly("com.gradle:gradle-enterprise-gradle-plugin:3.12.4") + commonCompileOnly(commonDependency("com.google.code.gson:gson")) commonCompileOnly(commonDependency("com.google.guava:guava")) commonCompileOnly("de.undercouch:gradle-download-task:4.1.1") commonCompileOnly("com.github.gundy:semver4j:0.16.4:nodeps") { exclude(group = "*") } commonCompileOnly(project(":kotlin-tooling-metadata")) + commonCompileOnly(project(":compiler:build-tools:kotlin-build-statistics")) commonImplementation(project(":kotlin-gradle-plugin-idea")) @@ -66,7 +68,6 @@ dependencies { commonImplementation(project(":native:kotlin-klib-commonizer-api")) commonImplementation(project(":kotlin-project-model")) commonImplementation(project(":compiler:build-tools:kotlin-build-tools-api")) - commonImplementation(project(":kotlin-build-statistic")) commonRuntimeOnly(project(":kotlin-compiler-embeddable")) commonRuntimeOnly(project(":kotlin-annotation-processing-embeddable")) @@ -111,7 +112,6 @@ dependencies { testImplementation(commonDependency("junit:junit")) testImplementation(project(":kotlin-gradle-statistics")) testImplementation(project(":kotlin-tooling-metadata")) - testImplementation(projectTests(":kotlin-build-statistic")) } configurations.commonCompileClasspath.get().exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-core") diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerWork.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerWork.kt index ef75034450b..b6087c8a446 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerWork.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerWork.kt @@ -15,7 +15,7 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinVersion import org.jetbrains.kotlin.gradle.logging.* import org.jetbrains.kotlin.gradle.plugin.internal.state.TaskExecutionResults import org.jetbrains.kotlin.gradle.plugin.internal.state.TaskLoggers -import org.jetbrains.kotlin.build.report.statistic.StatTag +import org.jetbrains.kotlin.build.report.statistics.StatTag import org.jetbrains.kotlin.gradle.report.* import org.jetbrains.kotlin.gradle.tasks.KotlinCompilerExecutionStrategy import org.jetbrains.kotlin.gradle.tasks.cleanOutputsAndLocalState diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/logging/GradleKotlinLogger.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/logging/GradleKotlinLogger.kt index 9b16c98027d..c0e2813df54 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/logging/GradleKotlinLogger.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/logging/GradleKotlinLogger.kt @@ -13,8 +13,8 @@ internal class GradleKotlinLogger(private val log: Logger) : KotlinLogger { log.debug(msg) } - override fun error(msg: String) { - log.error(msg) + override fun error(msg: String, throwable: Throwable?) { + log.error(msg, throwable) } override fun info(msg: String) { @@ -25,7 +25,7 @@ internal class GradleKotlinLogger(private val log: Logger) : KotlinLogger { log.warn(msg) } - fun lifecycle(msg: String) { + override fun lifecycle(msg: String) { log.lifecycle(msg) } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/logging/SL4JKotlinLogger.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/logging/SL4JKotlinLogger.kt index 0ca405c027d..fe4a80f1883 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/logging/SL4JKotlinLogger.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/logging/SL4JKotlinLogger.kt @@ -13,8 +13,12 @@ internal class SL4JKotlinLogger(private val log: Logger) : KotlinLogger { log.debug(msg) } - override fun error(msg: String) { - log.error(msg) + override fun lifecycle(msg: String) { + log.info(msg) + } + + override fun error(msg: String, throwable: Throwable?) { + log.error(msg, throwable) } override fun info(msg: String) { diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/BuildMetricsService.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/BuildMetricsService.kt index 1f01c34f164..7707f56b745 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/BuildMetricsService.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/BuildMetricsService.kt @@ -26,13 +26,12 @@ import org.jetbrains.kotlin.build.report.metrics.BuildMetrics import org.jetbrains.kotlin.build.report.metrics.BuildMetricsReporter import org.jetbrains.kotlin.build.report.metrics.BuildPerformanceMetric import org.jetbrains.kotlin.build.report.metrics.BuildTime -import org.jetbrains.kotlin.build.report.statistic.HttpReportService -import org.jetbrains.kotlin.build.report.statistic.HttpReportServiceImpl +import org.jetbrains.kotlin.build.report.statistics.HttpReportService import org.jetbrains.kotlin.gradle.plugin.BuildEventsListenerRegistryHolder import org.jetbrains.kotlin.gradle.plugin.getKotlinPluginVersion import org.jetbrains.kotlin.gradle.plugin.internal.state.TaskExecutionResults -import org.jetbrains.kotlin.build.report.statistic.GradleBuildStartParameters -import org.jetbrains.kotlin.build.report.statistic.StatTag +import org.jetbrains.kotlin.build.report.statistics.BuildStartParameters +import org.jetbrains.kotlin.build.report.statistics.StatTag import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService import org.jetbrains.kotlin.gradle.report.BuildReportsService.Companion.getStartParameters import org.jetbrains.kotlin.gradle.report.data.BuildOperationRecord @@ -45,6 +44,7 @@ import org.jetbrains.kotlin.statistics.metrics.NumericalMetrics import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.ConcurrentLinkedQueue import org.jetbrains.kotlin.gradle.dsl.KotlinVersion +import java.lang.management.ManagementFactory internal interface UsesBuildMetricsService : Task { @get:Internal @@ -55,7 +55,7 @@ abstract class BuildMetricsService : BuildService + val startParameters: Property val reportingSettings: Property val httpService: Property @@ -204,7 +204,7 @@ abstract class BuildMetricsService : BuildService it.parameters.httpService.set( - HttpReportServiceImpl( + HttpReportService( httpSettings.url, httpSettings.user, httpSettings.password @@ -265,6 +265,10 @@ abstract class BuildMetricsService : BuildService, val buildOperationRecord: Collection ) { diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/reportDataUtil.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/reportDataUtil.kt index aca93f12076..cf5e73b9142 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/reportDataUtil.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/reportDataUtil.kt @@ -10,8 +10,8 @@ import org.gradle.tooling.events.task.TaskFinishEvent import org.gradle.tooling.events.task.TaskSkippedResult import org.gradle.tooling.events.task.TaskSuccessResult import org.jetbrains.kotlin.build.report.metrics.* -import org.jetbrains.kotlin.build.report.statistic.CompileStatisticsData -import org.jetbrains.kotlin.build.report.statistic.StatTag +import org.jetbrains.kotlin.build.report.statistics.CompileStatisticsData +import org.jetbrains.kotlin.build.report.statistics.StatTag import org.jetbrains.kotlin.gradle.report.data.BuildOperationRecord import org.jetbrains.kotlin.incremental.ChangedFiles import java.util.concurrent.TimeUnit diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/cacheKlibUtils.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/cacheKlibUtils.kt index ba4d9c7039e..8cc0462ca15 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/cacheKlibUtils.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/cacheKlibUtils.kt @@ -115,9 +115,8 @@ internal fun getAllDependencies(dependency: ResolvedDependencyResult): Set