[Gradle][MPP] Don't save library dependency versions in KLIB manifest
^KT-62515
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/MppKlibResolverInsideCompilerIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/MppKlibResolverInsideCompilerIT.kt
new file mode 100644
index 0000000..51807bd
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/MppKlibResolverInsideCompilerIT.kt
@@ -0,0 +1,98 @@
+/*
+ * 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.mpp
+
+import org.gradle.util.GradleVersion
+import org.jetbrains.kotlin.gradle.testbase.*
+import org.jetbrains.kotlin.gradle.util.replaceText
+import org.jetbrains.kotlin.konan.file.file
+import org.jetbrains.kotlin.konan.file.withZipFileSystem
+import org.jetbrains.kotlin.konan.properties.loadProperties
+import org.jetbrains.kotlin.library.KLIB_PROPERTY_DEPENDENCY_VERSION
+import org.junit.jupiter.api.DisplayName
+import org.junit.jupiter.api.io.TempDir
+import java.io.File
+import java.nio.file.Path
+import kotlin.test.assertTrue
+import org.jetbrains.kotlin.konan.file.File as KFile
+
+@MppGradlePluginTests
+@DisplayName("Tests for KLIB resolver inside the Kotlin compiler")
+@GradleTestVersions(maxVersion = TestVersions.Gradle.G_8_2)
+class MppKlibResolverInsideCompilerIT : KGPBaseTest() {
+ @GradleTest
+ @GradleTestVersions(minVersion = TestVersions.Gradle.G_7_0, maxVersion = TestVersions.Gradle.G_8_2)
+ fun `test (with C-interop) - KT-62515()`(gradleVersion: GradleVersion, @TempDir tempDir: Path) {
+ buildProjects(
+ baseDir = "mpp-klib-resolver-inside-compiler/with-cinterop",
+ tempDir, gradleVersion
+ )
+ }
+
+ @GradleTest
+ @GradleTestVersions(minVersion = TestVersions.Gradle.G_7_0, maxVersion = TestVersions.Gradle.G_8_2)
+ fun `test (without C-interop) - KT-62515()`(gradleVersion: GradleVersion, @TempDir tempDir: Path) {
+ buildProjects(
+ baseDir = "mpp-klib-resolver-inside-compiler/without-cinterop",
+ tempDir, gradleVersion
+ )
+ }
+
+ private fun createLocalRepo(tempDir: Path): File {
+ val localRepo = File(tempDir.resolve("local-repo").toAbsolutePath().toString())
+ localRepo.mkdirs()
+ return localRepo
+ }
+
+ private fun buildProject(
+ baseDir: String,
+ projectName: String,
+ gradleVersion: GradleVersion,
+ localRepo: File,
+ buildTask: String = "publish",
+ ) {
+ project("$baseDir/$projectName", gradleVersion) {
+ buildGradleKts.toFile().replaceText("<localRepo>", localRepo.absolutePath)
+ build(buildTask)
+ }
+ }
+
+ private fun buildProjects(baseDir: String, tempDir: Path, gradleVersion: GradleVersion) {
+ val localRepo = createLocalRepo(tempDir)
+
+ buildProject(baseDir, "liba-v1", gradleVersion, localRepo)
+ buildProject(baseDir, "liba-v2", gradleVersion, localRepo)
+ buildProject(baseDir, "libb", gradleVersion, localRepo)
+ buildProject(baseDir, "libc", gradleVersion, localRepo)
+
+ // Make sure there are no `dependency_version_<name>=` properties with non-`unspecified` values in the manifest file:
+ localRepo.walkTopDown().forEach { file ->
+ if (file.isFile && file.extension == "klib") {
+ val specifiedDependencyVersions: Map<String, String> = KFile(file.absolutePath).withZipFileSystem {
+ it.file("default/manifest")
+ .loadProperties()
+ .entries
+ .mapNotNull { (key, value) ->
+ val keyStr = key.toString()
+ if (!keyStr.startsWith(KLIB_PROPERTY_DEPENDENCY_VERSION)) return@mapNotNull null
+
+ val valueStr = value.toString()
+ if (valueStr == "unspecified") return@mapNotNull null
+
+ keyStr to valueStr
+ }.toMap()
+ }
+
+ assertTrue(
+ specifiedDependencyVersions.isEmpty(),
+ "There are specific library versions in the manifest of the library $file:\n${specifiedDependencyVersions.entries.sortedBy { it.key }}"
+ )
+ }
+ }
+
+ buildProject(baseDir, "app", gradleVersion, localRepo, buildTask = "assemble")
+ }
+}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/build.gradle.kts
new file mode 100644
index 0000000..0f705d9
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/build.gradle.kts
@@ -0,0 +1,40 @@
+
+plugins {
+ id("org.jetbrains.kotlin.test.fixes.android")
+
+ id("multiplatform")
+ `maven-publish`
+}
+
+group = "org.sample.kt-62515"
+version = 1.0
+
+val repo: File = file("/var/folders/q8/48_9m22114j5bnyj3vwqd9_80000kt/T/junit3978468624971142152/local-repo")
+
+repositories {
+ mavenCentral()
+ mavenLocal()
+}
+
+publishing {
+ repositories {
+ maven { url = uri(repo) }
+ }
+}
+
+kotlin {
+ macosArm64 {
+ compilations.getByName("main") {
+ cinterops {
+ val liba by creating
+ }
+ }
+ }
+ linuxArm64 {
+ compilations.getByName("main") {
+ cinterops {
+ val liba by creating
+ }
+ }
+ }
+}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonMain.kotlin/a.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonMain.kotlin/a.kt
new file mode 100644
index 0000000..7b84a36
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonMain.kotlin/a.kt
@@ -0,0 +1,3 @@
+fun a() {
+ println("a:1.0")
+}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/gradle.properties b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/gradle.properties
new file mode 100644
index 0000000..988c0e8
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/gradle.properties
@@ -0,0 +1,7 @@
+org.gradle.jvmargs=-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath="/Users/Dmitriy.Dolovov/work/kotlin/libraries/tools/kotlin-gradle-plugin-integration-tests/build"
+
+
+cacheRedirectorEnabled=true
+
+
+ test.fixes.android.debugKeystore=/Users/Dmitriy.Dolovov/work/kotlin/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/common/debug.keystore
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/gradle/cache-redirector.settings.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/gradle/cache-redirector.settings.gradle.kts
new file mode 100644
index 0000000..2bf5af9
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/gradle/cache-redirector.settings.gradle.kts
@@ -0,0 +1,353 @@
+import java.net.URI
+import org.gradle.util.GradleVersion
+
+/*
+ * Copyright 2010-2022 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.
+ */
+
+// Apply this settings script in the project settings.gradle following way:
+// pluginManagement {
+// apply from: 'cache-redirector.settings.gradle.kts'
+// }
+
+// This script is also being used in the Gradle integration tests which runs older Gradle versions
+fun <T : Any> Provider<T>.forUseAtConfigurationTimeCompat(): Provider<T> =
+ if (GradleVersion.current() < GradleVersion.version("7.4")) {
+ @Suppress("DEPRECATION")
+ forUseAtConfigurationTime()
+ } else {
+ this
+ }
+
+internal val Settings.cacheRedirectorEnabled: Provider<Boolean>
+ get() = providers
+ .gradleProperty("cacheRedirectorEnabled")
+ .forUseAtConfigurationTimeCompat()
+ .map { it.toBoolean() }
+ .orElse(false)
+
+// Repository override section
+
+/**
+ * The list of repositories supported by cache redirector should be synced with the "Table of redirects" at https://cache-redirector.jetbrains.com
+ * To add a repository to the list create an issue in ADM project (example issue https://youtrack.jetbrains.com/issue/IJI-149)
+ * Or send a merge request to https://jetbrains.team/p/iji/repositories/Cache-Redirector/files/64b69490c54a2a900bb3dd21471f942270289a12/images/config-gen/src/main/kotlin/Config.kt
+ */
+val cacheMap: Map<String, String> = mapOf(
+ "https://cache-redirector.jetbrains.com/teamcity-rest-client" to "https://cache-redirector.jetbrains.com/jetbrains.bintray.com/teamcity-rest-client",
+ "https://cache-redirector.jetbrains.com/wormhole" to "https://cache-redirector.jetbrains.com/jetbrains.bintray.com/wormhole",
+ "https://dl35a2bc3xf3g.cloudfront.net/rplugin" to "https://cache-redirector.jetbrains.com/jetbrains.bintray.com/rplugin",
+ "https://dl35a2bc3xf3g.cloudfront.net/shellcheck/org/jetbrains/intellij/deps/shellcheck" to "https://cache-redirector.jetbrains.com/jetbrains.bintray.com/intellij-third-party-dependencies/org/jetbrains/intellij/deps/shellcheck",
+ "https://dl35a2bc3xf3g.cloudfront.net/shellcheck/org/jetbrains/intellij/deps/shellcheck" to "https://cache-redirector.jetbrains.com/intellij-third-party-dependencies/org/jetbrains/intellij/deps/shellcheck",
+ "https://dl35a2bc3xf3g.cloudfront.net/recommenders-java/com/jetbrains/recommmenders/java" to "https://cache-redirector.jetbrains.com/jetbrains.bintray.com/intellij-third-party-dependencies/com/jetbrains/recommmenders/java",
+ "https://dl35a2bc3xf3g.cloudfront.net/recommenders-java/com/jetbrains/recommmenders/java" to "https://cache-redirector.jetbrains.com/intellij-third-party-dependencies/com/jetbrains/recommmenders/java",
+ "https://dl35a2bc3xf3g.cloudfront.net/android-sdk" to "https://cache-redirector.jetbrains.com/jetbrains.bintray.com/intellij-third-party-dependencies/android-sdk",
+ "https://dl35a2bc3xf3g.cloudfront.net/android-sdk" to "https://cache-redirector.jetbrains.com/intellij-third-party-dependencies/android-sdk",
+ "https://dl35a2bc3xf3g.cloudfront.net/android-sdk-offline-repo" to "https://cache-redirector.jetbrains.com/jetbrains.bintray.com/intellij-third-party-dependencies/android-sdk-offline-repo",
+ "https://dl35a2bc3xf3g.cloudfront.net/android-sdk-offline-repo" to "https://cache-redirector.jetbrains.com/intellij-third-party-dependencies/android-sdk-offline-repo",
+ "https://dl35a2bc3xf3g.cloudfront.net/android-sdk-kotlin-plugin" to "https://cache-redirector.jetbrains.com/jetbrains.bintray.com/intellij-third-party-dependencies/android-sdk-kotlin-plugin",
+ "https://dl35a2bc3xf3g.cloudfront.net/android-sdk-kotlin-plugin" to "https://cache-redirector.jetbrains.com/intellij-third-party-dependencies/android-sdk-kotlin-plugin",
+ "https://cache-redirector.jetbrains.com/intellij-dependencies" to "https://cache-redirector.jetbrains.com/intellij-third-party-dependencies",
+ "https://cache-redirector.jetbrains.com/intellij-dependencies" to "https://cache-redirector.jetbrains.com/jetbrains.bintray.com/intellij-third-party-dependencies",
+ "https://cache-redirector.jetbrains.com/intellij-dependencies" to "https://cache-redirector.jetbrains.com/jetbrains.bintray.com/dekaf",
+ "https://cache-redirector.jetbrains.com/intellij-dependencies" to "https://cache-redirector.jetbrains.com/jetbrains.bintray.com.dekaf",
+ "https://cache-redirector.jetbrains.com/intellij-dependencies" to "https://cache-redirector.jetbrains.com/jetbrains.bintray.com/intellij-terraform",
+ "https://cache-redirector.jetbrains.com/intellij-dependencies" to "https://cache-redirector.jetbrains.com/jetbrains.bintray.com/jediterm",
+ "https://cache-redirector.jetbrains.com/intellij-dependencies" to "https://cache-redirector.jetbrains.com/jetbrains.bintray.com/markdown",
+ "https://cache-redirector.jetbrains.com/intellij-dependencies" to "https://cache-redirector.jetbrains.com/jetbrains.bintray.com.markdown",
+ "https://cache-redirector.jetbrains.com/intellij-dependencies" to "https://cache-redirector.jetbrains.com/jetbrains.bintray.com/test-discovery",
+ "https://cache-redirector.jetbrains.com/intellij-dependencies" to "https://cache-redirector.jetbrains.com/dl.bintray.com/jetbrains/golang",
+ "https://packages.jetbrains.team/maven/p/intellij-plugin-verifier/intellij-plugin-structure" to "https://cache-redirector.jetbrains.com/packages.jetbrains.team/maven/p/intellij-plugin-verifier/intellij-plugin-structure",
+ "https://packages.jetbrains.team/maven/p/intellij-plugin-verifier/intellij-plugin-verifier" to "https://cache-redirector.jetbrains.com/packages.jetbrains.team/maven/p/intellij-plugin-verifier/intellij-plugin-verifier",
+ "https://packages.jetbrains.team/maven/p/teamcity-rest-client/teamcity-rest-client" to "https://cache-redirector.jetbrains.com/packages.jetbrains.team/maven/p/teamcity-rest-client/teamcity-rest-client",
+ "https://packages.jetbrains.team/maven/p/teamcity-rest-client/teamcity-rest-client" to "https://cache-redirector.jetbrains.com/teamcity-rest-client",
+ "https://maven.pkg.jetbrains.space/kotlin/p/kotlin/kotlin-ide-plugin-dependencies" to "https://cache-redirector.jetbrains.com/maven.pkg.jetbrains.space/kotlin/p/kotlin/kotlin-ide-plugin-dependencies",
+ "https://ftp.agdsn.de/pub/mirrors/centos-altarch/7.9.2009/os/aarch64/Packages" to "https://cache-redirector.jetbrains.com/ftp.agdsn.de/pub/mirrors/centos-altarch/7.9.2009/os/aarch64/Packages",
+ "https://ftp.agdsn.de/pub/mirrors/centos-altarch/7.9.2009/os/aarch64/Packages" to "https://cache-redirector.jetbrains.com/centos-7.9.2009-aarch64-packages",
+ "https://archive.kernel.org/centos-vault/altarch/7.1.1503/os/aarch64/Packages" to "https://cache-redirector.jetbrains.com/centos-7.1.1503-aarch64-packages",
+ "https://archive.kernel.org/centos-vault/altarch/7.1.1503/os/aarch64/Packages" to "https://cache-redirector.jetbrains.com/archive.kernel.org/centos-vault/altarch/7.1.1503/os/aarch64/Packages",
+ "https://maven.pkg.jetbrains.space/kotlin/p/kotlin/kotlin-dependencies" to "https://cache-redirector.jetbrains.com/maven.pkg.jetbrains.space/kotlin/p/kotlin/kotlin-dependencies",
+ "https://css4j.github.io/maven" to "https://cache-redirector.jetbrains.com/css4j.github.io/maven",
+ "https://packages.jetbrains.team/maven/p/grazi/grazie-platform-public" to "https://cache-redirector.jetbrains.com/packages.jetbrains.team/maven/p/grazi/grazie-platform-public",
+ "https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download" to "https://cache-redirector.jetbrains.com/github.com/AdoptOpenJDK/openjdk14-binaries/releases/download",
+ "https://archive.kernel.org/centos-vault/7.7.1908/os/x86_64/Packages" to "https://cache-redirector.jetbrains.com/archive.kernel.org/centos-vault/7.7.1908/os/x86_64/Packages",
+ "https://archive.kernel.org/centos-vault/7.7.1908/os/x86_64/Packages" to "https://cache-redirector.jetbrains.com/centos-7.7.1908-x86_64-packages",
+ "https://archive.kernel.org/centos-vault/7.1.1503/os/x86_64/Packages" to "https://cache-redirector.jetbrains.com/archive.kernel.org/centos-vault/7.1.1503/os/x86_64/Packages",
+ "https://archive.kernel.org/centos-vault/7.1.1503/os/x86_64/Packages" to "https://cache-redirector.jetbrains.com/centos-7.1.1503-x86_64-packages",
+ "https://archive.kernel.org/centos-vault/7.0.1406/os/x86_64/Packages" to "https://cache-redirector.jetbrains.com/archive.kernel.org/centos-vault/7.0.1406/os/x86_64/Packages",
+ "https://archive.kernel.org/centos-vault/7.0.1406/os/x86_64/Packages" to "https://cache-redirector.jetbrains.com/centos-7.0.1406-x86_64-packages",
+ "https://packages.jetbrains.team/maven/p/ij/intellij-dependencies" to "https://cache-redirector.jetbrains.com/packages.jetbrains.team/maven/p/ij/intellij-dependencies",
+ "https://packages.jetbrains.team/maven/p/ij/intellij-dependencies" to "https://cache-redirector.jetbrains.com/intellij-dependencies",
+ "https://maven.pkg.jetbrains.space/kotlin/p/kotlin/kotlin-plugin" to "https://cache-redirector.jetbrains.com/maven.pkg.jetbrains.space/kotlin/p/kotlin/kotlin-plugin",
+ "https://repository.jboss.org/nexus/content/repositories/public" to "https://cache-redirector.jetbrains.com/repository.jboss.org/nexus/content/repositories/public",
+ "https://maven.pkg.jetbrains.space/kotlin/p/kotlin/kotlin-ide" to "https://cache-redirector.jetbrains.com/maven.pkg.jetbrains.space/kotlin/p/kotlin/kotlin-ide",
+ "https://repo.eclipse.org/content/repositories/egit-releases" to "https://cache-redirector.jetbrains.com/repo.eclipse.org/content/repositories/egit-releases",
+ "https://mirror.yandex.ru/centos/7.9.2009/os/x86_64/Packages" to "https://cache-redirector.jetbrains.com/mirror.yandex.ru/centos/7.9.2009/os/x86_64/Packages",
+ "https://mirror.yandex.ru/centos/7.9.2009/os/x86_64/Packages" to "https://cache-redirector.jetbrains.com/centos-7.9.2009-x86_64-packages",
+ "https://maven.pkg.jetbrains.space/kotlin/p/kotlin/bootstrap" to "https://cache-redirector.jetbrains.com/maven.pkg.jetbrains.space/kotlin/p/kotlin/bootstrap",
+ "https://maven.pkg.jetbrains.space/public/p/space-sdk/maven" to "https://cache-redirector.jetbrains.com/maven.pkg.jetbrains.space/public/p/space-sdk/maven",
+ "https://kotlin.bintray.com/kotlin-ide-plugin-dependencies" to "https://cache-redirector.jetbrains.com/kotlin.bintray.com/kotlin-ide-plugin-dependencies",
+ "https://jetbrains.bintray.com/kotlin-native-dependencies" to "https://cache-redirector.jetbrains.com/jetbrains.bintray.com/kotlin-native-dependencies",
+ "https://github.com/git-for-windows/git/releases/download" to "https://cache-redirector.jetbrains.com/github.com/git-for-windows/git/releases/download",
+ "https://github.com/webassembly/wabt/releases/download" to "https://cache-redirector.jetbrains.com/github.com/webassembly/wabt/releases/download",
+ "https://github.com/webassembly/testsuite/zipball" to "https://cache-redirector.jetbrains.com/github.com/webassembly/testsuite/zipball",
+ "https://archive.mozilla.org/pub/firefox/nightly" to "https://cache-redirector.jetbrains.com/archive.mozilla.org/pub/firefox/nightly",
+ "https://storage.googleapis.com/chromium-v8/official/canary" to "https://cache-redirector.jetbrains.com/storage.googleapis.com/chromium-v8/official/canary",
+ "https://oss.sonatype.org/content/repositories/snapshots" to "https://cache-redirector.jetbrains.com/oss.sonatype.org/content/repositories/snapshots",
+ "https://download.visualstudio.microsoft.com/download/pr" to "https://cache-redirector.jetbrains.com/download.visualstudio.microsoft.com/download/pr",
+ "https://oss.sonatype.org/content/repositories/releases" to "https://cache-redirector.jetbrains.com/oss.sonatype.org/content/repositories/releases",
+ "https://maven.pkg.jetbrains.space/public/p/space/maven" to "https://cache-redirector.jetbrains.com/maven.pkg.jetbrains.space/public/p/space/maven",
+ "https://maven.pkg.jetbrains.space/public/p/compose/dev" to "https://cache-redirector.jetbrains.com/maven.pkg.jetbrains.space/public/p/compose/dev",
+ "https://oss.sonatype.org/content/repositories/staging" to "https://cache-redirector.jetbrains.com/oss.sonatype.org/content/repositories/staging",
+ "https://maven.pkg.jetbrains.space/kotlin/p/dokka/dev" to "https://cache-redirector.jetbrains.com/maven.pkg.jetbrains.space/kotlin/p/dokka/dev",
+ "https://maven.pkg.jetbrains.space/kotlin/p/kotlin/eap" to "https://cache-redirector.jetbrains.com/maven.pkg.jetbrains.space/kotlin/p/kotlin/eap",
+ "https://maven.pkg.jetbrains.space/kotlin/p/kotlin/dev" to "https://cache-redirector.jetbrains.com/maven.pkg.jetbrains.space/kotlin/p/kotlin/dev",
+ "https://jetbrains.bintray.com/intellij-plugin-service" to "https://cache-redirector.jetbrains.com/jetbrains.bintray.com/intellij-plugin-service",
+ "https://jetbrains.bintray.com/intellij-plugin-service" to "https://cache-redirector.jetbrains.com/intellij-plugin-service",
+ "https://maven.exasol.com/artifactory/exasol-releases" to "https://cache-redirector.jetbrains.com/maven.exasol.com/artifactory/exasol-releases",
+ "https://maven.exasol.com/artifactory/exasol-releases" to "https://cache-redirector.jetbrains.com/maven.exasol.com.releases",
+ "https://www.myget.org/F/intellij-go-snapshots/maven" to "https://cache-redirector.jetbrains.com/www.myget.org/F/intellij-go-snapshots/maven",
+ "https://www.myget.org/F/intellij-go-snapshots/maven" to "https://cache-redirector.jetbrains.com/myget.org.intellij-go-snapshots",
+ "https://packages.jetbrains.team/maven/p/skija/maven" to "https://cache-redirector.jetbrains.com/packages.jetbrains.team/maven/p/skija/maven",
+ "https://packages.jetbrains.team/maven/p/ij/wormhole" to "https://cache-redirector.jetbrains.com/packages.jetbrains.team/maven/p/ij/wormhole",
+ "https://packages.jetbrains.team/maven/p/ij/wormhole" to "https://cache-redirector.jetbrains.com/wormhole",
+ "https://packages.jetbrains.team/maven/p/dpgpv/maven" to "https://cache-redirector.jetbrains.com/packages.jetbrains.team/maven/p/dpgpv/maven",
+ "https://packages.jetbrains.team/maven/p/dpgpv/maven" to "https://cache-redirector.jetbrains.com/download-pgp-verifier",
+ "https://maven.pkg.jetbrains.space/public/p/ktor/eap" to "https://cache-redirector.jetbrains.com/maven.pkg.jetbrains.space/public/p/ktor/eap",
+ "https://dl.bintray.com/jetbrains/scala-plugin-deps" to "https://cache-redirector.jetbrains.com/dl.bintray.com/jetbrains/scala-plugin-deps",
+ "https://packages.jetbrains.team/maven/p/jcs/maven" to "https://cache-redirector.jetbrains.com/packages.jetbrains.team/maven/p/jcs/maven",
+ "https://github.com/yarnpkg/yarn/releases/download" to "https://cache-redirector.jetbrains.com/github.com/yarnpkg/yarn/releases/download",
+ "https://dl.bintray.com/kodein-framework/Kodein-DI" to "https://cache-redirector.jetbrains.com/dl.bintray.com/kodein-framework/Kodein-DI",
+ "https://www.myget.org/F/rd-model-snapshots/maven" to "https://cache-redirector.jetbrains.com/www.myget.org/F/rd-model-snapshots/maven",
+ "https://packages.jetbrains.team/maven/p/ki/maven" to "https://cache-redirector.jetbrains.com/packages.jetbrains.team/maven/p/ki/maven",
+ "https://dl.google.com/dl/android/studio/ide-zips" to "https://cache-redirector.jetbrains.com/dl.google.com/dl/android/studio/ide-zips",
+ "https://dl.bintray.com/kotlin/kotlin-js-wrappers" to "https://cache-redirector.jetbrains.com/dl.bintray.com/kotlin/kotlin-js-wrappers",
+ "https://repo.typesafe.com/typesafe/ivy-releases" to "https://cache-redirector.jetbrains.com/repo.typesafe.com/typesafe/ivy-releases",
+ "https://kotlin.bintray.com/kotlin-dependencies" to "https://cache-redirector.jetbrains.com/kotlin.bintray.com/kotlin-dependencies",
+ "https://dl.bintray.com/kotlin/kotlin-bootstrap" to "https://cache-redirector.jetbrains.com/dl.bintray.com/kotlin/kotlin-bootstrap",
+ "https://dl.bintray.com/jetbrains/maven-patched" to "https://cache-redirector.jetbrains.com/dl.bintray.com/jetbrains/maven-patched",
+ "https://dl.bintray.com/scalacenter/releases" to "https://cache-redirector.jetbrains.com/dl.bintray.com/scalacenter/releases",
+ "https://www.myget.org/F/rd-snapshots/maven" to "https://cache-redirector.jetbrains.com/www.myget.org/F/rd-snapshots/maven",
+ "https://www.myget.org/F/rd-snapshots/maven" to "https://cache-redirector.jetbrains.com/myget.org.rd-snapshots.maven",
+ "https://dl.bintray.com/kotlin/kotlinx.html" to "https://cache-redirector.jetbrains.com/dl.bintray.com/kotlin/kotlinx.html",
+ "https://dl.bintray.com/konsoletyper/teavm" to "https://cache-redirector.jetbrains.com/dl.bintray.com/konsoletyper/teavm",
+ "https://kotlin.bintray.com/kotlin-plugin" to "https://cache-redirector.jetbrains.com/kotlin.bintray.com/kotlin-plugin",
+ "https://dl.google.com/android/repository" to "https://cache-redirector.jetbrains.com/dl.google.com/android/repository",
+ "https://dl.bintray.com/scalamacros/maven" to "https://cache-redirector.jetbrains.com/dl.bintray.com/scalamacros/maven",
+ "https://dl.bintray.com/kotlin/kotlin-eap" to "https://cache-redirector.jetbrains.com/dl.bintray.com/kotlin/kotlin-eap",
+ "https://dl.bintray.com/kotlin/kotlin-eap" to "https://cache-redirector.jetbrains.com/kotlin-eap",
+ "https://dl.bintray.com/kotlin/kotlin-dev" to "https://cache-redirector.jetbrains.com/dl.bintray.com/kotlin/kotlin-dev",
+ "https://corretto.aws/downloads/resources" to "https://cache-redirector.jetbrains.com/corretto.aws/downloads/resources",
+ "https://dl.google.com/dl/android/maven2" to "https://cache-redirector.jetbrains.com/dl.google.com/dl/android/maven2",
+ "https://dl.google.com/dl/android/maven2" to "https://cache-redirector.jetbrains.com/dl.google.com.android.maven2",
+ "https://dl.bintray.com/cy6ergn0m/maven" to "https://cache-redirector.jetbrains.com/dl.bintray.com/cy6ergn0m/maven",
+ "https://cdn.azul.com/zulu-embedded/bin" to "https://cache-redirector.jetbrains.com/cdn.azul.com/zulu-embedded/bin",
+ "https://dl.bintray.com/kotlin/kotlinx" to "https://cache-redirector.jetbrains.com/dl.bintray.com/kotlin/kotlinx",
+ "https://dl.bintray.com/kotlin/exposed" to "https://cache-redirector.jetbrains.com/dl.bintray.com/kotlin/exposed",
+ "https://archive.apache.org/dist/maven" to "https://cache-redirector.jetbrains.com/archive.apache.org/dist/maven",
+ "https://repo.maven.apache.org/maven2" to "https://cache-redirector.jetbrains.com/repo.maven.apache.org/maven2",
+ "https://repo.jenkins-ci.org/releases" to "https://cache-redirector.jetbrains.com/repo.jenkins-ci.org/releases",
+ "https://repo.jenkins-ci.org/releases" to "https://cache-redirector.jetbrains.com/repo.jenkins-ci.org.releases",
+ "https://packages.confluent.io/maven/" to "https://cache-redirector.jetbrains.com/packages.confluent.io/maven/",
+ "https://repo.grails.org/grails/core" to "https://cache-redirector.jetbrains.com/repo.grails.org/grails/core",
+ "https://plugins.jetbrains.com/maven" to "https://cache-redirector.jetbrains.com/plugins.jetbrains.com/maven",
+ "https://jetbrains.bintray.com/xodus" to "https://cache-redirector.jetbrains.com/jetbrains.bintray.com/xodus",
+ "https://jetbrains.bintray.com/space" to "https://cache-redirector.jetbrains.com/jetbrains.bintray.com/space",
+ "https://dl.bintray.com/groovy/maven" to "https://cache-redirector.jetbrains.com/dl.bintray.com/groovy/maven",
+ "https://dl.bintray.com/groovy/maven" to "https://cache-redirector.jetbrains.com/dl.bintray.com.groovy",
+ "https://teavm.org/maven/repository" to "https://cache-redirector.jetbrains.com/teavm.org/maven/repository",
+ "https://dl.bintray.com/kotlin/ktor" to "https://cache-redirector.jetbrains.com/dl.bintray.com/kotlin/ktor",
+ "https://dl.bintray.com/d10xa/maven" to "https://cache-redirector.jetbrains.com/dl.bintray.com/d10xa/maven",
+ "https://repo.spring.io/milestone" to "https://cache-redirector.jetbrains.com/repo.spring.io/milestone",
+ "https://repo.spring.io/milestone" to "https://cache-redirector.jetbrains.com/repo.spring.io.milestone",
+ "https://kotlin.bintray.com/dukat" to "https://cache-redirector.jetbrains.com/kotlin.bintray.com/dukat",
+ "https://repo1.maven.org/maven2" to "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2",
+ "https://repo1.maven.org/maven2" to "https://cache-redirector.jetbrains.com/maven-central",
+ "https://maven.fabric.io/public" to "https://cache-redirector.jetbrains.com/maven.fabric.io/public",
+ "https://plugins.gradle.org/m2" to "https://cache-redirector.jetbrains.com/plugins.gradle.org/m2",
+ "https://plugins.gradle.org/m2" to "https://cache-redirector.jetbrains.com/plugins.gradle.org",
+ "https://cdn.azul.com/zulu/bin" to "https://cache-redirector.jetbrains.com/cdn.azul.com/zulu/bin",
+ "https://downloads.gradle.org" to "https://cache-redirector.jetbrains.com/downloads.gradle.org",
+ "https://downloads.apache.org" to "https://cache-redirector.jetbrains.com/downloads.apache.org",
+ "https://download.eclipse.org" to "https://cache-redirector.jetbrains.com/download.eclipse.org",
+ "https://services.gradle.org" to "https://cache-redirector.jetbrains.com/services.gradle.org",
+ "https://jcenter.bintray.com" to "https://cache-redirector.jetbrains.com/jcenter.bintray.com",
+ "https://jcenter.bintray.com" to "https://cache-redirector.jetbrains.com/jcenter",
+ "https://www.python.org/ftp" to "https://cache-redirector.jetbrains.com/www.python.org/ftp",
+ "https://registry.npmjs.org" to "https://cache-redirector.jetbrains.com/registry.npmjs.org",
+ "https://maven.google.com" to "https://cache-redirector.jetbrains.com/maven.google.com",
+ "https://dl.google.com/go" to "https://cache-redirector.jetbrains.com/dl.google.com/go",
+ "https://dl.google.com/go" to "https://cache-redirector.jetbrains.com/dl.google.com.go",
+ "https://clojars.org/repo" to "https://cache-redirector.jetbrains.com/clojars.org/repo",
+ "https://nodejs.org/dist" to "https://cache-redirector.jetbrains.com/nodejs.org/dist",
+ "https://jitpack.io" to "https://cache-redirector.jetbrains.com/jitpack.io",
+ "https://repo.labs.intellij.net/intellij-nightly-sdk" to "https://cache-redirector.jetbrains.com/www.jetbrains.com/intellij-repository/nightly",
+ "https://d1lc5k9lerg6km.cloudfront.net" to "https://cache-redirector.jetbrains.com/www.jetbrains.com/jps-cache/intellij",
+ "https://www.jetbrains.com/intellij-repository" to "https://cache-redirector.jetbrains.com/www.jetbrains.com/intellij-repository",
+ "https://www.jetbrains.com/intellij-repository" to "https://cache-redirector.jetbrains.com/intellij-repository",
+ "https://download.jetbrains.com" to "https://cache-redirector.jetbrains.com/download.jetbrains.com",
+ "https://secure.index-cdn.jetbrains.com" to "https://cache-redirector.jetbrains.com/secure.index-cdn.jetbrains.com",
+ "https://d2xrhe97vsfxuc.cloudfront.net" to "https://cache-redirector.jetbrains.com/intellij-jbr",
+ "https://d2xrhe97vsfxuc.cloudfront.net" to "https://cache-redirector.jetbrains.com/intellij-jdk",
+ "https://d2xrhe97vsfxuc.cloudfront.net" to "https://cache-redirector.jetbrains.com/jetbrains.bintray.com/intellij-jbr",
+ "https://d2xrhe97vsfxuc.cloudfront.net" to "https://cache-redirector.jetbrains.com/jetbrains.bintray.com/intellij-jdk"
+)
+
+val aliases = mapOf(
+ "https://repo.maven.apache.org/maven2" to "https://repo1.maven.org/maven2" // Maven Central
+)
+
+fun URI.maybeRedirect(): URI {
+ val url = toString().trimEnd('/')
+ val deAliasedUrl = aliases.getOrDefault(url, url)
+
+ val cacheUrlEntry = cacheMap.entries.find { (origin, _) -> deAliasedUrl.startsWith(origin) }
+ return if (cacheUrlEntry != null) {
+ val cacheUrl = cacheUrlEntry.value
+ val originRestPath = deAliasedUrl.substringAfter(cacheUrlEntry.key, "")
+ URI("$cacheUrl$originRestPath")
+ } else {
+ this
+ }
+}
+
+fun RepositoryHandler.redirect() = configureEach {
+ when (this) {
+ is MavenArtifactRepository -> url = url.maybeRedirect()
+ is IvyArtifactRepository -> @Suppress("SENSELESS_COMPARISON") if (url != null) {
+ url = url.maybeRedirect()
+ }
+ }
+}
+
+// Native compiler download url override section
+
+fun Project.overrideNativeCompilerDownloadUrl() {
+ logger.info("Redirecting Kotlin/Native compiler download url")
+ extensions.extraProperties["kotlin.native.distribution.baseDownloadUrl"] =
+ "https://cache-redirector.jetbrains.com/download.jetbrains.com/kotlin/native/builds"
+}
+
+// Check repositories are overriden section
+
+fun Project.addCheckRepositoriesTask() {
+ val checkRepoTask = tasks.register("checkRepositories") {
+ val isTeamcityBuildInput = providers
+ .provider {
+ project.hasProperty("teamcity") || System.getenv("TEAMCITY_VERSION") != null
+ }
+ .forUseAtConfigurationTimeCompat()
+
+ doLast {
+ val testName = "$name in ${project.displayName}"
+ val isTeamcityBuild = isTeamcityBuildInput.get()
+ if (isTeamcityBuild) {
+ testStarted(testName)
+ }
+
+ project.repositories.filterIsInstance<IvyArtifactRepository>().forEach {
+ @Suppress("SENSELESS_COMPARISON") if (it.url == null) {
+ logInvalidIvyRepo(testName, isTeamcityBuild)
+ }
+ }
+
+ project.repositories.findNonCachedRepositories().forEach {
+ logNonCachedRepo(testName, it, isTeamcityBuild)
+ }
+
+ project.buildscript.repositories.findNonCachedRepositories().forEach {
+ logNonCachedRepo(testName, it, isTeamcityBuild)
+ }
+
+ if (isTeamcityBuild) {
+ testFinished(testName)
+ }
+ }
+ }
+
+ tasks.configureEach {
+ if (name == "checkBuild") {
+ dependsOn(checkRepoTask)
+ }
+ }
+}
+
+fun URI.isCachedOrLocal() = scheme == "file" ||
+ host == "cache-redirector.jetbrains.com" ||
+ host == "teamcity.jetbrains.com" ||
+ host == "buildserver.labs.intellij.net"
+
+fun RepositoryHandler.findNonCachedRepositories(): List<String> {
+ val mavenNonCachedRepos = filterIsInstance<MavenArtifactRepository>()
+ .filterNot { it.url.isCachedOrLocal() }
+ .map { it.url.toString() }
+
+ val ivyNonCachedRepos = filterIsInstance<IvyArtifactRepository>()
+ .filterNot { it.url.isCachedOrLocal() }
+ .map { it.url.toString() }
+
+ return mavenNonCachedRepos + ivyNonCachedRepos
+}
+
+fun escape(s: String): String {
+ return s.replace("[|'\\[\\]]".toRegex(), "\\|$0").replace("\n".toRegex(), "|n").replace("\r".toRegex(), "|r")
+}
+
+fun testStarted(testName: String) {
+ println("##teamcity[testStarted name='%s']".format(escape(testName)))
+}
+
+fun testFinished(testName: String) {
+ println("##teamcity[testFinished name='%s']".format(escape(testName)))
+}
+
+fun testFailed(name: String, message: String, details: String) {
+ println("##teamcity[testFailed name='%s' message='%s' details='%s']".format(escape(name), escape(message), escape(details)))
+}
+
+fun Task.logNonCachedRepo(
+ testName: String,
+ repoUrl: String,
+ isTeamcityBuild: Boolean
+) {
+ val msg = "Repository $repoUrl in ${project.displayName} should be cached with cache-redirector"
+ val details = "Using non cached repository may lead to download failures in CI builds." +
+ " Check https://github.com/JetBrains/kotlin/blob/master/gradle/cacheRedirector.gradle.kts for details."
+
+ if (isTeamcityBuild) {
+ testFailed(testName, msg, details)
+ }
+
+ logger.warn("WARNING - $msg\n$details")
+}
+
+fun Task.logInvalidIvyRepo(
+ testName: String,
+ isTeamcityBuild: Boolean
+) {
+ val msg = "Invalid ivy repo found in ${project.displayName}"
+ val details = "Url must be not null"
+
+ if (isTeamcityBuild) {
+ testFailed(testName, msg, details)
+ }
+
+ logger.warn("WARNING - $msg: $details")
+}
+
+// Main configuration
+
+if (cacheRedirectorEnabled.get()) {
+ logger.info("Redirecting repositories for settings in ${settingsDir.absolutePath}")
+
+ pluginManagement.repositories.redirect()
+ buildscript.repositories.redirect()
+
+ gradle.beforeProject {
+ buildscript.repositories.redirect()
+ repositories.redirect()
+ overrideNativeCompilerDownloadUrl()
+ addCheckRepositoriesTask()
+ }
+}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/app/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/app/build.gradle.kts
new file mode 100644
index 0000000..1b630c9
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/app/build.gradle.kts
@@ -0,0 +1,26 @@
+plugins {
+ id("org.jetbrains.kotlin.multiplatform")
+}
+
+val repo: File = file("<localRepo>")
+
+repositories {
+ mavenCentral()
+ mavenLocal()
+ maven { url = uri(repo) }
+}
+
+kotlin {
+ macosArm64 {
+ binaries.executable()
+ }
+
+ linuxArm64 {
+ binaries.executable()
+ }
+
+ sourceSets.commonMain.dependencies {
+ implementation("org.sample.kt-62515:libb:1.0")
+ implementation("org.sample.kt-62515:libc:1.0")
+ }
+}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/app/settings.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/app/settings.gradle.kts
new file mode 100644
index 0000000..85cd6d2
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/app/settings.gradle.kts
@@ -0,0 +1 @@
+rootProject.name = "app"
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/app/src/commonMain/kotlin/app.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/app/src/commonMain/kotlin/app.kt
new file mode 100644
index 0000000..5e8110b
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/app/src/commonMain/kotlin/app.kt
@@ -0,0 +1,5 @@
+fun main() {
+ a()
+ b()
+ c()
+}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/liba-v1/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/liba-v1/build.gradle.kts
new file mode 100644
index 0000000..96fe771
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/liba-v1/build.gradle.kts
@@ -0,0 +1,37 @@
+plugins {
+ id("org.jetbrains.kotlin.multiplatform")
+ `maven-publish`
+}
+
+group = "org.sample.kt-62515"
+version = 1.0
+
+val repo: File = file("<localRepo>")
+
+repositories {
+ mavenCentral()
+ mavenLocal()
+}
+
+publishing {
+ repositories {
+ maven { url = uri(repo) }
+ }
+}
+
+kotlin {
+ macosArm64 {
+ compilations.getByName("main") {
+ cinterops {
+ val liba by creating
+ }
+ }
+ }
+ linuxArm64 {
+ compilations.getByName("main") {
+ cinterops {
+ val liba by creating
+ }
+ }
+ }
+}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/liba-v1/settings.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/liba-v1/settings.gradle.kts
new file mode 100644
index 0000000..c00f114
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/liba-v1/settings.gradle.kts
@@ -0,0 +1 @@
+rootProject.name = "liba"
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/liba-v1/src/commonMain/kotlin/a.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/liba-v1/src/commonMain/kotlin/a.kt
new file mode 100644
index 0000000..7b84a36
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/liba-v1/src/commonMain/kotlin/a.kt
@@ -0,0 +1,3 @@
+fun a() {
+ println("a:1.0")
+}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/liba-v1/src/nativeInterop/cinterop/liba.def b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/liba-v1/src/nativeInterop/cinterop/liba.def
new file mode 100644
index 0000000..4322d94
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/liba-v1/src/nativeInterop/cinterop/liba.def
@@ -0,0 +1,5 @@
+package = liba
+---
+static int _a() {
+ return 1;
+}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/liba-v2/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/liba-v2/build.gradle.kts
new file mode 100644
index 0000000..1222ee3
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/liba-v2/build.gradle.kts
@@ -0,0 +1,37 @@
+plugins {
+ id("org.jetbrains.kotlin.multiplatform")
+ `maven-publish`
+}
+
+group = "org.sample.kt-62515"
+version = 2.0
+
+val repo: File = file("<localRepo>")
+
+repositories {
+ mavenCentral()
+ mavenLocal()
+}
+
+publishing {
+ repositories {
+ maven { url = uri(repo) }
+ }
+}
+
+kotlin {
+ macosArm64 {
+ compilations.getByName("main") {
+ cinterops {
+ val liba by creating
+ }
+ }
+ }
+ linuxArm64 {
+ compilations.getByName("main") {
+ cinterops {
+ val liba by creating
+ }
+ }
+ }
+}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/liba-v2/settings.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/liba-v2/settings.gradle.kts
new file mode 100644
index 0000000..c00f114
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/liba-v2/settings.gradle.kts
@@ -0,0 +1 @@
+rootProject.name = "liba"
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/liba-v2/src/commonMain/kotlin/a.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/liba-v2/src/commonMain/kotlin/a.kt
new file mode 100644
index 0000000..f753bc9
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/liba-v2/src/commonMain/kotlin/a.kt
@@ -0,0 +1,3 @@
+fun a() {
+ println("a:2.0")
+}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/liba-v2/src/nativeInterop/cinterop/liba.def b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/liba-v2/src/nativeInterop/cinterop/liba.def
new file mode 100644
index 0000000..7ca1135
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/liba-v2/src/nativeInterop/cinterop/liba.def
@@ -0,0 +1,5 @@
+package = liba
+---
+static int _a() {
+ return 2;
+}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/libb/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/libb/build.gradle.kts
new file mode 100644
index 0000000..a55fc68
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/libb/build.gradle.kts
@@ -0,0 +1,32 @@
+plugins {
+ id("org.jetbrains.kotlin.multiplatform")
+ `maven-publish`
+}
+
+group = "org.sample.kt-62515"
+version = 1.0
+
+val repo: File = file("<localRepo>")
+
+repositories {
+ mavenCentral()
+ mavenLocal()
+ maven { url = uri(repo) }
+}
+
+publishing {
+ repositories {
+ maven { url = uri(repo) }
+ }
+}
+
+kotlin {
+ macosArm64()
+ linuxArm64()
+
+ sourceSets.commonMain {
+ dependencies {
+ implementation("org.sample.kt-62515:liba:1.0")
+ }
+ }
+}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/libb/settings.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/libb/settings.gradle.kts
new file mode 100644
index 0000000..5b4c894
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/libb/settings.gradle.kts
@@ -0,0 +1 @@
+rootProject.name = "libb"
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/libb/src/commonMain/kotlin/b.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/libb/src/commonMain/kotlin/b.kt
new file mode 100644
index 0000000..9b9e44e
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/libb/src/commonMain/kotlin/b.kt
@@ -0,0 +1,3 @@
+fun b() {
+ println("b")
+}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/libc/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/libc/build.gradle.kts
new file mode 100644
index 0000000..8555600
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/libc/build.gradle.kts
@@ -0,0 +1,32 @@
+plugins {
+ id("org.jetbrains.kotlin.multiplatform")
+ `maven-publish`
+}
+
+group = "org.sample.kt-62515"
+version = 1.0
+
+val repo: File = file("<localRepo>")
+
+repositories {
+ mavenCentral()
+ mavenLocal()
+ maven { url = uri(repo) }
+}
+
+publishing {
+ repositories {
+ maven { url = uri(repo) }
+ }
+}
+
+kotlin {
+ macosArm64()
+ linuxArm64()
+
+ sourceSets.commonMain {
+ dependencies {
+ implementation("org.sample.kt-62515:liba:2.0")
+ }
+ }
+}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/libc/settings.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/libc/settings.gradle.kts
new file mode 100644
index 0000000..508ded5
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/libc/settings.gradle.kts
@@ -0,0 +1 @@
+rootProject.name = "libc"
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/libc/src/commonMain/kotlin/c.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/libc/src/commonMain/kotlin/c.kt
new file mode 100644
index 0000000..eade76f
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/libc/src/commonMain/kotlin/c.kt
@@ -0,0 +1,3 @@
+fun c() {
+ println("c")
+}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/app/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/app/build.gradle.kts
new file mode 100644
index 0000000..1b630c9
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/app/build.gradle.kts
@@ -0,0 +1,26 @@
+plugins {
+ id("org.jetbrains.kotlin.multiplatform")
+}
+
+val repo: File = file("<localRepo>")
+
+repositories {
+ mavenCentral()
+ mavenLocal()
+ maven { url = uri(repo) }
+}
+
+kotlin {
+ macosArm64 {
+ binaries.executable()
+ }
+
+ linuxArm64 {
+ binaries.executable()
+ }
+
+ sourceSets.commonMain.dependencies {
+ implementation("org.sample.kt-62515:libb:1.0")
+ implementation("org.sample.kt-62515:libc:1.0")
+ }
+}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/app/settings.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/app/settings.gradle.kts
new file mode 100644
index 0000000..85cd6d2
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/app/settings.gradle.kts
@@ -0,0 +1 @@
+rootProject.name = "app"
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/app/src/commonMain/kotlin/app.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/app/src/commonMain/kotlin/app.kt
new file mode 100644
index 0000000..5e8110b
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/app/src/commonMain/kotlin/app.kt
@@ -0,0 +1,5 @@
+fun main() {
+ a()
+ b()
+ c()
+}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/liba-v1/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/liba-v1/build.gradle.kts
new file mode 100644
index 0000000..ecb2d4f
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/liba-v1/build.gradle.kts
@@ -0,0 +1,25 @@
+plugins {
+ id("org.jetbrains.kotlin.multiplatform")
+ `maven-publish`
+}
+
+group = "org.sample.kt-62515"
+version = 1.0
+
+val repo: File = file("<localRepo>")
+
+repositories {
+ mavenCentral()
+ mavenLocal()
+}
+
+publishing {
+ repositories {
+ maven { url = uri(repo) }
+ }
+}
+
+kotlin {
+ macosArm64()
+ linuxArm64()
+}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/liba-v1/settings.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/liba-v1/settings.gradle.kts
new file mode 100644
index 0000000..c00f114
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/liba-v1/settings.gradle.kts
@@ -0,0 +1 @@
+rootProject.name = "liba"
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/liba-v1/src/commonMain/kotlin/a.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/liba-v1/src/commonMain/kotlin/a.kt
new file mode 100644
index 0000000..7b84a36
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/liba-v1/src/commonMain/kotlin/a.kt
@@ -0,0 +1,3 @@
+fun a() {
+ println("a:1.0")
+}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/liba-v2/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/liba-v2/build.gradle.kts
new file mode 100644
index 0000000..6d5483d
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/liba-v2/build.gradle.kts
@@ -0,0 +1,25 @@
+plugins {
+ id("org.jetbrains.kotlin.multiplatform")
+ `maven-publish`
+}
+
+group = "org.sample.kt-62515"
+version = 2.0
+
+val repo: File = file("<localRepo>")
+
+repositories {
+ mavenCentral()
+ mavenLocal()
+}
+
+publishing {
+ repositories {
+ maven { url = uri(repo) }
+ }
+}
+
+kotlin {
+ macosArm64()
+ linuxArm64()
+}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/liba-v2/settings.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/liba-v2/settings.gradle.kts
new file mode 100644
index 0000000..c00f114
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/liba-v2/settings.gradle.kts
@@ -0,0 +1 @@
+rootProject.name = "liba"
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/liba-v2/src/commonMain/kotlin/a.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/liba-v2/src/commonMain/kotlin/a.kt
new file mode 100644
index 0000000..f753bc9
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/liba-v2/src/commonMain/kotlin/a.kt
@@ -0,0 +1,3 @@
+fun a() {
+ println("a:2.0")
+}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/libb/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/libb/build.gradle.kts
new file mode 100644
index 0000000..a55fc68
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/libb/build.gradle.kts
@@ -0,0 +1,32 @@
+plugins {
+ id("org.jetbrains.kotlin.multiplatform")
+ `maven-publish`
+}
+
+group = "org.sample.kt-62515"
+version = 1.0
+
+val repo: File = file("<localRepo>")
+
+repositories {
+ mavenCentral()
+ mavenLocal()
+ maven { url = uri(repo) }
+}
+
+publishing {
+ repositories {
+ maven { url = uri(repo) }
+ }
+}
+
+kotlin {
+ macosArm64()
+ linuxArm64()
+
+ sourceSets.commonMain {
+ dependencies {
+ implementation("org.sample.kt-62515:liba:1.0")
+ }
+ }
+}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/libb/settings.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/libb/settings.gradle.kts
new file mode 100644
index 0000000..5b4c894
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/libb/settings.gradle.kts
@@ -0,0 +1 @@
+rootProject.name = "libb"
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/libb/src/commonMain/kotlin/b.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/libb/src/commonMain/kotlin/b.kt
new file mode 100644
index 0000000..9b9e44e
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/libb/src/commonMain/kotlin/b.kt
@@ -0,0 +1,3 @@
+fun b() {
+ println("b")
+}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/libc/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/libc/build.gradle.kts
new file mode 100644
index 0000000..8555600
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/libc/build.gradle.kts
@@ -0,0 +1,32 @@
+plugins {
+ id("org.jetbrains.kotlin.multiplatform")
+ `maven-publish`
+}
+
+group = "org.sample.kt-62515"
+version = 1.0
+
+val repo: File = file("<localRepo>")
+
+repositories {
+ mavenCentral()
+ mavenLocal()
+ maven { url = uri(repo) }
+}
+
+publishing {
+ repositories {
+ maven { url = uri(repo) }
+ }
+}
+
+kotlin {
+ macosArm64()
+ linuxArm64()
+
+ sourceSets.commonMain {
+ dependencies {
+ implementation("org.sample.kt-62515:liba:2.0")
+ }
+ }
+}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/libc/settings.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/libc/settings.gradle.kts
new file mode 100644
index 0000000..508ded5
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/libc/settings.gradle.kts
@@ -0,0 +1 @@
+rootProject.name = "libc"
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/libc/src/commonMain/kotlin/c.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/libc/src/commonMain/kotlin/c.kt
new file mode 100644
index 0000000..eade76f
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/libc/src/commonMain/kotlin/c.kt
@@ -0,0 +1,3 @@
+fun c() {
+ println("c")
+}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/nativeInterop.cinterop/liba.def b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/nativeInterop.cinterop/liba.def
new file mode 100644
index 0000000..4322d94
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/nativeInterop.cinterop/liba.def
@@ -0,0 +1,5 @@
+package = liba
+---
+static int _a() {
+ return 1;
+}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/settings.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/settings.gradle.kts
new file mode 100644
index 0000000..769286f
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/settings.gradle.kts
@@ -0,0 +1,13 @@
+
+pluginManagement {
+ apply(from = "gradle/cache-redirector.settings.gradle.kts")
+
+ repositories {
+ mavenCentral()
+ mavenLocal()
+ google()
+ gradlePluginPortal()
+ }
+}
+
+rootProject.name = "liba"
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt
index 22ee2e5..b6c1c68 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt
@@ -1168,7 +1168,9 @@
addArgs("-headerFilterAdditionalSearchPrefix", headerFilterDirs.map { it.absolutePath })
addArg("-Xmodule-name", moduleName)
- addArg("-libraryVersion", libraryVersion)
+ // TODO: Uncomment when KT-61096 is implemented.
+ // Don't pass library version to C-interop tool. This leads to issues like this: KT-62515
+ //addArg("-libraryVersion", libraryVersion)
addAll(extraOpts)