Updated the klib scheme a little.
Renamed 'module' to 'manifest'. And placed module header protobuf to linkdata/<module> file rather as another line in the manifest.
This commit is contained in:
committed by
alexander-gorshenev
parent
53473fc0dd
commit
6c00815968
+8
-4
@@ -73,10 +73,8 @@ interface SplitScheme {
|
||||
get() = null
|
||||
val klibFile
|
||||
get() = File("${libDir.path}.klib")
|
||||
val moduleFile
|
||||
get() = File(libDir, "module")
|
||||
val linkdataDir
|
||||
get() = File(libDir, "linkdata")
|
||||
val manifestFile
|
||||
get() = File(libDir, "manifest")
|
||||
val resourcesDir
|
||||
get() = File(libDir, "resources")
|
||||
val targetDir
|
||||
@@ -85,6 +83,12 @@ interface SplitScheme {
|
||||
get() = File(targetDir, "kotlin")
|
||||
val nativeDir
|
||||
get() = File(targetDir, "native")
|
||||
val linkdataDir
|
||||
get() = File(libDir, "linkdata")
|
||||
val moduleHeaderFile
|
||||
get() = File(linkdataDir, "<module>")
|
||||
fun packageFile(packageName: String)
|
||||
= File(linkdataDir, if (packageName == "") "<root>" else packageName)
|
||||
}
|
||||
|
||||
// TODO: Get rid of the configuration here.
|
||||
|
||||
+8
-13
@@ -30,12 +30,12 @@ class SplitMetadataReader(override val libDir: File) : MetadataReader, SplitSche
|
||||
|
||||
override fun loadSerializedModule(currentAbiVersion: Int): NamedModuleData {
|
||||
val header = Properties()
|
||||
moduleFile.bufferedReader().use { reader ->
|
||||
manifestFile.bufferedReader().use { reader ->
|
||||
header.load(reader)
|
||||
}
|
||||
val headerAbiVersion = header.getProperty("abi_version")!!
|
||||
val moduleName = header.getProperty("module_name")!!
|
||||
val moduleData = header.getProperty("module_data")!!
|
||||
val moduleData = moduleHeaderFile.readText()
|
||||
|
||||
if ("$currentAbiVersion" != headerAbiVersion)
|
||||
error("ABI version mismatch. Compiler expects: $currentAbiVersion, the library is $headerAbiVersion")
|
||||
@@ -43,12 +43,8 @@ class SplitMetadataReader(override val libDir: File) : MetadataReader, SplitSche
|
||||
return NamedModuleData(moduleName, moduleData)
|
||||
}
|
||||
|
||||
override fun loadSerializedPackageFragment(fqName: String): String {
|
||||
val realName = if (fqName == "") "<root>" else fqName
|
||||
|
||||
return File(linkdataDir, realName).readText()
|
||||
|
||||
}
|
||||
override fun loadSerializedPackageFragment(fqName: String)
|
||||
= packageFile(fqName).readText()
|
||||
}
|
||||
|
||||
internal class SplitMetadataGenerator(override val libDir: File): SplitScheme {
|
||||
@@ -59,15 +55,14 @@ internal class SplitMetadataGenerator(override val libDir: File): SplitScheme {
|
||||
val header = Properties()
|
||||
header.putAll(hashMapOf(
|
||||
"abi_version" to "${linkData.abiVersion}",
|
||||
"module_name" to "${linkData.moduleName}",
|
||||
"module_data" to "${linkData.module}"
|
||||
"module_name" to "${linkData.moduleName}"
|
||||
))
|
||||
header.store(moduleFile.outputStream(), null)
|
||||
moduleHeaderFile.writeText(linkData.module)
|
||||
header.store(manifestFile.outputStream(), null)
|
||||
|
||||
linkData.fragments.forEachIndexed { index, it ->
|
||||
val name = linkData.fragmentNames[index]
|
||||
val realName = if (name == "") "<root>" else name
|
||||
File(linkdataDir, realName).writeText(it)
|
||||
packageFile(name).writeText(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user