Skip to content

Commit 2db2d1b

Browse files
committed
Prevent/fix Calculating task graph as configuration cache cannot be reused because an input to unknown location has changed.
1 parent b9fdaa0 commit 2db2d1b

10 files changed

Lines changed: 206 additions & 16 deletions

File tree

build-logic/src/main/kotlin/Ide.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,11 @@ fun Project.nessieIde() {
8787
// the Gradle project)
8888
val ideaDir = layout.projectDirectory.dir(".idea").asFile
8989

90-
if (ideaDir.isDirectory) {
91-
ideaDir.resolve(".name").writeText(ideName)
90+
if (java.lang.Boolean.getBoolean("idea.sync.active") && ideaDir.isDirectory) {
91+
val ideaNameFile = ideaDir.resolve(".name")
92+
if (!ideaNameFile.isFile || ideaNameFile.readText() != ideName) {
93+
ideaNameFile.writeText(ideName)
94+
}
9295
}
9396

9497
configure<EclipseModel> { project { name = ideName } }

build-logic/src/main/kotlin/Spotless.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,22 @@
1616

1717
import com.diffplug.gradle.spotless.SpotlessExtension
1818
import com.diffplug.gradle.spotless.SpotlessPlugin
19+
import com.diffplug.spotless.LineEnding
1920
import org.gradle.api.Project
2021
import org.gradle.kotlin.dsl.apply
2122
import org.gradle.kotlin.dsl.configure
2223
import org.gradle.kotlin.dsl.withType
2324

2425
fun Project.nessieConfigureSpotless() {
25-
2626
apply<SpotlessPlugin>()
2727
if (!java.lang.Boolean.getBoolean("idea.sync.active")) {
2828
val copyrightHeader = layout.settingsDirectory.file("codestyle/copyright-header-java.txt")
2929
val rootProjectOnly = path == ":"
3030

3131
plugins.withType<SpotlessPlugin>().configureEach {
3232
configure<SpotlessExtension> {
33+
lineEndings = LineEnding.UNIX
34+
3335
format("xml") {
3436
target("src/**/*.xml", "src/**/*.xsd")
3537
eclipseWtp(com.diffplug.spotless.extra.wtp.EclipseWtpFormatterStep.XML)
@@ -76,7 +78,7 @@ fun Project.nessieConfigureSpotless() {
7678
java {
7779
googleJavaFormat(libsRequiredVersion("googleJavaFormat"))
7880
licenseHeaderFile(copyrightHeader.asFile)
79-
target("src/**/java/**")
81+
target("src/**/*.java")
8082
targetExclude("build/**")
8183
}
8284
}

conformance/build.gradle.kts

Lines changed: 51 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616

1717
import com.google.protobuf.gradle.ProtobufExtension
1818
import com.google.protobuf.gradle.ProtobufPlugin
19+
import org.gradle.api.file.SourceDirectorySet
20+
import org.gradle.api.tasks.Sync
21+
import org.gradle.api.tasks.compile.JavaCompile
1922

2023
plugins {
2124
`java-library`
@@ -25,9 +28,39 @@ plugins {
2528

2629
apply<ProtobufPlugin>()
2730

31+
val syncedMainProtoDir = layout.buildDirectory.dir("pb-src/proto")
32+
val mainProtoResourcesDir = layout.buildDirectory.dir("generated/proto-resources/main")
33+
val syncMainProtoSources =
34+
tasks.register<Sync>("syncMainProtoSources") {
35+
into(syncedMainProtoDir)
36+
from(layout.settingsDirectory.dir("submodules/googleapis/google/rpc")) { into("google/rpc") }
37+
from(layout.settingsDirectory.dir("submodules/googleapis/google/api/expr/conformance")) {
38+
into("google/api/expr/conformance")
39+
}
40+
}
41+
42+
val emptyTestProtoDir = layout.buildDirectory.dir("pb-src/test/proto")
43+
2844
sourceSets.main {
29-
java.srcDir(layout.buildDirectory.dir("generated/source/proto/main/java"))
30-
java.srcDir(layout.buildDirectory.dir("generated/source/proto/main/grpc"))
45+
java.setSrcDirs(
46+
listOf(
47+
layout.projectDirectory.dir("src/main/java"),
48+
layout.buildDirectory.dir("generated/sources/proto/main/java"),
49+
layout.buildDirectory.dir("generated/sources/proto/main/grpc"),
50+
)
51+
)
52+
resources.setSrcDirs(listOf(mainProtoResourcesDir))
53+
extensions.configure<SourceDirectorySet>("proto") {
54+
setSrcDirs(listOf(syncedMainProtoDir))
55+
}
56+
}
57+
58+
sourceSets.test {
59+
java.setSrcDirs(listOf(layout.projectDirectory.dir("src/test/java")))
60+
resources.setSrcDirs(emptyList<Any>())
61+
extensions.configure<SourceDirectorySet>("proto") {
62+
setSrcDirs(listOf(emptyTestProtoDir))
63+
}
3164
}
3265

3366
configurations.all { exclude(group = "org.projectnessie.cel", module = "cel-generated-pb") }
@@ -67,5 +100,20 @@ configure<ProtobufExtension> {
67100
generateProtoTasks { all().configureEach { this.plugins.create("grpc") {} } }
68101
}
69102

103+
tasks.named("generateProto") { dependsOn(syncMainProtoSources) }
104+
105+
tasks.named<JavaCompile>("compileJava") { dependsOn(tasks.named("generateProto")) }
106+
107+
tasks.named("processProtoResources") { dependsOn(syncMainProtoSources) }
108+
109+
tasks.named("processResources") { dependsOn(tasks.named("processProtoResources")) }
110+
111+
tasks.named("generateTestProto") { enabled = false }
112+
113+
tasks.named("processTestProtoResources") { enabled = false }
114+
70115
// The protobuf-plugin should ideally do this
71-
tasks.named<Jar>("sourcesJar") { dependsOn(tasks.named("generateProto")) }
116+
tasks.named<Jar>("sourcesJar") {
117+
dependsOn(tasks.named("generateProto"))
118+
dependsOn(tasks.named("processProtoResources"))
119+
}

generated-pb/build.gradle.kts

Lines changed: 73 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616

1717
import com.google.protobuf.gradle.ProtobufExtension
1818
import com.google.protobuf.gradle.ProtobufPlugin
19+
import org.gradle.api.file.SourceDirectorySet
20+
import org.gradle.api.tasks.Sync
21+
import org.gradle.api.tasks.compile.JavaCompile
1922

2023
plugins {
2124
`java-library`
@@ -27,14 +30,57 @@ plugins {
2730

2831
apply<ProtobufPlugin>()
2932

33+
val syncedMainProtoDir = layout.buildDirectory.dir("pb-src/proto")
34+
val mainProtoResourcesDir = layout.buildDirectory.dir("generated/proto-resources/main")
35+
val syncMainProtoSources =
36+
tasks.register<Sync>("syncMainProtoSources") {
37+
into(syncedMainProtoDir)
38+
from(layout.settingsDirectory.dir("submodules/googleapis/google/rpc")) { into("google/rpc") }
39+
from(layout.settingsDirectory.dir("submodules/googleapis/google/api/expr/v1alpha1")) {
40+
into("google/api/expr/v1alpha1")
41+
}
42+
}
43+
44+
val emptyTestProtoDir = layout.buildDirectory.dir("pb-src/test/proto")
45+
val syncedTestFixturesProtoDir = layout.buildDirectory.dir("pb-src/testFixtures/proto")
46+
val testFixturesProtoResourcesDir =
47+
layout.buildDirectory.dir("generated/proto-resources/testFixtures")
48+
val syncTestFixturesProtoSources =
49+
tasks.register<Sync>("syncTestFixturesProtoSources") {
50+
into(syncedTestFixturesProtoDir)
51+
from(layout.projectDirectory.dir("src/testFixtures/proto")) { include("*.proto") }
52+
from(layout.settingsDirectory.dir("submodules/cel-spec/proto/test/v1/proto2")) {
53+
into("proto/test/v1/proto2")
54+
}
55+
from(layout.settingsDirectory.dir("submodules/cel-spec/proto/test/v1/proto3")) {
56+
into("proto/test/v1/proto3")
57+
}
58+
}
59+
3060
sourceSets.main {
31-
java.srcDir(layout.buildDirectory.dir("generated/source/proto/main/java"))
61+
java.setSrcDirs(listOf(layout.buildDirectory.dir("generated/sources/proto/main/java")))
3262
java.destinationDirectory.set(layout.buildDirectory.dir("classes/java/generated"))
63+
resources.setSrcDirs(listOf(mainProtoResourcesDir))
64+
extensions.configure<SourceDirectorySet>("proto") {
65+
setSrcDirs(listOf(syncedMainProtoDir))
66+
}
3367
}
3468

3569
sourceSets.test {
36-
java.srcDir(layout.buildDirectory.dir("generated/source/proto/test/java"))
70+
java.setSrcDirs(listOf(layout.buildDirectory.dir("generated/sources/proto/test/java")))
3771
java.destinationDirectory.set(layout.buildDirectory.dir("classes/java/generatedTest"))
72+
resources.setSrcDirs(emptyList<Any>())
73+
extensions.configure<SourceDirectorySet>("proto") {
74+
setSrcDirs(listOf(emptyTestProtoDir))
75+
}
76+
}
77+
78+
sourceSets.testFixtures {
79+
java.setSrcDirs(listOf(layout.buildDirectory.dir("generated/sources/proto/testFixtures/java")))
80+
resources.setSrcDirs(listOf(testFixturesProtoResourcesDir))
81+
extensions.configure<SourceDirectorySet>("proto") {
82+
setSrcDirs(listOf(syncedTestFixturesProtoDir))
83+
}
3884
}
3985

4086
dependencies {
@@ -56,3 +102,28 @@ configure<ProtobufExtension> {
56102
artifact = "com.google.protobuf:protoc:${libs.versions.protobuf.get()}"
57103
}
58104
}
105+
106+
tasks.named("generateProto") { dependsOn(syncMainProtoSources) }
107+
108+
tasks.named<JavaCompile>("compileJava") { dependsOn(tasks.named("generateProto")) }
109+
110+
tasks.named("processProtoResources") { dependsOn(syncMainProtoSources) }
111+
112+
tasks.named("processResources") { dependsOn(tasks.named("processProtoResources")) }
113+
114+
tasks.named<Jar>("sourcesJar") {
115+
dependsOn(tasks.named("generateProto"))
116+
dependsOn(tasks.named("processProtoResources"))
117+
}
118+
119+
tasks.named("generateTestFixturesProto") { dependsOn(syncTestFixturesProtoSources) }
120+
121+
tasks.named<JavaCompile>("compileTestFixturesJava") {
122+
dependsOn(tasks.named("generateTestFixturesProto"))
123+
}
124+
125+
tasks.named("processTestFixturesProtoResources") { dependsOn(syncTestFixturesProtoSources) }
126+
127+
tasks.named("processTestFixturesResources") {
128+
dependsOn(tasks.named("processTestFixturesProtoResources"))
129+
}

generated-pb/src/main/proto/google/api/expr/v1alpha1

Lines changed: 0 additions & 1 deletion
This file was deleted.

generated-pb/src/main/proto/google/rpc

Lines changed: 0 additions & 1 deletion
This file was deleted.

generated-pb/src/testFixtures/proto/proto/test/v1/proto2

Lines changed: 0 additions & 1 deletion
This file was deleted.

generated-pb/src/testFixtures/proto/proto/test/v1/proto3

Lines changed: 0 additions & 1 deletion
This file was deleted.

generated-pb3/build.gradle.kts

Lines changed: 73 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616

1717
import com.google.protobuf.gradle.ProtobufExtension
1818
import com.google.protobuf.gradle.ProtobufPlugin
19+
import org.gradle.api.file.SourceDirectorySet
20+
import org.gradle.api.tasks.Sync
21+
import org.gradle.api.tasks.compile.JavaCompile
1922

2023
plugins {
2124
`java-library`
@@ -27,14 +30,57 @@ plugins {
2730

2831
apply<ProtobufPlugin>()
2932

33+
val syncedMainProtoDir = layout.buildDirectory.dir("pb-src/proto")
34+
val mainProtoResourcesDir = layout.buildDirectory.dir("generated/proto-resources/main")
35+
val syncMainProtoSources =
36+
tasks.register<Sync>("syncMainProtoSources") {
37+
into(syncedMainProtoDir)
38+
from(layout.settingsDirectory.dir("submodules/googleapis/google/rpc")) { into("google/rpc") }
39+
from(layout.settingsDirectory.dir("submodules/googleapis/google/api/expr/v1alpha1")) {
40+
into("google/api/expr/v1alpha1")
41+
}
42+
}
43+
44+
val emptyTestProtoDir = layout.buildDirectory.dir("pb-src/test/proto")
45+
val syncedTestFixturesProtoDir = layout.buildDirectory.dir("pb-src/testFixtures/proto")
46+
val testFixturesProtoResourcesDir =
47+
layout.buildDirectory.dir("generated/proto-resources/testFixtures")
48+
val syncTestFixturesProtoSources =
49+
tasks.register<Sync>("syncTestFixturesProtoSources") {
50+
into(syncedTestFixturesProtoDir)
51+
from(layout.settingsDirectory.dir("generated-pb/src/testFixtures/proto")) { include("*.proto") }
52+
from(layout.settingsDirectory.dir("submodules/cel-spec/proto/test/v1/proto2")) {
53+
into("proto/test/v1/proto2")
54+
}
55+
from(layout.settingsDirectory.dir("submodules/cel-spec/proto/test/v1/proto3")) {
56+
into("proto/test/v1/proto3")
57+
}
58+
}
59+
3060
sourceSets.main {
31-
java.srcDir(layout.buildDirectory.dir("generated/source/proto/main/java"))
61+
java.setSrcDirs(listOf(layout.buildDirectory.dir("generated/sources/proto/main/java")))
3262
java.destinationDirectory.set(layout.buildDirectory.dir("classes/java/generated"))
63+
resources.setSrcDirs(listOf(mainProtoResourcesDir))
64+
extensions.configure<SourceDirectorySet>("proto") {
65+
setSrcDirs(listOf(syncedMainProtoDir))
66+
}
3367
}
3468

3569
sourceSets.test {
36-
java.srcDir(layout.buildDirectory.dir("generated/source/proto/test/java"))
70+
java.setSrcDirs(listOf(layout.buildDirectory.dir("generated/sources/proto/test/java")))
3771
java.destinationDirectory.set(layout.buildDirectory.dir("classes/java/generatedTest"))
72+
resources.setSrcDirs(emptyList<Any>())
73+
extensions.configure<SourceDirectorySet>("proto") {
74+
setSrcDirs(listOf(emptyTestProtoDir))
75+
}
76+
}
77+
78+
sourceSets.testFixtures {
79+
java.setSrcDirs(listOf(layout.buildDirectory.dir("generated/sources/proto/testFixtures/java")))
80+
resources.setSrcDirs(listOf(testFixturesProtoResourcesDir))
81+
extensions.configure<SourceDirectorySet>("proto") {
82+
setSrcDirs(listOf(syncedTestFixturesProtoDir))
83+
}
3884
}
3985

4086
dependencies {
@@ -56,3 +102,28 @@ configure<ProtobufExtension> {
56102
artifact = "com.google.protobuf:protoc:${libs.versions.protobuf3.get()}"
57103
}
58104
}
105+
106+
tasks.named("generateProto") { dependsOn(syncMainProtoSources) }
107+
108+
tasks.named<JavaCompile>("compileJava") { dependsOn(tasks.named("generateProto")) }
109+
110+
tasks.named("processProtoResources") { dependsOn(syncMainProtoSources) }
111+
112+
tasks.named("processResources") { dependsOn(tasks.named("processProtoResources")) }
113+
114+
tasks.named<Jar>("sourcesJar") {
115+
dependsOn(tasks.named("generateProto"))
116+
dependsOn(tasks.named("processProtoResources"))
117+
}
118+
119+
tasks.named("generateTestFixturesProto") { dependsOn(syncTestFixturesProtoSources) }
120+
121+
tasks.named<JavaCompile>("compileTestFixturesJava") {
122+
dependsOn(tasks.named("generateTestFixturesProto"))
123+
}
124+
125+
tasks.named("processTestFixturesProtoResources") { dependsOn(syncTestFixturesProtoSources) }
126+
127+
tasks.named("processTestFixturesResources") {
128+
dependsOn(tasks.named("processTestFixturesProtoResources"))
129+
}

generated-pb3/src

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)