Use platform-specific artifacts for builds

This commit is contained in:
Fedor Isakov 2025-04-09 13:38:32 +02:00
parent dece32c1a1
commit 7b3e013ccd
1 changed files with 48 additions and 6 deletions

View File

@ -5,6 +5,8 @@ import java.io.*
import com.jetbrains.plugin.blockmap.core.BlockMap import com.jetbrains.plugin.blockmap.core.BlockMap
import com.jetbrains.plugin.blockmap.core.FileHash import com.jetbrains.plugin.blockmap.core.FileHash
import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.ObjectMapper
import org.gradle.internal.os.OperatingSystem;
buildscript { buildscript {
repositories { repositories {
@ -36,26 +38,62 @@ repositories {
url 'https://teamcity.jetbrains.com/guestAuth/repository/download' url 'https://teamcity.jetbrains.com/guestAuth/repository/download'
patternLayout { patternLayout {
ivy '[module]/[revision]/teamcity-ivy.xml' ivy '[module]/[revision]/teamcity-ivy.xml'
artifact '[module]/[revision]/[revision].[ext]' // artifact '[module]/[revision]/[revision].[ext]'
// using a simple hack here: a @zip artifact is mapped to macos dist,
// while a @tar.gz one -- to linux dist
artifact '[module]/[revision]/[revision]-linux.[ext]'
artifact '[module]/[revision]/[revision]-macos-aarch64.[ext]'
} }
} }
} }
configurations { configurations {
mps mps_linux
mps_macos_aarch64
} }
dependencies { dependencies {
// MPS-related stuff declared as project properties // MPS-related stuff declared as project properties
mps "org:${mpsBuildConfiguration}:${mpsBuildNumber}:${mpsBuildLabel}.tcbuildtag@zip" mps_linux "org:${mpsBuildConfiguration}:${mpsBuildNumber}:${mpsBuildLabel}@tar.gz"
mps_macos_aarch64 "org:${mpsBuildConfiguration}:${mpsBuildNumber}:${mpsBuildLabel}macos-aarch64@zip"
} }
task installMps(type: Copy) {
task installMps_macos(type: Copy) {
onlyIf { onlyIf {
! file('MPS_HOME').exists() OperatingSystem.current().isMacOsX()
} }
from zipTree(configurations.mps[0]) from zipTree(configurations.mps_macos_aarch64[0])
into 'MPS_HOME'
// Gradle woodoo for unzipping an archive
eachFile { FileCopyDetails fcp ->
// copy the contents of the directory named "MPS ${mpsRelease}"
if (fcp.relativePath.pathString.startsWith("MPS ${mpsRelease}.app/Contents/")) {
// remap the file to the root
def segments = fcp.relativePath.segments
def pathsegments = segments[2..-1] as String[]
fcp.relativePath = new RelativePath(!fcp.file.isDirectory(), pathsegments)
} else {
fcp.exclude()
}
// avoid overriding files
if (fcp.relativePath.getFile(destinationDir).exists()) {
it.exclude()
}
}
includeEmptyDirs = false
}
task installMps_linux(type: Copy) {
onlyIf {
OperatingSystem.current().isLinux()
}
from tarTree(resources.gzip(configurations.mps_linux[0]))
into 'MPS_HOME' into 'MPS_HOME'
// Gradle woodoo for unzipping an archive // Gradle woodoo for unzipping an archive
@ -78,6 +116,10 @@ task installMps(type: Copy) {
includeEmptyDirs = false includeEmptyDirs = false
} }
task installMps(dependsOn: [installMps_macos, installMps_linux]) {
}
task deleteMps(type: Delete) { task deleteMps(type: Delete) {
delete 'MPS_HOME' delete 'MPS_HOME'
} }