[klib] Finish refactoring ZipUtil after bootstrap advance
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 3f781ef..f96641e 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
@@ -53,9 +53,9 @@ * Unpacks the contents of a zip archive located in [this] into the [destinationDirectory]. * * @param destinationDirectory The directory to unpack the contents to. + * @param fromSubdirectory A subdirectory inside the archive to unpack. Specify "/" if you need to unpack the whole archive. * @param resetTimeAttributes Whether to set the newly created files' time attributes * (creation time, last access time, and last modification time) to zero. - * @param fromSubdirectory A subdirectory inside the archive to unpack. Specify "/" if you need to unpack the whole archive. */ fun File.unzipTo(destinationDirectory: File, fromSubdirectory: File = File("/"), resetTimeAttributes: Boolean = false) { withZipFileSystem { @@ -67,9 +67,9 @@ * Unpacks the contents of a zip archive located in [this] into the [destinationDirectory]. * * @param destinationDirectory The directory to unpack the contents to. + * @param fromSubdirectory A subdirectory inside the archive to unpack. Specify "/" if you need to unpack the whole archive. * @param resetTimeAttributes Whether to set the newly created files' time attributes * (creation time, last access time, and last modification time) to zero. - * @param fromSubdirectory A subdirectory inside the archive to unpack. Specify "/" if you need to unpack the whole archive. */ fun Path.unzipTo(destinationDirectory: Path, fromSubdirectory: Path = Paths.get("/"), resetTimeAttributes: Boolean = false) { File(this).unzipTo(File(destinationDirectory), File(fromSubdirectory), resetTimeAttributes) @@ -81,8 +81,7 @@ fun <T> 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 7c45847..4b4c605 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 @@ 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 f09ae73..9f67ec9 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 @@ 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 @@ 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 {