build: Add Xcode version check (#3543)
This commit is contained in:
@@ -37,5 +37,24 @@ object PlatformInfo {
|
|||||||
return platformManager.targetManager(targetName).target
|
return platformManager.targetManager(targetName).target
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
fun checkXcodeVersion(project: Project) {
|
||||||
|
val properties = PropertiesProvider(project)
|
||||||
|
val requiredMajorVersion = properties.xcodeMajorVersion
|
||||||
|
|
||||||
|
if (!DependencyProcessor.isInternalSeverAvailable
|
||||||
|
&& properties.checkXcodeVersion
|
||||||
|
&& requiredMajorVersion != null
|
||||||
|
) {
|
||||||
|
val currentXcodeVersion = Xcode.current.version
|
||||||
|
val currentMajorVersion = currentXcodeVersion.splitToSequence('.').first()
|
||||||
|
if (currentMajorVersion != requiredMajorVersion) {
|
||||||
|
throw IllegalStateException(
|
||||||
|
"Incorrect Xcode version: ${currentXcodeVersion}. Required major Xcode version is ${requiredMajorVersion}."
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun unsupportedPlatformException() = TargetSupportException()
|
fun unsupportedPlatformException() = TargetSupportException()
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
package org.jetbrains.kotlin
|
||||||
|
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import java.util.*
|
||||||
|
|
||||||
|
class PropertiesProvider(val project: Project) {
|
||||||
|
private val localProperties by lazy {
|
||||||
|
Properties().apply {
|
||||||
|
project.file("local.properties").takeIf { it.isFile }?.inputStream()?.use {
|
||||||
|
load(it)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun findProperty(name: String): Any? =
|
||||||
|
project.findProperty(name) ?: localProperties.getProperty(name)
|
||||||
|
|
||||||
|
fun getProperty(name: String): Any =
|
||||||
|
findProperty(name) ?: throw IllegalArgumentException("No such property: $name")
|
||||||
|
|
||||||
|
fun hasProperty(name: String): Boolean =
|
||||||
|
project.hasProperty(name) || localProperties.containsKey(name)
|
||||||
|
|
||||||
|
val xcodeMajorVersion: String?
|
||||||
|
get() = findProperty("xcodeMajorVersion") as String?
|
||||||
|
|
||||||
|
val checkXcodeVersion: Boolean
|
||||||
|
get() = findProperty("checkXcodeVersion")?.let {
|
||||||
|
it == "true"
|
||||||
|
} ?: true
|
||||||
|
}
|
||||||
@@ -55,6 +55,10 @@ defaultTasks 'clean', 'dist'
|
|||||||
|
|
||||||
convention.plugins.platformInfo = PlatformInfo
|
convention.plugins.platformInfo = PlatformInfo
|
||||||
|
|
||||||
|
if (isMac()) {
|
||||||
|
checkXcodeVersion(project)
|
||||||
|
}
|
||||||
|
|
||||||
ext {
|
ext {
|
||||||
distDir = file('dist')
|
distDir = file('dist')
|
||||||
dependenciesDir = DependencyProcessor.defaultDependenciesRoot
|
dependenciesDir = DependencyProcessor.defaultDependenciesRoot
|
||||||
|
|||||||
+5
-1
@@ -14,7 +14,7 @@
|
|||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
#
|
#
|
||||||
|
|
||||||
# A version of the Kotlin "toolchain" (compiler, runtime, stdlib etc) used by the build script.
|
# A version of the Kotlin compiler that is used to build Kotlin/Native.
|
||||||
buildKotlinVersion=1.3.70-dev-1070
|
buildKotlinVersion=1.3.70-dev-1070
|
||||||
buildKotlinCompilerRepo=https://teamcity.jetbrains.com/guestAuth/app/rest/builds/buildType:(id:Kotlin_KotlinPublic_Compiler),number:1.3.70-dev-1070,branch:default:any,pinned:true/artifacts/content/maven
|
buildKotlinCompilerRepo=https://teamcity.jetbrains.com/guestAuth/app/rest/builds/buildType:(id:Kotlin_KotlinPublic_Compiler),number:1.3.70-dev-1070,branch:default:any,pinned:true/artifacts/content/maven
|
||||||
remoteRoot=konan_tests
|
remoteRoot=konan_tests
|
||||||
@@ -25,6 +25,10 @@ kotlinStdlibVersion=1.3.70-dev-1244
|
|||||||
kotlinStdlibTestsVersion=1.3.70-dev-1244
|
kotlinStdlibTestsVersion=1.3.70-dev-1244
|
||||||
testKotlinCompilerVersion=1.3.70-dev-1244
|
testKotlinCompilerVersion=1.3.70-dev-1244
|
||||||
konanVersion=1.3.70
|
konanVersion=1.3.70
|
||||||
|
|
||||||
|
# A version of Xcode required to build the Kotlin/Native compiler.
|
||||||
|
xcodeMajorVersion=11
|
||||||
|
|
||||||
org.gradle.jvmargs='-Dfile.encoding=UTF-8'
|
org.gradle.jvmargs='-Dfile.encoding=UTF-8'
|
||||||
org.gradle.workers.max=4
|
org.gradle.workers.max=4
|
||||||
|
|
||||||
|
|||||||
@@ -220,6 +220,9 @@ class DependencyProcessor(dependenciesRoot: File,
|
|||||||
|
|
||||||
val defaultDependencyCacheDir: File
|
val defaultDependencyCacheDir: File
|
||||||
get() = localKonanDir.resolve("cache")
|
get() = localKonanDir.resolve("cache")
|
||||||
|
|
||||||
|
val isInternalSeverAvailable: Boolean
|
||||||
|
get() = InternalServer.isAvailable
|
||||||
}
|
}
|
||||||
|
|
||||||
private val resolvedDependencies = dependencyToCandidates.map { (dependency, candidates) ->
|
private val resolvedDependencies = dependencyToCandidates.map { (dependency, candidates) ->
|
||||||
@@ -278,7 +281,7 @@ class DependencyProcessor(dependenciesRoot: File,
|
|||||||
|
|
||||||
internal object InternalServer {
|
internal object InternalServer {
|
||||||
private val host = "repo.labs.intellij.net"
|
private val host = "repo.labs.intellij.net"
|
||||||
val url = "http://$host/kotlin-native"
|
val url = "https://$host/kotlin-native"
|
||||||
|
|
||||||
private val internalDomain = "labs.intellij.net"
|
private val internalDomain = "labs.intellij.net"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user