[Gradle] Fix issues with EmbedAndSignUsedWithPodDependencies diagnostic

Emit diagnostic right after task graph had been formed instead of waiting for embedAndSign execution

(^KT-66445,^KT-66446) Verification Pending
This commit is contained in:
Artem Daugel-Dauge
2024-03-11 17:57:57 +01:00
committed by Space Team
parent 9851ff1905
commit 06960394b7
3 changed files with 57 additions and 11 deletions
@@ -17,7 +17,6 @@ import org.gradle.work.DisableCachingByDefault
import org.jetbrains.kotlin.gradle.dsl.KotlinNativeBinaryContainer
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.kotlinPropertiesProvider
import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics
import org.jetbrains.kotlin.gradle.plugin.diagnostics.UsesKotlinToolingDiagnostics
import org.jetbrains.kotlin.gradle.plugin.diagnostics.reportDiagnostic
import org.jetbrains.kotlin.gradle.plugin.mpp.Framework
import org.jetbrains.kotlin.gradle.plugin.mpp.NativeBuildType
@@ -374,4 +373,4 @@ internal abstract class FrameworkCopy : DefaultTask() {
}
@DisableCachingByDefault(because = "Caching breaks symlinks inside frameworks")
internal abstract class EmbedAndSignTask : FrameworkCopy(), UsesKotlinToolingDiagnostics
internal abstract class EmbedAndSignTask : FrameworkCopy()
@@ -813,19 +813,16 @@ open class KotlinCocoapodsPlugin : Plugin<Project> {
}
private fun checkEmbedAndSignNotUsedTogetherWithPodDependencies(project: Project, kotlinExtension: KotlinMultiplatformExtension, cocoapodsExtension: CocoapodsExtension) {
private fun checkEmbedAndSignNotUsedTogetherWithPodDependencies(project: Project, cocoapodsExtension: CocoapodsExtension) {
cocoapodsExtension.pods.all {
SingleActionPerProject.run(project, "assertEmbedAndSignNotUsedTogetherWithPodDependencies") {
kotlinExtension.targets.withType<KotlinNativeTarget>().all { target ->
target.binaries.withType<Framework>().all {
project.tasks.withType<EmbedAndSignTask>().all { embedAndSignTask ->
embedAndSignTask.doFirst {
embedAndSignTask.reportDiagnostic(CocoapodsPluginDiagnostics.EmbedAndSignUsedWithPodDependencies())
}
project.tasks.withType<EmbedAndSignTask>().all { embedAndSignTask ->
project.gradle.taskGraph.whenReady { taskGraph ->
if (taskGraph.hasTask(embedAndSignTask)) {
project.reportDiagnostic(CocoapodsPluginDiagnostics.EmbedAndSignUsedWithPodDependencies())
}
}
}
}
}
}
@@ -888,7 +885,7 @@ open class KotlinCocoapodsPlugin : Plugin<Project> {
createInterops(project, kotlinExtension, cocoapodsExtension)
configureLinkingOptions(project, cocoapodsExtension)
checkLinkOnlyNotUsedWithStaticFramework(project, cocoapodsExtension)
checkEmbedAndSignNotUsedTogetherWithPodDependencies(project, kotlinExtension, cocoapodsExtension)
checkEmbedAndSignNotUsedTogetherWithPodDependencies(project, cocoapodsExtension)
}
}