From 4ae51e1d02d6a7190af918c8654de8c9a7d6a59a Mon Sep 17 00:00:00 2001 From: "sebastian.sellmair" Date: Thu, 22 Jul 2021 14:39:26 +0200 Subject: [PATCH] [Gradle] AbstractCInteropCommonizerTask: Ensure outputDirectory path is unique and short enough ^KT-47056 Verification Pending --- .../commonizer/TargetLibrariesLayout.kt | 33 ++++++++----------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/native/commonizer-api/src/org/jetbrains/kotlin/commonizer/TargetLibrariesLayout.kt b/native/commonizer-api/src/org/jetbrains/kotlin/commonizer/TargetLibrariesLayout.kt index f2dedfaefdf..3141b843682 100644 --- a/native/commonizer-api/src/org/jetbrains/kotlin/commonizer/TargetLibrariesLayout.kt +++ b/native/commonizer-api/src/org/jetbrains/kotlin/commonizer/TargetLibrariesLayout.kt @@ -17,27 +17,20 @@ public object CommonizerOutputFileLayout { } public val CommonizerTarget.fileName: String - get() { - val identityString = identityString - return if (identityString.length <= maxFileNameLength) identityString - else { - val hashSuffix = "[--$identityStringHash]" - return identityString.take(maxFileNameLength - hashSuffix.length) + hashSuffix - } + get() = ensureMaxFileNameLength(identityString) + + public fun ensureMaxFileNameLength(fileName: String): String { + return if (fileName.length <= maxFileNameLength) fileName + else { + val hashSuffix = "[--${base64Hash(fileName)}]" + return fileName.take(maxFileNameLength - hashSuffix.length) + hashSuffix } + } - public val Set.fileName: String - get() = this.joinToString(";") { it.identityString }.base64Hash - - - private val CommonizerTarget.identityStringHash: String - get() = identityString.base64Hash - - private val String.base64Hash: String - get() { - val sha = MessageDigest.getInstance("SHA-1") - val base64 = Base64.getUrlEncoder() - return base64.encode(sha.digest(this.encodeToByteArray())).decodeToString() - } + public fun base64Hash(value: String): String { + val sha = MessageDigest.getInstance("SHA-1") + val base64 = Base64.getUrlEncoder() + return base64.encode(sha.digest(value.encodeToByteArray())).decodeToString() + } }