Change assemble AppleFrameworkTask name to using framework name prefix

#KT-46892
This commit is contained in:
Konstantin Tskhovrebov
2021-05-21 19:46:11 +03:00
committed by teamcityserver
parent a006f35df3
commit 2129a762a5
4 changed files with 61 additions and 27 deletions
@@ -5,15 +5,15 @@
package org.jetbrains.kotlin.gradle package org.jetbrains.kotlin.gradle
import org.jetbrains.kotlin.gradle.util.AGPVersion
import org.jetbrains.kotlin.konan.target.HostManager import org.jetbrains.kotlin.konan.target.HostManager
import org.jetbrains.kotlin.test.util.KtTestUtil
import org.junit.Assume import org.junit.Assume
import org.junit.BeforeClass import org.junit.BeforeClass
import kotlin.test.Test import kotlin.test.Test
class AppleFrameworkIT : KotlinAndroid36GradleIT() { class AppleFrameworkIT : BaseGradleIT() {
companion object { companion object {
private val gradleVersion = GradleVersionRequired.FOR_MPP_SUPPORT
@BeforeClass @BeforeClass
@JvmStatic @JvmStatic
fun assumeItsMac() { fun assumeItsMac() {
@@ -21,11 +21,14 @@ class AppleFrameworkIT : KotlinAndroid36GradleIT() {
} }
} }
override val defaultGradleVersion: GradleVersionRequired override val defaultGradleVersion = GradleVersionRequired.FOR_MPP_SUPPORT
get() = gradleVersion override fun defaultBuildOptions() = super.defaultBuildOptions().copy(
androidHome = KtTestUtil.findAndroidSdk(),
androidGradlePluginVersion = AGPVersion.v3_6_0
)
@Test @Test
fun `assemble debug AppleFrameworkForXcode for IosArm64`() { fun `assemble AppleFrameworkForXcode tasks for IosArm64`() {
with(Project("sharedAppleFramework")) { with(Project("sharedAppleFramework")) {
val options: BuildOptions = defaultBuildOptions().copy( val options: BuildOptions = defaultBuildOptions().copy(
customEnvironmentVariables = mapOf( customEnvironmentVariables = mapOf(
@@ -33,18 +36,18 @@ class AppleFrameworkIT : KotlinAndroid36GradleIT() {
"SDK_NAME" to "iphoneos123" "SDK_NAME" to "iphoneos123"
) )
) )
build("assembleSharedDebugAppleFrameworkForXcodeIosArm64", options = options) { build("assembleDebugAppleFrameworkForXcodeIosArm64", options = options) {
assertSuccessful() assertSuccessful()
assertTasksExecuted(":shared:assembleSharedDebugAppleFrameworkForXcodeIosArm64") assertTasksExecuted(":shared:assembleDebugAppleFrameworkForXcodeIosArm64")
assertFileExists("/shared/build/xcode-frameworks/debug/iphoneos123/shared.framework") assertFileExists("/shared/build/xcode-frameworks/debug/iphoneos123/sdk.framework")
assertFileExists("/shared/build/xcode-frameworks/debug/iphoneos123/shared.framework.dSYM") assertFileExists("/shared/build/xcode-frameworks/debug/iphoneos123/sdk.framework.dSYM")
} }
build("assembleSharedDebugAppleFrameworkForXcodeIosArm64", options = options) { build("assembleCustomDebugAppleFrameworkForXcodeIosArm64", options = options) {
assertSuccessful() assertSuccessful()
assertTasksUpToDate(":shared:assembleSharedDebugAppleFrameworkForXcodeIosArm64") assertTasksExecuted(":shared:assembleCustomDebugAppleFrameworkForXcodeIosArm64")
assertFileExists("/shared/build/xcode-frameworks/debug/iphoneos123/shared.framework") assertFileExists("/shared/build/xcode-frameworks/debug/iphoneos123/lib.framework")
assertFileExists("/shared/build/xcode-frameworks/debug/iphoneos123/shared.framework.dSYM") assertFileExists("/shared/build/xcode-frameworks/debug/iphoneos123/lib.framework.dSYM")
} }
} }
} }
@@ -55,8 +58,8 @@ class AppleFrameworkIT : KotlinAndroid36GradleIT() {
build("tasks") { build("tasks") {
assertSuccessful() assertSuccessful()
assertTasksNotRegistered( assertTasksNotRegistered(
":shared:assembleSharedDebugAppleFrameworkForXcodeIosArm64", ":shared:assembleDebugAppleFrameworkForXcodeIosArm64",
":shared:embedAndSignSharedAppleFrameworkForXcode" ":shared:embedAndSignAppleFrameworkForXcode"
) )
} }
} }
@@ -77,10 +80,19 @@ class AppleFrameworkIT : KotlinAndroid36GradleIT() {
build("tasks", options = options) { build("tasks", options = options) {
assertSuccessful() assertSuccessful()
assertTasksRegistered( assertTasksRegistered(
":shared:assembleSharedDebugAppleFrameworkForXcodeIosArm64", ":shared:assembleDebugAppleFrameworkForXcodeIosArm64",
":shared:embedAndSignSharedAppleFrameworkForXcode" ":shared:embedAndSignAppleFrameworkForXcode",
":shared:assembleCustomDebugAppleFrameworkForXcodeIosArm64",
":shared:embedAndSignCustomAppleFrameworkForXcode"
)
assertTasksNotRegistered(
":shared:assembleDebugAppleFrameworkForXcodeIosX64",
":shared:assembleReleaseAppleFrameworkForXcodeIosX64",
":shared:assembleReleaseAppleFrameworkForXcodeIosArm64",
":shared:assembleCustomDebugAppleFrameworkForXcodeIosX64",
":shared:assembleCustomReleaseAppleFrameworkForXcodeIosX64",
":shared:assembleCustomReleaseAppleFrameworkForXcodeIosArm64"
) )
assertTasksNotRegistered(":shared:assembleSharedDebugAppleFrameworkForXcodeIosX64")
} }
} }
} }
@@ -97,11 +109,14 @@ class AppleFrameworkIT : KotlinAndroid36GradleIT() {
build("tasks", options = options) { build("tasks", options = options) {
assertSuccessful() assertSuccessful()
assertTasksRegistered( assertTasksRegistered(
":shared:assembleSharedDebugAppleFrameworkForXcodeIosArm64", ":shared:assembleDebugAppleFrameworkForXcodeIosArm64",
":shared:assembleCustomDebugAppleFrameworkForXcodeIosArm64"
) )
assertTasksNotRegistered( assertTasksNotRegistered(
":shared:embedAndSignSharedAppleFrameworkForXcode", ":shared:embedAndSignAppleFrameworkForXcode",
":shared:assembleSharedDebugAppleFrameworkForXcodeIosX64" ":shared:assembleDebugAppleFrameworkForXcodeIosX64",
":shared:embedAndSignCustomAppleFrameworkForXcode",
":shared:assembleCustomDebugAppleFrameworkForXcodeIosX64"
) )
} }
} }
@@ -9,7 +9,10 @@ kotlin {
ios() { ios() {
binaries { binaries {
framework { framework {
baseName = "shared" baseName = "sdk"
}
framework("custom") {
baseName = "lib"
} }
} }
} }
@@ -160,6 +160,14 @@ open class KotlinNativeBinaryContainer @Inject constructor(
internal fun generateBinaryName(prefix: String, buildType: NativeBuildType, outputKindClassifier: String) = internal fun generateBinaryName(prefix: String, buildType: NativeBuildType, outputKindClassifier: String) =
lowerCamelCaseName(prefix, buildType.getName(), outputKindClassifier) lowerCamelCaseName(prefix, buildType.getName(), outputKindClassifier)
internal fun extractPrefixFromBinaryName(name: String, buildType: NativeBuildType, outputKindClassifier: String): String {
val suffix = lowerCamelCaseName(buildType.getName(), outputKindClassifier)
return if (name == suffix)
""
else
name.substringBeforeLast(suffix.capitalize())
}
// TODO: Remove in 1.3.50. // TODO: Remove in 1.3.50.
private val GET_TEST_DEPRECATION_WARNING = """ private val GET_TEST_DEPRECATION_WARNING = """
| |
@@ -9,6 +9,7 @@ import org.gradle.api.Project
import org.gradle.api.plugins.BasePlugin import org.gradle.api.plugins.BasePlugin
import org.gradle.api.tasks.Copy import org.gradle.api.tasks.Copy
import org.gradle.api.tasks.TaskProvider import org.gradle.api.tasks.TaskProvider
import org.jetbrains.kotlin.gradle.dsl.KotlinNativeBinaryContainer
import org.jetbrains.kotlin.gradle.plugin.mpp.Framework import org.jetbrains.kotlin.gradle.plugin.mpp.Framework
import org.jetbrains.kotlin.gradle.plugin.mpp.NativeBuildType import org.jetbrains.kotlin.gradle.plugin.mpp.NativeBuildType
import org.jetbrains.kotlin.gradle.plugin.mpp.enabledOnCurrentHost import org.jetbrains.kotlin.gradle.plugin.mpp.enabledOnCurrentHost
@@ -73,8 +74,8 @@ private fun Project.registerAssembleAppleFrameworkTask(framework: Framework): Ta
val frameworkTarget = framework.target val frameworkTarget = framework.target
val frameworkTaskName = lowerCamelCaseName( val frameworkTaskName = lowerCamelCaseName(
"assemble", "assemble",
framework.baseName, framework.namePrefix,
frameworkBuildType.name.toLowerCaseAsciiOnly(), frameworkBuildType.getName(),
"AppleFrameworkForXcode", "AppleFrameworkForXcode",
frameworkTarget.name frameworkTarget.name
) )
@@ -119,7 +120,7 @@ internal fun Project.registerEmbedAndSignAppleFrameworkTask(framework: Framework
val envFrameworkSearchDir = XcodeEnvironment.frameworkSearchDir val envFrameworkSearchDir = XcodeEnvironment.frameworkSearchDir
val envSign = XcodeEnvironment.sign val envSign = XcodeEnvironment.sign
val frameworkTaskName = lowerCamelCaseName("embedAndSign", framework.baseName, "AppleFrameworkForXcode") val frameworkTaskName = lowerCamelCaseName("embedAndSign", framework.namePrefix, "AppleFrameworkForXcode")
if (envBuildType == null || envTarget == null || envEmbeddedFrameworksDir == null || envFrameworkSearchDir == null) { if (envBuildType == null || envTarget == null || envEmbeddedFrameworksDir == null || envFrameworkSearchDir == null) {
logger.debug( logger.debug(
@@ -133,7 +134,7 @@ internal fun Project.registerEmbedAndSignAppleFrameworkTask(framework: Framework
registerTask<Copy>(frameworkTaskName) { task -> registerTask<Copy>(frameworkTaskName) { task ->
task.group = "build" task.group = "build"
task.description = "Embed and sign ${framework.baseName} framework as requested by Xcode's environment variables" task.description = "Embed and sign ${framework.namePrefix} framework as requested by Xcode's environment variables"
task.dependsOn(assembleTask) task.dependsOn(assembleTask)
task.inputs.apply { task.inputs.apply {
@@ -162,5 +163,12 @@ internal fun Project.registerEmbedAndSignAppleFrameworkTask(framework: Framework
} }
} }
private val Framework.namePrefix: String
get() = KotlinNativeBinaryContainer.extractPrefixFromBinaryName(
name,
buildType,
outputKind.taskNameClassifier
)
private fun Project.appleFrameworkDir(frameworkSearchDir: File) = private fun Project.appleFrameworkDir(frameworkSearchDir: File) =
buildDir.resolve("xcode-frameworks").resolve(frameworkSearchDir) buildDir.resolve("xcode-frameworks").resolve(frameworkSearchDir)