KT-62745: Add sandboxing error message to embedAndSignAppleFrameworkForXcode task

This commit is contained in:
Andrey Yastrebov
2023-11-09 17:07:40 +01:00
committed by Space Team
parent f50fab65cc
commit 5982543867
2 changed files with 30 additions and 0 deletions
+7
View File
@@ -0,0 +1,7 @@
<component name="ProjectDictionaryState">
<dictionary name="Andrey.Yastrebov">
<words>
<w>sandboxing</w>
</words>
</dictionary>
</component>
@@ -76,6 +76,8 @@ private object XcodeEnvironment {
val sign: String? get() = System.getenv("EXPANDED_CODE_SIGN_IDENTITY") val sign: String? get() = System.getenv("EXPANDED_CODE_SIGN_IDENTITY")
val userScriptSandboxingEnabled: String? get() = System.getenv("ENABLE_USER_SCRIPT_SANDBOXING")
override fun toString() = """ override fun toString() = """
XcodeEnvironment: XcodeEnvironment:
buildType=$buildType buildType=$buildType
@@ -147,6 +149,7 @@ internal fun Project.registerEmbedAndSignAppleFrameworkTask(framework: Framework
val envEmbeddedFrameworksDir = XcodeEnvironment.embeddedFrameworksDir val envEmbeddedFrameworksDir = XcodeEnvironment.embeddedFrameworksDir
val envFrameworkSearchDir = XcodeEnvironment.frameworkSearchDir val envFrameworkSearchDir = XcodeEnvironment.frameworkSearchDir
val envSign = XcodeEnvironment.sign val envSign = XcodeEnvironment.sign
val userScriptSandboxingEnabled = XcodeEnvironment.userScriptSandboxingEnabled
val frameworkTaskName = lowerCamelCaseName(AppleXcodeTasks.embedAndSignTaskPrefix, framework.namePrefix, AppleXcodeTasks.embedAndSignTaskPostfix) val frameworkTaskName = lowerCamelCaseName(AppleXcodeTasks.embedAndSignTaskPrefix, framework.namePrefix, AppleXcodeTasks.embedAndSignTaskPostfix)
@@ -174,6 +177,23 @@ internal fun Project.registerEmbedAndSignAppleFrameworkTask(framework: Framework
return return
} }
if (userScriptSandboxingEnabled == "YES") {
locateOrRegisterTask<DefaultTask>(frameworkTaskName) { task ->
task.group = BasePlugin.BUILD_GROUP
task.description = "Embed and sign ${framework.namePrefix} framework as requested by Xcode's environment variables"
task.doFirst {
throw IllegalStateException(
"You have sandboxing for user scripts enabled. " +
"\nTo make the $frameworkTaskName task pass, disable this feature. " +
"\nIn your Xcode project, navigate to \"Build Setting\", " +
"and under \"Build Options\" set \"User script sandboxing\" (ENABLE_USER_SCRIPT_SANDBOXING) to \"NO\". " +
"\nFor more information, see documentation: https://jb.gg/ltd9e6"
)
}
}
return
}
val embedAndSignTask = locateOrRegisterTask<FrameworkCopy>(frameworkTaskName) { task -> val embedAndSignTask = locateOrRegisterTask<FrameworkCopy>(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"
@@ -185,6 +205,9 @@ internal fun Project.registerEmbedAndSignAppleFrameworkTask(framework: Framework
if (envSign != null) { if (envSign != null) {
property("sign", envSign) property("sign", envSign)
} }
if (userScriptSandboxingEnabled != null) {
property("userScriptSandboxingEnabled", userScriptSandboxingEnabled)
}
} }
} }