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
import org.jetbrains.kotlin.gradle.util.AGPVersion
import org.jetbrains.kotlin.konan.target.HostManager
import org.jetbrains.kotlin.test.util.KtTestUtil
import org.junit.Assume
import org.junit.BeforeClass
import kotlin.test.Test
class AppleFrameworkIT : KotlinAndroid36GradleIT() {
class AppleFrameworkIT : BaseGradleIT() {
companion object {
private val gradleVersion = GradleVersionRequired.FOR_MPP_SUPPORT
@BeforeClass
@JvmStatic
fun assumeItsMac() {
@@ -21,11 +21,14 @@ class AppleFrameworkIT : KotlinAndroid36GradleIT() {
}
}
override val defaultGradleVersion: GradleVersionRequired
get() = gradleVersion
override val defaultGradleVersion = GradleVersionRequired.FOR_MPP_SUPPORT
override fun defaultBuildOptions() = super.defaultBuildOptions().copy(
androidHome = KtTestUtil.findAndroidSdk(),
androidGradlePluginVersion = AGPVersion.v3_6_0
)
@Test
fun `assemble debug AppleFrameworkForXcode for IosArm64`() {
fun `assemble AppleFrameworkForXcode tasks for IosArm64`() {
with(Project("sharedAppleFramework")) {
val options: BuildOptions = defaultBuildOptions().copy(
customEnvironmentVariables = mapOf(
@@ -33,18 +36,18 @@ class AppleFrameworkIT : KotlinAndroid36GradleIT() {
"SDK_NAME" to "iphoneos123"
)
)
build("assembleSharedDebugAppleFrameworkForXcodeIosArm64", options = options) {
build("assembleDebugAppleFrameworkForXcodeIosArm64", options = options) {
assertSuccessful()
assertTasksExecuted(":shared:assembleSharedDebugAppleFrameworkForXcodeIosArm64")
assertFileExists("/shared/build/xcode-frameworks/debug/iphoneos123/shared.framework")
assertFileExists("/shared/build/xcode-frameworks/debug/iphoneos123/shared.framework.dSYM")
assertTasksExecuted(":shared:assembleDebugAppleFrameworkForXcodeIosArm64")
assertFileExists("/shared/build/xcode-frameworks/debug/iphoneos123/sdk.framework")
assertFileExists("/shared/build/xcode-frameworks/debug/iphoneos123/sdk.framework.dSYM")
}
build("assembleSharedDebugAppleFrameworkForXcodeIosArm64", options = options) {
build("assembleCustomDebugAppleFrameworkForXcodeIosArm64", options = options) {
assertSuccessful()
assertTasksUpToDate(":shared:assembleSharedDebugAppleFrameworkForXcodeIosArm64")
assertFileExists("/shared/build/xcode-frameworks/debug/iphoneos123/shared.framework")
assertFileExists("/shared/build/xcode-frameworks/debug/iphoneos123/shared.framework.dSYM")
assertTasksExecuted(":shared:assembleCustomDebugAppleFrameworkForXcodeIosArm64")
assertFileExists("/shared/build/xcode-frameworks/debug/iphoneos123/lib.framework")
assertFileExists("/shared/build/xcode-frameworks/debug/iphoneos123/lib.framework.dSYM")
}
}
}
@@ -55,8 +58,8 @@ class AppleFrameworkIT : KotlinAndroid36GradleIT() {
build("tasks") {
assertSuccessful()
assertTasksNotRegistered(
":shared:assembleSharedDebugAppleFrameworkForXcodeIosArm64",
":shared:embedAndSignSharedAppleFrameworkForXcode"
":shared:assembleDebugAppleFrameworkForXcodeIosArm64",
":shared:embedAndSignAppleFrameworkForXcode"
)
}
}
@@ -77,10 +80,19 @@ class AppleFrameworkIT : KotlinAndroid36GradleIT() {
build("tasks", options = options) {
assertSuccessful()
assertTasksRegistered(
":shared:assembleSharedDebugAppleFrameworkForXcodeIosArm64",
":shared:embedAndSignSharedAppleFrameworkForXcode"
":shared:assembleDebugAppleFrameworkForXcodeIosArm64",
":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) {
assertSuccessful()
assertTasksRegistered(
":shared:assembleSharedDebugAppleFrameworkForXcodeIosArm64",
":shared:assembleDebugAppleFrameworkForXcodeIosArm64",
":shared:assembleCustomDebugAppleFrameworkForXcodeIosArm64"
)
assertTasksNotRegistered(
":shared:embedAndSignSharedAppleFrameworkForXcode",
":shared:assembleSharedDebugAppleFrameworkForXcodeIosX64"
":shared:embedAndSignAppleFrameworkForXcode",
":shared:assembleDebugAppleFrameworkForXcodeIosX64",
":shared:embedAndSignCustomAppleFrameworkForXcode",
":shared:assembleCustomDebugAppleFrameworkForXcodeIosX64"
)
}
}
@@ -9,7 +9,10 @@ kotlin {
ios() {
binaries {
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) =
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.
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.tasks.Copy
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.NativeBuildType
import org.jetbrains.kotlin.gradle.plugin.mpp.enabledOnCurrentHost
@@ -73,8 +74,8 @@ private fun Project.registerAssembleAppleFrameworkTask(framework: Framework): Ta
val frameworkTarget = framework.target
val frameworkTaskName = lowerCamelCaseName(
"assemble",
framework.baseName,
frameworkBuildType.name.toLowerCaseAsciiOnly(),
framework.namePrefix,
frameworkBuildType.getName(),
"AppleFrameworkForXcode",
frameworkTarget.name
)
@@ -119,7 +120,7 @@ internal fun Project.registerEmbedAndSignAppleFrameworkTask(framework: Framework
val envFrameworkSearchDir = XcodeEnvironment.frameworkSearchDir
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) {
logger.debug(
@@ -133,7 +134,7 @@ internal fun Project.registerEmbedAndSignAppleFrameworkTask(framework: Framework
registerTask<Copy>(frameworkTaskName) { task ->
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.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) =
buildDir.resolve("xcode-frameworks").resolve(frameworkSearchDir)