From bc8841c6fecfb52beb9bddd533ed87d760a446f9 Mon Sep 17 00:00:00 2001 From: Dmitriy Dolovov Date: Thu, 16 Nov 2023 16:33:37 +0100 Subject: [PATCH] [Gradle][MPP] Don't save library dependency versions in KLIB manifest ^KT-62515 --- .../mpp/KlibResolverInsideCompilerIT.kt | 98 +++++++++++++++++++ .../with-cinterop/app/build.gradle.kts | 24 +++++ .../with-cinterop/app/settings.gradle.kts | 1 + .../app/src/commonMain/kotlin/app.kt | 5 + .../with-cinterop/liba-v1/build.gradle.kts | 35 +++++++ .../with-cinterop/liba-v1/settings.gradle.kts | 1 + .../liba-v1/src/commonMain/kotlin/a.kt | 3 + .../src/nativeInterop/cinterop/liba.def | 5 + .../with-cinterop/liba-v2/build.gradle.kts | 35 +++++++ .../with-cinterop/liba-v2/settings.gradle.kts | 1 + .../liba-v2/src/commonMain/kotlin/a.kt | 3 + .../src/nativeInterop/cinterop/liba.def | 5 + .../with-cinterop/libb/build.gradle.kts | 30 ++++++ .../with-cinterop/libb/settings.gradle.kts | 1 + .../libb/src/commonMain/kotlin/b.kt | 3 + .../with-cinterop/libc/build.gradle.kts | 30 ++++++ .../with-cinterop/libc/settings.gradle.kts | 1 + .../libc/src/commonMain/kotlin/c.kt | 3 + .../without-cinterop/app/build.gradle.kts | 24 +++++ .../without-cinterop/app/settings.gradle.kts | 1 + .../app/src/commonMain/kotlin/app.kt | 5 + .../without-cinterop/liba-v1/build.gradle.kts | 23 +++++ .../liba-v1/settings.gradle.kts | 1 + .../liba-v1/src/commonMain/kotlin/a.kt | 3 + .../without-cinterop/liba-v2/build.gradle.kts | 23 +++++ .../liba-v2/settings.gradle.kts | 1 + .../liba-v2/src/commonMain/kotlin/a.kt | 3 + .../without-cinterop/libb/build.gradle.kts | 30 ++++++ .../without-cinterop/libb/settings.gradle.kts | 1 + .../libb/src/commonMain/kotlin/b.kt | 3 + .../without-cinterop/libc/build.gradle.kts | 30 ++++++ .../without-cinterop/libc/settings.gradle.kts | 1 + .../libc/src/commonMain/kotlin/c.kt | 3 + .../targets/native/tasks/KotlinNativeTasks.kt | 4 +- 34 files changed, 439 insertions(+), 1 deletion(-) create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/KlibResolverInsideCompilerIT.kt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/app/build.gradle.kts create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/app/settings.gradle.kts create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/app/src/commonMain/kotlin/app.kt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/liba-v1/build.gradle.kts create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/liba-v1/settings.gradle.kts create mode 100644 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 create mode 100644 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 create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/liba-v2/build.gradle.kts create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/liba-v2/settings.gradle.kts create mode 100644 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 create mode 100644 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 create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/libb/build.gradle.kts create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/libb/settings.gradle.kts create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/libb/src/commonMain/kotlin/b.kt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/libc/build.gradle.kts create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/libc/settings.gradle.kts create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/with-cinterop/libc/src/commonMain/kotlin/c.kt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/app/build.gradle.kts create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/app/settings.gradle.kts create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/app/src/commonMain/kotlin/app.kt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/liba-v1/build.gradle.kts create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/liba-v1/settings.gradle.kts create mode 100644 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 create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/liba-v2/build.gradle.kts create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/liba-v2/settings.gradle.kts create mode 100644 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 create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/libb/build.gradle.kts create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/libb/settings.gradle.kts create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/libb/src/commonMain/kotlin/b.kt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/libc/build.gradle.kts create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/libc/settings.gradle.kts create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-klib-resolver-inside-compiler/without-cinterop/libc/src/commonMain/kotlin/c.kt diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/KlibResolverInsideCompilerIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/KlibResolverInsideCompilerIT.kt new file mode 100644 index 00000000000..c9503247178 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/KlibResolverInsideCompilerIT.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.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.nio.file.Files +import java.nio.file.Path +import kotlin.test.assertTrue +import org.jetbrains.kotlin.konan.file.File as KFile + +@NativeGradlePluginTests +@DisplayName("Tests for KLIB resolver inside the Kotlin compiler") +@GradleTestVersions(maxVersion = TestVersions.Gradle.G_8_2) +class KlibResolverInsideCompilerIT : KGPBaseTest() { + @DisplayName("Test resolver with C-interop KLIBs (KT-62515)") + @GradleTest + @GradleTestVersions(minVersion = TestVersions.Gradle.G_7_0, maxVersion = TestVersions.Gradle.G_8_2) + fun testResolverWithCInteropKlibs(gradleVersion: GradleVersion, @TempDir tempDir: Path) { + buildProjects( + baseDir = "mpp-klib-resolver-inside-compiler/with-cinterop", + tempDir, gradleVersion + ) + } + + @DisplayName("Test resolver without C-interop KLIBs (KT-62515)") + @GradleTest + @GradleTestVersions(minVersion = TestVersions.Gradle.G_7_0, maxVersion = TestVersions.Gradle.G_8_2) + fun testResolverWithoutCInteropKlibs(gradleVersion: GradleVersion, @TempDir tempDir: Path) { + buildProjects( + baseDir = "mpp-klib-resolver-inside-compiler/without-cinterop", + tempDir, gradleVersion + ) + } + + private fun createLocalRepo(tempDir: Path): Path { + val localRepo = tempDir.resolve("local-repo").toAbsolutePath() + Files.createDirectories(localRepo) + return localRepo + } + + private fun buildProject( + baseDir: String, + projectName: String, + gradleVersion: GradleVersion, + localRepoDir: Path, + buildTask: String = "publish", + ) { + project("$baseDir/$projectName", gradleVersion, localRepoDir = localRepoDir) { + build(buildTask) + } + } + + private fun buildProjects(baseDir: String, tempDir: Path, gradleVersion: GradleVersion) { + val localRepoDir = createLocalRepo(tempDir) + + buildProject(baseDir, "liba-v1", gradleVersion, localRepoDir) + buildProject(baseDir, "liba-v2", gradleVersion, localRepoDir) + buildProject(baseDir, "libb", gradleVersion, localRepoDir) + buildProject(baseDir, "libc", gradleVersion, localRepoDir) + + // Make sure there are no `dependency_version_=` properties with non-`unspecified` values in the manifest file: + localRepoDir.toFile().walkTopDown().forEach { file -> + if (file.isFile && file.extension == "klib") { + val specifiedDependencyVersions: Map = 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, localRepoDir, buildTask = "assemble") + } +} 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 00000000000..f598c4b4c48 --- /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,24 @@ +plugins { + id("org.jetbrains.kotlin.multiplatform") +} + +repositories { + mavenCentral() + mavenLocal() + maven { url = uri("") } +} + +kotlin { + linuxX64 { + 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 00000000000..85cd6d259b5 --- /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 00000000000..5e8110bd9f7 --- /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 00000000000..0d4c3012277 --- /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,35 @@ +plugins { + id("org.jetbrains.kotlin.multiplatform") + `maven-publish` +} + +group = "org.sample.kt-62515" +version = 1.0 + +repositories { + mavenCentral() + mavenLocal() +} + +publishing { + repositories { + maven { url = uri("") } + } +} + +kotlin { + linuxX64 { + 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 00000000000..c00f114e634 --- /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 00000000000..7b84a360f79 --- /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 00000000000..4322d941a81 --- /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 00000000000..654f751715a --- /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,35 @@ +plugins { + id("org.jetbrains.kotlin.multiplatform") + `maven-publish` +} + +group = "org.sample.kt-62515" +version = 2.0 + +repositories { + mavenCentral() + mavenLocal() +} + +publishing { + repositories { + maven { url = uri("") } + } +} + +kotlin { + linuxX64 { + 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 00000000000..c00f114e634 --- /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 00000000000..f753bc9c291 --- /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 00000000000..7ca11357184 --- /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 00000000000..6ea9dbe2af7 --- /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,30 @@ +plugins { + id("org.jetbrains.kotlin.multiplatform") + `maven-publish` +} + +group = "org.sample.kt-62515" +version = 1.0 + +repositories { + mavenCentral() + mavenLocal() + maven { url = uri("") } +} + +publishing { + repositories { + maven { url = uri("") } + } +} + +kotlin { + linuxX64() + 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 00000000000..5b4c894975a --- /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 00000000000..9b9e44e744e --- /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 00000000000..5e88c21b1e9 --- /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,30 @@ +plugins { + id("org.jetbrains.kotlin.multiplatform") + `maven-publish` +} + +group = "org.sample.kt-62515" +version = 1.0 + +repositories { + mavenCentral() + mavenLocal() + maven { url = uri("") } +} + +publishing { + repositories { + maven { url = uri("") } + } +} + +kotlin { + linuxX64() + 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 00000000000..508ded5f87c --- /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 00000000000..eade76fc62b --- /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 00000000000..f598c4b4c48 --- /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,24 @@ +plugins { + id("org.jetbrains.kotlin.multiplatform") +} + +repositories { + mavenCentral() + mavenLocal() + maven { url = uri("") } +} + +kotlin { + linuxX64 { + 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 00000000000..85cd6d259b5 --- /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 00000000000..5e8110bd9f7 --- /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 00000000000..b71acf0fd06 --- /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,23 @@ +plugins { + id("org.jetbrains.kotlin.multiplatform") + `maven-publish` +} + +group = "org.sample.kt-62515" +version = 1.0 + +repositories { + mavenCentral() + mavenLocal() +} + +publishing { + repositories { + maven { url = uri("") } + } +} + +kotlin { + linuxX64() + 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 00000000000..c00f114e634 --- /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 00000000000..7b84a360f79 --- /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 00000000000..4eb7b027152 --- /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,23 @@ +plugins { + id("org.jetbrains.kotlin.multiplatform") + `maven-publish` +} + +group = "org.sample.kt-62515" +version = 2.0 + +repositories { + mavenCentral() + mavenLocal() +} + +publishing { + repositories { + maven { url = uri("") } + } +} + +kotlin { + linuxX64() + 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 00000000000..c00f114e634 --- /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 00000000000..f753bc9c291 --- /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 00000000000..6ea9dbe2af7 --- /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,30 @@ +plugins { + id("org.jetbrains.kotlin.multiplatform") + `maven-publish` +} + +group = "org.sample.kt-62515" +version = 1.0 + +repositories { + mavenCentral() + mavenLocal() + maven { url = uri("") } +} + +publishing { + repositories { + maven { url = uri("") } + } +} + +kotlin { + linuxX64() + 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 00000000000..5b4c894975a --- /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 00000000000..9b9e44e744e --- /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 00000000000..5e88c21b1e9 --- /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,30 @@ +plugins { + id("org.jetbrains.kotlin.multiplatform") + `maven-publish` +} + +group = "org.sample.kt-62515" +version = 1.0 + +repositories { + mavenCentral() + mavenLocal() + maven { url = uri("") } +} + +publishing { + repositories { + maven { url = uri("") } + } +} + +kotlin { + linuxX64() + 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 00000000000..508ded5f87c --- /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 00000000000..eade76fc62b --- /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/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 22ee2e55665..b6c1c68bb8b 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 @@ abstract class CInteropProcess @Inject internal constructor(params: Params) : 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)