[mpp] Migrate MissingNativeStdlibWarning to the new infra
This commit is contained in:
committed by
Space Team
parent
07142a4083
commit
05662eae7a
+4
-7
@@ -13,8 +13,7 @@ import org.jdom.input.SAXBuilder
|
||||
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_WARNING_PREFIX
|
||||
import org.jetbrains.kotlin.gradle.internals.NO_NATIVE_STDLIB_PROPERTY_WARNING
|
||||
import org.jetbrains.kotlin.gradle.internals.NO_NATIVE_STDLIB_WARNING
|
||||
import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.NativeOutputKind
|
||||
import org.jetbrains.kotlin.gradle.testbase.*
|
||||
import org.jetbrains.kotlin.gradle.util.modify
|
||||
@@ -937,8 +936,7 @@ class GeneralNativeIT : BaseGradleIT() {
|
||||
assertSuccessful()
|
||||
assertContains("User-provided Kotlin/Native distribution: $currentDir")
|
||||
assertNotContains("Project property 'org.jetbrains.kotlin.native.home' is deprecated")
|
||||
assertContains(NO_NATIVE_STDLIB_WARNING)
|
||||
assertContains(NO_NATIVE_STDLIB_PROPERTY_WARNING)
|
||||
assertHasDiagnostic(KotlinToolingDiagnostics.NativeStdlibIsMissingDiagnostic, withSubstring = "kotlin.native.home")
|
||||
}
|
||||
|
||||
// Deprecated property.
|
||||
@@ -946,8 +944,7 @@ class GeneralNativeIT : BaseGradleIT() {
|
||||
assertSuccessful()
|
||||
assertContains("User-provided Kotlin/Native distribution: $currentDir")
|
||||
assertContains("Project property 'org.jetbrains.kotlin.native.home' is deprecated")
|
||||
assertNotContains(NO_NATIVE_STDLIB_WARNING)
|
||||
assertNotContains(NO_NATIVE_STDLIB_PROPERTY_WARNING)
|
||||
assertNoDiagnostic(KotlinToolingDiagnostics.NativeStdlibIsMissingDiagnostic)
|
||||
}
|
||||
|
||||
build("tasks", "-Pkotlin.native.version=1.5.20") {
|
||||
@@ -1244,4 +1241,4 @@ class GeneralNativeIT : BaseGradleIT() {
|
||||
check: (Map<String, String>) -> Unit
|
||||
) = taskPaths.forEach { taskPath -> check(extractNativeCustomEnvironment(taskPath, toolName)) }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+8
@@ -27,4 +27,12 @@ object KotlinToolingDiagnostics {
|
||||
object CommonMainWithDependsOnDiagnostic : ToolingDiagnosticFactory(WARNING) {
|
||||
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.targets.metadata.findMetadataCompilation
|
||||
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 java.io.File
|
||||
|
||||
internal fun Project.setupKotlinNativePlatformDependencies() {
|
||||
val kotlin = multiplatformExtensionOrNull ?: return
|
||||
|
||||
if (!konanDistribution.stdlib.exists()) {
|
||||
showMissingNativeStdlibWarning()
|
||||
}
|
||||
|
||||
if (isAllowCommonizer()) {
|
||||
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))
|
||||
|
||||
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.parseKotlinSourceSetMetadataFromJson
|
||||
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)
|
||||
|
||||
@@ -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 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
|
||||
|
||||
const val VERBOSE_DIAGNOSTIC_SEPARATOR = DIAGNOSTIC_SEPARATOR
|
||||
|
||||
Reference in New Issue
Block a user