[Gradle, K/N] Unpack compiler into temp directory then move to proper place

#KT-39016 Fixed
This commit is contained in:
Alexander Likhachev
2021-02-17 12:50:44 +03:00
parent 45d423e78c
commit 172b5f9621
2 changed files with 18 additions and 6 deletions
@@ -8,9 +8,7 @@
package org.jetbrains.kotlin.gradle.plugin.mpp
import org.gradle.BuildAdapter
import org.gradle.api.Project
import org.gradle.api.invocation.Gradle
import org.jetbrains.kotlin.compilerRunner.konanHome
import org.jetbrains.kotlin.compilerRunner.konanVersion
import org.jetbrains.kotlin.gradle.plugin.*
@@ -21,7 +19,6 @@ import org.jetbrains.kotlin.gradle.targets.native.internal.PlatformLibrariesGene
import org.jetbrains.kotlin.gradle.targets.native.internal.setUpKotlinNativePlatformDependencies
import org.jetbrains.kotlin.gradle.utils.NativeCompilerDownloader
import org.jetbrains.kotlin.gradle.utils.SingleActionPerProject
import org.jetbrains.kotlin.gradle.utils.isConfigurationCacheAvailable
import org.jetbrains.kotlin.konan.CompilerVersion
import org.jetbrains.kotlin.konan.target.HostManager
import org.jetbrains.kotlin.konan.target.KonanTarget
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.konan.MetaVersion
import org.jetbrains.kotlin.konan.target.HostManager
import org.jetbrains.kotlin.konan.util.DependencyDirectories
import java.io.File
import java.nio.file.Files
class NativeCompilerDownloader(
val project: Project,
@@ -127,9 +128,23 @@ class NativeCompilerDownloader(
logger.lifecycle("Unpack Kotlin/Native compiler to $compilerDirectory")
logger.lifecycleWithDuration("Unpack Kotlin/Native compiler to $compilerDirectory finished,") {
project.copy {
it.from(archiveFileTree(archive))
it.into(DependencyDirectories.localKonanDir)
val tmpDir = Files.createTempDirectory("").toFile()
try {
logger.debug("Unpacking Kotlin/Native compiler to tmp directory $tmpDir")
project.copy {
it.from(archiveFileTree(archive))
it.into(tmpDir)
}
val compilerTmp = tmpDir.resolve(dependencyNameWithVersion)
if (!compilerTmp.renameTo(compilerDirectory)) {
project.copy {
it.from(compilerTmp)
it.into(compilerDirectory)
}
}
logger.debug("Moved Kotlin/Native compiler from $tmpDir to $compilerDirectory")
} finally {
tmpDir.deleteRecursively()
}
}