Skip to content

Commit 325f39b

Browse files
authored
Add additional task inputs for non-cross-compile Go build (#91)
1 parent 33f7469 commit 325f39b

File tree

3 files changed

+11
-6
lines changed

3 files changed

+11
-6
lines changed

gradle-modules/src/main/kotlin/org.sonarsource.cloud-native.go-binary-builder.gradle.kts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@ import org.sonarsource.cloudnative.gradle.GO_LICENSES_OUTPUT_DIR
2020
import org.sonarsource.cloudnative.gradle.GoBuild
2121
import org.sonarsource.cloudnative.gradle.allGoSourcesAndMakeScripts
2222
import org.sonarsource.cloudnative.gradle.callMake
23+
import org.sonarsource.cloudnative.gradle.crossCompileEnv
2324
import org.sonarsource.cloudnative.gradle.getArchitecture
2425
import org.sonarsource.cloudnative.gradle.getPlatform
2526
import org.sonarsource.cloudnative.gradle.goLangCiLintVersion
2627
import org.sonarsource.cloudnative.gradle.goSources
2728
import org.sonarsource.cloudnative.gradle.goVersion
2829
import org.sonarsource.cloudnative.gradle.isCi
29-
import org.sonarsource.cloudnative.gradle.isCrossCompile
3030

3131
plugins {
3232
id("org.sonarsource.cloud-native.go-docker-environment")
@@ -61,15 +61,20 @@ if (isCi()) {
6161
description = "Compile the go code for the local system."
6262
group = "build"
6363

64-
inputs.property("GO_CROSS_COMPILE", isCrossCompile)
64+
inputs.property("GO_CROSS_COMPILE", crossCompileEnv)
65+
if (crossCompileEnv.get() == "0") {
66+
// Additional inputs only when not cross-compiling to reuse cached results only from the relevant platform
67+
inputs.property("platform", getPlatform())
68+
inputs.property("architecture", getArchitecture())
69+
}
6570
inputs.files(allGoSourcesAndMakeScripts())
6671

6772
outputs.dir(GO_BINARY_OUTPUT_DIR)
6873
outputs.dir(GO_LICENSES_OUTPUT_DIR)
6974
outputs.files(goBuildExtension.additionalOutputFiles)
7075
outputs.cacheIf { true }
7176

72-
environment("GO_CROSS_COMPILE", isCrossCompile.get())
77+
environment("GO_CROSS_COMPILE", crossCompileEnv.get())
7378
callMake("build")
7479
}
7580
goBinariesJar.configure { dependsOn(compileGo) }

gradle-modules/src/main/kotlin/org.sonarsource.cloud-native.go-docker-environment.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@ import org.sonarsource.cloudnative.gradle.GO_BINARY_OUTPUT_DIR
1919
import org.sonarsource.cloudnative.gradle.GO_LICENSES_OUTPUT_DIR
2020
import org.sonarsource.cloudnative.gradle.GoBuild
2121
import org.sonarsource.cloudnative.gradle.allGoSourcesAndMakeScripts
22+
import org.sonarsource.cloudnative.gradle.crossCompileEnv
2223
import org.sonarsource.cloudnative.gradle.goLangCiLintVersion
2324
import org.sonarsource.cloudnative.gradle.goVersion
2425
import org.sonarsource.cloudnative.gradle.isCi
25-
import org.sonarsource.cloudnative.gradle.isCrossCompile
2626

2727
val goBuildExtension = extensions.findByType<GoBuild>() ?: extensions.create<GoBuild>("goBuild")
2828

@@ -94,7 +94,7 @@ val dockerTasks = goBuildExtension.dockerCommands.map { tasksToCommands ->
9494
errorOutput = System.out
9595

9696
inputs.files(allGoSourcesAndMakeScripts())
97-
inputs.property("goCrossCompile", isCrossCompile)
97+
inputs.property("goCrossCompile", crossCompileEnv)
9898
outputs.files(goBuildExtension.additionalOutputFiles)
9999
outputs.dir(GO_BINARY_OUTPUT_DIR)
100100
outputs.dir(GO_LICENSES_OUTPUT_DIR)

gradle-modules/src/main/kotlin/org/sonarsource/cloudnative/gradle/GoBuild.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ val Project.goLangCiLintVersion get() = providers.environmentVariable("GOLANG_CI
5353
.orElse(providers.gradleProperty("goLangCiLintVersion"))
5454
.orNull ?: error("Either `GOLANG_CI_LINT_VERSION` env variable or `goLangCiLintVersion` Gradle property must be set")
5555

56-
val Project.isCrossCompile: Provider<String> get() = providers.environmentVariable("GO_CROSS_COMPILE").orElse("0")
56+
val Project.crossCompileEnv: Provider<String> get() = providers.environmentVariable("GO_CROSS_COMPILE").orElse("0")
5757

5858
fun Project.allGoSourcesAndMakeScripts(): FileTree =
5959
fileTree(projectDir).matching {

0 commit comments

Comments
 (0)