Build: Make task inputs relative to improve caching

This commit is contained in:
Vyacheslav Gerasimov
2020-01-20 21:24:02 +03:00
parent 8e0dd604af
commit 1f3755248c
3 changed files with 19 additions and 11 deletions
+7 -3
View File
@@ -1,3 +1,4 @@
import org.gradle.api.tasks.PathSensitivity.RELATIVE
import java.io.File
plugins {
@@ -20,9 +21,9 @@ val prepareSources by tasks.registering(Sync::class) {
val serialize by tasks.registering(NoDebugJavaExec::class) {
dependsOn(prepareSources)
val outDir = "$buildDir/$name"
val outDir = buildDir.resolve(name)
val inDirs = arrayOf(builtinsSrc, builtinsNative, builtinsCherryPicked)
inDirs.forEach { inputs.dir(it) }
inDirs.forEach { inputs.dir(it).withPathSensitivity(RELATIVE) }
outputs.dir(outDir)
outputs.cacheIf { true }
@@ -30,7 +31,10 @@ val serialize by tasks.registering(NoDebugJavaExec::class) {
classpath(rootProject.buildscript.configurations["bootstrapCompilerClasspath"])
main = "org.jetbrains.kotlin.serialization.builtins.RunKt"
jvmArgs("-Didea.io.use.nio2=true")
args(outDir, *inDirs)
args(
outDir.relativeTo(projectDir),
*inDirs.map { it.relativeTo(projectDir) }.toTypedArray()
)
}
val builtinsJar by task<Jar> {
+2 -1
View File
@@ -4,6 +4,7 @@ import com.github.jengelman.gradle.plugins.shadow.transformers.Transformer
import com.github.jengelman.gradle.plugins.shadow.transformers.TransformerContext
import kotlinx.metadata.jvm.KmModuleVisitor
import kotlinx.metadata.jvm.KotlinModuleMetadata
import org.gradle.api.tasks.PathSensitivity.RELATIVE
import proguard.gradle.ProGuardTask
import shadow.org.apache.tools.zip.ZipEntry
import shadow.org.apache.tools.zip.ZipOutputStream
@@ -126,7 +127,7 @@ val stripMetadata by tasks.registering {
dependsOn(reflectShadowJar)
val inputJar = provider { reflectShadowJar.get().outputs.files.singleFile }
val outputJar = File("$libsDir/kotlin-reflect-stripped.jar")
inputs.file(inputJar)
inputs.file(inputJar).withPathSensitivity(RELATIVE)
outputs.file(outputJar)
outputs.cacheIf { true }
doLast {
+10 -7
View File
@@ -23,8 +23,8 @@ def builtinsSrcDir2 = "${buildDir}/builtin-sources-for-builtins"
def commonSrcDir = "${projectDir}/../src/kotlin"
def commonSrcDir2 = "${projectDir}/../common/src"
def jsCommonDir = "${projectDir}/../js"
def coroutinesExpJsSrcDir = "${rootDir}/libraries/stdlib/coroutines-experimental/js/src"
def coroutinesExpJsSrcDir = "${rootDir}/libraries/stdlib/coroutines-experimental/js/src"
def builtinsDir = "${rootDir}/core/builtins"
def unsignedCommonSrcDir = "${rootDir}/libraries/stdlib/unsigned/src"
def coroutinesJsModuleName = 'kotlin-stdlib-coroutines'
@@ -146,7 +146,10 @@ compileKotlin2Js {
sourceMap = true
sourceMapPrefix = "./"
freeCompilerArgs += [
"-source-map-base-dirs", [builtinsSrcDir, jsSrcDir, jsCommonSrcDir, commonSrcDir, commonSrcDir2, unsignedCommonSrcDir].collect { file(it).absoluteFile }.join(File.pathSeparator),
"-source-map-base-dirs",
[builtinsSrcDir, jsSrcDir, jsCommonSrcDir, commonSrcDir, commonSrcDir2, unsignedCommonSrcDir]
.collect { file(it).absoluteFile }
.join(File.pathSeparator),
"-Xuse-experimental=kotlin.Experimental",
"-Xuse-experimental=kotlin.ExperimentalMultiplatform",
"-Xuse-experimental=kotlin.contracts.ExperimentalContracts",
@@ -184,11 +187,11 @@ compileTestKotlin2Js {
task compileJs(type: NoDebugJavaExec) {
dependsOn compileBuiltinsKotlin2Js, compileKotlin2Js, compileCoroutinesExperimentalKotlin2Js
inputs.files(compileBuiltinsKotlin2Js.outputs.files)
inputs.files(compileKotlin2Js.outputs.files)
inputs.files(compileCoroutinesExperimentalKotlin2Js.outputs.files)
inputs.dir(jsSrcDir)
inputs.dir(jsCommonSrcDir)
inputs.files(compileBuiltinsKotlin2Js.outputs.files).withPathSensitivity(PathSensitivity.RELATIVE)
inputs.files(compileKotlin2Js.outputs.files).withPathSensitivity(PathSensitivity.RELATIVE)
inputs.files(compileCoroutinesExperimentalKotlin2Js.outputs.files).withPathSensitivity(PathSensitivity.RELATIVE)
inputs.dir(jsSrcDir).withPathSensitivity(PathSensitivity.RELATIVE)
inputs.dir(jsCommonSrcDir).withPathSensitivity(PathSensitivity.RELATIVE)
outputs.file(jsOutputFile)
outputs.file("${jsOutputFile}.map")