[Gradle] Copy framework to BUILT_PRODUCTS_DIR in the embedAndSign task
^KT-63821 Verification Pending
This commit is contained in:
committed by
Space Team
parent
b78455093e
commit
af4d5605ca
+77
-85
@@ -32,34 +32,39 @@ class AppleFrameworkIT : KGPBaseTest() {
|
|||||||
nativeProject(
|
nativeProject(
|
||||||
"sharedAppleFramework",
|
"sharedAppleFramework",
|
||||||
gradleVersion,
|
gradleVersion,
|
||||||
buildOptions = defaultBuildOptions
|
|
||||||
) {
|
) {
|
||||||
|
val environmentVariables = EnvironmentalVariables(
|
||||||
val environmentVariables = mapOf(
|
|
||||||
"CONFIGURATION" to "debug",
|
"CONFIGURATION" to "debug",
|
||||||
"SDK_NAME" to "iphoneos123",
|
"SDK_NAME" to "iphoneos123",
|
||||||
"ARCHS" to "arm64",
|
"ARCHS" to "arm64",
|
||||||
"TARGET_BUILD_DIR" to "no use",
|
"TARGET_BUILD_DIR" to "no use",
|
||||||
"FRAMEWORKS_FOLDER_PATH" to "no use",
|
"FRAMEWORKS_FOLDER_PATH" to "no use",
|
||||||
"BUILT_PRODUCTS_DIR" to iosBuildProductsDir().absolutePathString(),
|
"BUILT_PRODUCTS_DIR" to projectPath.resolve("shared/build/builtProductsDir").toString(),
|
||||||
)
|
)
|
||||||
|
|
||||||
build(
|
build("assembleDebugAppleFrameworkForXcodeIosArm64", environmentVariables = environmentVariables) {
|
||||||
"assembleDebugAppleFrameworkForXcodeIosArm64",
|
|
||||||
environmentVariables = EnvironmentalVariables(environmentVariables)
|
|
||||||
) {
|
|
||||||
assertTasksExecuted(":shared:assembleDebugAppleFrameworkForXcodeIosArm64")
|
assertTasksExecuted(":shared:assembleDebugAppleFrameworkForXcodeIosArm64")
|
||||||
assertDirectoryInProjectExists("shared/build/xcode-frameworks/debug/iphoneos123/sdk.framework")
|
assertDirectoryInProjectExists("shared/build/builtProductsDir/sdk.framework")
|
||||||
assertDirectoryInProjectExists("shared/build/xcode-frameworks/debug/iphoneos123/sdk.framework.dSYM")
|
assertDirectoryInProjectExists("shared/build/builtProductsDir/sdk.framework.dSYM")
|
||||||
|
assertDirectoryInProjectDoesNotExist("shared/build/xcode-frameworks/sdk.framework")
|
||||||
}
|
}
|
||||||
|
|
||||||
build(
|
build("clean")
|
||||||
"assembleCustomDebugAppleFrameworkForXcodeIosArm64",
|
|
||||||
environmentVariables = EnvironmentalVariables(environmentVariables)
|
build("assembleDebugAppleFrameworkForXcodeIosArm64", "-Pkotlin.apple.copyFrameworkToBuiltProductsDir=false", environmentVariables = environmentVariables) {
|
||||||
) {
|
assertTasksExecuted(":shared:assembleDebugAppleFrameworkForXcodeIosArm64")
|
||||||
|
|
||||||
|
assertDirectoryInProjectExists("shared/build/xcode-frameworks/debug/iphoneos123/sdk.framework")
|
||||||
|
assertDirectoryInProjectExists("shared/build/xcode-frameworks/debug/iphoneos123/sdk.framework.dSYM")
|
||||||
|
|
||||||
|
assertDirectoryInProjectDoesNotExist("shared/build/builtProductsDir/sdk.framework")
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
build("assembleCustomDebugAppleFrameworkForXcodeIosArm64", environmentVariables = environmentVariables) {
|
||||||
assertTasksExecuted(":shared:assembleCustomDebugAppleFrameworkForXcodeIosArm64")
|
assertTasksExecuted(":shared:assembleCustomDebugAppleFrameworkForXcodeIosArm64")
|
||||||
assertDirectoryInProjectExists("shared/build/xcode-frameworks/debug/iphoneos123/lib.framework")
|
assertDirectoryInProjectExists("shared/build/builtProductsDir/lib.framework")
|
||||||
assertDirectoryInProjectExists("shared/build/xcode-frameworks/debug/iphoneos123/lib.framework.dSYM")
|
assertDirectoryInProjectExists("shared/build/builtProductsDir/lib.framework.dSYM")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -76,15 +81,15 @@ class AppleFrameworkIT : KGPBaseTest() {
|
|||||||
gradleVersion,
|
gradleVersion,
|
||||||
buildOptions = defaultBuildOptions
|
buildOptions = defaultBuildOptions
|
||||||
) {
|
) {
|
||||||
val environmentVariables = mapOf(
|
val environmentVariables = EnvironmentalVariables(
|
||||||
"CONFIGURATION" to "Release",
|
"CONFIGURATION" to "Release",
|
||||||
"SDK_NAME" to "iphonesimulator",
|
"SDK_NAME" to "iphonesimulator",
|
||||||
"ARCHS" to "arm64 x86_64",
|
"ARCHS" to "arm64 x86_64",
|
||||||
"TARGET_BUILD_DIR" to "no use",
|
"TARGET_BUILD_DIR" to "no use",
|
||||||
"FRAMEWORKS_FOLDER_PATH" to "no use",
|
"FRAMEWORKS_FOLDER_PATH" to "no use",
|
||||||
"BUILT_PRODUCTS_DIR" to iosBuildProductsDir().absolutePathString(),
|
"BUILT_PRODUCTS_DIR" to projectPath.resolve("shared/build/xcode-frameworks/Release/iphonesimulator").toString(),
|
||||||
)
|
)
|
||||||
build("assembleReleaseAppleFrameworkForXcode", environmentVariables = EnvironmentalVariables(environmentVariables)) {
|
build("assembleReleaseAppleFrameworkForXcode", environmentVariables = environmentVariables) {
|
||||||
assertTasksExecuted(":shared:linkReleaseFrameworkIosSimulatorArm64")
|
assertTasksExecuted(":shared:linkReleaseFrameworkIosSimulatorArm64")
|
||||||
assertTasksExecuted(":shared:linkReleaseFrameworkIosX64")
|
assertTasksExecuted(":shared:linkReleaseFrameworkIosX64")
|
||||||
assertTasksExecuted(":shared:assembleReleaseAppleFrameworkForXcode")
|
assertTasksExecuted(":shared:assembleReleaseAppleFrameworkForXcode")
|
||||||
@@ -106,16 +111,16 @@ class AppleFrameworkIT : KGPBaseTest() {
|
|||||||
"sharedAppleFramework",
|
"sharedAppleFramework",
|
||||||
gradleVersion,
|
gradleVersion,
|
||||||
) {
|
) {
|
||||||
val environmentVariables = mapOf(
|
val environmentVariables = EnvironmentalVariables(
|
||||||
"CONFIGURATION" to "debug",
|
"CONFIGURATION" to "debug",
|
||||||
"SDK_NAME" to "macosx",
|
"SDK_NAME" to "macosx",
|
||||||
"ARCHS" to "x86_64",
|
"ARCHS" to "x86_64",
|
||||||
"EXPANDED_CODE_SIGN_IDENTITY" to "-",
|
"EXPANDED_CODE_SIGN_IDENTITY" to "-",
|
||||||
"TARGET_BUILD_DIR" to testBuildDir.toString(),
|
"TARGET_BUILD_DIR" to testBuildDir.toString(),
|
||||||
"FRAMEWORKS_FOLDER_PATH" to "build/xcode-derived",
|
"FRAMEWORKS_FOLDER_PATH" to "build/xcode-derived",
|
||||||
"BUILT_PRODUCTS_DIR" to iosBuildProductsDir().absolutePathString(),
|
"BUILT_PRODUCTS_DIR" to projectPath.resolve("shared/build/xcode-frameworks/debug/macosx").toString(),
|
||||||
)
|
)
|
||||||
build(":shared:embedAndSignAppleFrameworkForXcode", environmentVariables = EnvironmentalVariables(environmentVariables)) {
|
build(":shared:embedAndSignAppleFrameworkForXcode", environmentVariables = environmentVariables) {
|
||||||
assertTasksExecuted(":shared:assembleDebugAppleFrameworkForXcodeMacosX64")
|
assertTasksExecuted(":shared:assembleDebugAppleFrameworkForXcodeMacosX64")
|
||||||
assertSymlinkInProjectExists("shared/build/xcode-frameworks/debug/macosx/sdk.framework/Headers")
|
assertSymlinkInProjectExists("shared/build/xcode-frameworks/debug/macosx/sdk.framework/Headers")
|
||||||
assertSymlinkExists(testBuildDir.resolve("build/xcode-derived/sdk.framework/Headers"))
|
assertSymlinkExists(testBuildDir.resolve("build/xcode-derived/sdk.framework/Headers"))
|
||||||
@@ -134,7 +139,7 @@ class AppleFrameworkIT : KGPBaseTest() {
|
|||||||
"sharedAppleFramework",
|
"sharedAppleFramework",
|
||||||
gradleVersion,
|
gradleVersion,
|
||||||
) {
|
) {
|
||||||
val environmentVariables = mapOf(
|
val environmentVariables = EnvironmentalVariables(
|
||||||
"CONFIGURATION" to "debug",
|
"CONFIGURATION" to "debug",
|
||||||
"SDK_NAME" to "iphoneos",
|
"SDK_NAME" to "iphoneos",
|
||||||
"ARCHS" to "arm64",
|
"ARCHS" to "arm64",
|
||||||
@@ -142,7 +147,7 @@ class AppleFrameworkIT : KGPBaseTest() {
|
|||||||
"FRAMEWORKS_FOLDER_PATH" to "build/xcode-derived",
|
"FRAMEWORKS_FOLDER_PATH" to "build/xcode-derived",
|
||||||
"BUILT_PRODUCTS_DIR" to iosBuildProductsDir().absolutePathString(),
|
"BUILT_PRODUCTS_DIR" to iosBuildProductsDir().absolutePathString(),
|
||||||
)
|
)
|
||||||
build(":shared:embedAndSignAppleFrameworkForXcode", environmentVariables = EnvironmentalVariables(environmentVariables)) {
|
build(":shared:embedAndSignAppleFrameworkForXcode", environmentVariables = environmentVariables) {
|
||||||
assertDirectoryInProjectExists("build/xcode-derived/sdk.framework")
|
assertDirectoryInProjectExists("build/xcode-derived/sdk.framework")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -159,7 +164,7 @@ class AppleFrameworkIT : KGPBaseTest() {
|
|||||||
"sharedAppleFramework",
|
"sharedAppleFramework",
|
||||||
gradleVersion,
|
gradleVersion,
|
||||||
) {
|
) {
|
||||||
val environmentVariables = mapOf(
|
val environmentVariables = EnvironmentalVariables(
|
||||||
"CONFIGURATION" to "debug",
|
"CONFIGURATION" to "debug",
|
||||||
"SDK_NAME" to "iphoneos",
|
"SDK_NAME" to "iphoneos",
|
||||||
"ARCHS" to "arm64",
|
"ARCHS" to "arm64",
|
||||||
@@ -168,7 +173,7 @@ class AppleFrameworkIT : KGPBaseTest() {
|
|||||||
"FRAMEWORKS_FOLDER_PATH" to "build/xcode-derived",
|
"FRAMEWORKS_FOLDER_PATH" to "build/xcode-derived",
|
||||||
"BUILT_PRODUCTS_DIR" to iosBuildProductsDir().absolutePathString(),
|
"BUILT_PRODUCTS_DIR" to iosBuildProductsDir().absolutePathString(),
|
||||||
)
|
)
|
||||||
build(":shared:embedAndSignAppleFrameworkForXcode", environmentVariables = EnvironmentalVariables(environmentVariables)) {
|
build(":shared:embedAndSignAppleFrameworkForXcode", environmentVariables = environmentVariables) {
|
||||||
assertDirectoryInProjectExists("build/xcode-derived/sdk.framework")
|
assertDirectoryInProjectExists("build/xcode-derived/sdk.framework")
|
||||||
assertDirectoryInProjectDoesNotExist("build/xcode-derived/sdk.framework.DSYM")
|
assertDirectoryInProjectDoesNotExist("build/xcode-derived/sdk.framework.DSYM")
|
||||||
}
|
}
|
||||||
@@ -198,7 +203,7 @@ class AppleFrameworkIT : KGPBaseTest() {
|
|||||||
"sharedAppleFramework",
|
"sharedAppleFramework",
|
||||||
gradleVersion,
|
gradleVersion,
|
||||||
) {
|
) {
|
||||||
val environmentVariables = mapOf(
|
val environmentVariables = EnvironmentalVariables(
|
||||||
"CONFIGURATION" to "Debug",
|
"CONFIGURATION" to "Debug",
|
||||||
"SDK_NAME" to "iphoneos",
|
"SDK_NAME" to "iphoneos",
|
||||||
"ARCHS" to "arm64",
|
"ARCHS" to "arm64",
|
||||||
@@ -220,7 +225,7 @@ class AppleFrameworkIT : KGPBaseTest() {
|
|||||||
"shared:assembleCustomReleaseAppleFrameworkForXcodeIosX64",
|
"shared:assembleCustomReleaseAppleFrameworkForXcodeIosX64",
|
||||||
"shared:assembleCustomReleaseAppleFrameworkForXcodeIosArm64"
|
"shared:assembleCustomReleaseAppleFrameworkForXcodeIosArm64"
|
||||||
),
|
),
|
||||||
environmentVariables = EnvironmentalVariables(environmentVariables)
|
environmentVariables = environmentVariables
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -295,17 +300,16 @@ class AppleFrameworkIT : KGPBaseTest() {
|
|||||||
gradleVersion,
|
gradleVersion,
|
||||||
) {
|
) {
|
||||||
val environmentVariables = EnvironmentalVariables(
|
val environmentVariables = EnvironmentalVariables(
|
||||||
mapOf(
|
"CONFIGURATION" to "Debug",
|
||||||
"CONFIGURATION" to "Debug",
|
"SDK_NAME" to "iphoneos",
|
||||||
"SDK_NAME" to "iphoneos",
|
"ARCHS" to "arm64",
|
||||||
"ARCHS" to "arm64",
|
"BUILT_PRODUCTS_DIR" to iosBuildProductsDir().absolutePathString(),
|
||||||
"BUILT_PRODUCTS_DIR" to iosBuildProductsDir().absolutePathString(),
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
buildAndAssertAllTasks(
|
buildAndAssertAllTasks(
|
||||||
registeredTasks = listOf(
|
registeredTasks = listOf(
|
||||||
"shared:embedAndSignAppleFrameworkForXcode",
|
"shared:embedAndSignAppleFrameworkForXcode",
|
||||||
"shared:embedAndSignCustomAppleFrameworkForXcode"
|
"shared:embedAndSignCustomAppleFrameworkForXcode",
|
||||||
),
|
),
|
||||||
notRegisteredTasks = listOf(
|
notRegisteredTasks = listOf(
|
||||||
"shared:assembleReleaseAppleFrameworkForXcodeIosX64",
|
"shared:assembleReleaseAppleFrameworkForXcodeIosX64",
|
||||||
@@ -315,9 +319,9 @@ class AppleFrameworkIT : KGPBaseTest() {
|
|||||||
"shared:assembleCustomDebugAppleFrameworkForXcodeIosX64",
|
"shared:assembleCustomDebugAppleFrameworkForXcodeIosX64",
|
||||||
"shared:assembleCustomReleaseAppleFrameworkForXcodeIosX64",
|
"shared:assembleCustomReleaseAppleFrameworkForXcodeIosX64",
|
||||||
"shared:assembleCustomDebugAppleFrameworkForXcodeIosArm64",
|
"shared:assembleCustomDebugAppleFrameworkForXcodeIosArm64",
|
||||||
"shared:assembleCustomReleaseAppleFrameworkForXcodeIosArm64"
|
"shared:assembleCustomReleaseAppleFrameworkForXcodeIosArm64",
|
||||||
),
|
),
|
||||||
environmentVariables = environmentVariables
|
environmentVariables = environmentVariables,
|
||||||
)
|
)
|
||||||
buildAndFail(
|
buildAndFail(
|
||||||
":shared:embedAndSignCustomAppleFrameworkForXcode",
|
":shared:embedAndSignCustomAppleFrameworkForXcode",
|
||||||
@@ -342,14 +346,12 @@ class AppleFrameworkIT : KGPBaseTest() {
|
|||||||
buildOptions = defaultBuildOptions
|
buildOptions = defaultBuildOptions
|
||||||
) {
|
) {
|
||||||
val environmentVariables = EnvironmentalVariables(
|
val environmentVariables = EnvironmentalVariables(
|
||||||
mapOf(
|
"CONFIGURATION" to "debug",
|
||||||
"CONFIGURATION" to "debug",
|
"SDK_NAME" to "iphoneos123",
|
||||||
"SDK_NAME" to "iphoneos123",
|
"ARCHS" to "arm64",
|
||||||
"ARCHS" to "arm64",
|
"TARGET_BUILD_DIR" to "no use",
|
||||||
"TARGET_BUILD_DIR" to "no use",
|
"FRAMEWORKS_FOLDER_PATH" to "no use",
|
||||||
"FRAMEWORKS_FOLDER_PATH" to "no use",
|
"BUILT_PRODUCTS_DIR" to projectPath.resolve("shared/build/xcode-frameworks/debug/iphoneos123").toString(),
|
||||||
"BUILT_PRODUCTS_DIR" to iosBuildProductsDir().absolutePathString(),
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
subProject("shared").buildGradleKts.modify {
|
subProject("shared").buildGradleKts.modify {
|
||||||
@@ -379,14 +381,12 @@ class AppleFrameworkIT : KGPBaseTest() {
|
|||||||
gradleVersion,
|
gradleVersion,
|
||||||
) {
|
) {
|
||||||
val environmentVariables = EnvironmentalVariables(
|
val environmentVariables = EnvironmentalVariables(
|
||||||
mapOf(
|
"CONFIGURATION" to "debug",
|
||||||
"CONFIGURATION" to "debug",
|
"SDK_NAME" to "iphoneos123",
|
||||||
"SDK_NAME" to "iphoneos123",
|
"ARCHS" to "arm64",
|
||||||
"ARCHS" to "arm64",
|
"TARGET_BUILD_DIR" to "no use",
|
||||||
"TARGET_BUILD_DIR" to "no use",
|
"FRAMEWORKS_FOLDER_PATH" to "no use",
|
||||||
"FRAMEWORKS_FOLDER_PATH" to "no use",
|
"BUILT_PRODUCTS_DIR" to iosBuildProductsDir().absolutePathString(),
|
||||||
"BUILT_PRODUCTS_DIR" to iosBuildProductsDir().absolutePathString(),
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
subProject("shared").buildGradleKts.appendText(
|
subProject("shared").buildGradleKts.appendText(
|
||||||
@@ -416,14 +416,12 @@ class AppleFrameworkIT : KGPBaseTest() {
|
|||||||
gradleVersion,
|
gradleVersion,
|
||||||
) {
|
) {
|
||||||
val environmentVariables = EnvironmentalVariables(
|
val environmentVariables = EnvironmentalVariables(
|
||||||
mapOf(
|
"CONFIGURATION" to "debug",
|
||||||
"CONFIGURATION" to "debug",
|
"SDK_NAME" to "iphoneos123",
|
||||||
"SDK_NAME" to "iphoneos123",
|
"ARCHS" to "arm64",
|
||||||
"ARCHS" to "arm64",
|
"TARGET_BUILD_DIR" to "no use",
|
||||||
"TARGET_BUILD_DIR" to "no use",
|
"FRAMEWORKS_FOLDER_PATH" to "no use",
|
||||||
"FRAMEWORKS_FOLDER_PATH" to "no use",
|
"BUILT_PRODUCTS_DIR" to iosBuildProductsDir().absolutePathString(),
|
||||||
"BUILT_PRODUCTS_DIR" to iosBuildProductsDir().absolutePathString(),
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
projectPath.resolve("shared/src/commonMain/kotlin/com/github/jetbrains/myapplication/Greeting.kt")
|
projectPath.resolve("shared/src/commonMain/kotlin/com/github/jetbrains/myapplication/Greeting.kt")
|
||||||
@@ -447,14 +445,12 @@ class AppleFrameworkIT : KGPBaseTest() {
|
|||||||
gradleVersion,
|
gradleVersion,
|
||||||
) {
|
) {
|
||||||
val environmentVariables = EnvironmentalVariables(
|
val environmentVariables = EnvironmentalVariables(
|
||||||
mapOf(
|
"CONFIGURATION" to "debug",
|
||||||
"CONFIGURATION" to "debug",
|
"SDK_NAME" to "iphoneos123",
|
||||||
"SDK_NAME" to "iphoneos123",
|
"ARCHS" to "arm64",
|
||||||
"ARCHS" to "arm64",
|
"TARGET_BUILD_DIR" to "no use",
|
||||||
"TARGET_BUILD_DIR" to "no use",
|
"FRAMEWORKS_FOLDER_PATH" to "no use",
|
||||||
"FRAMEWORKS_FOLDER_PATH" to "no use",
|
"BUILT_PRODUCTS_DIR" to iosBuildProductsDir().absolutePathString(),
|
||||||
"BUILT_PRODUCTS_DIR" to iosBuildProductsDir().absolutePathString(),
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
projectPath.resolve("shared/src/commonMain/kotlin/com/github/jetbrains/myapplication/Greeting.kt")
|
projectPath.resolve("shared/src/commonMain/kotlin/com/github/jetbrains/myapplication/Greeting.kt")
|
||||||
@@ -478,14 +474,12 @@ class AppleFrameworkIT : KGPBaseTest() {
|
|||||||
gradleVersion,
|
gradleVersion,
|
||||||
) {
|
) {
|
||||||
val environmentVariables = EnvironmentalVariables(
|
val environmentVariables = EnvironmentalVariables(
|
||||||
mapOf(
|
"CONFIGURATION" to "debug",
|
||||||
"CONFIGURATION" to "debug",
|
"SDK_NAME" to "iphoneos123",
|
||||||
"SDK_NAME" to "iphoneos123",
|
"ARCHS" to "arm64",
|
||||||
"ARCHS" to "arm64",
|
"TARGET_BUILD_DIR" to "no use",
|
||||||
"TARGET_BUILD_DIR" to "no use",
|
"FRAMEWORKS_FOLDER_PATH" to "no use",
|
||||||
"FRAMEWORKS_FOLDER_PATH" to "no use",
|
"BUILT_PRODUCTS_DIR" to iosBuildProductsDir().absolutePathString(),
|
||||||
"BUILT_PRODUCTS_DIR" to iosBuildProductsDir().absolutePathString(),
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
projectPath.resolve("shared/src/commonMain/kotlin/com/github/jetbrains/myapplication/Greeting.kt")
|
projectPath.resolve("shared/src/commonMain/kotlin/com/github/jetbrains/myapplication/Greeting.kt")
|
||||||
@@ -513,14 +507,12 @@ class AppleFrameworkIT : KGPBaseTest() {
|
|||||||
gradleVersion,
|
gradleVersion,
|
||||||
) {
|
) {
|
||||||
val environmentVariables = EnvironmentalVariables(
|
val environmentVariables = EnvironmentalVariables(
|
||||||
mapOf(
|
"CONFIGURATION" to "debug",
|
||||||
"CONFIGURATION" to "debug",
|
"SDK_NAME" to "iphoneos123",
|
||||||
"SDK_NAME" to "iphoneos123",
|
"ARCHS" to "arm64",
|
||||||
"ARCHS" to "arm64",
|
"TARGET_BUILD_DIR" to "no use",
|
||||||
"TARGET_BUILD_DIR" to "no use",
|
"FRAMEWORKS_FOLDER_PATH" to "no use",
|
||||||
"FRAMEWORKS_FOLDER_PATH" to "no use",
|
"BUILT_PRODUCTS_DIR" to iosBuildProductsDir().absolutePathString(),
|
||||||
"BUILT_PRODUCTS_DIR" to iosBuildProductsDir().absolutePathString(),
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
projectPath.resolve("shared/src/commonMain/kotlin/com/github/jetbrains/myapplication/Greeting.kt")
|
projectPath.resolve("shared/src/commonMain/kotlin/com/github/jetbrains/myapplication/Greeting.kt")
|
||||||
|
|||||||
+4
@@ -498,6 +498,9 @@ internal class PropertiesProvider private constructor(private val project: Proje
|
|||||||
val konanDataDir: String?
|
val konanDataDir: String?
|
||||||
get() = property(PropertyNames.KONAN_DATA_DIR).orNull
|
get() = property(PropertyNames.KONAN_DATA_DIR).orNull
|
||||||
|
|
||||||
|
val appleCopyFrameworkToBuiltProductsDir: Boolean
|
||||||
|
get() = booleanProperty(PropertyNames.KOTLIN_APPLE_COPY_FRAMEWORK_TO_BUILT_PRODUCTS_DIR) ?: true
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Allows suppressing the diagnostic [KotlinToolingDiagnostics.BuildToolsApiVersionInconsistency].
|
* Allows suppressing the diagnostic [KotlinToolingDiagnostics.BuildToolsApiVersionInconsistency].
|
||||||
* Required only for Kotlin repo bootstrapping.
|
* Required only for Kotlin repo bootstrapping.
|
||||||
@@ -640,6 +643,7 @@ internal class PropertiesProvider private constructor(private val project: Proje
|
|||||||
val KOTLIN_USER_HOME_DIR = property("kotlin.user.home")
|
val KOTLIN_USER_HOME_DIR = property("kotlin.user.home")
|
||||||
val KOTLIN_PROJECT_PERSISTENT_DIR = property("kotlin.project.persistent.dir")
|
val KOTLIN_PROJECT_PERSISTENT_DIR = property("kotlin.project.persistent.dir")
|
||||||
val KOTLIN_PROJECT_PERSISTENT_DIR_GRADLE_DISABLE_WRITE = property("kotlin.project.persistent.dir.gradle.disableWrite")
|
val KOTLIN_PROJECT_PERSISTENT_DIR_GRADLE_DISABLE_WRITE = property("kotlin.project.persistent.dir.gradle.disableWrite")
|
||||||
|
val KOTLIN_APPLE_COPY_FRAMEWORK_TO_BUILT_PRODUCTS_DIR = property("kotlin.apple.copyFrameworkToBuiltProductsDir")
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Internal properties: builds get big non-suppressible warning when such properties are used
|
* Internal properties: builds get big non-suppressible warning when such properties are used
|
||||||
|
|||||||
+34
-25
@@ -15,6 +15,7 @@ import org.gradle.api.tasks.*
|
|||||||
import org.gradle.process.ExecOperations
|
import org.gradle.process.ExecOperations
|
||||||
import org.gradle.work.DisableCachingByDefault
|
import org.gradle.work.DisableCachingByDefault
|
||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinNativeBinaryContainer
|
import org.jetbrains.kotlin.gradle.dsl.KotlinNativeBinaryContainer
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.kotlinPropertiesProvider
|
||||||
import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics
|
import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics
|
||||||
import org.jetbrains.kotlin.gradle.plugin.diagnostics.reportDiagnostic
|
import org.jetbrains.kotlin.gradle.plugin.diagnostics.reportDiagnostic
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.Framework
|
import org.jetbrains.kotlin.gradle.plugin.mpp.Framework
|
||||||
@@ -22,6 +23,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.NativeBuildType
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.apple.FrameworkCopy.Companion.dsymFile
|
import org.jetbrains.kotlin.gradle.plugin.mpp.apple.FrameworkCopy.Companion.dsymFile
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.enabledOnCurrentHost
|
import org.jetbrains.kotlin.gradle.plugin.mpp.enabledOnCurrentHost
|
||||||
import org.jetbrains.kotlin.gradle.tasks.FatFrameworkTask
|
import org.jetbrains.kotlin.gradle.tasks.FatFrameworkTask
|
||||||
|
import org.jetbrains.kotlin.gradle.tasks.dependsOn
|
||||||
import org.jetbrains.kotlin.gradle.tasks.locateOrRegisterTask
|
import org.jetbrains.kotlin.gradle.tasks.locateOrRegisterTask
|
||||||
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
||||||
import org.jetbrains.kotlin.gradle.utils.getFile
|
import org.jetbrains.kotlin.gradle.utils.getFile
|
||||||
@@ -34,6 +36,7 @@ import java.io.IOException
|
|||||||
import java.nio.file.Files
|
import java.nio.file.Files
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
@Suppress("ConstPropertyName")
|
||||||
internal object AppleXcodeTasks {
|
internal object AppleXcodeTasks {
|
||||||
const val embedAndSignTaskPrefix = "embedAndSign"
|
const val embedAndSignTaskPrefix = "embedAndSign"
|
||||||
const val embedAndSignTaskPostfix = "AppleFrameworkForXcode"
|
const val embedAndSignTaskPostfix = "AppleFrameworkForXcode"
|
||||||
@@ -70,6 +73,9 @@ private object XcodeEnvironment {
|
|||||||
return File(configuration, sdk)
|
return File(configuration, sdk)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val builtProductsDir: File?
|
||||||
|
get() = System.getenv("BUILT_PRODUCTS_DIR")?.let(::File)
|
||||||
|
|
||||||
val embeddedFrameworksDir: File?
|
val embeddedFrameworksDir: File?
|
||||||
get() {
|
get() {
|
||||||
val xcodeTargetBuildDir = System.getenv("TARGET_BUILD_DIR") ?: return null
|
val xcodeTargetBuildDir = System.getenv("TARGET_BUILD_DIR") ?: return null
|
||||||
@@ -77,12 +83,6 @@ private object XcodeEnvironment {
|
|||||||
return File(xcodeTargetBuildDir, xcodeFrameworksFolderPath).absoluteFile
|
return File(xcodeTargetBuildDir, xcodeFrameworksFolderPath).absoluteFile
|
||||||
}
|
}
|
||||||
|
|
||||||
val buildProductsDir: File?
|
|
||||||
get() {
|
|
||||||
val derivedFileDir = System.getenv("BUILT_PRODUCTS_DIR") ?: return null
|
|
||||||
return File(derivedFileDir).absoluteFile
|
|
||||||
}
|
|
||||||
|
|
||||||
val sign: String? get() = System.getenv("EXPANDED_CODE_SIGN_IDENTITY")
|
val sign: String? get() = System.getenv("EXPANDED_CODE_SIGN_IDENTITY")
|
||||||
|
|
||||||
val userScriptSandboxingEnabled: Boolean get() = System.getenv("ENABLE_USER_SCRIPT_SANDBOXING") == "YES"
|
val userScriptSandboxingEnabled: Boolean get() = System.getenv("ENABLE_USER_SCRIPT_SANDBOXING") == "YES"
|
||||||
@@ -92,8 +92,8 @@ private object XcodeEnvironment {
|
|||||||
buildType=$buildType
|
buildType=$buildType
|
||||||
targets=$targets
|
targets=$targets
|
||||||
frameworkSearchDir=$frameworkSearchDir
|
frameworkSearchDir=$frameworkSearchDir
|
||||||
|
builtProductDir=$builtProductsDir
|
||||||
embeddedFrameworksDir=$embeddedFrameworksDir
|
embeddedFrameworksDir=$embeddedFrameworksDir
|
||||||
buildProductsDir=$buildProductsDir
|
|
||||||
sign=$sign
|
sign=$sign
|
||||||
userScriptSandboxingEnabled=$userScriptSandboxingEnabled
|
userScriptSandboxingEnabled=$userScriptSandboxingEnabled
|
||||||
""".trimIndent()
|
""".trimIndent()
|
||||||
@@ -118,9 +118,8 @@ private fun Project.registerAssembleAppleFrameworkTask(framework: Framework): Ta
|
|||||||
)
|
)
|
||||||
|
|
||||||
val envBuildType = XcodeEnvironment.buildType
|
val envBuildType = XcodeEnvironment.buildType
|
||||||
val envFrameworkSearchDir = XcodeEnvironment.frameworkSearchDir
|
|
||||||
|
|
||||||
if (envBuildType == null || envTargets.isEmpty() || envFrameworkSearchDir == null) {
|
if (envBuildType == null || envTargets.isEmpty() || XcodeEnvironment.builtProductsDir == null) {
|
||||||
val envConfiguration = System.getenv("CONFIGURATION")
|
val envConfiguration = System.getenv("CONFIGURATION")
|
||||||
if (envTargets.isNotEmpty() && envConfiguration != null) {
|
if (envTargets.isNotEmpty() && envConfiguration != null) {
|
||||||
project.reportDiagnostic(KotlinToolingDiagnostics.UnknownAppleFrameworkBuildType(envConfiguration))
|
project.reportDiagnostic(KotlinToolingDiagnostics.UnknownAppleFrameworkBuildType(envConfiguration))
|
||||||
@@ -138,7 +137,7 @@ private fun Project.registerAssembleAppleFrameworkTask(framework: Framework): Ta
|
|||||||
needFatFramework -> locateOrRegisterTask<FatFrameworkTask>(frameworkTaskName) { task ->
|
needFatFramework -> locateOrRegisterTask<FatFrameworkTask>(frameworkTaskName) { task ->
|
||||||
task.description = "Packs $frameworkBuildType fat framework for Xcode"
|
task.description = "Packs $frameworkBuildType fat framework for Xcode"
|
||||||
task.baseName = framework.baseName
|
task.baseName = framework.baseName
|
||||||
task.destinationDirProperty.fileProvider(appleFrameworkDir(envFrameworkSearchDir))
|
task.destinationDirProperty.fileProvider(appleFrameworkDir(frameworkTaskName))
|
||||||
task.isEnabled = frameworkBuildType == envBuildType
|
task.isEnabled = frameworkBuildType == envBuildType
|
||||||
}.also {
|
}.also {
|
||||||
it.configure { task -> task.from(framework) }
|
it.configure { task -> task.from(framework) }
|
||||||
@@ -149,12 +148,12 @@ private fun Project.registerAssembleAppleFrameworkTask(framework: Framework): Ta
|
|||||||
task.sourceFramework.fileProvider(framework.linkTaskProvider.flatMap { it.outputFile })
|
task.sourceFramework.fileProvider(framework.linkTaskProvider.flatMap { it.outputFile })
|
||||||
task.sourceDsym.fileProvider(dsymFile(task.sourceFramework.mapToFile()))
|
task.sourceDsym.fileProvider(dsymFile(task.sourceFramework.mapToFile()))
|
||||||
task.dependsOn(framework.linkTaskProvider)
|
task.dependsOn(framework.linkTaskProvider)
|
||||||
task.destinationDirectory.fileProvider(appleFrameworkDir(envFrameworkSearchDir))
|
task.destinationDirectory.fileProvider(appleFrameworkDir(frameworkTaskName))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun fireEnvException(frameworkTaskName: String) {
|
private fun fireEnvException(frameworkTaskName: String): Nothing {
|
||||||
val envBuildType = XcodeEnvironment.buildType
|
val envBuildType = XcodeEnvironment.buildType
|
||||||
val envConfiguration = System.getenv("CONFIGURATION")
|
val envConfiguration = System.getenv("CONFIGURATION")
|
||||||
if (envConfiguration != null && envBuildType == null) {
|
if (envConfiguration != null && envBuildType == null) {
|
||||||
@@ -192,13 +191,13 @@ private enum class DirAccessibility {
|
|||||||
DOES_NOT_EXIST
|
DOES_NOT_EXIST
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun buildProductsDirAccessibility(): DirAccessibility {
|
private fun builtProductsDirAccessibility(): DirAccessibility {
|
||||||
val buildProductsDir = XcodeEnvironment.buildProductsDir
|
val builtProductsDir = XcodeEnvironment.builtProductsDir
|
||||||
|
|
||||||
return if (buildProductsDir != null) {
|
return if (builtProductsDir != null) {
|
||||||
try {
|
try {
|
||||||
Files.createDirectories(buildProductsDir.toPath())
|
Files.createDirectories(builtProductsDir.toPath())
|
||||||
val tempFile = File.createTempFile("sandbox", ".tmp", buildProductsDir)
|
val tempFile = File.createTempFile("sandbox", ".tmp", builtProductsDir)
|
||||||
if (tempFile.exists()) {
|
if (tempFile.exists()) {
|
||||||
tempFile.delete()
|
tempFile.delete()
|
||||||
}
|
}
|
||||||
@@ -215,7 +214,6 @@ internal fun Project.registerEmbedAndSignAppleFrameworkTask(framework: Framework
|
|||||||
val envBuildType = XcodeEnvironment.buildType
|
val envBuildType = XcodeEnvironment.buildType
|
||||||
val envTargets = XcodeEnvironment.targets
|
val envTargets = XcodeEnvironment.targets
|
||||||
val envEmbeddedFrameworksDir = XcodeEnvironment.embeddedFrameworksDir
|
val envEmbeddedFrameworksDir = XcodeEnvironment.embeddedFrameworksDir
|
||||||
val envFrameworkSearchDir = XcodeEnvironment.frameworkSearchDir
|
|
||||||
val envSign = XcodeEnvironment.sign
|
val envSign = XcodeEnvironment.sign
|
||||||
val userScriptSandboxingEnabled = XcodeEnvironment.userScriptSandboxingEnabled
|
val userScriptSandboxingEnabled = XcodeEnvironment.userScriptSandboxingEnabled
|
||||||
|
|
||||||
@@ -225,7 +223,7 @@ internal fun Project.registerEmbedAndSignAppleFrameworkTask(framework: Framework
|
|||||||
AppleXcodeTasks.embedAndSignTaskPostfix
|
AppleXcodeTasks.embedAndSignTaskPostfix
|
||||||
)
|
)
|
||||||
|
|
||||||
if (envBuildType == null || envTargets.isEmpty() || envEmbeddedFrameworksDir == null || envFrameworkSearchDir == null) {
|
if (envBuildType == null || envTargets.isEmpty() || envEmbeddedFrameworksDir == null) {
|
||||||
locateOrRegisterTask<DefaultTask>(frameworkTaskName) { task ->
|
locateOrRegisterTask<DefaultTask>(frameworkTaskName) { task ->
|
||||||
task.group = BasePlugin.BUILD_GROUP
|
task.group = BasePlugin.BUILD_GROUP
|
||||||
task.description = "Embed and sign ${framework.namePrefix} framework as requested by Xcode's environment variables"
|
task.description = "Embed and sign ${framework.namePrefix} framework as requested by Xcode's environment variables"
|
||||||
@@ -240,7 +238,7 @@ internal fun Project.registerEmbedAndSignAppleFrameworkTask(framework: Framework
|
|||||||
task.group = BasePlugin.BUILD_GROUP
|
task.group = BasePlugin.BUILD_GROUP
|
||||||
task.description = "Check BUILT_PRODUCTS_DIR accessible and ENABLE_USER_SCRIPT_SANDBOXING not enabled"
|
task.description = "Check BUILT_PRODUCTS_DIR accessible and ENABLE_USER_SCRIPT_SANDBOXING not enabled"
|
||||||
task.doFirst {
|
task.doFirst {
|
||||||
val dirAccessible = buildProductsDirAccessibility()
|
val dirAccessible = builtProductsDirAccessibility()
|
||||||
when (dirAccessible) {
|
when (dirAccessible) {
|
||||||
DirAccessibility.NOT_ACCESSIBLE -> fireSandboxException(frameworkTaskName)
|
DirAccessibility.NOT_ACCESSIBLE -> fireSandboxException(frameworkTaskName)
|
||||||
DirAccessibility.DOES_NOT_EXIST,
|
DirAccessibility.DOES_NOT_EXIST,
|
||||||
@@ -268,13 +266,14 @@ internal fun Project.registerEmbedAndSignAppleFrameworkTask(framework: Framework
|
|||||||
}
|
}
|
||||||
|
|
||||||
val assembleTask = registerAssembleAppleFrameworkTask(framework) ?: return
|
val assembleTask = registerAssembleAppleFrameworkTask(framework) ?: return
|
||||||
|
assembleTask.dependsOn(checkSandboxAndWriteProtectionTask)
|
||||||
|
|
||||||
if (framework.buildType != envBuildType || !envTargets.contains(framework.konanTarget)) return
|
if (framework.buildType != envBuildType || !envTargets.contains(framework.konanTarget)) return
|
||||||
|
|
||||||
embedAndSignTask.configure { task ->
|
embedAndSignTask.configure { task ->
|
||||||
val frameworkFile = framework.outputFile
|
val frameworkFile = framework.outputFile
|
||||||
task.dependsOn(checkSandboxAndWriteProtectionTask)
|
|
||||||
task.dependsOn(assembleTask)
|
task.dependsOn(assembleTask)
|
||||||
task.sourceFramework.fileProvider(appleFrameworkDir(envFrameworkSearchDir).map { it.resolve(frameworkFile.name) })
|
task.sourceFramework.fileProvider(appleFrameworkDir(frameworkTaskName).map { it.resolve(frameworkFile.name) })
|
||||||
task.destinationDirectory.set(envEmbeddedFrameworksDir)
|
task.destinationDirectory.set(envEmbeddedFrameworksDir)
|
||||||
if (envSign != null) {
|
if (envSign != null) {
|
||||||
task.doLast {
|
task.doLast {
|
||||||
@@ -297,10 +296,20 @@ private val Framework.namePrefix: String
|
|||||||
)
|
)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If [frameworkSearchDir] is absolute use it, otherwise make it relative to buildDir/xcode-frameworks
|
* [XcodeEnvironment.builtProductsDir] if not disabled.
|
||||||
|
*
|
||||||
|
* Or if [XcodeEnvironment.frameworkSearchDir] is absolute use it, otherwise make it relative to buildDir/xcode-frameworks
|
||||||
*/
|
*/
|
||||||
private fun Project.appleFrameworkDir(frameworkSearchDir: File): Provider<File> =
|
private fun Project.appleFrameworkDir(frameworkTaskName: String): Provider<File> {
|
||||||
layout.buildDirectory.dir("xcode-frameworks").map { it.asFile.resolve(frameworkSearchDir) }
|
return if (project.kotlinPropertiesProvider.appleCopyFrameworkToBuiltProductsDir) {
|
||||||
|
project.provider { XcodeEnvironment.builtProductsDir ?: fireEnvException(frameworkTaskName) }
|
||||||
|
} else {
|
||||||
|
layout.buildDirectory.dir("xcode-frameworks").map {
|
||||||
|
it.asFile.resolve(XcodeEnvironment.frameworkSearchDir ?: fireEnvException(frameworkTaskName))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* macOS frameworks contain symlinks which are resolved/removed by the Gradle [Copy] task.
|
* macOS frameworks contain symlinks which are resolved/removed by the Gradle [Copy] task.
|
||||||
|
|||||||
Reference in New Issue
Block a user