diff --git a/.idea/dictionaries/Andrey_Yastrebov.xml b/.idea/dictionaries/Andrey_Yastrebov.xml new file mode 100644 index 00000000000..e0b05d268fd --- /dev/null +++ b/.idea/dictionaries/Andrey_Yastrebov.xml @@ -0,0 +1,7 @@ + + + + sandboxing + + + \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/apple/AppleXcodeTasks.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/apple/AppleXcodeTasks.kt index 74689179bef..c92add2f2c6 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/apple/AppleXcodeTasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/apple/AppleXcodeTasks.kt @@ -76,6 +76,8 @@ private object XcodeEnvironment { val sign: String? get() = System.getenv("EXPANDED_CODE_SIGN_IDENTITY") + val userScriptSandboxingEnabled: String? get() = System.getenv("ENABLE_USER_SCRIPT_SANDBOXING") + override fun toString() = """ XcodeEnvironment: buildType=$buildType @@ -147,6 +149,7 @@ internal fun Project.registerEmbedAndSignAppleFrameworkTask(framework: Framework val envEmbeddedFrameworksDir = XcodeEnvironment.embeddedFrameworksDir val envFrameworkSearchDir = XcodeEnvironment.frameworkSearchDir val envSign = XcodeEnvironment.sign + val userScriptSandboxingEnabled = XcodeEnvironment.userScriptSandboxingEnabled val frameworkTaskName = lowerCamelCaseName(AppleXcodeTasks.embedAndSignTaskPrefix, framework.namePrefix, AppleXcodeTasks.embedAndSignTaskPostfix) @@ -174,6 +177,23 @@ internal fun Project.registerEmbedAndSignAppleFrameworkTask(framework: Framework return } + if (userScriptSandboxingEnabled == "YES") { + locateOrRegisterTask(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(frameworkTaskName) { task -> task.group = BasePlugin.BUILD_GROUP 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) { property("sign", envSign) } + if (userScriptSandboxingEnabled != null) { + property("userScriptSandboxingEnabled", userScriptSandboxingEnabled) + } } }