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 {
}
val mavenCentral = MavenCentralProperties(project)
if (skiko.isCIBuild || mavenCentral.signArtifacts) {
if (skiko.isTeamcityCIBuild || mavenCentral.signArtifacts) {
signing {
sign(publishing.publications)
useInMemoryPgpKeys(mavenCentral.signArtifactsKey.get(), mavenCentral.signArtifactsPassword.get())
......
......@@ -11,5 +11,5 @@ dependencies {
implementation(kotlin("stdlib"))
compileOnly(gradleApi())
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(
val isWindows
get() = this == Windows
val isMacOs
get() = this == MacOS
fun idWithSuffix(isIosSim: Boolean = false): String {
return id + if (isIosSim) "Sim" else ""
}
......@@ -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")
class SkikoProperties(private val myProject: Project) {
val isCIBuild: Boolean
val isTeamcityCIBuild: Boolean
get() = myProject.hasProperty("teamcity")
val planeDeployVersion: String = myProject.property("deploy.version") as String
......
......@@ -10,7 +10,9 @@ import SkiaBuildType
import SkikoProjectContext
import compilerForTarget
import dynamicLibExt
import hostArch
import hostOs
import joinToTitleCamelCase
import linkerForTarget
import org.gradle.api.GradleException
import org.gradle.api.JavaVersion
......@@ -327,6 +329,32 @@ fun SkikoProjectContext.createLinkJvmBindings(
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(
targetOs: OS,
targetArch: Arch,
......@@ -334,6 +362,11 @@ fun SkikoProjectContext.maybeSignOrSealTask(
) = project.registerSkikoTask<SealAndSignSharedLibraryTask>("maybeSign", targetOs, targetArch) {
dependsOn(linkJvmBindings)
if (targetOs.isMacOs) {
val downloadCodesignClientTask = "downloadCodeSignClient" + joinToTitleCamelCase(targetOs.id, hostArch.id)
dependsOn(project.tasks.getByName(downloadCodesignClientTask))
}
val linkOutputFile = linkJvmBindings.map { task ->
task.outDir.get().asFile.walk().single { it.name.endsWith(targetOs.dynamicLibExt) }.absoluteFile
}
......@@ -352,8 +385,8 @@ fun SkikoProjectContext.maybeSignOrSealTask(
}
}
if (hostOs == OS.MacOS) {
codesignClient.set(toolsDir.file("codesign-client-darwin-x64"))
if (hostOs == OS.MacOS && this@maybeSignOrSealTask.skiko.isTeamcityCIBuild) {
codesignClient.set(project.layout.buildDirectory.file(hostArch.darwinSignClientName))
}
signHost.set(skiko.signHost)
signUser.set(skiko.signUser)
......@@ -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 linkBindings =
createLinkJvmBindings(os, arch, skiaBindingsDir, compileBindings, objcCompile)
if (os.isMacOs) {
createDownloadCodeSignClientDarwinTask(os, hostArch)
}
val maybeSign = maybeSignOrSealTask(os, arch, linkBindings)
val nativeLib = maybeSign.map { it.outputFiles.get().single() }
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