KT-34862 use abi snapshot instead of build history files

Use jar snapshot instead build history file to avoid using time stamps and support remote gradle cache
This commit is contained in:
nataliya.valtman
2020-10-20 13:14:11 +03:00
parent e5fbd0e2d8
commit f6b428f271
33 changed files with 942 additions and 168 deletions
@@ -30,9 +30,10 @@ abstract class AbstractIncrementalMultiModuleCompilerRunnerTest<Args : CommonCom
private val nameToModules = mutableMapOf<String, MutableSet<IncrementalModuleEntry>>()
private val jarToClassListFile = mutableMapOf<File, File>()
private val jarToModule = mutableMapOf<File, IncrementalModuleEntry>()
private val jarToAbiSnapshot = mutableMapOf<File, File>()
protected val incrementalModuleInfo: IncrementalModuleInfo by lazy {
IncrementalModuleInfo(workingDir, workingDir, dirToModule, nameToModules, jarToClassListFile, jarToModule)
IncrementalModuleInfo(workingDir, workingDir, dirToModule, nameToModules, jarToClassListFile, jarToModule, jarToAbiSnapshot)
}
protected abstract val modulesApiHistory: ApiHistory
@@ -97,8 +98,9 @@ abstract class AbstractIncrementalMultiModuleCompilerRunnerTest<Args : CommonCom
val moduleBuildDir = File(outDir, moduleName)
val moduleCacheDir = File(cacheDir, moduleName)
val moduleBuildHistoryFile = buildHistoryFile(moduleCacheDir)
val abiSnapshotFile = abiSnapshotFile(moduleCacheDir)
val moduleEntry = IncrementalModuleEntry(workingDir.absolutePath, moduleName, outDir, moduleBuildHistoryFile)
val moduleEntry = IncrementalModuleEntry(workingDir.absolutePath, moduleName, outDir, moduleBuildHistoryFile, abiSnapshotFile)
dirToModule[moduleBuildDir] = moduleEntry
nameToModules.getOrPut(moduleName) { mutableSetOf() }.add(moduleEntry)
@@ -177,6 +177,9 @@ abstract class AbstractIncrementalCompilerRunnerTestBase<Args : CommonCompilerAr
@JvmStatic
protected fun buildHistoryFile(cacheDir: File): File = File(cacheDir, "build-history.bin")
@JvmStatic
protected fun abiSnapshotFile(cacheDir: File): File = File(cacheDir, IncrementalCompilerRunner.ABI_SNAPSHOT_FILE_NAME)
private const val ARGUMENTS_FILE_NAME = "args.txt"
private fun parseAdditionalArgs(testDir: File): List<String> {
@@ -26,9 +26,11 @@ class ModulesApiHistoryAndroidTest {
private lateinit var appRoot: File
private lateinit var appKotlinDestination: File
private lateinit var appHistory: File
private lateinit var appAbiSnapshot: File
private lateinit var libRoot: File
private lateinit var libKotlinDestination: File
private lateinit var libHistory: File
private lateinit var libAbiSnapshot: File
private lateinit var androidHistory: ModulesApiHistoryAndroid
@@ -38,8 +40,9 @@ class ModulesApiHistoryAndroidTest {
appRoot = projectRoot.resolve("app")
appHistory = appRoot.resolve("build/tmp/kotlin/app_history.bin")
appAbiSnapshot = appRoot.resolve("build/tmp/kotlin/app_abi_snapshot.bin")
appKotlinDestination = appRoot.resolve("build/tmp/kotlin-classes").apply { mkdirs() }
val appEntry = IncrementalModuleEntry(":app", "app", appRoot.resolve("build"), appHistory)
val appEntry = IncrementalModuleEntry(":app", "app", appRoot.resolve("build"), appHistory, appAbiSnapshot)
appRoot.resolve("build/intermediates/classes/meta-inf/").apply {
mkdirs()
resolve("app.kotlin_module").createNewFile()
@@ -47,8 +50,9 @@ class ModulesApiHistoryAndroidTest {
libRoot = projectRoot.resolve("lib")
libHistory = libRoot.resolve("lib/build/tmp/kotlin/lib_history.bin")
libAbiSnapshot = libRoot.resolve("lib/build/tmp/kotlin/lib_abi_snapshot.bin")
libKotlinDestination = libRoot.resolve("build/tmp/kotlin-classes").apply { mkdirs() }
val libEntry = IncrementalModuleEntry(":lib", "lib", libRoot.resolve("build"), libHistory)
val libEntry = IncrementalModuleEntry(":lib", "lib", libRoot.resolve("build"), libHistory, libAbiSnapshot)
libRoot.resolve("build/intermediates/classes/meta-inf/").apply {
mkdirs()
resolve("lib.kotlin_module").createNewFile()
@@ -60,7 +64,8 @@ class ModulesApiHistoryAndroidTest {
dirToModule = mapOf(appKotlinDestination to appEntry, libKotlinDestination to libEntry),
nameToModules = mapOf("app" to setOf(appEntry), "lib" to setOf(libEntry)),
jarToClassListFile = mapOf(),
jarToModule = mapOf()
jarToModule = mapOf(),
jarToAbiSnapshot = mapOf()
)
androidHistory = ModulesApiHistoryAndroid(info)