Store relative paths in JPS caches if possible
So caches can be relocated from one machine to another
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
||||
* that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.jps.build
|
||||
|
||||
import org.jetbrains.jps.model.JpsProject
|
||||
import org.jetbrains.jps.model.serialization.JpsModelSerializationDataService
|
||||
import org.jetbrains.kotlin.incremental.storage.SourceFileToPathConverter
|
||||
import java.io.File
|
||||
|
||||
private const val PROJECT_DIR_PLACEHOLDER = "${'$'}PROJECT_DIR$"
|
||||
|
||||
internal class JpsSourceFileToPathConverter(jpsProject: JpsProject) : SourceFileToPathConverter {
|
||||
private val baseDirPath = JpsModelSerializationDataService
|
||||
.getBaseDirectory(jpsProject)?.canonicalFile?.invariantSeparatorsPath
|
||||
|
||||
override fun toPath(file: File): String {
|
||||
val path = file.canonicalFile.invariantSeparatorsPath
|
||||
return when {
|
||||
baseDirPath != null && path.startsWith(baseDirPath) ->
|
||||
PROJECT_DIR_PLACEHOLDER + path.substring(baseDirPath.length)
|
||||
else -> path
|
||||
}
|
||||
}
|
||||
|
||||
override fun toFile(path: String): File =
|
||||
when {
|
||||
path.startsWith(PROJECT_DIR_PLACEHOLDER) -> {
|
||||
val basePath = baseDirPath ?: error("Could not get project root dir")
|
||||
File(basePath + path.substring(PROJECT_DIR_PLACEHOLDER.length))
|
||||
}
|
||||
else -> File(path)
|
||||
}
|
||||
}
|
||||
@@ -12,6 +12,7 @@ import org.jetbrains.jps.incremental.GlobalContextKey
|
||||
import org.jetbrains.jps.incremental.fs.CompilationRound
|
||||
import org.jetbrains.jps.incremental.messages.BuildMessage
|
||||
import org.jetbrains.jps.incremental.messages.CompilerMessage
|
||||
import org.jetbrains.jps.model.serialization.JpsModelSerializationDataService
|
||||
import org.jetbrains.kotlin.config.CompilerRunnerConstants
|
||||
import org.jetbrains.kotlin.incremental.LookupSymbol
|
||||
import org.jetbrains.kotlin.incremental.storage.SourceFileToCanonicalPathConverter
|
||||
@@ -68,7 +69,8 @@ class KotlinCompileContext(val jpsContext: CompileContext) {
|
||||
|
||||
val hasKotlinMarker = HasKotlinMarker(dataManager)
|
||||
|
||||
val sourceFileToPathConverter: SourceFileToPathConverter = SourceFileToCanonicalPathConverter
|
||||
val sourceFileToPathConverter: SourceFileToPathConverter =
|
||||
JpsSourceFileToPathConverter(jpsContext.projectDescriptor.project)
|
||||
|
||||
val lookupStorageManager = JpsLookupStorageManager(dataManager, sourceFileToPathConverter)
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.jps.incremental
|
||||
|
||||
import java.io.File
|
||||
|
||||
private val NORMAL_VERSION = 11
|
||||
private val NORMAL_VERSION = 12
|
||||
private val NORMAL_VERSION_FILE_NAME = "format-version.txt"
|
||||
|
||||
fun localCacheVersionManager(dataRoot: File, isCachesEnabled: Boolean) =
|
||||
|
||||
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.jps.incremental
|
||||
import java.io.File
|
||||
|
||||
private val DATA_CONTAINER_VERSION_FILE_NAME = "data-container-format-version.txt"
|
||||
private val DATA_CONTAINER_VERSION = 4
|
||||
private val DATA_CONTAINER_VERSION = 5
|
||||
|
||||
fun lookupsCacheVersionManager(dataRoot: File, isEnabled: Boolean) =
|
||||
CacheVersionManager(
|
||||
|
||||
Reference in New Issue
Block a user