Fix cold metadata compilation when depending on interopBundle
diff --git a/idea/kotlin-gradle-tooling/src/KotlinCommonizerModelBuilder.kt b/idea/kotlin-gradle-tooling/src/KotlinCommonizerModelBuilder.kt
index 32a3ff8..60cb72e 100644
--- a/idea/kotlin-gradle-tooling/src/KotlinCommonizerModelBuilder.kt
+++ b/idea/kotlin-gradle-tooling/src/KotlinCommonizerModelBuilder.kt
@@ -6,7 +6,6 @@
 package org.jetbrains.kotlin.gradle
 
 import org.gradle.api.Project
-import org.gradle.api.logging.Logging
 import org.jetbrains.plugins.gradle.tooling.AbstractModelBuilderService
 import org.jetbrains.plugins.gradle.tooling.ErrorMessageBuilder
 import org.jetbrains.plugins.gradle.tooling.ModelBuilderContext
@@ -17,6 +16,7 @@
 class KotlinCommonizerModelBuilder : AbstractModelBuilderService() {
 
     companion object {
+        private const val INTEROP_BUNDLE_TASK_NAME = "buildInteropBundleKlib"
         private const val COMMONIZER_TASK_NAME = "runCommonizer"
         private const val COMMONIZER_SETUP_CLASS = "org.jetbrains.kotlin.gradle.targets.native.internal.KotlinNativePlatformDependenciesKt"
     }
@@ -47,6 +47,10 @@
                     tasks.add(COMMONIZER_TASK_NAME)
                     startParameter.setTaskNames(tasks)
                 }
+                if (project.tasks.findByName(INTEROP_BUNDLE_TASK_NAME) != null) {
+                    tasks.add(INTEROP_BUNDLE_TASK_NAME)
+                    startParameter.setTaskNames(startParameter.taskNames + INTEROP_BUNDLE_TASK_NAME)
+                }
             }
         } catch (e: Exception) {
             project.logger.error(
@@ -61,4 +65,4 @@
             project, e, "EnableCommonizerTask error"
         ).withDescription("Unable to create $COMMONIZER_TASK_NAME task.")
     }
-}
\ No newline at end of file
+}
diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt
index f4d7597..4d5d9a6 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt
@@ -460,11 +460,7 @@
                     dependencyCompilation?.output?.classesDirs.takeIf { hierarchySourceSet != sourceSet }
                 }
 
-                // TODO NOW: This is called during configuration time, which prevents initial artifact of being built!
                 val artifactView = fromFiles.incoming.artifactView { view ->
-                    view.attributes.attribute(
-                        COMMONIZER_TARGET_ATTRIBUTE, project.getCommonizerTarget(compilation)?.identityString ?: "**none**"
-                    )
                     view.componentFilter { id ->
                         allResolutionsByComponentId[id].let { resolutions ->
                             resolutions == null || resolutions.any { it !is MetadataDependencyResolution.ExcludeAsUnrequested }
@@ -472,8 +468,20 @@
                     }
                 }
 
+                val keepOriginalDependenciesOnlyArtifactView = fromFiles.incoming.artifactView { view ->
+                    view.attributes.attribute(
+                        COMMONIZER_TARGET_ATTRIBUTE, project.getCommonizerTarget(compilation)?.identityString ?: "**none**"
+                    )
+                    view.componentFilter { id ->
+                        allResolutionsByComponentId[id].let { resolutions ->
+                            resolutions != null && resolutions.all { it is MetadataDependencyResolution.KeepOriginalDependency }
+                        }
+                    }
+                }
+
                 mutableSetOf<Any /* File | FileCollection */>().apply {
                     addAll(dependsOnCompilationOutputs)
+                    add(keepOriginalDependenciesOnlyArtifactView.files)
                     artifactView.artifacts.forEach { artifact ->
                         val resolutions = allResolutionsByComponentId[artifact.id.componentIdentifier]
                         if (resolutions == null) {