[Build] Migrate most of the build logic from Project.buildDir usage
It's going to be deprecated in Gradle 8.3 There's currently no way to pass a `org.gradle.api.provider.Provider` to the JavaExec.systemProperty or Test.systemProperty. There's a workaround using `org.gradle.process.CommandLineArgumentProvider`, but I intentionally don't rework these calls as Gradle is going to allow passing providers to configure system properties: https://github.com/gradle/gradle/issues/12247#issuecomment-1568427242 ^KTI-1473 In Progress
This commit is contained in:
committed by
Space Team
parent
b784544f8d
commit
a19bd2ed2e
@@ -1,5 +1,4 @@
|
||||
import org.gradle.api.tasks.PathSensitivity.RELATIVE
|
||||
import java.io.File
|
||||
|
||||
plugins {
|
||||
base
|
||||
@@ -13,9 +12,6 @@ val kotlinReflectJvm = fileFrom(rootDir, "libraries/stdlib/jvm/src/kotlin/reflec
|
||||
val kotlinRangesCommon = fileFrom(rootDir, "libraries/stdlib/src/kotlin/ranges")
|
||||
val kotlinCollectionsCommon = fileFrom(rootDir, "libraries/stdlib/src/kotlin/collections")
|
||||
val kotlinAnnotationsCommon = fileFrom(rootDir, "libraries/stdlib/src/kotlin/annotations")
|
||||
val builtinsCherryPicked = fileFrom(buildDir, "src/reflect")
|
||||
val rangesCherryPicked = fileFrom(buildDir, "src/ranges")
|
||||
val builtinsCherryPickedJvm = fileFrom(buildDir, "src-jvm/reflect")
|
||||
|
||||
val runtimeElements by configurations.creating {
|
||||
isCanBeResolved = false
|
||||
@@ -47,7 +43,7 @@ val prepareRangeSources by tasks.registering(Sync::class) {
|
||||
include("WasExperimental.kt")
|
||||
}
|
||||
|
||||
into(rangesCherryPicked)
|
||||
into(layout.buildDirectory.dir("src/ranges"))
|
||||
}
|
||||
|
||||
val prepareSources by tasks.registering(Sync::class) {
|
||||
@@ -55,7 +51,7 @@ val prepareSources by tasks.registering(Sync::class) {
|
||||
exclude("typeOf.kt")
|
||||
exclude("KClasses.kt")
|
||||
}
|
||||
into(builtinsCherryPicked)
|
||||
into(layout.buildDirectory.dir("src/reflect"))
|
||||
}
|
||||
|
||||
val prepareSourcesJvm by tasks.registering(Sync::class) {
|
||||
@@ -69,13 +65,16 @@ val prepareSourcesJvm by tasks.registering(Sync::class) {
|
||||
include("KTypeParameter.kt")
|
||||
include("KVariance.kt")
|
||||
}
|
||||
into(builtinsCherryPickedJvm)
|
||||
into(layout.buildDirectory.dir("src-jvm/reflect"))
|
||||
}
|
||||
|
||||
fun serializeTask(name: String, sourcesTask: TaskProvider<*>, inDirs: List<File>) =
|
||||
/**
|
||||
* @param inDirs a list of input directories. Each value is evaluated as per [Project.file].
|
||||
*/
|
||||
fun serializeTask(name: String, sourcesTask: TaskProvider<*>, inDirs: List<Any>) =
|
||||
tasks.register(name, NoDebugJavaExec::class) {
|
||||
dependsOn(sourcesTask, prepareRangeSources)
|
||||
val outDir = buildDir.resolve(this.name)
|
||||
val outDir = layout.buildDirectory.dir(this.name)
|
||||
inDirs.forEach { inputs.dir(it).withPathSensitivity(RELATIVE) }
|
||||
outputs.dir(outDir)
|
||||
outputs.cacheIf { true }
|
||||
@@ -83,30 +82,35 @@ fun serializeTask(name: String, sourcesTask: TaskProvider<*>, inDirs: List<File>
|
||||
classpath(rootProject.buildscript.configurations["bootstrapCompilerClasspath"])
|
||||
mainClass.set("org.jetbrains.kotlin.serialization.builtins.RunKt")
|
||||
jvmArguments.add("-Didea.io.use.nio2=true")
|
||||
args(
|
||||
pathRelativeToWorkingDir(outDir),
|
||||
*inDirs.map(::pathRelativeToWorkingDir).toTypedArray()
|
||||
)
|
||||
|
||||
val inputDirectories = project.files(inDirs)
|
||||
argumentProviders.add {
|
||||
listOf(
|
||||
pathRelativeToWorkingDir(outDir.get().asFile),
|
||||
*inputDirectories.map(::pathRelativeToWorkingDir).toTypedArray()
|
||||
)
|
||||
}
|
||||
|
||||
doFirst {
|
||||
if (logger.isInfoEnabled) jvmArguments.add("-Dkotlin.builtins.serializer.log=true")
|
||||
}
|
||||
}
|
||||
|
||||
val serialize = serializeTask("serialize", prepareSources, listOf(builtinsSrc, builtinsNative, builtinsCherryPicked, rangesCherryPicked))
|
||||
val serialize = serializeTask("serialize", prepareSources, listOf(builtinsSrc, builtinsNative, prepareSources.map { it.destinationDir }, prepareRangeSources.map { it.destinationDir }))
|
||||
|
||||
val serializeJvm = serializeTask("serializeJvm", prepareSourcesJvm, listOf(builtinsSrc, builtinsNative, builtinsCherryPickedJvm, rangesCherryPicked))
|
||||
val serializeJvm = serializeTask("serializeJvm", prepareSourcesJvm, listOf(builtinsSrc, builtinsNative, prepareSourcesJvm.map { it.destinationDir }, prepareRangeSources.map { it.destinationDir }))
|
||||
|
||||
val builtinsJar by task<Jar> {
|
||||
dependsOn(serialize)
|
||||
from(serialize) { include("kotlin/**") }
|
||||
destinationDirectory.set(File(buildDir, "libs"))
|
||||
destinationDirectory.set(layout.buildDirectory.dir("libs"))
|
||||
}
|
||||
|
||||
val builtinsJvmJar by task<Jar> {
|
||||
dependsOn(serializeJvm)
|
||||
from(serializeJvm) { include("kotlin/**") }
|
||||
archiveClassifier.set("jvm")
|
||||
destinationDirectory.set(File(buildDir, "libs"))
|
||||
destinationDirectory.set(layout.buildDirectory.dir("libs"))
|
||||
}
|
||||
|
||||
val assemble by tasks.getting {
|
||||
@@ -125,6 +129,6 @@ publishing {
|
||||
}
|
||||
|
||||
repositories {
|
||||
maven("${rootProject.buildDir}/internal/repo")
|
||||
maven(rootProject.layout.buildDirectory.dir("internal/repo"))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user