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
|
import java.io.File
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
@@ -20,9 +21,9 @@ val prepareSources by tasks.registering(Sync::class) {
|
|||||||
|
|
||||||
val serialize by tasks.registering(NoDebugJavaExec::class) {
|
val serialize by tasks.registering(NoDebugJavaExec::class) {
|
||||||
dependsOn(prepareSources)
|
dependsOn(prepareSources)
|
||||||
val outDir = "$buildDir/$name"
|
val outDir = buildDir.resolve(name)
|
||||||
val inDirs = arrayOf(builtinsSrc, builtinsNative, builtinsCherryPicked)
|
val inDirs = arrayOf(builtinsSrc, builtinsNative, builtinsCherryPicked)
|
||||||
inDirs.forEach { inputs.dir(it) }
|
inDirs.forEach { inputs.dir(it).withPathSensitivity(RELATIVE) }
|
||||||
|
|
||||||
outputs.dir(outDir)
|
outputs.dir(outDir)
|
||||||
outputs.cacheIf { true }
|
outputs.cacheIf { true }
|
||||||
@@ -30,7 +31,10 @@ val serialize by tasks.registering(NoDebugJavaExec::class) {
|
|||||||
classpath(rootProject.buildscript.configurations["bootstrapCompilerClasspath"])
|
classpath(rootProject.buildscript.configurations["bootstrapCompilerClasspath"])
|
||||||
main = "org.jetbrains.kotlin.serialization.builtins.RunKt"
|
main = "org.jetbrains.kotlin.serialization.builtins.RunKt"
|
||||||
jvmArgs("-Didea.io.use.nio2=true")
|
jvmArgs("-Didea.io.use.nio2=true")
|
||||||
args(outDir, *inDirs)
|
args(
|
||||||
|
outDir.relativeTo(projectDir),
|
||||||
|
*inDirs.map { it.relativeTo(projectDir) }.toTypedArray()
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
val builtinsJar by task<Jar> {
|
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 com.github.jengelman.gradle.plugins.shadow.transformers.TransformerContext
|
||||||
import kotlinx.metadata.jvm.KmModuleVisitor
|
import kotlinx.metadata.jvm.KmModuleVisitor
|
||||||
import kotlinx.metadata.jvm.KotlinModuleMetadata
|
import kotlinx.metadata.jvm.KotlinModuleMetadata
|
||||||
|
import org.gradle.api.tasks.PathSensitivity.RELATIVE
|
||||||
import proguard.gradle.ProGuardTask
|
import proguard.gradle.ProGuardTask
|
||||||
import shadow.org.apache.tools.zip.ZipEntry
|
import shadow.org.apache.tools.zip.ZipEntry
|
||||||
import shadow.org.apache.tools.zip.ZipOutputStream
|
import shadow.org.apache.tools.zip.ZipOutputStream
|
||||||
@@ -126,7 +127,7 @@ val stripMetadata by tasks.registering {
|
|||||||
dependsOn(reflectShadowJar)
|
dependsOn(reflectShadowJar)
|
||||||
val inputJar = provider { reflectShadowJar.get().outputs.files.singleFile }
|
val inputJar = provider { reflectShadowJar.get().outputs.files.singleFile }
|
||||||
val outputJar = File("$libsDir/kotlin-reflect-stripped.jar")
|
val outputJar = File("$libsDir/kotlin-reflect-stripped.jar")
|
||||||
inputs.file(inputJar)
|
inputs.file(inputJar).withPathSensitivity(RELATIVE)
|
||||||
outputs.file(outputJar)
|
outputs.file(outputJar)
|
||||||
outputs.cacheIf { true }
|
outputs.cacheIf { true }
|
||||||
doLast {
|
doLast {
|
||||||
|
|||||||
@@ -23,8 +23,8 @@ def builtinsSrcDir2 = "${buildDir}/builtin-sources-for-builtins"
|
|||||||
def commonSrcDir = "${projectDir}/../src/kotlin"
|
def commonSrcDir = "${projectDir}/../src/kotlin"
|
||||||
def commonSrcDir2 = "${projectDir}/../common/src"
|
def commonSrcDir2 = "${projectDir}/../common/src"
|
||||||
def jsCommonDir = "${projectDir}/../js"
|
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 builtinsDir = "${rootDir}/core/builtins"
|
||||||
def unsignedCommonSrcDir = "${rootDir}/libraries/stdlib/unsigned/src"
|
def unsignedCommonSrcDir = "${rootDir}/libraries/stdlib/unsigned/src"
|
||||||
def coroutinesJsModuleName = 'kotlin-stdlib-coroutines'
|
def coroutinesJsModuleName = 'kotlin-stdlib-coroutines'
|
||||||
@@ -146,7 +146,10 @@ compileKotlin2Js {
|
|||||||
sourceMap = true
|
sourceMap = true
|
||||||
sourceMapPrefix = "./"
|
sourceMapPrefix = "./"
|
||||||
freeCompilerArgs += [
|
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.Experimental",
|
||||||
"-Xuse-experimental=kotlin.ExperimentalMultiplatform",
|
"-Xuse-experimental=kotlin.ExperimentalMultiplatform",
|
||||||
"-Xuse-experimental=kotlin.contracts.ExperimentalContracts",
|
"-Xuse-experimental=kotlin.contracts.ExperimentalContracts",
|
||||||
@@ -184,11 +187,11 @@ compileTestKotlin2Js {
|
|||||||
|
|
||||||
task compileJs(type: NoDebugJavaExec) {
|
task compileJs(type: NoDebugJavaExec) {
|
||||||
dependsOn compileBuiltinsKotlin2Js, compileKotlin2Js, compileCoroutinesExperimentalKotlin2Js
|
dependsOn compileBuiltinsKotlin2Js, compileKotlin2Js, compileCoroutinesExperimentalKotlin2Js
|
||||||
inputs.files(compileBuiltinsKotlin2Js.outputs.files)
|
inputs.files(compileBuiltinsKotlin2Js.outputs.files).withPathSensitivity(PathSensitivity.RELATIVE)
|
||||||
inputs.files(compileKotlin2Js.outputs.files)
|
inputs.files(compileKotlin2Js.outputs.files).withPathSensitivity(PathSensitivity.RELATIVE)
|
||||||
inputs.files(compileCoroutinesExperimentalKotlin2Js.outputs.files)
|
inputs.files(compileCoroutinesExperimentalKotlin2Js.outputs.files).withPathSensitivity(PathSensitivity.RELATIVE)
|
||||||
inputs.dir(jsSrcDir)
|
inputs.dir(jsSrcDir).withPathSensitivity(PathSensitivity.RELATIVE)
|
||||||
inputs.dir(jsCommonSrcDir)
|
inputs.dir(jsCommonSrcDir).withPathSensitivity(PathSensitivity.RELATIVE)
|
||||||
|
|
||||||
outputs.file(jsOutputFile)
|
outputs.file(jsOutputFile)
|
||||||
outputs.file("${jsOutputFile}.map")
|
outputs.file("${jsOutputFile}.map")
|
||||||
|
|||||||
Reference in New Issue
Block a user