[Gradle] Added dependencyManagement as to Integration Tests

Also fixed found problems with k/n toolchain feature

^KT-64903 Fixed
This commit is contained in:
Dmitrii Krasnov
2024-01-30 10:49:15 +01:00
committed by Space Team
parent 4b1bbefe05
commit d4a4696baf
69 changed files with 440 additions and 330 deletions
@@ -274,7 +274,6 @@ abstract class BaseGradleIT {
val showDiagnosticsStacktrace: Boolean? = false, // false by default to not clutter the testdata + stacktraces change often
val stacktraceMode: String? = StacktraceOption.FULL_STACKTRACE_LONG_OPTION,
val konanDataDir: Path = konanDir,
// TODO(Dmitrii Krasnov): we can remove this, when downloading konan from maven local will be possible KT-63198
val distributionDownloadFromMaven: Boolean? = false,
) {
val safeAndroidGradlePluginVersion: AGPVersion
@@ -121,7 +121,7 @@ class BuildCacheRelocationIT : KGPBaseTest() {
fun testRelocationAndroidProject(
gradleVersion: GradleVersion,
agpVersion: String,
jdkProvider: JdkVersions.ProvidedJdk
jdkProvider: JdkVersions.ProvidedJdk,
) {
val (firstProject, secondProject) = prepareTestProjects(
"AndroidProject",
@@ -150,7 +150,7 @@ class BuildCacheRelocationIT : KGPBaseTest() {
fun testRelocationAndroidDagger(
gradleVersion: GradleVersion,
agpVersion: String,
jdkProvider: JdkVersions.ProvidedJdk
jdkProvider: JdkVersions.ProvidedJdk,
) {
val (firstProject, secondProject) = prepareTestProjects(
"kapt2/android-dagger",
@@ -179,7 +179,7 @@ class BuildCacheRelocationIT : KGPBaseTest() {
fun kaptIgnoreEmptyAndroidVariant(
gradleVersion: GradleVersion,
agpVersion: String,
jdkProvider: JdkVersions.ProvidedJdk
jdkProvider: JdkVersions.ProvidedJdk,
) {
val (firstProject, secondProject) = prepareTestProjects(
"kapt2/android-dagger",
@@ -209,6 +209,7 @@ class BuildCacheRelocationIT : KGPBaseTest() {
@DisplayName("with native project")
@GradleTest
fun testRelocationNative(gradleVersion: GradleVersion) {
val localRepoDir = defaultLocalRepo(gradleVersion)
val buildOptionsBeforeCaching = defaultBuildOptions.copy(
nativeOptions = super.defaultBuildOptions.nativeOptions.copy(
version = TestVersions.Kotlin.STABLE_RELEASE,
@@ -218,15 +219,15 @@ class BuildCacheRelocationIT : KGPBaseTest() {
val (firstProject, secondProject) = prepareTestProjects(
"native-build-cache",
gradleVersion,
buildOptions = buildOptionsBeforeCaching
buildOptions = buildOptionsBeforeCaching,
localRepoDir = localRepoDir
) {
val localRepoUri = it.projectPath.resolve("repo").toUri()
it.subProject("build-cache-app").buildGradleKts.append(
"""
repositories {
maven {
setUrl("$localRepoUri")
setUrl("$localRepoDir")
}
}
""".trimIndent()
@@ -286,14 +287,15 @@ class BuildCacheRelocationIT : KGPBaseTest() {
gradleVersion: GradleVersion,
buildOptions: BuildOptions = defaultBuildOptions,
buildJdk: File? = null,
additionalConfiguration: (TestProject) -> Unit = {}
localRepoDir: Path? = null,
additionalConfiguration: (TestProject) -> Unit = {},
): Pair<TestProject, TestProject> {
val firstProject = project(projectName, gradleVersion, buildOptions, buildJdk = buildJdk, forceOutput = true) {
val firstProject = project(projectName, gradleVersion, buildOptions, buildJdk = buildJdk, localRepoDir = localRepoDir) {
enableLocalBuildCache(localBuildCacheDir)
additionalConfiguration(this)
}
val secondProject = project(projectName, gradleVersion, buildOptions, buildJdk = buildJdk, forceOutput = true) {
val secondProject = project(projectName, gradleVersion, buildOptions, buildJdk = buildJdk, localRepoDir = localRepoDir) {
enableLocalBuildCache(localBuildCacheDir)
additionalConfiguration(this)
}
@@ -323,7 +325,7 @@ class BuildCacheRelocationIT : KGPBaseTest() {
private fun checkKaptCachingIncrementalBuild(
firstProject: TestProject,
secondProject: TestProject
secondProject: TestProject,
) {
val options = defaultBuildOptions.copy(
kaptOptions = BuildOptions.KaptOptions(
@@ -408,7 +410,9 @@ class BuildCacheRelocationIT : KGPBaseTest() {
configureProject: (TestProject) -> Unit = {},
) {
val (firstProject, secondProject) =
prepareTestProjects("buildCacheSimple", gradleVersion, buildOptions, buildJdk = null, configureProject)
prepareTestProjects("buildCacheSimple", gradleVersion, buildOptions, buildJdk = null) {
configureProject(it)
}
// Build the first project -- It should be a cache miss
firstProject.build(":compileKotlin") {
@@ -28,6 +28,9 @@ class BuildToolsApiJvmCompilationIT : KGPBaseTest() {
"simpleProject", gradleVersion, buildOptions = defaultBuildOptions.copy(
runViaBuildToolsApi = false,
incremental = false,
),
dependencyManagement = DependencyManagement.DefaultDependencyManagement(
setOf("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/bootstrap")
)
) {
build("assemble") {
@@ -48,6 +51,9 @@ class BuildToolsApiJvmCompilationIT : KGPBaseTest() {
project(
"simpleProject", gradleVersion, buildOptions = defaultBuildOptions.copy(
incremental = false,
),
dependencyManagement = DependencyManagement.DefaultDependencyManagement(
setOf("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/bootstrap")
)
) {
enableOtherVersionBuildToolsImpl()
@@ -152,9 +158,6 @@ private const val OTHER_KOTLIN_VERSION = "1.9.30-dev-460"
private fun TestProject.enableOtherVersionBuildToolsImpl() {
buildGradle.append(
"""
repositories {
maven { setUrl("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/bootstrap") }
}
kotlin {
useCompilerVersion("$OTHER_KOTLIN_VERSION")
}
@@ -535,7 +535,11 @@ open class CommonizerIT : KGPBaseTest() {
@DisplayName("KT-57796 commonization with two cinterop commonizer groups`")
@GradleTest
fun testCommonizationWithLibraryContainingTwoRoots(gradleVersion: GradleVersion) {
project("commonize-kt-56729-consume-library-with-two-roots", gradleVersion) {
project(
"commonize-kt-56729-consume-library-with-two-roots",
gradleVersion,
localRepoDir = defaultLocalRepo(gradleVersion)
) {
build("publish")
build(":consumer:assemble") {
@@ -17,14 +17,16 @@ import org.jetbrains.kotlin.gradle.plugin.sources.DefaultKotlinSourceSet
import org.jetbrains.kotlin.gradle.testbase.*
import org.jetbrains.kotlin.gradle.util.checkedReplace
import org.jetbrains.kotlin.gradle.util.modify
import org.junit.jupiter.api.Disabled
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.condition.OS
import org.junit.jupiter.api.io.TempDir
import java.io.File
import java.nio.file.Path
import java.util.zip.ZipFile
import kotlin.io.path.*
import kotlin.io.path.appendText
import kotlin.io.path.exists
import kotlin.io.path.readText
import kotlin.io.path.writeText
import kotlin.test.assertEquals
import kotlin.test.assertNotNull
import kotlin.test.assertTrue
@@ -737,22 +739,23 @@ open class HierarchicalMppIT : KGPBaseTest() {
build(":my-lib-foo:compileJvmAndJsMainKotlinMetadata")
}
@GradleTestVersions(minVersion = TestVersions.Gradle.G_7_0)
@GradleTest
@DisplayName("HMPP dependencies in js tests")
fun testHmppDependenciesInJsTests(gradleVersion: GradleVersion, @TempDir tempDir: Path) {
// For some reason Gradle 6.* fails with message about using deprecated API which will fail in 7.0
// But for Gradle 7.* everything works, so seems false positive
if (gradleVersion.baseVersion.version.substringBefore(".").toInt() < 7) {
return
}
publishThirdPartyLib(
withGranularMetadata = true,
gradleVersion = gradleVersion,
localRepoDir = tempDir
)
with(project("hierarchical-mpp-js-test", gradleVersion)) {
project(
"hierarchical-mpp-js-test",
gradleVersion,
localRepoDir = tempDir
) {
val taskToExecute = ":jsNodeTest"
build(taskToExecute, "-PthirdPartyRepo=${tempDir.absolutePathString()}") {
build(taskToExecute) {
assertTasksExecuted(taskToExecute)
}
}
@@ -1068,7 +1071,11 @@ open class HierarchicalMppIT : KGPBaseTest() {
@GradleTest
@DisplayName("KT-52216: [TYPE_MISMATCH] Caused by unexpected metadata dependencies of leaf source sets")
fun `test default platform compilation source set has no metadata dependencies`(gradleVersion: GradleVersion) {
with(project("kt-52216", gradleVersion = gradleVersion)) {
project(
"kt-52216",
gradleVersion = gradleVersion,
localRepoDir = defaultLocalRepo(gradleVersion)
) {
build(":lib:publish")
testDependencyTransformations("p1") { reports ->
for (leafSourceSetName in listOf("jvmMain", "jsMain", "linuxX64Main")) {
@@ -1138,7 +1145,11 @@ open class HierarchicalMppIT : KGPBaseTest() {
@GradleTest
@DisplayName("KT-55071: Shared Native Compilations: Use default parameters declared in dependsOn source set")
fun `test shared native compilation with default parameters declared in dependsOn source set`(gradleVersion: GradleVersion) {
with(project("kt-55071-compileSharedNative-withDefaultParameters", gradleVersion = gradleVersion)) {
project(
"kt-55071-compileSharedNative-withDefaultParameters",
gradleVersion = gradleVersion,
localRepoDir = defaultLocalRepo(gradleVersion)
) {
build(":producer:publish") {
assertTasksExecuted(":producer:compileCommonMainKotlinMetadata")
assertTasksExecuted(":producer:compileSecondCommonMainKotlinMetadata")
@@ -81,6 +81,7 @@ abstract class Kapt3BaseIT : KGPBaseTest() {
buildJdk: File? = null,
localRepoDir: Path? = null,
environmentVariables: EnvironmentalVariables = EnvironmentalVariables(),
dependencyManagement: DependencyManagement = DependencyManagement.DefaultDependencyManagement(),
test: TestProject.() -> Unit = {},
): TestProject = testBaseProject(
projectName = projectName,
@@ -88,6 +89,7 @@ abstract class Kapt3BaseIT : KGPBaseTest() {
buildOptions = buildOptions,
forceOutput = forceOutput,
enableBuildScan = enableBuildScan,
dependencyManagement = dependencyManagement,
addHeapDumpOptions = addHeapDumpOptions,
enableGradleDebug = enableGradleDebug,
enableKotlinDaemonMemoryLimitInMb = enableKotlinDaemonMemoryLimitInMb,
@@ -225,7 +227,7 @@ open class Kapt3IT : Kapt3BaseIT() {
@GradleWithJdkTest
fun doTestSimpleWithCustomJdk(
gradleVersion: GradleVersion,
jdk: JdkVersions.ProvidedJdk
jdk: JdkVersions.ProvidedJdk,
) {
project(
"simple".withPrefix,
@@ -254,7 +256,7 @@ open class Kapt3IT : Kapt3BaseIT() {
@GradleWithJdkTest
fun kaptClasspathJreToolchain(
gradleVersion: GradleVersion,
jdk: JdkVersions.ProvidedJdk
jdk: JdkVersions.ProvidedJdk,
) {
project(
"simple".withPrefix,
@@ -382,7 +384,7 @@ open class Kapt3IT : Kapt3BaseIT() {
@DisplayName("Kapt is working with incremental compilation")
@GradleTest
open fun testSimpleWithIC(gradleVersion: GradleVersion) {
open fun testSimpleWithIC(gradleVersion: GradleVersion) {
doTestSimpleWithIC(gradleVersion)
}
@@ -567,7 +569,7 @@ open class Kapt3IT : Kapt3BaseIT() {
// tests all output directories are cleared when IC rebuilds
private fun testICRebuild(
gradleVersion: GradleVersion,
performChange: (TestProject) -> Unit
performChange: (TestProject) -> Unit,
) {
project(
"incrementalRebuild".withPrefix,
@@ -735,7 +737,11 @@ open class Kapt3IT : Kapt3BaseIT() {
@DisplayName("Should re-run kapt on changes in local annotation processor")
@GradleTest
open fun testChangesInLocalAnnotationProcessor(gradleVersion: GradleVersion) {
project("localAnnotationProcessor".withPrefix, gradleVersion) {
project(
"localAnnotationProcessor".withPrefix,
gradleVersion,
dependencyManagement = DependencyManagement.DefaultDependencyManagement(setOf("https://jitpack.io"))
) {
build("build")
val testAnnotationProcessor = subProject("annotation-processor").javaSourcesDir().resolve("TestAnnotationProcessor.kt")
@@ -973,7 +979,15 @@ open class Kapt3IT : Kapt3BaseIT() {
@DisplayName("Dependency on kapt module should not resolve all configurations")
@GradleTest
fun testDependencyOnKaptModule(gradleVersion: GradleVersion) {
project("simpleProject", gradleVersion) {
project(
"simpleProject",
gradleVersion,
buildOptions = defaultBuildOptions.copy(
nativeOptions = defaultBuildOptions.nativeOptions.copy(
distributionDownloadFromMaven = false // TODO(Dmitrii Krasnov): this flag is off, because we try to find configuration which is not in maven yet. Could be set to true after KTI-1569 is done
)
)
) {
includeOtherProjectAsSubmodule("simple", "kapt2")
buildGradle.append("\ndependencies { implementation project(':simple') }")
@@ -1076,7 +1090,7 @@ open class Kapt3IT : Kapt3BaseIT() {
@DisplayName("Works with JPMS on JDK 9+")
@GradleTest
fun testJpmsModule(gradleVersion: GradleVersion, ) {
fun testJpmsModule(gradleVersion: GradleVersion) {
project(
"jpms-module".withPrefix,
gradleVersion,
@@ -1128,7 +1142,11 @@ open class Kapt3IT : Kapt3BaseIT() {
@DisplayName("KT-47347: kapt processors should not be an input files for stub generation")
@GradleTest
open fun testChangesToKaptConfigurationDoNotTriggerStubGeneration(gradleVersion: GradleVersion) {
project("localAnnotationProcessor".withPrefix, gradleVersion) {
project(
"localAnnotationProcessor".withPrefix,
gradleVersion,
dependencyManagement = DependencyManagement.DefaultDependencyManagement(setOf("https://jitpack.io"))
) {
build("assemble")
ZipOutputStream(projectPath.resolve("fake_processor.jar").outputStream()).close()
@@ -1337,9 +1355,11 @@ open class Kapt3IT : Kapt3BaseIT() {
fun testSerializationPlugin(gradleVersion: GradleVersion) {
project("serialization".withPrefix, gradleVersion) {
build(":kaptGenerateStubsKotlin") {
assertFileInProjectContains("build/tmp/kapt3/stubs/main/foo/Data.java",
assertFileInProjectContains(
"build/tmp/kapt3/stubs/main/foo/Data.java",
"public static final class Companion",
"public static final class \$serializer implements kotlinx.serialization.internal.GeneratedSerializer<foo.Data>")
"public static final class \$serializer implements kotlinx.serialization.internal.GeneratedSerializer<foo.Data>"
)
}
}
}
@@ -19,7 +19,11 @@ class KotlinWasmGradlePluginIT : KGPBaseTest() {
@DisplayName("Check wasi target")
@GradleTest
fun wasiTarget(gradleVersion: GradleVersion) {
project("new-mpp-wasm-wasi-test", gradleVersion) {
project(
"new-mpp-wasm-wasi-test",
gradleVersion,
dependencyManagement = DependencyManagement.DisabledDependencyManagement // requires custom d8 repository during build
) {
buildGradleKts.modify(::transformBuildScriptWithPluginsDsl)
build(":wasmWasiTest") {
@@ -53,7 +57,11 @@ class KotlinWasmGradlePluginIT : KGPBaseTest() {
@DisplayName("Check js target")
@GradleTest
fun jsTarget(gradleVersion: GradleVersion) {
project("new-mpp-wasm-test", gradleVersion) {
project(
"new-mpp-wasm-test",
gradleVersion,
dependencyManagement = DependencyManagement.DisabledDependencyManagement // requires custom repository for :kotlinNodeJsSetup during build
) {
buildGradleKts.modify {
transformBuildScriptWithPluginsDsl(it)
.replace("<JsEngine>", "nodejs")
@@ -93,7 +101,10 @@ class KotlinWasmGradlePluginIT : KGPBaseTest() {
@DisplayName("Check wasi target run")
@GradleTest
fun wasiRun(gradleVersion: GradleVersion) {
project("new-mpp-wasm-wasi-test", gradleVersion) {
project(
"new-mpp-wasm-wasi-test", gradleVersion,
dependencyManagement = DependencyManagement.DisabledDependencyManagement // requires d8 custom repository during build
) {
buildGradleKts.modify(::transformBuildScriptWithPluginsDsl)
build(":wasmWasiNodeRun") {
@@ -90,7 +90,11 @@ class MppIdeDependencyResolutionIT : KGPBaseTest() {
@GradleTest
fun testCinterops(gradleVersion: GradleVersion) {
project(projectName = "cinteropImport", gradleVersion = gradleVersion) {
project(
projectName = "cinteropImport",
gradleVersion = gradleVersion,
localRepoDir = defaultLocalRepo(gradleVersion)
) {
build(":dep-with-cinterop:publishAllPublicationsToBuildRepository")
resolveIdeDependencies("dep-with-cinterop") { dependencies ->
@@ -328,7 +332,11 @@ class MppIdeDependencyResolutionIT : KGPBaseTest() {
@GradleTestVersions(minVersion = TestVersions.Gradle.G_7_6)
@GradleTest
fun `test dependency on java testFixtures and feature source sets`(gradleVersion: GradleVersion) {
project("kt-60053-dependencyOn-testFixtures", gradleVersion) {
project(
"kt-60053-dependencyOn-testFixtures",
gradleVersion,
localRepoDir = defaultLocalRepo(gradleVersion)
) {
build("publish")
resolveIdeDependencies(":consumer") { dependencies ->
@@ -395,7 +403,11 @@ class MppIdeDependencyResolutionIT : KGPBaseTest() {
@GradleTestVersions(minVersion = TestVersions.Gradle.G_7_2)
@GradleTest
fun `test resolve sources for dependency with multiple capabilities`(gradleVersion: GradleVersion) {
project("kt-63226-multiple-capabilities", gradleVersion) {
project(
"kt-63226-multiple-capabilities",
gradleVersion,
localRepoDir = workingDir.resolve(gradleVersion.version),
) {
build(":producer:publish")
resolveIdeDependencies(":consumer") { dependencies ->
@@ -149,7 +149,7 @@ class ResourcesIT : KGPBaseTest() {
xResFile.parentFile.mkdirs()
xResFile.writeText("some resource")
build("processXResources", enableGradleDebug = true) {
build("processXResources") {
assertTasksExecuted(":customResGenerator1")
assertFileInProjectExists("build/custom-res-1/myres.txt")
}
@@ -32,7 +32,11 @@ class WasmConfigurationCacheIT : KGPBaseTest() {
@GradleTest
@GradleTestVersions(minVersion = TestVersions.Gradle.G_7_6)
fun testD8Run(gradleVersion: GradleVersion) {
project("wasm-d8-simple-project", gradleVersion) {
project(
"wasm-d8-simple-project",
gradleVersion,
dependencyManagement = DependencyManagement.DisabledDependencyManagement // :d8Download adds custom ivy repository during build
) {
build("wasmJsD8Run", buildOptions = buildOptions) {
assertTasksExecuted(":wasmJsD8Run")
assertOutputContains(
@@ -90,7 +90,10 @@ open class Kapt3AndroidExternalIT : Kapt3BaseIT() {
"android-dbflow".withPrefix,
gradleVersion,
buildOptions = defaultBuildOptions.copy(androidVersion = agpVersion),
buildJdk = jdkVersion.location
buildJdk = jdkVersion.location,
dependencyManagement = DependencyManagement.DefaultDependencyManagement(
setOf("https://jitpack.io")
)
) {
build("assembleDebug") {
assertKaptSuccessful()
@@ -95,7 +95,10 @@ class KotlinAndroidIT : KGPBaseTest() {
"AndroidIcepickProject",
gradleVersion,
buildOptions = defaultBuildOptions.copy(androidVersion = agpVersion),
buildJdk = jdkVersion.location
buildJdk = jdkVersion.location,
dependencyManagement = DependencyManagement.DefaultDependencyManagement(
setOf("https://clojars.org/repo/")
)
) {
build("assembleDebug")
}
@@ -274,7 +277,8 @@ class KotlinAndroidIT : KGPBaseTest() {
build(":Lib:assembleFlavor1Debug", ":Lib:publish") {
assertTasksExecuted(":Lib:compileFlavor1DebugKotlin", ":Lib:publishFlavorDebugPublicationToMavenRepository")
val pomLines = subProject("Lib").projectPath.resolve("build/repo/com/example/flavor1Debug/1.0/flavor1Debug-1.0.pom").readLines()
val pomLines =
subProject("Lib").projectPath.resolve("build/repo/com/example/flavor1Debug/1.0/flavor1Debug-1.0.pom").readLines()
val stdlibVersionLineNumber = pomLines.indexOfFirst { "<artifactId>kotlin-stdlib</artifactId>" in it } + 1
val versionLine = pomLines[stdlibVersionLineNumber]
assertContains(versionLine, "<version>${buildOptions.kotlinVersion}</version>")
@@ -141,7 +141,7 @@ class MppCompositeBuildIT : KGPBaseTest() {
@GradleTest
fun `test - sample1 - ide dependencies`(gradleVersion: GradleVersion) {
project("mpp-composite-build/sample1", gradleVersion) {
projectPath.resolve("included-build").addDefaultBuildFiles()
projectPath.resolve("included-build").addDefaultSettingsToSettingsGradle()
buildGradleKts.replaceText("<kgp_version>", KOTLIN_VERSION)
projectPath.resolve("included-build/build.gradle.kts").replaceText("<kgp_version>", KOTLIN_VERSION)
@@ -167,8 +167,11 @@ class MppCompositeBuildIT : KGPBaseTest() {
@GradleTest
fun `test - sample1 - assemble and execute`(gradleVersion: GradleVersion) {
project("mpp-composite-build/sample1", gradleVersion) {
projectPath.resolve("included-build").addDefaultBuildFiles()
project(
"mpp-composite-build/sample1",
gradleVersion,
) {
projectPath.resolve("included-build").addDefaultSettingsToSettingsGradle()
buildGradleKts.replaceText("<kgp_version>", KOTLIN_VERSION)
projectPath.resolve("included-build/build.gradle.kts").replaceText("<kgp_version>", KOTLIN_VERSION)
@@ -200,7 +203,7 @@ class MppCompositeBuildIT : KGPBaseTest() {
reason = "KGP 1.7.21 produces deprecation warnings with Gradle 8.4"
) { gradleVersion >= GradleVersion.version(TestVersions.Gradle.G_8_4) }
) {
projectPath.resolve("included-build").addDefaultBuildFiles()
projectPath.resolve("included-build").addDefaultSettingsToSettingsGradle()
buildGradleKts.replaceText("<kgp_version>", KOTLIN_VERSION)
projectPath.resolve("included-build/build.gradle.kts").replaceText("<kgp_version>", "1.7.21")
@@ -82,9 +82,17 @@ class PreHmppDependenciesDeprecationIT : KGPBaseTest() {
tempDir: Path? = null,
projectPathToCheck: String = "", // empty means rootProject
expectReportForDependency: String? = null,
preBuildAction: TestProject.() -> Unit = {}
preBuildAction: TestProject.() -> Unit = {},
) {
project("preHmppDependenciesDeprecation/$projectName", gradleVersion, localRepoDir = tempDir?.resolve("repo")) {
project(
"preHmppDependenciesDeprecation/$projectName", gradleVersion,
localRepoDir = tempDir?.resolve("repo"),
buildOptions = defaultBuildOptions.copy(
nativeOptions = defaultBuildOptions.nativeOptions.copy(
distributionDownloadFromMaven = false // TODO(Dmitrii Krasnov): this flag is off, because we try to find configuration which is not in maven yet. Could be set to true after KTI-1569 is done
)
)
) {
preBuildAction()
suppressDependencySourcesConfigurations()
build("$projectPathToCheck:dependencies") {
@@ -407,7 +407,11 @@ class GeneralNativeIT : KGPBaseTest() {
@DisplayName("Transitive export is not required for exporting variant")
@GradleTest
fun testTransitiveExportIsNotRequiredForExportingVariant(gradleVersion: GradleVersion) {
project("native-binaries/export-published-lib", gradleVersion) {
project(
"native-binaries/export-published-lib",
gradleVersion,
localRepoDir = defaultLocalRepo(gradleVersion)
) {
val headerPath = "shared/build/bin/linuxX64/debugStatic/libshared_api.h"
build(":lib:publish")
@@ -802,7 +806,11 @@ class GeneralNativeIT : KGPBaseTest() {
@DisplayName("Checks builds with cinterop tool")
@GradleTest
fun testCinterop(gradleVersion: GradleVersion) {
nativeProject("native-cinterop", gradleVersion, configureSubProjects = true) {
nativeProject(
"native-cinterop",
gradleVersion, configureSubProjects = true,
localRepoDir = defaultLocalRepo(gradleVersion)
) {
fun libraryFiles(projectName: String, cinteropName: String) = listOf(
projectPath.resolve("$projectName/build/classes/kotlin/host/main/cinterop/${projectName}-cinterop-$cinteropName.klib"),
projectPath.resolve("$projectName/build/classes/kotlin/host/main/klib/${projectName}.klib"),
@@ -969,7 +977,11 @@ class GeneralNativeIT : KGPBaseTest() {
@DisplayName("Checks citerop configuration variant aware resolution")
@GradleTest
fun testCinteropConfigurationsVariantAwareResolution(gradleVersion: GradleVersion) {
nativeProject("native-cinterop", gradleVersion, configureSubProjects = true) {
nativeProject(
"native-cinterop",
gradleVersion, configureSubProjects = true,
localRepoDir = defaultLocalRepo(gradleVersion)
) {
build(":publishedLibrary:publish")
build(":dependencyInsight", "--configuration", "hostTestCInterop", "--dependency", "org.example:publishedLibrary") {
@@ -998,7 +1010,10 @@ class GeneralNativeIT : KGPBaseTest() {
@GradleTestVersions(minVersion = TestVersions.Gradle.G_7_0)
@GradleTest
fun shouldAllowToOverrideDownloadUrl(gradleVersion: GradleVersion, @TempDir customKonanDir: Path) {
nativeProject("native-parallel", gradleVersion) {
nativeProject(
"native-parallel", gradleVersion,
dependencyManagement = DependencyManagement.DisabledDependencyManagement
) {
gradleProperties.appendText(
"""
@@ -1011,6 +1026,9 @@ class GeneralNativeIT : KGPBaseTest() {
buildAndFail(
"build",
buildOptions = defaultBuildOptions.copy(
nativeOptions = defaultBuildOptions.nativeOptions.copy(
distributionDownloadFromMaven = false // please remove this test, when this flag will be removed
),
konanDataDir = customKonanDir.toAbsolutePath()
)
) {
@@ -38,8 +38,11 @@ class NativeDownloadAndPlatformLibsNonParallelIT : KGPDaemonsBaseTest() {
val userHomeDir = System.getProperty("user.home")
platformLibrariesProject("linuxX64", gradleVersion = gradleVersion) {
build("assemble", buildOptions = defaultBuildOptions.copy(konanDataDir = null)) {
assertOutputContains("Kotlin/Native distribution: .*kotlin-native-prebuilt-$platformName".toRegex())
build(
"assemble",
buildOptions = defaultBuildOptions.copy(konanDataDir = null) // we need to download konan bundle to default dir
) {
assertOutputContains("Moved Kotlin/Native bundle from .* to $userHomeDir/.konan/kotlin-native-prebuilt-$platformName-$currentCompilerVersion".toRegex())
assertOutputDoesNotContain("Generate platform libraries for ")
// checking that konan was downloaded and native dependencies were not downloaded into ~/.konan dir
@@ -23,10 +23,17 @@ class NativeWithConfigurationCacheIT : KGPBaseTest() {
@GradleTest
fun testConfigurationCacheReusedSecondTime(gradleVersion: GradleVersion) {
nativeProject(
"native-with-configuration-cache", gradleVersion, buildOptions = defaultBuildOptions.withBundledKotlinNative().copy(
"native-with-configuration-cache",
gradleVersion,
dependencyManagement = DependencyManagement.DisabledDependencyManagement,
buildOptions = defaultBuildOptions.copy(
// We need to download compiler on the first build, that is why we are setting custom konan home dir without any compiler inside
konanDataDir = workingDir.resolve(".konan"),
)
nativeOptions = defaultBuildOptions.nativeOptions.copy(
version = null,
distributionDownloadFromMaven = false, // please, remove the whole test, when this flag will be removed
),
),
) {
build(
"help"
@@ -55,7 +55,7 @@ data class BuildOptions(
val runViaBuildToolsApi: Boolean? = null,
val konanDataDir: Path? = konanDir, // null can be used only if you are using custom 'kotlin.native.home' or 'org.jetbrains.kotlin.native.home' property instead of konanDir
val kotlinUserHome: Path? = testKitDir.resolve(".kotlin"),
val compilerArgumentsLogLevel: String? = "info"
val compilerArgumentsLogLevel: String? = "info",
) {
val isK2ByDefault
get() = KotlinVersion.DEFAULT >= KotlinVersion.KOTLIN_2_0
@@ -90,8 +90,7 @@ data class BuildOptions(
val cocoapodsConfiguration: String? = null,
val cocoapodsArchs: String? = null,
val distributionType: String? = null,
// TODO(Dmitrii Krasnov): we can change false on null, when downloading konan from maven local will be possible KT-63198
val distributionDownloadFromMaven: Boolean? = false,
val distributionDownloadFromMaven: Boolean? = true,
val reinstall: Boolean? = null,
val restrictedDistribution: Boolean? = null,
val useXcodeMessageStyle: Boolean? = null,
@@ -286,7 +285,6 @@ data class BuildOptions(
nativeOptions.incremental?.let {
arguments.add("-Pkotlin.incremental.native=${it}")
}
}
}
@@ -5,7 +5,10 @@
package org.jetbrains.kotlin.gradle.testbase
import org.gradle.api.initialization.resolve.RepositoriesMode
import org.intellij.lang.annotations.Language
import java.nio.file.Path
import kotlin.io.path.absolutePathString
@Language("Groovy")
internal val DEFAULT_GROOVY_SETTINGS_FILE =
@@ -64,6 +67,64 @@ internal val DEFAULT_GROOVY_SETTINGS_FILE =
}
""".trimIndent()
internal fun getGroovyDependencyManagementBlock(
gradleRepositoriesMode: RepositoriesMode,
additionalDependencyRepositories: Set<String>,
localRepo: Path? = null,
): String =
//language=Groovy
"""
dependencyResolutionManagement {
repositories {
mavenLocal()
mavenCentral()
google()
ivy {
url = "https://download.jetbrains.com/kotlin/native/builds/dev"
patternLayout {
artifact("[revision]/[classifier]/[artifact]-[classifier]-[revision].[ext]")
}
metadataSources {
artifact()
}
}
maven {
url "https://packages.jetbrains.team/maven/p/ij/intellij-dependencies/"
}
ivy {
url = "https://github.com/yarnpkg/yarn/releases/download"
patternLayout {
artifact("v[revision]/[artifact](-v[revision]).[ext]")
}
metadataSources {
artifact()
}
content {
includeModule("com.yarnpkg", "yarn")
}
}
ivy {
url = "https://nodejs.org/dist"
patternLayout {
artifact("v[revision]/[artifact](-v[revision]-[classifier]).[ext]")
}
metadataSources {
artifact()
}
content {
includeModule("org.nodejs", "node")
}
}
${additionalDependencyRepositories.map { repo -> "maven{ url = \"$repo\" }" }.joinToString("\n")}
${localRepo?.absolutePathString()?.let { repo -> "maven{ url = \"${repo.replace("\\", "\\\\")}\" }" } ?: ""}
}
repositoriesMode.set(${mapRepositoryModeToString(gradleRepositoriesMode)})
}
""".trimIndent()
@Language("kts")
internal val DEFAULT_KOTLIN_SETTINGS_FILE =
"""
@@ -123,3 +184,69 @@ internal val DEFAULT_KOTLIN_SETTINGS_FILE =
id("org.jetbrains.kotlin.test.gradle-warnings-detector")
}
""".trimIndent()
internal fun getKotlinDependencyManagementBlock(
gradleRepositoriesMode: RepositoriesMode,
additionalDependencyRepositories: Set<String>,
localRepo: Path? = null,
): String =
//language=kotlin
"""
dependencyResolutionManagement {
repositories {
mavenLocal()
mavenCentral()
google()
ivy {
url = uri("https://download.jetbrains.com/kotlin/native/builds/dev")
patternLayout {
artifact("[revision]/[classifier]/[artifact]-[classifier]-[revision].[ext]")
}
metadataSources {
artifact()
}
}
ivy {
url = uri("https://github.com/yarnpkg/yarn/releases/download")
patternLayout {
artifact("v[revision]/[artifact](-v[revision]).[ext]")
}
metadataSources {
artifact()
}
content {
includeModule("com.yarnpkg", "yarn")
}
}
ivy {
url = uri("https://nodejs.org/dist")
patternLayout {
artifact("v[revision]/[artifact](-v[revision]-[classifier]).[ext]")
}
metadataSources {
artifact()
}
content {
includeModule("org.nodejs", "node")
}
}
maven {
url = uri("https://packages.jetbrains.team/maven/p/ij/intellij-dependencies/")
}
${additionalDependencyRepositories.map { repo -> "maven{ url = uri(\"$repo\") }" }.joinToString("\n")}
${localRepo?.absolutePathString()?.let { repo -> "maven{ url = uri(\"${repo.replace("\\", "\\\\")}\") }" } ?: ""}
}
repositoriesMode.set(${mapRepositoryModeToString(gradleRepositoriesMode)})
}
""".trimIndent()
private fun mapRepositoryModeToString(gradleRepositoriesMode: RepositoriesMode): String {
return when (gradleRepositoriesMode) {
RepositoriesMode.PREFER_PROJECT -> "RepositoriesMode.PREFER_PROJECT"
RepositoriesMode.PREFER_SETTINGS -> "RepositoriesMode.PREFER_SETTINGS"
RepositoriesMode.FAIL_ON_PROJECT_REPOS -> "RepositoriesMode.FAIL_ON_PROJECT_REPOS"
}
}
@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.gradle.testbase
import org.gradle.api.initialization.resolve.RepositoriesMode
import org.gradle.api.logging.configuration.WarningMode
import org.gradle.testkit.runner.BuildResult
import org.gradle.testkit.runner.GradleRunner
@@ -50,6 +51,7 @@ fun KGPBaseTest.project(
buildJdk: File? = null,
localRepoDir: Path? = null,
environmentVariables: EnvironmentalVariables = EnvironmentalVariables(),
dependencyManagement: DependencyManagement = DependencyManagement.DefaultDependencyManagement(),
test: TestProject.() -> Unit = {},
): TestProject {
val projectPath = setupProjectFromTestResources(
@@ -58,7 +60,7 @@ fun KGPBaseTest.project(
workingDir,
projectPathAdditionalSuffix,
)
projectPath.addDefaultBuildFiles()
projectPath.addDefaultSettingsToSettingsGradle(dependencyManagement, localRepoDir)
projectPath.enableCacheRedirector()
projectPath.enableAndroidSdk()
if (buildOptions.languageVersion != null || buildOptions.languageApiVersion != null) {
@@ -121,6 +123,7 @@ fun KGPBaseTest.nativeProject(
localRepoDir: Path? = null,
environmentVariables: EnvironmentalVariables = EnvironmentalVariables(),
configureSubProjects: Boolean = false,
dependencyManagement: DependencyManagement = DependencyManagement.DefaultDependencyManagement(),
test: TestProject.() -> Unit = {},
): TestProject {
val project = project(
@@ -129,6 +132,7 @@ fun KGPBaseTest.nativeProject(
buildOptions = buildOptions,
forceOutput = forceOutput,
enableBuildScan = enableBuildScan,
dependencyManagement = dependencyManagement,
addHeapDumpOptions = addHeapDumpOptions,
enableGradleDebug = enableGradleDebug,
enableKotlinDaemonMemoryLimitInMb = enableKotlinDaemonMemoryLimitInMb,
@@ -323,12 +327,12 @@ open class GradleProject(
fun classesDir(
sourceSet: String = "main",
targetName: String? = null,
language: String = "kotlin"
language: String = "kotlin",
): Path = projectPath.resolve("build/classes/$language/${targetName.orEmpty()}/$sourceSet/")
fun kotlinClassesDir(
sourceSet: String = "main",
targetName: String? = null
targetName: String? = null,
): Path = classesDir(sourceSet, targetName, language = "kotlin")
fun javaClassesDir(
@@ -353,7 +357,8 @@ open class GradleProject(
*/
@JvmInline
value class EnvironmentalVariables @EnvironmentalVariablesOverride constructor(val environmentalVariables: Map<String, String> = emptyMap()) {
@EnvironmentalVariablesOverride constructor(vararg environmentVariables: Pair<String, String>) : this(mapOf(*environmentVariables))
@EnvironmentalVariablesOverride
constructor(vararg environmentVariables: Pair<String, String>) : this(mapOf(*environmentVariables))
}
@RequiresOptIn("Environmental variables override may lead to interference of parallel builds and breaks Gradle tests debugging")
@@ -416,7 +421,7 @@ class TestProject(
val otherProjectPath = "$pathPrefix/$otherProjectName".testProjectPath
otherProjectPath.copyRecursively(projectPath.resolve(otherProjectName))
projectPath.resolve(otherProjectName).addDefaultBuildFiles()
projectPath.resolve(otherProjectName).addDefaultSettingsToSettingsGradle()
settingsGradle.append(
"""
@@ -523,12 +528,29 @@ private fun setupProjectFromTestResources(
private val String.testProjectPath: Path get() = Paths.get("src", "test", "resources", "testProject", this)
internal fun Path.addDefaultBuildFiles() {
internal fun Path.addDefaultSettingsToSettingsGradle(
dependencyManagement: DependencyManagement = DependencyManagement.DefaultDependencyManagement(),
localRepo: Path? = null,
) {
addPluginManagementToSettings()
when (dependencyManagement) {
is DependencyManagement.DefaultDependencyManagement -> addDependencyManagementToSettings(
additionalDependencyRepositories = dependencyManagement.additionalRepos,
localRepo = localRepo
)
is DependencyManagement.DisabledDependencyManagement -> {}
}
val buildSrc = resolve("buildSrc")
if (Files.exists(buildSrc)) {
buildSrc.addPluginManagementToSettings()
when (dependencyManagement) {
is DependencyManagement.DefaultDependencyManagement -> buildSrc.addDependencyManagementToSettings(
additionalDependencyRepositories = dependencyManagement.additionalRepos,
localRepo = localRepo
)
is DependencyManagement.DisabledDependencyManagement -> {}
}
}
}
@@ -542,7 +564,7 @@ internal fun Path.addPluginManagementToSettings() {
if (!it.contains("pluginManagement {")) {
"""
|$DEFAULT_GROOVY_SETTINGS_FILE
|
|
|$it
|""".trimMargin()
} else {
@@ -574,6 +596,79 @@ internal fun Path.addPluginManagementToSettings() {
}
}
internal fun Path.addDependencyManagementToSettings(
gradleRepositoriesMode: RepositoriesMode = RepositoriesMode.PREFER_SETTINGS,
additionalDependencyRepositories: Set<String>,
localRepo: Path? = null,
) {
val buildGradle = resolve("build.gradle")
val buildGradleKts = resolve("build.gradle.kts")
val settingsGradle = resolve("settings.gradle")
val settingsGradleKts = resolve("settings.gradle.kts")
when {
Files.exists(settingsGradle) -> settingsGradle.modify {
if (!it.contains("dependencyManagement {")) {
"""
|$it
|
|${
getGroovyDependencyManagementBlock(
gradleRepositoriesMode,
additionalDependencyRepositories,
localRepo
)
}
|""".trimMargin()
} else {
it
}
}
Files.exists(settingsGradleKts) -> settingsGradleKts.modify {
if (!it.contains("dependencyManagement {")) {
"""
|$it
|
|${
getKotlinDependencyManagementBlock(
gradleRepositoriesMode,
additionalDependencyRepositories,
localRepo
)
}
""".trimMargin()
} else {
it
}
}
Files.exists(buildGradle) -> settingsGradle.toFile()
.writeText(
getGroovyDependencyManagementBlock(
gradleRepositoriesMode,
additionalDependencyRepositories,
localRepo
)
)
Files.exists(buildGradleKts) -> settingsGradleKts.toFile()
.writeText(
getKotlinDependencyManagementBlock(
gradleRepositoriesMode,
additionalDependencyRepositories,
localRepo
)
)
else -> error("No build-file or settings file found")
}
if (Files.exists(resolve("buildSrc"))) {
resolve("buildSrc").addDependencyManagementToSettings(gradleRepositoriesMode, additionalDependencyRepositories, localRepo)
}
}
private fun TestProject.agreeToBuildScanService() {
val settingsFile = if (Files.exists(settingsGradle)) settingsGradle else settingsGradleKts
settingsFile.append(
@@ -773,4 +868,17 @@ internal fun TestProject.suppressDependencySourcesConfigurations() {
}
""".trimIndent()
}
}
}
/**
* Represents different types of dependency management provided to tests.
*/
sealed interface DependencyManagement {
class DefaultDependencyManagement(val additionalRepos: Set<String> = emptySet()) : DependencyManagement
data object DisabledDependencyManagement : DependencyManagement
}
/**
* Resolves the temporary local repository path for the test with specified Gradle version.
*/
fun KGPBaseTest.defaultLocalRepo(gradleVersion: GradleVersion) = workingDir.resolve(gradleVersion.version).resolve("repo")
@@ -35,11 +35,4 @@ android {
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
}
repositories {
mavenLocal()
maven { url 'https://maven.google.com' }
mavenCentral()
maven { url "https://clojars.org/repo/" }
}
@@ -1,13 +1,4 @@
allprojects {
group = "a"
version = "1.0"
repositories {
mavenLocal()
mavenCentral()
maven {
name = "build"
url = rootProject.buildDir.resolve("repo").toURI()
}
}
}
@@ -12,7 +12,7 @@ publishing {
repositories {
maven {
name = "build"
url = rootProject.buildDir.resolve("repo").toURI()
url = uri("<localRepo>")
}
}
}
@@ -6,12 +6,6 @@ plugins {
kotlin("multiplatform")
}
repositories {
maven(project(":producer").layout.buildDirectory.dir("repo"))
mavenLocal()
mavenCentral()
}
kotlin {
linuxArm64()
linuxX64()
@@ -12,7 +12,7 @@ group = "org.jetbrains.sample"
publishing {
repositories {
maven(buildDir.resolve("repo"))
maven("<localRepo>")
}
}
@@ -5,13 +5,6 @@ plugins {
kotlin("multiplatform")
}
repositories {
val thirdPartyRepo: String by project
maven(thirdPartyRepo)
mavenLocal()
mavenCentral()
}
kotlin {
sourceSets {
val commonMain by getting {
@@ -1,11 +1,3 @@
plugins {
kotlin("multiplatform").apply(false)
}
allprojects {
repositories {
mavenLocal()
maven("<localRepo>")
mavenCentral()
}
}
@@ -2,11 +2,6 @@ plugins {
kotlin("multiplatform")
}
repositories {
mavenLocal()
mavenCentral()
}
group = "com.example.app"
version = "1.0"
@@ -3,11 +3,6 @@ plugins {
`maven-publish`
}
repositories {
mavenLocal()
mavenCentral()
}
group = "com.example.bar"
version = "1.0"
@@ -3,11 +3,6 @@ plugins {
`maven-publish`
}
repositories {
mavenLocal()
mavenCentral()
}
group = "com.example.foo"
version = "1.0"
@@ -3,11 +3,6 @@ plugins {
`maven-publish`
}
repositories {
mavenLocal()
mavenCentral()
}
group = "com.example.thirdparty"
version = "1.0"
@@ -2,12 +2,6 @@ plugins {
kotlin("multiplatform")
}
repositories {
mavenLocal()
maven("<localRepo>")
mavenCentral()
}
group = "com.example.app"
version = "1.0"
@@ -3,12 +3,6 @@ plugins {
`maven-publish`
}
repositories {
mavenLocal()
maven("<localRepo>")
mavenCentral()
}
group = "com.example.bar"
version = "1.0"
@@ -3,12 +3,6 @@ plugins {
`maven-publish`
}
repositories {
mavenLocal()
maven("<localRepo>")
mavenCentral()
}
group = "com.example.foo"
version = "1.0"
@@ -3,12 +3,6 @@ plugins {
`maven-publish`
}
repositories {
mavenLocal()
maven("<localRepo>")
mavenCentral()
}
group = "com.example.foo"
version = "1.0"
@@ -8,13 +8,4 @@ buildscript {
classpath "com.android.tools.build:gradle:$android_tools_version"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects {
repositories {
mavenLocal()
google()
mavenCentral()
maven { url "https://jitpack.io" }
}
}
}
@@ -1,7 +1 @@
allprojects {
repositories {
mavenLocal()
mavenCentral()
maven { url 'https://jitpack.io' }
}
}
@@ -8,12 +8,6 @@ plugins {
application
}
repositories {
mavenLocal()
maven("<localRepo>")
mavenCentral()
}
group = "com.example.serialization_app"
version = "1.0"
@@ -20,6 +20,6 @@ kotlin {
publishing {
repositories {
maven("$rootDir/../repo")
maven("<localRepo>")
}
}
@@ -5,12 +5,6 @@ plugins {
group = "me.user"
version = "1.0"
repositories {
maven("$rootDir/../repo")
mavenLocal()
mavenCentral()
}
kotlin {
val targets = listOf(
jvm(),
@@ -5,12 +5,6 @@ plugins {
group = "me.user"
version = "1.0"
repositories {
maven("$rootDir/../repo")
mavenLocal()
mavenCentral()
}
kotlin {
val targets = listOf(
jvm(),
@@ -1,6 +0,0 @@
allprojects {
repositories {
mavenLocal()
mavenCentral()
}
}
@@ -4,12 +4,6 @@ plugins {
kotlin("multiplatform")
}
repositories {
mavenLocal()
maven(project(":producer").buildDir.resolve("repository"))
mavenCentral()
}
kotlin {
jvm()
js().browser()
@@ -5,11 +5,6 @@ plugins {
`maven-publish`
}
repositories {
mavenLocal()
mavenCentral()
}
kotlin {
jvm()
js().browser()
@@ -52,8 +47,6 @@ version = "1.0.0"
publishing {
repositories {
maven(buildDir.resolve("repository")) {
name = "build"
}
maven("<localRepo>")
}
}
@@ -15,7 +15,7 @@ publishing {
}
repositories {
maven(rootDir.resolve("repo"))
maven("<localRepo>")
}
}
@@ -2,12 +2,6 @@ plugins {
kotlin("multiplatform")
}
repositories {
maven(rootDir.resolve("repo"))
mavenLocal()
mavenCentral()
}
kotlin {
jvm()
@@ -14,7 +14,7 @@ publishing {
}
repositories {
maven(rootDir.resolve("repo"))
maven("<localRepo>")
}
}
@@ -1,10 +1,5 @@
plugins {
id("org.jetbrains.kotlin.multiplatform").version("<kgp_version>")
}
repositories {
mavenLocal()
mavenCentral()
id("org.jetbrains.kotlin.multiplatform")
}
repositories {
@@ -6,11 +6,6 @@ plugins {
`maven-publish`
}
repositories {
mavenLocal()
maven("<localRepo>")
}
val disambiguationAttribute = Attribute.of("disambiguationAttribute", String::class.java)
@@ -3,11 +3,6 @@ plugins {
`maven-publish`
}
repositories {
mavenLocal()
mavenCentral()
}
group = "test"
version = "1.0"
@@ -2,11 +2,6 @@ plugins {
kotlin("multiplatform")
}
repositories {
maven("<localRepo>")
}
kotlin {
applyDefaultHierarchyTemplate()
@@ -1,10 +1,3 @@
plugins {
kotlin("multiplatform") apply false
}
allprojects {
repositories {
mavenLocal()
mavenCentral()
}
}
@@ -6,10 +6,6 @@ plugins {
group = "test"
version = "1.0"
repositories {
maven("<localRepo>")
}
kotlin {
applyDefaultHierarchyTemplate()
@@ -3,12 +3,6 @@ plugins {
`maven-publish`
}
repositories {
mavenLocal()
maven("../repo")
mavenCentral()
}
group = "com.example"
version = "1.0"
@@ -19,6 +13,6 @@ kotlin {
publishing {
repositories {
maven("../repo")
maven("<localRepo>")
}
}
@@ -2,12 +2,6 @@ plugins {
kotlin("multiplatform")
}
repositories {
mavenLocal()
maven("../repo")
mavenCentral()
}
kotlin {
jvm()
linuxX64 {
@@ -17,6 +17,6 @@ kotlin {
publishing {
repositories {
maven(url = "file://${projectDir.absolutePath.replace('\\', '/')}/../repo")
maven("<localRepo>")
}
}
@@ -2,12 +2,6 @@ plugins {
id("org.jetbrains.kotlin.multiplatform")
}
repositories {
mavenLocal()
mavenCentral()
maven { url 'repo' }
}
kotlin {
sourceSets {
hostMain {
@@ -3,11 +3,6 @@ plugins {
id("maven-publish")
}
repositories {
mavenLocal()
mavenCentral()
}
kotlin {
<SingleNativeTarget>("host") {
compilations.main.cinterops {
@@ -26,7 +26,7 @@ kotlin {
publishing {
repositories {
maven {
url = '../repo'
url = "<localRepo>"
}
}
}
@@ -2,12 +2,6 @@ plugins {
id("org.jetbrains.kotlin.multiplatform")
}
repositories {
mavenCentral()
mavenLocal()
maven("<localRepo>")
}
kotlin {
<SingleNativeTarget>("native") {
binaries {
@@ -6,11 +6,6 @@ plugins {
group = "org.sample"
version = "1.0"
repositories {
mavenLocal()
mavenCentral()
}
kotlin {
<SingleNativeTarget>("native")
}
@@ -6,12 +6,6 @@ plugins {
group = "org.sample"
version = "1.0"
repositories {
mavenLocal()
mavenCentral()
maven("<localRepo>")
}
kotlin {
<SingleNativeTarget>("native")
@@ -2,11 +2,6 @@ plugins {
id("org.jetbrains.kotlin.multiplatform")
}
repositories {
mavenLocal()
mavenCentral()
}
kotlin {
<SingleNativeTarget>("native") {
binaries {
@@ -2,12 +2,6 @@ plugins {
id("org.jetbrains.kotlin.multiplatform")
}
repositories {
mavenCentral()
mavenLocal()
maven("<localRepo>")
}
kotlin {
<SingleNativeTarget>("native") {
binaries {
@@ -6,11 +6,6 @@ plugins {
group = "org.sample"
version = "1.0"
repositories {
mavenLocal()
mavenCentral()
}
kotlin {
<SingleNativeTarget>("native")
}
@@ -6,11 +6,6 @@ plugins {
group = "org.sample"
version = "2.0"
repositories {
mavenLocal()
mavenCentral()
}
kotlin {
<SingleNativeTarget>("native")
}
@@ -6,11 +6,6 @@ plugins {
group = "org.sample"
version = "1.0"
repositories {
mavenLocal()
mavenCentral()
maven("<localRepo>")
}
kotlin {
<SingleNativeTarget>("native")
@@ -2,12 +2,6 @@ plugins {
kotlin("multiplatform")
}
repositories {
mavenCentral()
mavenLocal()
maven("<localRepo>")
}
kotlin {
jvm()
linuxX64()
@@ -25,6 +25,8 @@ import org.jetbrains.kotlin.gradle.utils.property
import org.jetbrains.kotlin.konan.target.KonanTarget
import java.io.File
private const val KONAN_DIRECTORY_NAME_TO_CHECK_EXISTENCE = "konan"
/**
* This is a nested provider for all native tasks
*/
@@ -57,8 +59,11 @@ internal class KotlinNativeProvider(project: Project, konanTarget: KonanTarget)
kotlinNativeVersion
}
// Gradle tries to evaluate this val during configuration cache,
// which lead to resolving configuration, even if k/n bundle is in konan home directory.
@Transient
private val kotlinNativeCompilerConfiguration: ConfigurableFileCollection = project.filesProvider {
// without enabled there is no configuration with this name, so we should return empty provider to support configuraiton cache
// without enabled there is no configuration with this name, so we should return empty provider to support configuration cache
if (project.kotlinNativeToolchainEnabled) {
project.configurations.named(
KOTLIN_NATIVE_BUNDLE_CONFIGURATION_NAME
@@ -79,7 +84,7 @@ internal class KotlinNativeProvider(project: Project, konanTarget: KonanTarget)
bundleDir.deleteRecursively()
}
if (!bundleDir.resolve("bin").exists()) {
if (!bundleDir.resolve(KONAN_DIRECTORY_NAME_TO_CHECK_EXISTENCE).exists()) {
val gradleCachesKotlinNativeDir =
kotlinNativeCompilerConfiguration
.singleOrNull()