Build: Make task inputs relative to improve caching
This commit is contained in:
@@ -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> {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user