Skip to content

Commit 1e66139

Browse files
Replace HostPlatform with Gradle BuildPlatform service
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 2c3db21 commit 1e66139

8 files changed

Lines changed: 42 additions & 37 deletions

File tree

build.gradle.kts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import com.diffplug.gradle.spotless.SpotlessExtension
2-
import datadog.gradle.plugin.HostPlatform
32
import datadog.gradle.plugin.ci.testAggregate
3+
import datadog.gradle.plugin.isLinuxArm64
44

55
plugins {
66
kotlin("jvm") version libs.versions.kotlin.plugin apply false
@@ -90,8 +90,6 @@ allprojects {
9090
dependsOn(tasks.withType<AbstractCompile>())
9191
}
9292

93-
val isLinuxArm64 = HostPlatform.isLinuxArm64()
94-
9593
tasks.configureEach {
9694
if (this is JavaForkOptions) {
9795
maxHeapSize = System.getProperty("datadog.forkedMaxHeapSize")
@@ -101,15 +99,15 @@ allprojects {
10199
"-XX:+HeapDumpOnOutOfMemoryError",
102100
"-XX:HeapDumpPath=/tmp"
103101
)
104-
if (isLinuxArm64) {
102+
if (isLinuxArm64()) {
105103
// Disable CDS to avoid SIGSEGVs on Linux arm64.
106104
jvmArgs("-Xshare:off")
107105
}
108106
}
109107
}
110108

111109
// Disable CDS to avoid SIGSEGVs on Linux arm64.
112-
if (isLinuxArm64) {
110+
if (isLinuxArm64()) {
113111
tasks.withType<JavaCompile>().configureEach {
114112
options.forkOptions.jvmArgs?.add("-Xshare:off")
115113
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package datadog.gradle.plugin
2+
3+
import org.gradle.api.Project
4+
import org.gradle.kotlin.dsl.support.serviceOf
5+
import org.gradle.platform.Architecture
6+
import org.gradle.platform.BuildPlatform
7+
import org.gradle.platform.OperatingSystem
8+
import org.gradle.platform.internal.CurrentBuildPlatform
9+
10+
/**
11+
* Helpers built on Gradle's [BuildPlatform].
12+
*
13+
* The public [BuildPlatform] interface is not directly available elsewhere.
14+
* Build logic obtains it from the internal [CurrentBuildPlatform] service,
15+
* resolved from a [Project] via `serviceOf` — see the [Project] overloads below.
16+
*/
17+
fun BuildPlatform.isLinuxArm64(): Boolean =
18+
operatingSystem == OperatingSystem.LINUX && architecture == Architecture.AARCH64
19+
20+
fun BuildPlatform.isMacArm64(): Boolean =
21+
operatingSystem == OperatingSystem.MAC_OS && architecture == Architecture.AARCH64
22+
23+
fun Project.isLinuxArm64(): Boolean =
24+
serviceOf<CurrentBuildPlatform>().toBuildPlatform().isLinuxArm64()
25+
26+
fun Project.isMacArm64(): Boolean =
27+
serviceOf<CurrentBuildPlatform>().toBuildPlatform().isMacArm64()

buildSrc/src/main/kotlin/datadog/gradle/plugin/HostPlatform.kt

Lines changed: 0 additions & 21 deletions
This file was deleted.

buildSrc/src/main/kotlin/datadog/gradle/plugin/instrument/InstrumentPostProcessingAction.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package datadog.gradle.plugin.instrument
22

3-
import datadog.gradle.plugin.HostPlatform
43
import datadog.gradle.plugin.instrument.BuildTimeInstrumentationPlugin.Companion.BUILD_TIME_INSTRUMENTATION_PLUGIN_CONFIGURATION
4+
import datadog.gradle.plugin.isLinuxArm64
55
import org.gradle.api.Action
66
import org.gradle.api.Project
77
import org.gradle.api.Task
@@ -74,7 +74,7 @@ abstract class InstrumentPostProcessingAction @Inject constructor(
7474
return workerExecutor.processIsolation {
7575
forkOptions {
7676
setExecutable(javaLauncher.executablePath.asFile.absolutePath)
77-
if (HostPlatform.isLinuxArm64()) {
77+
if (project.isLinuxArm64()) {
7878
// Disable CDS to avoid SIGSEGVs on Linux arm64.
7979
jvmArgs("-Xshare:off")
8080
}

buildSrc/src/main/kotlin/datadog/gradle/plugin/muzzle/tasks/MuzzleTask.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package datadog.gradle.plugin.muzzle.tasks
22

3-
import datadog.gradle.plugin.HostPlatform
3+
import datadog.gradle.plugin.isLinuxArm64
44
import datadog.gradle.plugin.muzzle.MuzzleAction
55
import datadog.gradle.plugin.muzzle.MuzzleDirective
66
import datadog.gradle.plugin.muzzle.MuzzleExtension
@@ -103,7 +103,7 @@ abstract class MuzzleTask @Inject constructor(
103103
if(javaLauncher.metadata.languageVersion > JavaLanguageVersion.of(9)) {
104104
jvmArgs("--add-opens=java.base/java.lang=ALL-UNNAMED")
105105
}
106-
if (HostPlatform.isLinuxArm64()) {
106+
if (project.isLinuxArm64()) {
107107
// Disable CDS to avoid SIGSEGVs on Linux arm64.
108108
jvmArgs("-Xshare:off")
109109
}

buildSrc/src/main/kotlin/datadog/gradle/plugin/testJvmConstraints/TestJvmConstraintsPlugin.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package datadog.gradle.plugin.testJvmConstraints
22

3-
import datadog.gradle.plugin.HostPlatform
3+
import datadog.gradle.plugin.isLinuxArm64
44
import datadog.gradle.plugin.testJvmConstraints.TestJvmConstraintsExtension.Companion.TEST_JVM_CONSTRAINTS
55
import org.gradle.api.JavaVersion
66
import org.gradle.api.Plugin
@@ -90,7 +90,7 @@ class TestJvmConstraintsPlugin : Plugin<Project> {
9090

9191
// Fix for Linux arm64 ByteBuddy error:
9292
// "Could not self-attach to current VM using external process"
93-
if (HostPlatform.isLinuxArm64()) {
93+
if (project.isLinuxArm64()) {
9494
conditionalJvmArgs(
9595
JavaVersion.VERSION_1_9,
9696
listOf("-Djdk.attach.allowAttachSelf=true")

dd-java-agent/instrumentation/protobuf-3.0/build.gradle

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import datadog.gradle.plugin.HostPlatform
1+
import static datadog.gradle.plugin.BuildPlatformExtensionsKt.isLinuxArm64
2+
import static datadog.gradle.plugin.BuildPlatformExtensionsKt.isMacArm64
23

34
plugins {
45
id 'com.google.protobuf' version '0.10.0'
@@ -20,7 +21,7 @@ muzzle {
2021
protobuf {
2122
protoc {
2223
// There is no macOS arm64 support for protoc 3.0.0, so require Rosetta.
23-
if (HostPlatform.isMacArm64()) {
24+
if (isMacArm64(project)) {
2425
artifact = "com.google.protobuf:protoc:3.0.0:osx-x86_64"
2526
} else {
2627
artifact = "com.google.protobuf:protoc:3.0.0"
@@ -29,7 +30,7 @@ protobuf {
2930
}
3031

3132
// TODO: protobuf supports Linux arm64 since `3.12.0`, but it is not source-compatible with 3.0.0
32-
if (HostPlatform.isLinuxArm64()) {
33+
if (isLinuxArm64(project)) {
3334
tasks.matching {
3435
it.name in [
3536
"extractTestProto",

dd-smoke-tests/play-common/fix-play-linux-arm64.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import datadog.gradle.plugin.HostPlatform
1+
import static datadog.gradle.plugin.BuildPlatformExtensionsKt.isLinuxArm64
22

33
// Fix for JVM crashes (SIGSEGV / SIGABRT, exit 134) when the
44
// org.gradle.playframework `compilePlayRoutes` Worker Daemon starts up on Linux arm64.
55
// No-op on every other host/arch combination.
6-
if (HostPlatform.isLinuxArm64()) {
6+
if (isLinuxArm64(project)) {
77
tasks.named("compilePlayRoutes").configure { task ->
88
// Find the class in the hierarchy that declares the private `workerExecutor` field.
99
def workerExecutorField = null

0 commit comments

Comments
 (0)