KLIB API constants clean-up

This commit is contained in:
Dmitriy Dolovov
2019-10-01 16:13:15 +07:00
committed by alexander-gorshenev
parent 781c73335d
commit 5985c0c02b
11 changed files with 49 additions and 63 deletions
@@ -7,30 +7,16 @@ package org.jetbrains.kotlin.konan.library
import java.io.File
const val KLIB_FILE_EXTENSION = "klib"
const val KLIB_FILE_EXTENSION_WITH_DOT = ".$KLIB_FILE_EXTENSION"
const val KLIB_METADATA_FILE_EXTENSION = "knm"
const val KLIB_METADATA_FILE_EXTENSION_WITH_DOT = ".$KLIB_METADATA_FILE_EXTENSION"
const val KDEFINITIONS_FILE_EXTENSION = "def"
const val KONAN_STDLIB_NAME = "stdlib"
const val KLIB_DIR_NAME = "klib"
const val KONAN_COMMON_LIBS_DIR_NAME = "common"
const val KONAN_PLATFORM_LIBS_DIR_NAME = "platform"
const val KONAN_DISTRIBUTION_KLIB_DIR = "klib"
const val KONAN_DISTRIBUTION_COMMON_LIBS_DIR = "common"
const val KONAN_DISTRIBUTION_PLATFORM_LIBS_DIR = "platform"
const val KONAN_SOURCES_DIR_NAME = "sources"
const val KONAN_DISTRIBUTION_SOURCES_DIR = "sources"
val KONAN_COMMON_LIBS_PATH: File
get() = File(KLIB_DIR_NAME, KONAN_COMMON_LIBS_DIR_NAME)
fun konanCommonLibraryPath(libraryName: String) =
File(KONAN_DISTRIBUTION_KLIB_DIR, KONAN_DISTRIBUTION_COMMON_LIBS_DIR).resolve(libraryName)
val KONAN_ALL_PLATFORM_LIBS_PATH: File
get() = File(KLIB_DIR_NAME, KONAN_PLATFORM_LIBS_DIR_NAME)
fun konanCommonLibraryPath(libraryName: String): File = KONAN_COMMON_LIBS_PATH.resolve(libraryName)
fun konanSpecificPlatformLibrariesPath(platform: String): File = KONAN_ALL_PLATFORM_LIBS_PATH.resolve(platform)
fun konanPlatformLibraryPath(libraryName: String, platform: String): File = konanSpecificPlatformLibrariesPath(platform).resolve(libraryName)
fun konanPlatformLibraryPath(libraryName: String, platform: String) =
File(KONAN_DISTRIBUTION_KLIB_DIR, KONAN_DISTRIBUTION_PLATFORM_LIBS_DIR).resolve(platform).resolve(libraryName)
@@ -64,7 +64,7 @@ private class FromDistributionLiteKonanLibraryProvider(customKonanHomeDir: File?
private val konanHomeDir: Path? by lazy {
customKonanHomeDir?.takeIf {
// small sanity check to ensure that it's a valid Kotlin/Native home directory
customKonanHomeDir.resolve(KLIB_DIR_NAME).isDirectory
customKonanHomeDir.resolve(KONAN_DISTRIBUTION_KLIB_DIR).isDirectory
}?.toPath()
}
@@ -105,11 +105,11 @@ private class FromDistributionLiteKonanLibraryProvider(customKonanHomeDir: File?
fun getDataDir(platformDir: File): File = platformDir.parentFile.parentFile
return when (parentDirName) {
KONAN_COMMON_LIBS_DIR_NAME -> null to getDataDir(parentDir)
KONAN_DISTRIBUTION_COMMON_LIBS_DIR -> null to getDataDir(parentDir)
else -> {
val grandParentDir = parentDir.parentFile ?: return null
when {
grandParentDir.name == KONAN_PLATFORM_LIBS_DIR_NAME -> parentDirName to getDataDir(grandParentDir)
grandParentDir.name == KONAN_DISTRIBUTION_PLATFORM_LIBS_DIR -> parentDirName to getDataDir(grandParentDir)
else -> return null
}
}
@@ -117,7 +117,7 @@ private class FromDistributionLiteKonanLibraryProvider(customKonanHomeDir: File?
}
private fun getStdlibSources(dataDir: File): Collection<File> {
val sourcesDir = dataDir.resolve(KONAN_SOURCES_DIR_NAME).takeIf { it.isDirectory } ?: return emptyList()
val sourcesDir = dataDir.resolve(KONAN_DISTRIBUTION_SOURCES_DIR).takeIf { it.isDirectory } ?: return emptyList()
return sourcesDir.walkTopDown().maxDepth(1)
.filter { it.isFile }
@@ -5,9 +5,9 @@
package org.jetbrains.kotlin.konan.library.lite
import org.jetbrains.kotlin.konan.library.KLIB_DIR_NAME
import org.jetbrains.kotlin.konan.library.KONAN_COMMON_LIBS_DIR_NAME
import org.jetbrains.kotlin.konan.library.KONAN_PLATFORM_LIBS_DIR_NAME
import org.jetbrains.kotlin.konan.library.KONAN_DISTRIBUTION_KLIB_DIR
import org.jetbrains.kotlin.konan.library.KONAN_DISTRIBUTION_COMMON_LIBS_DIR
import org.jetbrains.kotlin.konan.library.KONAN_DISTRIBUTION_PLATFORM_LIBS_DIR
import org.jetbrains.kotlin.konan.library.KONAN_STDLIB_NAME
import org.junit.Assert.*
import org.junit.Test
@@ -71,8 +71,8 @@ class LiteKonanLibraryFacadeTests {
private fun getPotentialLibraryPathsOnLocalFS(): List<File> {
val roots = mutableListOf(externalLibsDir)
roots += klibDir.resolve(KONAN_COMMON_LIBS_DIR_NAME)
roots += klibDir.resolve(KONAN_PLATFORM_LIBS_DIR_NAME).listFiles(FileFilter { it.isDirectory }).toList()
roots += klibDir.resolve(KONAN_DISTRIBUTION_COMMON_LIBS_DIR)
roots += klibDir.resolve(KONAN_DISTRIBUTION_PLATFORM_LIBS_DIR).listFiles(FileFilter { it.isDirectory }).toList()
return roots.flatMap { it.listFiles().toList() }
}
@@ -81,10 +81,10 @@ class LiteKonanLibraryFacadeTests {
getPotentialLibraryPathsOnLocalFS().mapNotNull { libraryProvider.getLibrary(it) }.toLibraryMap()
private fun librariesExpectedInDistribution(): Map<File, FakeLibraryForTest> = listOf(
FakeLibraryForTest(klibDir.resolve(KONAN_COMMON_LIBS_DIR_NAME, KONAN_STDLIB_NAME)),
FakeLibraryForTest(klibDir.resolve(KONAN_PLATFORM_LIBS_DIR_NAME, "macos_x64", "foo"), platform = "macos_x64"),
FakeLibraryForTest(klibDir.resolve(KONAN_PLATFORM_LIBS_DIR_NAME, "macos_x64", "bar"), platform = "macos_x64"),
FakeLibraryForTest(klibDir.resolve(KONAN_PLATFORM_LIBS_DIR_NAME, "macos_x64", "baz"), platform = "macos_x64")
FakeLibraryForTest(klibDir.resolve(KONAN_DISTRIBUTION_COMMON_LIBS_DIR, KONAN_STDLIB_NAME)),
FakeLibraryForTest(klibDir.resolve(KONAN_DISTRIBUTION_PLATFORM_LIBS_DIR, "macos_x64", "foo"), platform = "macos_x64"),
FakeLibraryForTest(klibDir.resolve(KONAN_DISTRIBUTION_PLATFORM_LIBS_DIR, "macos_x64", "bar"), platform = "macos_x64"),
FakeLibraryForTest(klibDir.resolve(KONAN_DISTRIBUTION_PLATFORM_LIBS_DIR, "macos_x64", "baz"), platform = "macos_x64")
).toLibraryMap()
private fun librariesExpectedInExternalDir(): Map<File, FakeLibraryForTest> = listOf(
@@ -107,7 +107,7 @@ class LiteKonanLibraryFacadeTests {
}
private companion object {
val klibDir = konanHomeDir.resolve(KLIB_DIR_NAME)
val klibDir = konanHomeDir.resolve(KONAN_DISTRIBUTION_KLIB_DIR)
val externalLibsDir = testDataDir.resolve("external-libs")
fun <T : LiteKonanLibrary> List<T>.toLibraryMap() = map { it.path to it }.toMap()