Unverified Commit 03928d6a authored by Oleksandr Karpovich's avatar Oleksandr Karpovich Committed by GitHub

Download and use a codesign-client from an internal jb repository instead of...

Download and use a codesign-client from an internal jb repository instead of using a hardcoded one (#859)

* Download and use a codesign-client from an internal jb repository instead of using a hardcoded one

* Download a codesign-client for hostArch only

* Make the downloaded codesign-client executable

* Update skiko/buildSrc/src/main/kotlin/tasks/configuration/JvmTasksConfiguration.kt
Co-authored-by: 's avatarIgor Demin <igordmn@users.noreply.github.com>

---------
Co-authored-by: 's avatarIgor Demin <igordmn@users.noreply.github.com>
parent 5b5ee682
...@@ -517,7 +517,7 @@ publishing { ...@@ -517,7 +517,7 @@ publishing {
} }
val mavenCentral = MavenCentralProperties(project) val mavenCentral = MavenCentralProperties(project)
if (skiko.isCIBuild || mavenCentral.signArtifacts) { if (skiko.isTeamcityCIBuild || mavenCentral.signArtifacts) {
signing { signing {
sign(publishing.publications) sign(publishing.publications)
useInMemoryPgpKeys(mavenCentral.signArtifactsKey.get(), mavenCentral.signArtifactsPassword.get()) useInMemoryPgpKeys(mavenCentral.signArtifactsKey.get(), mavenCentral.signArtifactsPassword.get())
......
...@@ -11,5 +11,5 @@ dependencies { ...@@ -11,5 +11,5 @@ dependencies {
implementation(kotlin("stdlib")) implementation(kotlin("stdlib"))
compileOnly(gradleApi()) compileOnly(gradleApi())
implementation(kotlin("gradle-plugin", "1.9.21")) implementation(kotlin("gradle-plugin", "1.9.21"))
implementation("de.undercouch:gradle-download-task:5.4.0") implementation("de.undercouch:gradle-download-task:5.5.0")
} }
...@@ -16,6 +16,9 @@ enum class OS( ...@@ -16,6 +16,9 @@ enum class OS(
val isWindows val isWindows
get() = this == Windows get() = this == Windows
val isMacOs
get() = this == MacOS
fun idWithSuffix(isIosSim: Boolean = false): String { fun idWithSuffix(isIosSim: Boolean = false): String {
return id + if (isIosSim) "Sim" else "" return id + if (isIosSim) "Sim" else ""
} }
...@@ -113,7 +116,7 @@ fun targetId(os: OS, arch: Arch) = "${os.id}-${arch.id}" ...@@ -113,7 +116,7 @@ fun targetId(os: OS, arch: Arch) = "${os.id}-${arch.id}"
val jdkHome = System.getProperty("java.home") ?: error("'java.home' is null") val jdkHome = System.getProperty("java.home") ?: error("'java.home' is null")
class SkikoProperties(private val myProject: Project) { class SkikoProperties(private val myProject: Project) {
val isCIBuild: Boolean val isTeamcityCIBuild: Boolean
get() = myProject.hasProperty("teamcity") get() = myProject.hasProperty("teamcity")
val planeDeployVersion: String = myProject.property("deploy.version") as String val planeDeployVersion: String = myProject.property("deploy.version") as String
......
...@@ -10,7 +10,9 @@ import SkiaBuildType ...@@ -10,7 +10,9 @@ import SkiaBuildType
import SkikoProjectContext import SkikoProjectContext
import compilerForTarget import compilerForTarget
import dynamicLibExt import dynamicLibExt
import hostArch
import hostOs import hostOs
import joinToTitleCamelCase
import linkerForTarget import linkerForTarget
import org.gradle.api.GradleException import org.gradle.api.GradleException
import org.gradle.api.JavaVersion import org.gradle.api.JavaVersion
...@@ -327,6 +329,32 @@ fun SkikoProjectContext.createLinkJvmBindings( ...@@ -327,6 +329,32 @@ fun SkikoProjectContext.createLinkJvmBindings(
flags.set(listOf(*osFlags)) flags.set(listOf(*osFlags))
} }
private val Arch.darwinSignClientName: String
get() = when (this) {
Arch.X64 -> "codesign-client-darwin-amd64"
Arch.Arm64 -> "codesign-client-darwin-arm64"
else -> error("Unexpected Arch = $this for codesign-client")
}
fun SkikoProjectContext.createDownloadCodeSignClientDarwinTask(
targetOs: OS,
hostArch: Arch
) = project.registerSkikoTask<de.undercouch.gradle.tasks.download.Download>("downloadCodeSignClient", targetOs, hostArch) {
val fileUrl = "https://codesign-distribution.labs.jb.gg/${hostArch.darwinSignClientName}"
src(fileUrl)
dest(project.layout.buildDirectory)
overwrite(false)
// only Teamcity agents have access to download the codesign-client executable file
enabled = this@createDownloadCodeSignClientDarwinTask.skiko.isTeamcityCIBuild
doLast {
val downloadedFile = project.layout.buildDirectory.get().asFile.resolve(hostArch.darwinSignClientName)
downloadedFile.setExecutable(true)
}
}
fun SkikoProjectContext.maybeSignOrSealTask( fun SkikoProjectContext.maybeSignOrSealTask(
targetOs: OS, targetOs: OS,
targetArch: Arch, targetArch: Arch,
...@@ -334,6 +362,11 @@ fun SkikoProjectContext.maybeSignOrSealTask( ...@@ -334,6 +362,11 @@ fun SkikoProjectContext.maybeSignOrSealTask(
) = project.registerSkikoTask<SealAndSignSharedLibraryTask>("maybeSign", targetOs, targetArch) { ) = project.registerSkikoTask<SealAndSignSharedLibraryTask>("maybeSign", targetOs, targetArch) {
dependsOn(linkJvmBindings) dependsOn(linkJvmBindings)
if (targetOs.isMacOs) {
val downloadCodesignClientTask = "downloadCodeSignClient" + joinToTitleCamelCase(targetOs.id, hostArch.id)
dependsOn(project.tasks.getByName(downloadCodesignClientTask))
}
val linkOutputFile = linkJvmBindings.map { task -> val linkOutputFile = linkJvmBindings.map { task ->
task.outDir.get().asFile.walk().single { it.name.endsWith(targetOs.dynamicLibExt) }.absoluteFile task.outDir.get().asFile.walk().single { it.name.endsWith(targetOs.dynamicLibExt) }.absoluteFile
} }
...@@ -352,8 +385,8 @@ fun SkikoProjectContext.maybeSignOrSealTask( ...@@ -352,8 +385,8 @@ fun SkikoProjectContext.maybeSignOrSealTask(
} }
} }
if (hostOs == OS.MacOS) { if (hostOs == OS.MacOS && this@maybeSignOrSealTask.skiko.isTeamcityCIBuild) {
codesignClient.set(toolsDir.file("codesign-client-darwin-x64")) codesignClient.set(project.layout.buildDirectory.file(hostArch.darwinSignClientName))
} }
signHost.set(skiko.signHost) signHost.set(skiko.signHost)
signUser.set(skiko.signUser) signUser.set(skiko.signUser)
...@@ -379,6 +412,9 @@ fun SkikoProjectContext.createSkikoJvmJarTask(os: OS, arch: Arch, commonJar: Tas ...@@ -379,6 +412,9 @@ fun SkikoProjectContext.createSkikoJvmJarTask(os: OS, arch: Arch, commonJar: Tas
val objcCompile = if (os == OS.MacOS) createObjcCompileTask(os, arch, skiaBindingsDir) else null val objcCompile = if (os == OS.MacOS) createObjcCompileTask(os, arch, skiaBindingsDir) else null
val linkBindings = val linkBindings =
createLinkJvmBindings(os, arch, skiaBindingsDir, compileBindings, objcCompile) createLinkJvmBindings(os, arch, skiaBindingsDir, compileBindings, objcCompile)
if (os.isMacOs) {
createDownloadCodeSignClientDarwinTask(os, hostArch)
}
val maybeSign = maybeSignOrSealTask(os, arch, linkBindings) val maybeSign = maybeSignOrSealTask(os, arch, linkBindings)
val nativeLib = maybeSign.map { it.outputFiles.get().single() } val nativeLib = maybeSign.map { it.outputFiles.get().single() }
val createChecksums = createChecksumsTask(os, arch, nativeLib) val createChecksums = createChecksumsTask(os, arch, nativeLib)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment