From 980708e533cf1d42ae83f27e6286905e95f63320 Mon Sep 17 00:00:00 2001 From: Anton Lakotka Date: Tue, 14 Nov 2023 19:58:06 +0100 Subject: [PATCH] [Gradle] Check if host-specific metadata artifact exists for GMT In gradle metadata transformations for CInterops in composite builds it is possible that resolved artifact is not actually created. For example if host machine is not MacOS but composite build has projects with enabled Apple targets. So apple-specific tasks will be disabled but still configured and during dependency resolution its outputs will be provided in artifact view. We have already checked for cases when there is no resolved artifact. But apparently it is not enough, and it is important to check that file exists physically. ^KT-63197 Verification Pending --- .../kotlin/gradle/plugin/mpp/SourceSetVisibilityProvider.kt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/SourceSetVisibilityProvider.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/SourceSetVisibilityProvider.kt index 38d1664a1f1..c2665e7e54d 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/SourceSetVisibilityProvider.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/SourceSetVisibilityProvider.kt @@ -169,6 +169,11 @@ internal class SourceSetVisibilityProvider( ?.singleOrNull() ?: return@mapNotNull null + // It can happen that host-specific artifact is mentioned in resolve but it doesn't exist physically + // then again gracefully return null + val metadataArtifactFile = metadataArtifact.file + if (!metadataArtifactFile.exists()) return@mapNotNull null + sourceSetName to metadataArtifact.file }.toMap() }