From a66950b629fdb3720d08d1d5e6819d66bebe8649 Mon Sep 17 00:00:00 2001 From: Sergej Jaskiewicz Date: Thu, 8 Dec 2022 18:47:25 +0100 Subject: [PATCH] [klib] Finish refactoring of ZipUtil --- .../org/jetbrains/kotlin/konan/file/ZipUtil.kt | 3 +-- .../kotlin/library/KotlinLibraryUtils.kt | 9 ++------- .../library/impl/KotlinLibraryLayoutImpl.kt | 15 +++------------ 3 files changed, 6 insertions(+), 21 deletions(-) diff --git a/compiler/util-io/src/org/jetbrains/kotlin/konan/file/ZipUtil.kt b/compiler/util-io/src/org/jetbrains/kotlin/konan/file/ZipUtil.kt index 3f781efd041..4d01e871e2b 100644 --- a/compiler/util-io/src/org/jetbrains/kotlin/konan/file/ZipUtil.kt +++ b/compiler/util-io/src/org/jetbrains/kotlin/konan/file/ZipUtil.kt @@ -81,8 +81,7 @@ fun File.withZipFileSystem(create: Boolean, action: (FileSystem) -> T): T { fun File.withZipFileSystem(action: (FileSystem) -> T): T = this.withZipFileSystem(false, action) -// TODO: Make this function private after boostrap advance -fun File.recursiveCopyTo(destination: File, resetTimeAttributes: Boolean = false) { +private fun File.recursiveCopyTo(destination: File, resetTimeAttributes: Boolean = false) { val sourcePath = javaPath val destPath = destination.javaPath val destFs = destPath.fileSystem diff --git a/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinLibraryUtils.kt b/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinLibraryUtils.kt index 7c458473136..4b4c6054a22 100644 --- a/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinLibraryUtils.kt +++ b/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinLibraryUtils.kt @@ -1,9 +1,7 @@ package org.jetbrains.kotlin.library import org.jetbrains.kotlin.konan.file.File -import org.jetbrains.kotlin.konan.file.file -import org.jetbrains.kotlin.konan.file.recursiveCopyTo -import org.jetbrains.kotlin.konan.file.withZipFileSystem +import org.jetbrains.kotlin.konan.file.unzipTo import org.jetbrains.kotlin.library.impl.zippedKotlinLibraryChecks const val KLIB_FILE_EXTENSION = "klib" @@ -24,10 +22,7 @@ fun File.unpackZippedKonanLibraryTo(newDir: File) { newDir.delete() } - // TODO: Replace this with this.unzipTo(newDir) after bootstrap advance - this.withZipFileSystem { - it.file("/").recursiveCopyTo(newDir) - } + this.unzipTo(newDir) check(newDir.exists) { "Could not unpack $this as $newDir." } } diff --git a/compiler/util-klib/src/org/jetbrains/kotlin/library/impl/KotlinLibraryLayoutImpl.kt b/compiler/util-klib/src/org/jetbrains/kotlin/library/impl/KotlinLibraryLayoutImpl.kt index f09ae73a549..9f67ec929ba 100644 --- a/compiler/util-klib/src/org/jetbrains/kotlin/library/impl/KotlinLibraryLayoutImpl.kt +++ b/compiler/util-klib/src/org/jetbrains/kotlin/library/impl/KotlinLibraryLayoutImpl.kt @@ -3,7 +3,6 @@ package org.jetbrains.kotlin.library.impl import org.jetbrains.kotlin.konan.file.File import org.jetbrains.kotlin.konan.file.file import org.jetbrains.kotlin.konan.file.unzipTo -import org.jetbrains.kotlin.konan.file.recursiveCopyTo import org.jetbrains.kotlin.konan.file.withZipFileSystem import org.jetbrains.kotlin.library.* import org.jetbrains.kotlin.util.removeSuffixIfPresent @@ -111,19 +110,11 @@ private fun extract(zipFile: File, file: File) = zipFile.withZipFileSystem { zip fun KotlinLibraryLayoutImpl.extractDir(directory: File): File = extractDir(this.klib, directory) -// TODO: Use this implementation after bootstrap advance -//private fun extractDir(zipFile: File, directory: File): File { -// val temporary = org.jetbrains.kotlin.konan.file.createTempDir(directory.name) -// temporary.deleteOnExitRecursively() -// zipFile.unzipTo(temporary, fromSubdirectory = directory) -// return temporary -//} - -private fun extractDir(zipFile: File, directory: File): File = zipFile.withZipFileSystem { zipFileSystem -> +private fun extractDir(zipFile: File, directory: File): File { val temporary = org.jetbrains.kotlin.konan.file.createTempDir(directory.name) - zipFileSystem.file(directory).recursiveCopyTo(temporary) temporary.deleteOnExitRecursively() - temporary + zipFile.unzipTo(temporary, fromSubdirectory = directory) + return temporary } open class ExtractingKotlinLibraryLayout(zipped: KotlinLibraryLayoutImpl) : KotlinLibraryLayout {