From fde107b181b3f6ac1d57adffdec120cfc6659ffa Mon Sep 17 00:00:00 2001 From: Roman Artemev Date: Thu, 24 Dec 2020 17:26:31 +0300 Subject: [PATCH] [KLIB] Adapt new klib io API in K/N (cherry picked from commit 70fabb6a9db83db5f5b26b54f2656655316ea31c) --- .../interop/gen/jvm/InteropLibraryCreation.kt | 15 +++++++++------ .../konan/library/impl/KonanLibraryWriterImpl.kt | 15 +++++++++------ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/jvm/InteropLibraryCreation.kt b/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/jvm/InteropLibraryCreation.kt index 9aab4724226..4a0f66c84aa 100644 --- a/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/jvm/InteropLibraryCreation.kt +++ b/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/jvm/InteropLibraryCreation.kt @@ -5,15 +5,17 @@ package org.jetbrains.kotlin.native.interop.gen.jvm import kotlinx.metadata.* +import kotlinx.metadata.KmModuleFragment +import kotlinx.metadata.klib.fqName +import kotlinx.metadata.klib.className import kotlinx.metadata.klib.KlibModuleFragmentWriteStrategy import kotlinx.metadata.klib.KlibModuleMetadata -import kotlinx.metadata.klib.className -import kotlinx.metadata.klib.fqName import org.jetbrains.kotlin.backend.common.serialization.KlibIrVersion import org.jetbrains.kotlin.backend.common.serialization.metadata.KlibMetadataVersion import org.jetbrains.kotlin.konan.CURRENT import org.jetbrains.kotlin.konan.CompilerVersion import org.jetbrains.kotlin.konan.file.File +import org.jetbrains.kotlin.konan.library.impl.KonanLibraryLayoutForWriter import org.jetbrains.kotlin.konan.library.impl.KonanLibraryWriterImpl import org.jetbrains.kotlin.konan.target.KonanTarget import org.jetbrains.kotlin.library.KotlinLibraryVersioning @@ -21,7 +23,6 @@ import org.jetbrains.kotlin.library.KotlinAbiVersion import org.jetbrains.kotlin.library.KotlinLibrary import org.jetbrains.kotlin.library.SerializedMetadata import org.jetbrains.kotlin.library.impl.BuiltInsPlatform -import org.jetbrains.kotlin.util.removeSuffixIfPresent import java.util.* fun createInteropLibrary( @@ -43,16 +44,18 @@ fun createInteropLibrary( metadataVersion = KlibMetadataVersion.INSTANCE.toString(), irVersion = KlibIrVersion.INSTANCE.toString() ) - val outputPathWithoutExtension = outputPath.removeSuffixIfPresent(".klib") + val libFile = File(outputPath) + val unzippedDir = if (nopack) libFile else org.jetbrains.kotlin.konan.file.createTempDir(moduleName) + val layout = KonanLibraryLayoutForWriter(libFile, unzippedDir, target) KonanLibraryWriterImpl( - File(outputPathWithoutExtension), moduleName, version, target, BuiltInsPlatform.NATIVE, nopack = nopack, - shortName = shortName + shortName = shortName, + layout = layout ).apply { val serializedMetadata = metadata.write(ChunkingWriteStrategy()) addMetadata(SerializedMetadata(serializedMetadata.header, serializedMetadata.fragments, serializedMetadata.fragmentNames)) diff --git a/kotlin-native/shared/src/library/kotlin/org/jetbrains/kotlin/konan/library/impl/KonanLibraryWriterImpl.kt b/kotlin-native/shared/src/library/kotlin/org/jetbrains/kotlin/konan/library/impl/KonanLibraryWriterImpl.kt index 68dc8ede292..009c25ff286 100644 --- a/kotlin-native/shared/src/library/kotlin/org/jetbrains/kotlin/konan/library/impl/KonanLibraryWriterImpl.kt +++ b/kotlin-native/shared/src/library/kotlin/org/jetbrains/kotlin/konan/library/impl/KonanLibraryWriterImpl.kt @@ -16,15 +16,15 @@ import org.jetbrains.kotlin.library.* import org.jetbrains.kotlin.library.impl.* class KonanLibraryLayoutForWriter( - override val libDir: File, + libFile: File, + unzippedDir: File, override val target: KonanTarget -) : KonanLibraryLayout, KotlinLibraryLayoutForWriter(libDir) +) : KonanLibraryLayout, KotlinLibraryLayoutForWriter(libFile, unzippedDir) /** * Requires non-null [target]. */ class KonanLibraryWriterImpl( - libDir: File, moduleName: String, versions: KotlinLibraryVersioning, target: KonanTarget, @@ -32,7 +32,7 @@ class KonanLibraryWriterImpl( nopack: Boolean = false, shortName: String? = null, - val layout: KonanLibraryLayoutForWriter = KonanLibraryLayoutForWriter(libDir, target), + val layout: KonanLibraryLayoutForWriter, base: BaseWriter = BaseWriterImpl(layout, moduleName, versions, builtInsPlatform, listOf(target.visibleName), nopack, shortName), bitcode: BitcodeWriter = BitcodeWriterImpl(layout), @@ -57,14 +57,17 @@ fun buildLibrary( dataFlowGraph: ByteArray? ): KonanLibraryLayout { + val libFile = File(output) + val unzippedDir = if (nopack) libFile else org.jetbrains.kotlin.konan.file.createTempDir(moduleName) + val layout = KonanLibraryLayoutForWriter(libFile, unzippedDir, target) val library = KonanLibraryWriterImpl( - File(output), moduleName, versions, target, BuiltInsPlatform.NATIVE, nopack, - shortName + shortName, + layout ) library.addMetadata(metadata)