Fixed konan.data.dir with caches
Removed TODOs after updating to kotlin bootstrap version with konan.data.dir gradle property changes Fixed warning of incorrect passing -Xkonan-data-dir arg in konanc from KGP and fixed setting konan-data-dir in SetupConfiguration#setupCommonOptionsForCaches #KT-60660 Fixed Merge-request: KT-MR-11299 Merged-by: Dmitrii Krasnov <Dmitrii.Krasnov@jetbrains.com>
This commit is contained in:
committed by
Space Team
parent
e8905ea849
commit
ade88e2b0f
+17
-12
@@ -31,7 +31,8 @@ private val Project.jvmArgs
|
||||
get() = PropertiesProvider(this).nativeJvmArgs?.split("\\s+".toRegex()).orEmpty()
|
||||
|
||||
internal val Project.konanHome: String
|
||||
get() = PropertiesProvider(this).nativeHome?.let { file(it).absolutePath }
|
||||
get() = PropertiesProvider(this).konanDataDir?.let { NativeCompilerDownloader(project).compilerDirectory.absolutePath }
|
||||
?: PropertiesProvider(this).nativeHome?.let { file(it).absolutePath }
|
||||
?: NativeCompilerDownloader(project).compilerDirectory.absolutePath
|
||||
|
||||
internal val Project.disableKonanDaemon: Boolean
|
||||
@@ -90,14 +91,14 @@ internal abstract class KotlinNativeToolRunner(
|
||||
val konanDataDir: String?,
|
||||
) {
|
||||
companion object {
|
||||
fun fromProject(project: Project) = Settings(
|
||||
fun of(konanHome: String, konanDataDir: String?, project: Project) = Settings(
|
||||
konanVersion = project.konanVersion,
|
||||
konanHome = project.konanHome,
|
||||
konanPropertiesFile = project.file("${project.konanHome}/konan/konan.properties"),
|
||||
konanHome = konanHome,
|
||||
konanPropertiesFile = project.file("${konanHome}/konan/konan.properties"),
|
||||
useXcodeMessageStyle = project.useXcodeMessageStyle,
|
||||
jvmArgs = project.jvmArgs,
|
||||
classpath = project.files(project.kotlinNativeCompilerJar, "${project.konanHome}/konan/lib/trove4j.jar"),
|
||||
konanDataDir = project.konanDataDir
|
||||
classpath = project.files(project.kotlinNativeCompilerJar, "${konanHome}/konan/lib/trove4j.jar"),
|
||||
konanDataDir = konanDataDir
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -146,15 +147,15 @@ internal abstract class KotlinNativeToolRunner(
|
||||
super.run(args + extractArgsFromSettings())
|
||||
}
|
||||
|
||||
private fun extractArgsFromSettings(): List<String> {
|
||||
return settings.konanDataDir?.let { listOf("-Xkonan-data-dir", it) } ?: emptyList()
|
||||
protected open fun extractArgsFromSettings(): List<String> {
|
||||
return settings.konanDataDir?.let { listOf("-Xkonan-data-dir=$it") } ?: emptyList()
|
||||
}
|
||||
}
|
||||
|
||||
/** A common ancestor for all runners that run the cinterop tool. */
|
||||
internal abstract class AbstractKotlinNativeCInteropRunner(
|
||||
toolName: String,
|
||||
settings: Settings,
|
||||
private val settings: Settings,
|
||||
executionContext: GradleExecutionContext,
|
||||
metricsReporter: BuildMetricsReporter<GradleBuildTime, GradleBuildPerformanceMetric>
|
||||
) : KotlinNativeToolRunner(toolName, settings, executionContext, metricsReporter) {
|
||||
@@ -171,6 +172,10 @@ internal abstract class AbstractKotlinNativeCInteropRunner(
|
||||
result
|
||||
}
|
||||
|
||||
override fun extractArgsFromSettings(): List<String> {
|
||||
return settings.konanDataDir?.let { listOf("-Xkonan-data-dir", it) } ?: emptyList()
|
||||
}
|
||||
|
||||
private val llvmExecutablesPath: String? by lazy {
|
||||
if (HostManager.host == KonanTarget.MINGW_X64) {
|
||||
// TODO: Read it from Platform properties when it is accessible.
|
||||
@@ -222,8 +227,8 @@ internal class KotlinNativeCompilerRunner(
|
||||
val disableKonanDaemon: Boolean,
|
||||
) {
|
||||
companion object {
|
||||
fun fromProject(project: Project) = Settings(
|
||||
parent = KotlinNativeToolRunner.Settings.fromProject(project),
|
||||
fun of(konanHome: String, konanDataDir: String?, project: Project) = Settings(
|
||||
parent = KotlinNativeToolRunner.Settings.of(konanHome, konanDataDir, project),
|
||||
disableKonanDaemon = project.disableKonanDaemon,
|
||||
)
|
||||
}
|
||||
@@ -260,7 +265,7 @@ internal class KotlinNativeLibraryGenerationRunner(
|
||||
|
||||
companion object {
|
||||
fun fromProject(project: Project) = KotlinNativeLibraryGenerationRunner(
|
||||
settings = Settings.fromProject(project),
|
||||
settings = Settings.of(project.konanHome, project.konanDataDir, project),
|
||||
executionContext = GradleExecutionContext.fromProject(project),
|
||||
metricsReporter = GradleBuildMetricsReporter()
|
||||
)
|
||||
|
||||
+3
-4
@@ -14,6 +14,7 @@ import org.gradle.api.logging.Logger
|
||||
import org.gradle.api.provider.ValueSource
|
||||
import org.gradle.api.provider.ValueSourceParameters
|
||||
import org.jetbrains.kotlin.compilerRunner.KotlinNativeToolRunner
|
||||
import org.jetbrains.kotlin.compilerRunner.konanDataDir
|
||||
import org.jetbrains.kotlin.compilerRunner.konanHome
|
||||
import org.jetbrains.kotlin.compilerRunner.konanVersion
|
||||
import org.jetbrains.kotlin.gradle.logging.kotlinInfo
|
||||
@@ -48,7 +49,7 @@ class NativeCompilerDownloader(
|
||||
|
||||
val compilerDirectory: File
|
||||
get() = DependencyDirectories
|
||||
.getLocalKonanDir(project.kotlinPropertiesProvider.konanDataDir)
|
||||
.getLocalKonanDir(project.konanDataDir)
|
||||
.resolve(dependencyNameWithOsAndVersion)
|
||||
|
||||
private val logger: Logger
|
||||
@@ -200,7 +201,7 @@ class NativeCompilerDownloader(
|
||||
|
||||
private fun checkClassPath() {
|
||||
project.providers.of(NativeCompilerDownloaderClassPathChecker::class.java) {
|
||||
it.parameters.classPath.setFrom(KotlinNativeToolRunner.Settings.fromProject(project).classpath)
|
||||
it.parameters.classPath.setFrom(KotlinNativeToolRunner.Settings.of(project.konanHome, project.konanDataDir, project).classpath)
|
||||
}.usedAtConfigurationTime(project.configurationTimePropertiesAccessor).get()
|
||||
}
|
||||
|
||||
@@ -228,7 +229,6 @@ internal fun Project.setupNativeCompiler(konanTarget: KonanTarget) {
|
||||
}
|
||||
|
||||
downloader.downloadIfNeeded()
|
||||
|
||||
logger.info("Kotlin/Native distribution: $konanHome")
|
||||
} else {
|
||||
logger.info("User-provided Kotlin/Native distribution: $konanHome")
|
||||
@@ -239,4 +239,3 @@ internal fun Project.setupNativeCompiler(konanTarget: KonanTarget) {
|
||||
PlatformLibrariesGenerator(project, konanTarget).generatePlatformLibsIfNeeded()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+8
-2
@@ -63,7 +63,13 @@ constructor(
|
||||
val compilation: KotlinNativeCompilation
|
||||
get() = binary.compilation
|
||||
|
||||
private val runnerSettings = KotlinNativeCompilerRunner.Settings.fromProject(project)
|
||||
@get:Internal
|
||||
val konanDataDir: Provider<String?> = project.provider { project.konanDataDir }
|
||||
|
||||
@get:Internal
|
||||
val konanHome: Provider<String> = project.provider { project.konanHome }
|
||||
|
||||
private val runnerSettings = KotlinNativeCompilerRunner.Settings.of(konanHome.get(), konanDataDir.getOrNull(), project)
|
||||
|
||||
final override val toolOptions: KotlinCommonCompilerToolOptions = objectFactory
|
||||
.newInstance<KotlinCommonCompilerToolOptionsDefault>()
|
||||
@@ -205,7 +211,7 @@ constructor(
|
||||
private val externalDependenciesArgs by lazy { ExternalDependenciesBuilder(project, compilation).buildCompilerArgs() }
|
||||
|
||||
private val cacheBuilderSettings by lazy {
|
||||
CacheBuilder.Settings.createWithProject(project, binary, konanTarget, toolOptions, externalDependenciesArgs)
|
||||
CacheBuilder.Settings.createWithProject(konanHome.get(), konanDataDir.getOrNull(), project, binary, konanTarget, toolOptions, externalDependenciesArgs)
|
||||
}
|
||||
|
||||
private class CacheSettings(val orchestration: NativeCacheOrchestration, val kind: NativeCacheKind,
|
||||
|
||||
+15
-6
@@ -358,9 +358,11 @@ internal constructor(
|
||||
@get:Internal // these sources are normally a subset of `source` ones which are already tracked
|
||||
val commonSources: ConfigurableFileCollection = project.files()
|
||||
|
||||
@Optional
|
||||
@get:Input
|
||||
val konanDataDir: String? = project.konanDataDir
|
||||
@get:Internal
|
||||
val konanDataDir: Provider<String?> = project.provider { project.konanDataDir }
|
||||
|
||||
@get:Internal
|
||||
val konanHome: Provider<String> = project.provider { project.konanHome }
|
||||
|
||||
@get:Nested
|
||||
override val multiplatformStructure: K2MultiplatformStructure = objectFactory.newInstance()
|
||||
@@ -430,7 +432,7 @@ internal constructor(
|
||||
override val additionalCompilerOptions: Provider<Collection<String>>
|
||||
get() = compilerOptions.freeCompilerArgs as Provider<Collection<String>>
|
||||
|
||||
private val runnerSettings = KotlinNativeCompilerRunner.Settings.fromProject(project)
|
||||
private val runnerSettings = KotlinNativeCompilerRunner.Settings.of(konanHome.get(), konanDataDir.getOrNull(), project)
|
||||
// endregion.
|
||||
|
||||
@Suppress("DeprecatedCallableAddReplaceWith")
|
||||
@@ -759,6 +761,8 @@ internal class CacheBuilder(
|
||||
|
||||
companion object {
|
||||
fun createWithProject(
|
||||
konanHome: String,
|
||||
konanDataDir: String?,
|
||||
project: Project,
|
||||
binary: NativeBinary,
|
||||
konanTarget: KonanTarget,
|
||||
@@ -767,7 +771,7 @@ internal class CacheBuilder(
|
||||
): Settings {
|
||||
val konanCacheKind = project.getKonanCacheKind(konanTarget)
|
||||
return Settings(
|
||||
runnerSettings = KotlinNativeCompilerRunner.Settings.fromProject(project),
|
||||
runnerSettings = KotlinNativeCompilerRunner.Settings.of(konanHome, konanDataDir, project),
|
||||
konanCacheKind = konanCacheKind,
|
||||
libraries = binary.compilation.compileDependencyFiles,
|
||||
gradleUserHomeDir = project.gradle.gradleUserHomeDir,
|
||||
@@ -1074,8 +1078,13 @@ abstract class CInteropProcess @Inject internal constructor(params: Params) :
|
||||
val outputFile: File
|
||||
get() = outputFileProvider.get()
|
||||
|
||||
private val runnerSettings = KotlinNativeToolRunner.Settings.fromProject(project)
|
||||
@get:Internal
|
||||
val konanDataDir: Provider<String?> = project.provider { project.konanDataDir }
|
||||
|
||||
@get:Internal
|
||||
val konanHome: Provider<String> = project.provider { project.konanHome }
|
||||
|
||||
private val runnerSettings = KotlinNativeToolRunner.Settings.of(konanHome.get(), konanDataDir.getOrNull(), project)
|
||||
// Inputs and outputs.
|
||||
|
||||
@OutputFile
|
||||
|
||||
+9
-1
@@ -25,6 +25,8 @@ import org.jetbrains.kotlin.build.report.metrics.GradleBuildPerformanceMetric
|
||||
import org.jetbrains.kotlin.build.report.metrics.GradleBuildTime
|
||||
import org.jetbrains.kotlin.compilerRunner.KotlinNativeCompilerRunner
|
||||
import org.jetbrains.kotlin.compilerRunner.KotlinToolRunner
|
||||
import org.jetbrains.kotlin.compilerRunner.konanDataDir
|
||||
import org.jetbrains.kotlin.compilerRunner.konanHome
|
||||
import org.jetbrains.kotlin.compilerRunner.addBuildMetricsForTaskAction
|
||||
import org.jetbrains.kotlin.gradle.dsl.*
|
||||
import org.jetbrains.kotlin.gradle.internal.ensureParentDirsCreated
|
||||
@@ -175,7 +177,13 @@ abstract class KotlinNativeLinkArtifactTask @Inject constructor(
|
||||
val metrics: Property<BuildMetricsReporter<GradleBuildTime, GradleBuildPerformanceMetric>> = project.objects
|
||||
.property(GradleBuildMetricsReporter())
|
||||
|
||||
private val runnerSettings = KotlinNativeCompilerRunner.Settings.fromProject(project)
|
||||
@get:Internal
|
||||
val konanDataDir: Provider<String?> = project.provider { project.konanDataDir }
|
||||
|
||||
@get:Internal
|
||||
val konanHome: Provider<String> = project.provider { project.konanHome }
|
||||
|
||||
private val runnerSettings = KotlinNativeCompilerRunner.Settings.of(konanHome.get(), konanDataDir.getOrNull(),project)
|
||||
|
||||
init {
|
||||
baseName.convention(project.name)
|
||||
|
||||
Reference in New Issue
Block a user