[mpp] Migrate MissingNativeStdlibWarning to the new infra
This commit is contained in:
committed by
Space Team
parent
07142a4083
commit
05662eae7a
+3
-6
@@ -13,8 +13,7 @@ import org.jdom.input.SAXBuilder
|
|||||||
import org.jetbrains.kotlin.gradle.*
|
import org.jetbrains.kotlin.gradle.*
|
||||||
import org.jetbrains.kotlin.gradle.internals.DISABLED_NATIVE_TARGETS_REPORTER_DISABLE_WARNING_PROPERTY_NAME
|
import org.jetbrains.kotlin.gradle.internals.DISABLED_NATIVE_TARGETS_REPORTER_DISABLE_WARNING_PROPERTY_NAME
|
||||||
import org.jetbrains.kotlin.gradle.internals.DISABLED_NATIVE_TARGETS_REPORTER_WARNING_PREFIX
|
import org.jetbrains.kotlin.gradle.internals.DISABLED_NATIVE_TARGETS_REPORTER_WARNING_PREFIX
|
||||||
import org.jetbrains.kotlin.gradle.internals.NO_NATIVE_STDLIB_PROPERTY_WARNING
|
import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics
|
||||||
import org.jetbrains.kotlin.gradle.internals.NO_NATIVE_STDLIB_WARNING
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.NativeOutputKind
|
import org.jetbrains.kotlin.gradle.plugin.mpp.NativeOutputKind
|
||||||
import org.jetbrains.kotlin.gradle.testbase.*
|
import org.jetbrains.kotlin.gradle.testbase.*
|
||||||
import org.jetbrains.kotlin.gradle.util.modify
|
import org.jetbrains.kotlin.gradle.util.modify
|
||||||
@@ -937,8 +936,7 @@ class GeneralNativeIT : BaseGradleIT() {
|
|||||||
assertSuccessful()
|
assertSuccessful()
|
||||||
assertContains("User-provided Kotlin/Native distribution: $currentDir")
|
assertContains("User-provided Kotlin/Native distribution: $currentDir")
|
||||||
assertNotContains("Project property 'org.jetbrains.kotlin.native.home' is deprecated")
|
assertNotContains("Project property 'org.jetbrains.kotlin.native.home' is deprecated")
|
||||||
assertContains(NO_NATIVE_STDLIB_WARNING)
|
assertHasDiagnostic(KotlinToolingDiagnostics.NativeStdlibIsMissingDiagnostic, withSubstring = "kotlin.native.home")
|
||||||
assertContains(NO_NATIVE_STDLIB_PROPERTY_WARNING)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Deprecated property.
|
// Deprecated property.
|
||||||
@@ -946,8 +944,7 @@ class GeneralNativeIT : BaseGradleIT() {
|
|||||||
assertSuccessful()
|
assertSuccessful()
|
||||||
assertContains("User-provided Kotlin/Native distribution: $currentDir")
|
assertContains("User-provided Kotlin/Native distribution: $currentDir")
|
||||||
assertContains("Project property 'org.jetbrains.kotlin.native.home' is deprecated")
|
assertContains("Project property 'org.jetbrains.kotlin.native.home' is deprecated")
|
||||||
assertNotContains(NO_NATIVE_STDLIB_WARNING)
|
assertNoDiagnostic(KotlinToolingDiagnostics.NativeStdlibIsMissingDiagnostic)
|
||||||
assertNotContains(NO_NATIVE_STDLIB_PROPERTY_WARNING)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
build("tasks", "-Pkotlin.native.version=1.5.20") {
|
build("tasks", "-Pkotlin.native.version=1.5.20") {
|
||||||
|
|||||||
+8
@@ -27,4 +27,12 @@ object KotlinToolingDiagnostics {
|
|||||||
object CommonMainWithDependsOnDiagnostic : ToolingDiagnosticFactory(WARNING) {
|
object CommonMainWithDependsOnDiagnostic : ToolingDiagnosticFactory(WARNING) {
|
||||||
operator fun invoke() = build("commonMain can't declare dependsOn on other source sets")
|
operator fun invoke() = build("commonMain can't declare dependsOn on other source sets")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
object NativeStdlibIsMissingDiagnostic : ToolingDiagnosticFactory(WARNING) {
|
||||||
|
operator fun invoke(changedKotlinNativeHomeProperty: String?) = build(
|
||||||
|
"The Kotlin/Native distribution used in this build does not provide the standard library." +
|
||||||
|
" Make sure that the '$changedKotlinNativeHomeProperty' property points to a valid Kotlin/Native distribution."
|
||||||
|
.onlyIf(changedKotlinNativeHomeProperty != null)
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+30
@@ -0,0 +1,30 @@
|
|||||||
|
/*
|
||||||
|
* 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.gradle.plugin.diagnostics.checkers
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.commonizer.stdlib
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinGradleProjectChecker
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinGradleProjectCheckerContext
|
||||||
|
import org.jetbrains.kotlin.gradle.targets.native.internal.konanDistribution
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnosticsCollector
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
|
||||||
|
|
||||||
|
internal object MissingNativeStdlibChecker : KotlinGradleProjectChecker {
|
||||||
|
override fun KotlinGradleProjectCheckerContext.runChecks(collector: KotlinToolingDiagnosticsCollector) {
|
||||||
|
val targets = multiplatformExtension?.targets ?: return
|
||||||
|
if (targets.isEmpty() || // misconfigured project
|
||||||
|
targets.none { it is KotlinNativeTarget } || // no K/N targets
|
||||||
|
project.hasProperty("kotlin.native.nostdlib") || // suppressed
|
||||||
|
project.konanDistribution.stdlib.exists()
|
||||||
|
) return
|
||||||
|
|
||||||
|
collector.report(project, KotlinToolingDiagnostics.NativeStdlibIsMissingDiagnostic(
|
||||||
|
PropertiesProvider.KOTLIN_NATIVE_HOME.takeIf { kotlinPropertiesProvider.nativeHome != null }
|
||||||
|
))
|
||||||
|
}
|
||||||
|
}
|
||||||
+1
-6
@@ -21,17 +21,12 @@ import org.jetbrains.kotlin.gradle.plugin.sources.getVisibleSourceSetsFromAssoci
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.sources.internal
|
import org.jetbrains.kotlin.gradle.plugin.sources.internal
|
||||||
import org.jetbrains.kotlin.gradle.targets.metadata.findMetadataCompilation
|
import org.jetbrains.kotlin.gradle.targets.metadata.findMetadataCompilation
|
||||||
import org.jetbrains.kotlin.gradle.targets.metadata.isKotlinGranularMetadataEnabled
|
import org.jetbrains.kotlin.gradle.targets.metadata.isKotlinGranularMetadataEnabled
|
||||||
import org.jetbrains.kotlin.gradle.targets.native.internal.MissingNativeStdlibWarning.showMissingNativeStdlibWarning
|
|
||||||
import org.jetbrains.kotlin.gradle.utils.filesProvider
|
import org.jetbrains.kotlin.gradle.utils.filesProvider
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
internal fun Project.setupKotlinNativePlatformDependencies() {
|
internal fun Project.setupKotlinNativePlatformDependencies() {
|
||||||
val kotlin = multiplatformExtensionOrNull ?: return
|
val kotlin = multiplatformExtensionOrNull ?: return
|
||||||
|
|
||||||
if (!konanDistribution.stdlib.exists()) {
|
|
||||||
showMissingNativeStdlibWarning()
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isAllowCommonizer()) {
|
if (isAllowCommonizer()) {
|
||||||
checkNotNull(commonizeNativeDistributionTask) { "Missing commonizeNativeDistributionTask" }
|
checkNotNull(commonizeNativeDistributionTask) { "Missing commonizeNativeDistributionTask" }
|
||||||
}
|
}
|
||||||
@@ -106,7 +101,7 @@ private suspend fun Project.addDependencies(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private val Project.konanDistribution: KonanDistribution
|
internal val Project.konanDistribution: KonanDistribution
|
||||||
get() = KonanDistribution(project.file(konanHome))
|
get() = KonanDistribution(project.file(konanHome))
|
||||||
|
|
||||||
private fun File.listLibraryFiles(): List<File> = listFiles().orEmpty()
|
private fun File.listLibraryFiles(): List<File> = listFiles().orEmpty()
|
||||||
|
|||||||
-30
@@ -1,30 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2021 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.gradle.targets.native.internal
|
|
||||||
|
|
||||||
import org.gradle.api.Project
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
|
|
||||||
import org.jetbrains.kotlin.gradle.utils.SingleWarningPerBuild
|
|
||||||
|
|
||||||
internal object MissingNativeStdlibWarning {
|
|
||||||
const val NO_NATIVE_STDLIB_WARNING =
|
|
||||||
"The Kotlin/Native distribution used in this build does not provide the standard library. "
|
|
||||||
|
|
||||||
const val NO_NATIVE_STDLIB_PROPERTY_WARNING =
|
|
||||||
"Make sure that the '${PropertiesProvider.KOTLIN_NATIVE_HOME}' property points to a valid Kotlin/Native distribution."
|
|
||||||
|
|
||||||
fun Project.showMissingNativeStdlibWarning() {
|
|
||||||
if (!project.hasProperty("kotlin.native.nostdlib")) {
|
|
||||||
SingleWarningPerBuild.show(
|
|
||||||
project, buildString {
|
|
||||||
append(NO_NATIVE_STDLIB_WARNING)
|
|
||||||
if (PropertiesProvider(project).nativeHome != null)
|
|
||||||
append(NO_NATIVE_STDLIB_PROPERTY_WARNING)
|
|
||||||
}
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-5
@@ -11,8 +11,6 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinProjectStructureMetadata
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.MULTIPLATFORM_PROJECT_METADATA_JSON_FILE_NAME
|
import org.jetbrains.kotlin.gradle.plugin.mpp.MULTIPLATFORM_PROJECT_METADATA_JSON_FILE_NAME
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.parseKotlinSourceSetMetadataFromJson
|
import org.jetbrains.kotlin.gradle.plugin.mpp.parseKotlinSourceSetMetadataFromJson
|
||||||
import org.jetbrains.kotlin.gradle.targets.native.DisabledNativeTargetsReporter
|
import org.jetbrains.kotlin.gradle.targets.native.DisabledNativeTargetsReporter
|
||||||
import org.jetbrains.kotlin.gradle.targets.native.internal.MissingNativeStdlibWarning.NO_NATIVE_STDLIB_PROPERTY_WARNING
|
|
||||||
import org.jetbrains.kotlin.gradle.targets.native.internal.MissingNativeStdlibWarning.NO_NATIVE_STDLIB_WARNING
|
|
||||||
|
|
||||||
fun parseKotlinSourceSetMetadataFromJson(json: String): KotlinProjectStructureMetadata? = parseKotlinSourceSetMetadataFromJson(json)
|
fun parseKotlinSourceSetMetadataFromJson(json: String): KotlinProjectStructureMetadata? = parseKotlinSourceSetMetadataFromJson(json)
|
||||||
|
|
||||||
@@ -22,9 +20,6 @@ const val DISABLED_NATIVE_TARGETS_REPORTER_DISABLE_WARNING_PROPERTY_NAME = Disab
|
|||||||
|
|
||||||
const val DISABLED_NATIVE_TARGETS_REPORTER_WARNING_PREFIX: String = DisabledNativeTargetsReporter.WARNING_PREFIX
|
const val DISABLED_NATIVE_TARGETS_REPORTER_WARNING_PREFIX: String = DisabledNativeTargetsReporter.WARNING_PREFIX
|
||||||
|
|
||||||
const val NO_NATIVE_STDLIB_WARNING = NO_NATIVE_STDLIB_WARNING
|
|
||||||
const val NO_NATIVE_STDLIB_PROPERTY_WARNING = NO_NATIVE_STDLIB_PROPERTY_WARNING
|
|
||||||
|
|
||||||
val KOTLIN_12X_MPP_DEPRECATION_WARNING = KOTLIN_12X_MPP_DEPRECATION_WARNING
|
val KOTLIN_12X_MPP_DEPRECATION_WARNING = KOTLIN_12X_MPP_DEPRECATION_WARNING
|
||||||
|
|
||||||
const val VERBOSE_DIAGNOSTIC_SEPARATOR = DIAGNOSTIC_SEPARATOR
|
const val VERBOSE_DIAGNOSTIC_SEPARATOR = DIAGNOSTIC_SEPARATOR
|
||||||
|
|||||||
Reference in New Issue
Block a user