[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:
Alexander.Likhachev
2023-10-11 22:42:51 +02:00
committed by Space Team
parent b784544f8d
commit a19bd2ed2e
69 changed files with 328 additions and 306 deletions
+3 -3
View File
@@ -13,17 +13,17 @@ val commonMainSources by task<Sync> {
"$rootDir/libraries/kotlin.test/common/src/main/kotlin",
"$rootDir/libraries/kotlin.test/annotations-common/src/main/kotlin"
)
into("$buildDir/commonMainSources")
into(layout.buildDirectory.dir("commonMainSources"))
}
val commonTestSources by task<Sync> {
from("$rootDir/libraries/kotlin.test/common/src/test/kotlin")
into("$buildDir/commonTestSources")
into(layout.buildDirectory.dir("commonTestSources"))
}
val jsMainSources by task<Sync> {
from("$rootDir/libraries/kotlin.test/js/src/main/kotlin")
into("$buildDir/jsMainSources")
into(layout.buildDirectory.dir("jsMainSources"))
}
kotlin {
+12 -12
View File
@@ -19,12 +19,12 @@ node {
val jsMainSources by task<Sync> {
from("$rootDir/libraries/kotlin.test/js/it/src")
into("$buildDir/jsMainSources")
into(layout.buildDirectory.dir("jsMainSources"))
}
val jsSources by task<Sync> {
from("$rootDir/libraries/kotlin.test/js/it/js")
into("$buildDir/jsSources")
into(layout.buildDirectory.dir("jsSources"))
}
val ignoreTestFailures by extra(project.kotlinBuildProperties.ignoreTestFailures)
@@ -75,7 +75,7 @@ val populateNodeModules = tasks.register<Copy>("populateNodeModules") {
}
}
into("${buildDir}/node_modules")
into(layout.buildDirectory.dir("node_modules"))
}
fun createFrameworkTest(name: String): TaskProvider<NpmTask> {
@@ -83,12 +83,12 @@ fun createFrameworkTest(name: String): TaskProvider<NpmTask> {
dependsOn(compileTestDevelopmentExecutableKotlinJs, populateNodeModules, "npmInstall")
val testName = name
val lowerName = name.lowercase()
val tcOutput = project.file("$buildDir/tc-${lowerName}.log")
val stdOutput = "$buildDir/test-${lowerName}.log"
val errOutput = "$buildDir/test-${lowerName}.err.log"
val exitCodeFile = project.file("$buildDir/test-${lowerName}.exit-code")
val tcOutput = layout.buildDirectory.file("tc-${lowerName}.log")
val stdOutput = layout.buildDirectory.file("test-${lowerName}.log")
val errOutput = layout.buildDirectory.file("test-${lowerName}.err.log")
val exitCodeFile = layout.buildDirectory.file("test-${lowerName}.exit-code")
// inputs.files(sourceSets.test.output)
inputs.dir("${buildDir}/node_modules")
inputs.dir(layout.buildDirectory.dir("node_modules"))
outputs.files(tcOutput, stdOutput, errOutput, exitCodeFile)
args.set(listOf("run", "test-$lowerName"))
@@ -98,12 +98,12 @@ fun createFrameworkTest(name: String): TaskProvider<NpmTask> {
execOverrides {
isIgnoreExitValue = true
standardOutput = FileOutputStream(stdOutput)
errorOutput = FileOutputStream(errOutput)
standardOutput = FileOutputStream(stdOutput.get().asFile)
errorOutput = FileOutputStream(errOutput.get().asFile)
}
doLast {
println(tcOutput.readText())
if (exitCodeFile.readText() != "0" /* && !rootProject.ignoreTestFailures*/) {
println(tcOutput.get().asFile.readText())
if (exitCodeFile.get().asFile.readText() != "0" /* && !rootProject.ignoreTestFailures*/) {
throw GradleException("$testName integration test failed")
}
@@ -79,7 +79,7 @@ apiValidation {
}
tasks.dokkaHtml.configure {
outputDirectory.set(buildDir.resolve("dokka"))
outputDirectory.set(layout.buildDirectory.dir("dokka"))
pluginsMapConfiguration.set(
mapOf(
"org.jetbrains.dokka.base.DokkaBase"
+1 -1
View File
@@ -25,7 +25,7 @@ configureJavaOnlyToolchain(JdkMajorVersion.JDK_1_8)
publish()
val core = "$rootDir/core"
val relocatedCoreSrc = "$buildDir/core-relocated"
val relocatedCoreSrc = "${layout.buildDirectory.get().asFile}/core-relocated"
val proguardDeps by configurations.creating
val proguardAdditionalInJars by configurations.creating
@@ -68,7 +68,7 @@ val mavenPackagesToRelocate = listOf(
val relocatedJar by task<ShadowJar> {
configurations = listOf(embedded)
duplicatesStrategy = DuplicatesStrategy.INCLUDE
destinationDirectory.set(File(buildDir, "libs"))
destinationDirectory.set(layout.buildDirectory.dir("libs"))
archiveClassifier.set("relocated")
transform(ComponentsXmlResourceTransformer())
@@ -82,8 +82,7 @@ val relocatedJar by task<ShadowJar> {
val normalizeComponentsXmlEndings by tasks.registering {
dependsOn(relocatedJar)
val outputDirectory = buildDir.resolve(name)
val outputFile = outputDirectory.resolve(ComponentsXmlResourceTransformer.COMPONENTS_XML_PATH)
val outputFile = layout.buildDirectory.file("$name/${ComponentsXmlResourceTransformer.COMPONENTS_XML_PATH}")
val relocatedJarFile = project.provider { relocatedJar.get().singleOutputFile() }
val archiveOperations = serviceOf<ArchiveOperations>()
outputs.file(outputFile)
@@ -93,8 +92,9 @@ val normalizeComponentsXmlEndings by tasks.registering {
include { it.path == ComponentsXmlResourceTransformer.COMPONENTS_XML_PATH }
}.single().readText()
val processedComponentsXml = componentsXml.replace("\r\n", "\n")
outputDirectory.mkdirs()
outputFile.writeText(processedComponentsXml)
val outputAsFile = outputFile.get().asFile
outputAsFile.parentFile.mkdirs()
outputAsFile.writeText(processedComponentsXml)
}
}
@@ -123,7 +123,7 @@ val proguard by task<CacheableProguardTask> {
injars(mapOf("filter" to "!META-INF/versions/**,!kotlinx/coroutines/debug/**"), normalizedJar.get().outputs.files)
outjars(fileFrom(buildDir, "libs", "$jarBaseName-$version-after-proguard.jar"))
outjars(layout.buildDirectory.file("libs/$jarBaseName-$version-after-proguard.jar"))
javaLauncher.set(project.getToolchainLauncherFor(JdkMajorVersion.JDK_1_8))
+6 -6
View File
@@ -46,10 +46,10 @@ dependencies {
}
val builtinsDir = "${rootDir}/core/builtins"
val builtinsSrcDir = "${buildDir}/src/builtin-sources"
val builtinsSrcDir = "${layout.buildDirectory.get().asFile}/src/builtin-sources"
val jsDir = "${projectDir}/js"
val jsBuiltinsSrcDir = "${buildDir}/src/js-builtin-sources"
val jsBuiltinsSrcDir = "${layout.buildDirectory.get().asFile}/src/js-builtin-sources"
val commonOptIns = listOf(
"kotlin.ExperimentalMultiplatform",
@@ -473,7 +473,7 @@ kotlin {
}
}
into("$buildDir/src/wasm-builtin-sources")
into(layout.buildDirectory.dir("src/wasm-builtin-sources"))
}
}
@@ -527,7 +527,7 @@ kotlin {
val prepareKotlinTestCommonNativeSources by tasks.registering(Sync::class) {
from("../kotlin.test/common/src/main/kotlin")
from("../kotlin.test/annotations-common/src/main/kotlin")
into("$buildDir/src/native-kotlin-test-common-sources")
into(layout.buildDirectory.dir("src/native-kotlin-test-common-sources"))
}
kotlin {
@@ -642,13 +642,13 @@ tasks {
from(jsJar)
rename { _ -> "full-runtime.klib" }
// some tests expect stdlib-js klib in this location
into(rootProject.buildDir.resolve("js-ir-runtime"))
into(rootProject.layout.buildDirectory.dir("js-ir-runtime"))
}
val jsRearrangedSourcesJar by registering(Jar::class) {
archiveClassifier.set("js-sources")
archiveVersion.set("")
destinationDirectory.set(file("$buildDir/lib"))
destinationDirectory.set(layout.buildDirectory.dir("lib"))
includeEmptyDirs = false
duplicatesStrategy = DuplicatesStrategy.FAIL
@@ -25,7 +25,7 @@ val commonMainFullSources by task<Sync> {
}
}
into("$buildDir/commonMainFullSources")
into(layout.buildDirectory.dir("commonMainFullSources"))
}
val commonMainSources by task<Sync> {
@@ -72,7 +72,7 @@ val commonMainSources by task<Sync> {
commonMainFullSources.get().outputs.files.singleFile
}
into("$buildDir/commonMainSources")
into(layout.buildDirectory.dir("commonMainSources"))
}
val commonMainCollectionSources by task<Sync> {
@@ -82,7 +82,7 @@ val commonMainCollectionSources by task<Sync> {
commonMainFullSources.get().outputs.files.singleFile
}
into("$buildDir/commonMainCollectionSources")
into(layout.buildDirectory.dir("commonMainCollectionSources"))
}
val jsMainSources by task<Sync> {
@@ -131,7 +131,7 @@ val jsMainSources by task<Sync> {
into("builtins")
}
into("$buildDir/jsMainSources")
into(layout.buildDirectory.dir("jsMainSources"))
}
kotlin {
@@ -25,7 +25,7 @@ dependencies {
sourceSets {
"main" {
java.apply {
srcDir(File(buildDir, "src"))
srcDir(layout.buildDirectory.dir("src"))
}
}
"test" {}
@@ -50,7 +50,7 @@ val copySources by task<Sync> {
"kotlin/enums/EnumEntries.kt",
"kotlin/collections/AbstractList.kt",
"kotlin/io/Serializable.kt")
into(File(buildDir, "src"))
into(layout.buildDirectory.dir("src"))
}
@@ -91,6 +91,6 @@ publishing {
}
repositories {
maven("${rootProject.buildDir}/internal/repo")
maven(rootProject.layout.buildDirectory.dir("internal/repo"))
}
}
@@ -25,7 +25,7 @@ dependencies {
signature("org.codehaus.mojo.signature:java16:1.1@signature")
}
val signaturesDirectory = buildDir.resolve("signatures")
val signaturesDirectory = layout.buildDirectory.get().asFile.resolve("signatures")
val collectSignatures by tasks.registering(Sync::class) {
from(signature)
@@ -64,7 +64,7 @@ val outgoingClasspath by configurations.creating {
}
tasks.register<Delete>("clean") {
delete(project.buildDir)
delete(layout.buildDirectory)
}
//endregion
@@ -94,11 +94,12 @@ run {
implicitDependencies("com.google.protobuf:protoc:3.21.9:windows-x86_64@exe")
}
val protocExecutable = buildDir.resolve("protoc/bin")
val protocExecutable = layout.buildDirectory.file("protoc/bin")
val setupProtoc = tasks.register("setupProtoc") {
doFirst {
protoc.files.single().copyTo(protocExecutable, overwrite = true)
protocExecutable.setExecutable(true)
val protocFile = protocExecutable.get().asFile
protoc.files.single().copyTo(protocFile, overwrite = true)
protocFile.setExecutable(true)
}
}
@@ -122,16 +123,16 @@ run {
workingDir(project.projectDir)
commandLine(
*arrayOf(
protocExecutable.absolutePath,
argumentProviders.add {
listOf(
protocExecutable.get().asFile.absolutePath,
"-I=$protoSources",
"--java_out=${javaOutput.absolutePath}",
"--kotlin_out=${kotlinOutput.absolutePath}"
) + protoSources.listFiles().orEmpty()
.filter { it.extension == "proto" }
.map { it.path },
)
.map { it.path }
}
}
}
@@ -126,7 +126,7 @@ val cleanTestKitCacheTask = tasks.register<Delete>("cleanTestKitCache") {
group = "Build"
description = "Deletes temporary Gradle TestKit cache"
delete(project.buildDir.resolve("testKitCache"))
delete(layout.buildDirectory.dir("testKitCache"))
}
tasks.register<Delete>("cleanUserHomeKonanDir") {
@@ -7,7 +7,7 @@ plugins {
}
repositories {
maven(project(":producer").buildDir.resolve("repo"))
maven(project(":producer").layout.buildDirectory.dir("repo"))
mavenLocal()
mavenCentral()
}
@@ -68,7 +68,7 @@ noDefaultJar()
val relocatedJar by task<ShadowJar> {
configurations = listOf(relocatedJarContents)
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
destinationDirectory.set(File(buildDir, "libs"))
destinationDirectory.set(layout.buildDirectory.dir("libs"))
archiveClassifier.set("before-proguard")
// don't add this files to resources classpath to avoid IDE exceptions on kotlin project
@@ -87,7 +87,7 @@ val proguard by task<CacheableProguardTask> {
injars(mapOf("filter" to "!META-INF/versions/**,!kotlinx/coroutines/debug/**"), relocatedJar.get().outputs.files)
outjars(fileFrom(buildDir, "libs", "$jarBaseName-$version-after-proguard.jar"))
outjars(layout.buildDirectory.file("libs/$jarBaseName-$version-after-proguard.jar"))
javaLauncher.set(project.getToolchainLauncherFor(JdkMajorVersion.JDK_1_8))