diff --git a/build.gradle.kts b/build.gradle.kts index fc7686e8230..20b655bcffa 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -97,7 +97,11 @@ IdeVersionConfigurator.setCurrentIde(project) if (!project.hasProperty("versions.kotlin-native")) { // BEWARE! Bumping this version doesn't take an immediate effect on TeamCity: KTI-1107 - extra["versions.kotlin-native"] = "2.0.0-dev-17343" + extra["versions.kotlin-native"] = if (kotlinBuildProperties.isKotlinNativeEnabled) { + kotlinBuildProperties.defaultSnapshotVersion + } else { + "2.0.0-dev-17343" + } } val irCompilerModules = arrayOf( diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts index d411a3ac0c4..5df4934db65 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts @@ -145,42 +145,13 @@ tasks.register("cleanUserHomeKonanDir") { logger.info("Default .konan directory user's home has been deleted: $userHomeKonanDir") } } +tasks.register("prepareNativeBundleForGradleIT") { -tasks.register("prepareNativeBundleForGradleIT") { - - description = "This task adds dependency on :kotlin-native:bundle and then copying built bundle into the tests' konan dir" + description = "This task adds dependency on :kotlin-native:bundle" if (project.kotlinBuildProperties.isKotlinNativeEnabled) { // 1. Build full Kotlin Native bundle dependsOn(":kotlin-native:bundle") - - // 2. Coping and extracting k/n artifacts from the 1st step to tests' konan data directory - val (extension, unzipFunction) = when (HostManager.host) { - KonanTarget.MINGW_X64 -> Pair("zip", ::zipTree) - else -> Pair("tar.gz", ::tarTree) - } - - val kotlinNativeRootDir = rootProject.findProject(":kotlin-native")?.projectDir - ?: throw IllegalStateException("The path to kotlin-native module is undefined.") - - from( - unzipFunction( - kotlinNativeRootDir.resolve("kotlin-native-${HostManager.platformName()}-${project.kotlinBuildProperties.defaultSnapshotVersion}.$extension") - ) - ) - from( - unzipFunction( - kotlinNativeRootDir.resolve("kotlin-native-prebuilt-${HostManager.platformName()}-${project.kotlinBuildProperties.defaultSnapshotVersion}.$extension") - ) - ) - - into( - konanDataDir - ) - - doFirst { - delete(konanDataDir) - } } } @@ -194,6 +165,8 @@ fun Test.includeNative(include: Boolean) = includeTestsWithPattern(include) { fun Test.applyKotlinNativeFromCurrentBranchIfNeeded() { val kotlinNativeFromMasterEnabled = project.kotlinBuildProperties.isKotlinNativeEnabled && project.kotlinBuildProperties.useKotlinNativeLocalDistributionForTests + + //add native bundle dependencies for local test run if (kotlinNativeFromMasterEnabled && !project.kotlinBuildProperties.isTeamcityBuild) { dependsOn(":kotlin-gradle-plugin-integration-tests:prepareNativeBundleForGradleIT") } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/testDsl.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/testDsl.kt index 88a0fc394d4..54661c95f98 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/testDsl.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/testDsl.kt @@ -27,6 +27,7 @@ import java.nio.file.Path import java.nio.file.Paths import kotlin.io.path.* import kotlin.test.assertTrue +import kotlin.test.fail /** * Create a new test project. diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/toolchain/KotlinNativeBundleBuildService.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/toolchain/KotlinNativeBundleBuildService.kt index 8af3771d6d1..0a995414721 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/toolchain/KotlinNativeBundleBuildService.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/toolchain/KotlinNativeBundleBuildService.kt @@ -19,6 +19,7 @@ import org.gradle.api.services.BuildService import org.gradle.api.services.BuildServiceParameters import org.gradle.api.tasks.Internal import org.jetbrains.kotlin.gradle.plugin.mpp.enabledOnCurrentHost +import org.jetbrains.kotlin.compilerRunner.konanVersion import org.jetbrains.kotlin.gradle.targets.native.internal.NativeDistributionCommonizerLock import org.jetbrains.kotlin.gradle.targets.native.internal.NativeDistributionTypeProvider import org.jetbrains.kotlin.gradle.targets.native.internal.PlatformLibrariesGenerator @@ -30,6 +31,7 @@ import org.jetbrains.kotlin.konan.target.KonanTarget import org.jetbrains.kotlin.konan.target.loadConfigurables import org.jetbrains.kotlin.konan.util.ArchiveExtractor import org.jetbrains.kotlin.konan.util.ArchiveType +import org.jetbrains.kotlin.tooling.core.KotlinToolingVersion import java.io.BufferedInputStream import java.io.File import java.nio.file.Files @@ -97,8 +99,12 @@ internal abstract class KotlinNativeBundleBuildService : BuildService project.logger.info("Kotlin Native Bundle: $message") } lock.withLock { + val needToReinstall = KotlinToolingVersion(project.konanVersion).maturity == KotlinToolingVersion.Maturity.SNAPSHOT + if (needToReinstall) { + project.logger.debug("Snapshot version could be changed, to be sure that up-to-date version is used, Kotlin/Native should be reinstalled") + } - removeBundleIfNeeded(reinstallFlag, bundleDir) + removeBundleIfNeeded(reinstallFlag || needToReinstall, bundleDir) if (!bundleDir.resolve(KONAN_DIRECTORY_NAME_TO_CHECK_EXISTENCE).exists()) { val gradleCachesKotlinNativeDir =