Skip to content

Commit 9d0f08b

Browse files
authored
Revert "[Build] Do not invalidate configuration cache when branch is switched (#118894)" (#119300)
This reverts commit f9c6a6c.
1 parent c98d8bb commit 9d0f08b

File tree

18 files changed

+73
-117
lines changed

18 files changed

+73
-117
lines changed

build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/GitInfoPlugin.java

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
package org.elasticsearch.gradle.internal.conventions;
1111

1212
import org.elasticsearch.gradle.internal.conventions.info.GitInfo;
13-
import org.elasticsearch.gradle.internal.conventions.info.GitInfoValueSource;
1413
import org.elasticsearch.gradle.internal.conventions.util.Util;
1514
import org.gradle.api.Plugin;
1615
import org.gradle.api.Project;
@@ -19,28 +18,38 @@
1918
import org.gradle.api.provider.Provider;
2019
import org.gradle.api.provider.ProviderFactory;
2120

22-
import java.io.File;
23-
2421
import javax.inject.Inject;
22+
import java.io.File;
2523

26-
public abstract class GitInfoPlugin implements Plugin<Project> {
24+
class GitInfoPlugin implements Plugin<Project> {
2725

2826
private ProviderFactory factory;
27+
private ObjectFactory objectFactory;
28+
2929
private Provider<String> revision;
30+
private Property<GitInfo> gitInfo;
3031

3132
@Inject
32-
public GitInfoPlugin(ProviderFactory factory) {
33+
GitInfoPlugin(ProviderFactory factory, ObjectFactory objectFactory) {
3334
this.factory = factory;
35+
this.objectFactory = objectFactory;
3436
}
3537

3638
@Override
3739
public void apply(Project project) {
3840
File rootDir = Util.locateElasticsearchWorkspace(project.getGradle());
39-
getGitInfo().convention(factory.of(GitInfoValueSource.class, spec -> { spec.getParameters().getPath().set(rootDir); }));
40-
revision = getGitInfo().map(info -> info.getRevision() == null ? info.getRevision() : "main");
41+
gitInfo = objectFactory.property(GitInfo.class).value(factory.provider(() ->
42+
GitInfo.gitInfo(rootDir)
43+
));
44+
gitInfo.disallowChanges();
45+
gitInfo.finalizeValueOnRead();
46+
47+
revision = gitInfo.map(info -> info.getRevision() == null ? info.getRevision() : "main");
4148
}
4249

43-
public abstract Property<GitInfo> getGitInfo();
50+
public Property<GitInfo> getGitInfo() {
51+
return gitInfo;
52+
}
4453

4554
public Provider<String> getRevision() {
4655
return revision;

build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/LicensingPlugin.java

Lines changed: 13 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,8 @@
1515
import org.gradle.api.provider.Provider;
1616
import org.gradle.api.provider.ProviderFactory;
1717

18-
import java.util.Map;
19-
2018
import javax.inject.Inject;
19+
import java.util.Map;
2120

2221
public class LicensingPlugin implements Plugin<Project> {
2322
static final String ELASTIC_LICENSE_URL_PREFIX = "https://raw.githubusercontent.com/elastic/elasticsearch/";
@@ -34,33 +33,24 @@ public LicensingPlugin(ProviderFactory providerFactory) {
3433
@Override
3534
public void apply(Project project) {
3635
Provider<String> revision = project.getRootProject().getPlugins().apply(GitInfoPlugin.class).getRevision();
37-
Provider<String> licenseCommitProvider = providerFactory.provider(
38-
() -> isSnapshotVersion(project) ? revision.get() : "v" + project.getVersion()
36+
Provider<String> licenseCommitProvider = providerFactory.provider(() ->
37+
isSnapshotVersion(project) ? revision.get() : "v" + project.getVersion()
3938
);
4039

41-
Provider<String> elasticLicenseURL = licenseCommitProvider.map(
42-
licenseCommit -> ELASTIC_LICENSE_URL_PREFIX + licenseCommit + ELASTIC_LICENSE_URL_POSTFIX
43-
);
44-
Provider<String> agplLicenseURL = licenseCommitProvider.map(
45-
licenseCommit -> ELASTIC_LICENSE_URL_PREFIX + licenseCommit + AGPL_ELASTIC_LICENSE_URL_POSTFIX
46-
);
40+
Provider<String> elasticLicenseURL = licenseCommitProvider.map(licenseCommit -> ELASTIC_LICENSE_URL_PREFIX +
41+
licenseCommit + ELASTIC_LICENSE_URL_POSTFIX);
42+
Provider<String> agplLicenseURL = licenseCommitProvider.map(licenseCommit -> ELASTIC_LICENSE_URL_PREFIX +
43+
licenseCommit + AGPL_ELASTIC_LICENSE_URL_POSTFIX);
4744
// But stick the Elastic license url in project.ext so we can get it if we need to switch to it
4845
project.getExtensions().getExtraProperties().set("elasticLicenseUrl", elasticLicenseURL);
4946

50-
MapProperty<String, Provider<String>> licensesProperty = project.getObjects()
51-
.mapProperty(String.class, (Class<Provider<String>>) (Class<?>) Provider.class)
52-
.convention(
53-
providerFactory.provider(
54-
() -> Map.of(
55-
"Server Side Public License, v 1",
56-
providerFactory.provider(() -> "https://www.mongodb.com/licensing/server-side-public-license"),
57-
"Elastic License 2.0",
58-
elasticLicenseURL,
59-
"GNU Affero General Public License Version 3",
60-
agplLicenseURL
61-
)
47+
MapProperty<String, String> licensesProperty = project.getObjects().mapProperty(String.class, String.class).convention(
48+
providerFactory.provider(() -> Map.of(
49+
"Server Side Public License, v 1", "https://www.mongodb.com/licensing/server-side-public-license",
50+
"Elastic License 2.0", elasticLicenseURL.get(),
51+
"GNU Affero General Public License Version 3", agplLicenseURL.get())
6252
)
63-
);
53+
);
6454

6555
// Default to the SSPL+Elastic dual license
6656
project.getExtensions().getExtraProperties().set("projectLicenses", licensesProperty);

build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/PublishPlugin.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import org.gradle.api.plugins.JavaLibraryPlugin;
2929
import org.gradle.api.plugins.JavaPlugin;
3030
import org.gradle.api.provider.MapProperty;
31-
import org.gradle.api.provider.Provider;
3231
import org.gradle.api.provider.ProviderFactory;
3332
import org.gradle.api.publish.PublishingExtension;
3433
import org.gradle.api.publish.maven.MavenPublication;
@@ -43,7 +42,6 @@
4342
import java.io.File;
4443
import java.util.Map;
4544
import java.util.concurrent.Callable;
46-
4745
import javax.inject.Inject;
4846

4947
public class PublishPlugin implements Plugin<Project> {
@@ -83,15 +81,15 @@ private void configurePublications(Project project) {
8381
}
8482
});
8583
@SuppressWarnings("unchecked")
86-
var projectLicenses = (MapProperty<String, Provider<String>>) project.getExtensions().getExtraProperties().get("projectLicenses");
84+
var projectLicenses = (MapProperty<String, String>) project.getExtensions().getExtraProperties().get("projectLicenses");
8785
publication.getPom().withXml(xml -> {
8886
var node = xml.asNode();
8987
node.appendNode("inceptionYear", "2009");
9088
var licensesNode = node.appendNode("licenses");
9189
projectLicenses.get().entrySet().stream().sorted(Map.Entry.comparingByKey()).forEach(entry -> {
9290
Node license = licensesNode.appendNode("license");
9391
license.appendNode("name", entry.getKey());
94-
license.appendNode("url", entry.getValue().get());
92+
license.appendNode("url", entry.getValue());
9593
license.appendNode("distribution", "repo");
9694
});
9795
var developer = node.appendNode("developers").appendNode("developer");
@@ -196,6 +194,7 @@ static void configureSourcesJar(Project project) {
196194
});
197195
}
198196

197+
199198
/**
200199
* Format the generated pom files to be in a sort of reproducible order.
201200
*/

build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/info/GitInfo.java

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import java.util.HashMap;
2323
import java.util.Iterator;
2424
import java.util.Map;
25-
import java.util.Objects;
2625
import java.util.regex.Matcher;
2726
import java.util.regex.Pattern;
2827
import java.util.stream.Collectors;
@@ -191,15 +190,4 @@ public String urlFromOrigin() {
191190
}
192191
}
193192

194-
@Override
195-
public boolean equals(Object o) {
196-
if (o == null || getClass() != o.getClass()) return false;
197-
GitInfo gitInfo = (GitInfo) o;
198-
return Objects.equals(revision, gitInfo.revision) && Objects.equals(origin, gitInfo.origin);
199-
}
200-
201-
@Override
202-
public int hashCode() {
203-
return Objects.hash(revision, origin);
204-
}
205193
}

build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/info/GitInfoValueSource.java

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

build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/PublishPluginFuncTest.groovy

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,7 @@ class PublishPluginFuncTest extends AbstractGradleFuncTest {
4545
file("build/distributions/hello-world-1.0-javadoc.jar").exists()
4646
file("build/distributions/hello-world-1.0-sources.jar").exists()
4747
file("build/distributions/hello-world-1.0.pom").exists()
48-
assertXmlEquals(
49-
file("build/distributions/hello-world-1.0.pom").text, """
48+
assertXmlEquals(file("build/distributions/hello-world-1.0.pom").text, """
5049
<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
5150
<!-- This module was also published with a richer model, Gradle metadata, -->
5251
<!-- which should be used instead. Do not delete the following line which -->
@@ -131,8 +130,7 @@ class PublishPluginFuncTest extends AbstractGradleFuncTest {
131130
file("build/distributions/hello-world-1.0-javadoc.jar").exists()
132131
file("build/distributions/hello-world-1.0-sources.jar").exists()
133132
file("build/distributions/hello-world-1.0.pom").exists()
134-
assertXmlEquals(
135-
file("build/distributions/hello-world-1.0.pom").text, """
133+
assertXmlEquals(file("build/distributions/hello-world-1.0.pom").text, """
136134
<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
137135
<modelVersion>4.0.0</modelVersion>
138136
<groupId>org.acme</groupId>
@@ -221,8 +219,7 @@ class PublishPluginFuncTest extends AbstractGradleFuncTest {
221219
file("build/distributions/hello-world-1.0-javadoc.jar").exists()
222220
file("build/distributions/hello-world-1.0-sources.jar").exists()
223221
file("build/distributions/hello-world-1.0.pom").exists()
224-
assertXmlEquals(
225-
file("build/distributions/hello-world-1.0.pom").text, """
222+
assertXmlEquals(file("build/distributions/hello-world-1.0.pom").text, """
226223
<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
227224
<modelVersion>4.0.0</modelVersion>
228225
<groupId>org.acme</groupId>
@@ -315,8 +312,7 @@ class PublishPluginFuncTest extends AbstractGradleFuncTest {
315312
file("build/distributions/hello-world-plugin-1.0-javadoc.jar").exists()
316313
file("build/distributions/hello-world-plugin-1.0-sources.jar").exists()
317314
file("build/distributions/hello-world-plugin-1.0.pom").exists()
318-
assertXmlEquals(
319-
file("build/distributions/hello-world-plugin-1.0.pom").text, """
315+
assertXmlEquals(file("build/distributions/hello-world-plugin-1.0.pom").text, """
320316
<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
321317
<!-- This module was also published with a richer model, Gradle metadata, -->
322318
<!-- which should be used instead. Do not delete the following line which -->
@@ -393,8 +389,7 @@ class PublishPluginFuncTest extends AbstractGradleFuncTest {
393389
then:
394390
result.task(":generatePom").outcome == TaskOutcome.SUCCESS
395391
file("build/distributions/hello-world-plugin-2.0.pom").exists()
396-
assertXmlEquals(
397-
file("build/distributions/hello-world-plugin-2.0.pom").text, """
392+
assertXmlEquals(file("build/distributions/hello-world-plugin-2.0.pom").text, """
398393
<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
399394
<!-- This module was also published with a richer model, Gradle metadata, -->
400395
<!-- which should be used instead. Do not delete the following line which -->
@@ -444,15 +439,15 @@ class PublishPluginFuncTest extends AbstractGradleFuncTest {
444439
// scm info only added for internal builds
445440
internalBuild()
446441
buildFile << """
447-
buildParams.setGitOrigin(project.providers.provider(() -> "https://some-repo.com/repo.git"))
442+
buildParams.setGitOrigin("https://some-repo.com/repo.git")
448443
apply plugin:'elasticsearch.java'
449444
apply plugin:'elasticsearch.publish'
450445
451446
version = "1.0"
452447
group = 'org.acme'
453448
description = "just a test project"
454449
455-
ext.projectLicenses.set(['The Apache Software License, Version 2.0': project.providers.provider(() -> 'http://www.apache.org/licenses/LICENSE-2.0')])
450+
ext.projectLicenses.set(['The Apache Software License, Version 2.0': 'http://www.apache.org/licenses/LICENSE-2.0'])
456451
"""
457452

458453
when:
@@ -461,8 +456,7 @@ class PublishPluginFuncTest extends AbstractGradleFuncTest {
461456
then:
462457
result.task(":generatePom").outcome == TaskOutcome.SUCCESS
463458
file("build/distributions/hello-world-1.0.pom").exists()
464-
assertXmlEquals(
465-
file("build/distributions/hello-world-1.0.pom").text, """
459+
assertXmlEquals(file("build/distributions/hello-world-1.0.pom").text, """
466460
<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
467461
<!-- This module was also published with a richer model, Gradle metadata, -->
468462
<!-- which should be used instead. Do not delete the following line which -->
@@ -499,15 +493,15 @@ class PublishPluginFuncTest extends AbstractGradleFuncTest {
499493

500494
private boolean assertXmlEquals(String toTest, String expected) {
501495
def diff = DiffBuilder.compare(Input.fromString(expected))
502-
.ignoreWhitespace()
503-
.ignoreComments()
504-
.normalizeWhitespace()
505-
.withTest(Input.fromString(toTest))
506-
.build()
496+
.ignoreWhitespace()
497+
.ignoreComments()
498+
.normalizeWhitespace()
499+
.withTest(Input.fromString(toTest))
500+
.build()
507501
diff.differences.each { difference ->
508502
println difference
509503
}
510-
if (diff.differences.size() > 0) {
504+
if(diff.differences.size() > 0) {
511505
println """ given:
512506
$toTest
513507
"""

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ElasticsearchJavaPlugin.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
import org.gradle.api.plugins.JavaLibraryPlugin;
2828
import org.gradle.api.plugins.JavaPlugin;
2929
import org.gradle.api.provider.Property;
30-
import org.gradle.api.provider.Provider;
3130
import org.gradle.api.tasks.TaskProvider;
3231
import org.gradle.api.tasks.bundling.Jar;
3332
import org.gradle.api.tasks.javadoc.Javadoc;
@@ -121,12 +120,12 @@ public void execute(Task task) {
121120
}
122121

123122
private static void configureJarManifest(Project project, BuildParameterExtension buildParams) {
124-
Provider<String> gitOrigin = buildParams.getGitOrigin();
125-
Provider<String> gitRevision = buildParams.getGitRevision();
123+
String gitOrigin = buildParams.getGitOrigin();
124+
String gitRevision = buildParams.getGitRevision();
126125

127126
project.getPlugins().withType(InfoBrokerPlugin.class).whenPluginAdded(manifestPlugin -> {
128-
manifestPlugin.add("Module-Origin", toStringable(() -> gitOrigin.get()));
129-
manifestPlugin.add("Change", toStringable(() -> gitRevision.get()));
127+
manifestPlugin.add("Module-Origin", toStringable(() -> gitOrigin));
128+
manifestPlugin.add("Change", toStringable(() -> gitRevision));
130129
manifestPlugin.add("X-Compile-Elasticsearch-Version", toStringable(VersionProperties::getElasticsearch));
131130
manifestPlugin.add("X-Compile-Lucene-Version", toStringable(VersionProperties::getLucene));
132131
manifestPlugin.add(

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/info/BuildParameterExtension.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,9 @@ public interface BuildParameterExtension {
4646

4747
Provider<String> getRuntimeJavaDetails();
4848

49-
Provider<String> getGitRevision();
49+
String getGitRevision();
5050

51-
Provider<String> getGitOrigin();
51+
String getGitOrigin();
5252

5353
ZonedDateTime getBuildDate();
5454

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/info/DefaultBuildParameterExtension.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public abstract class DefaultBuildParameterExtension implements BuildParameterEx
3636
private final Provider<JavaVersion> runtimeJavaVersion;
3737
private final Provider<? extends Action<JavaToolchainSpec>> javaToolChainSpec;
3838
private final Provider<String> runtimeJavaDetails;
39-
private final Provider<String> gitRevision;
39+
private final String gitRevision;
4040

4141
private transient AtomicReference<ZonedDateTime> buildDate = new AtomicReference<>();
4242
private final String testSeed;
@@ -46,7 +46,7 @@ public abstract class DefaultBuildParameterExtension implements BuildParameterEx
4646

4747
// not final for testing
4848
private Provider<BwcVersions> bwcVersions;
49-
private Provider<String> gitOrigin;
49+
private String gitOrigin;
5050

5151
public DefaultBuildParameterExtension(
5252
ProviderFactory providers,
@@ -59,8 +59,8 @@ public DefaultBuildParameterExtension(
5959
JavaVersion minimumCompilerVersion,
6060
JavaVersion minimumRuntimeVersion,
6161
JavaVersion gradleJavaVersion,
62-
Provider<String> gitRevision,
63-
Provider<String> gitOrigin,
62+
String gitRevision,
63+
String gitOrigin,
6464
String testSeed,
6565
boolean isCi,
6666
int defaultParallel,
@@ -155,12 +155,12 @@ public Provider<String> getRuntimeJavaDetails() {
155155
}
156156

157157
@Override
158-
public Provider<String> getGitRevision() {
158+
public String getGitRevision() {
159159
return gitRevision;
160160
}
161161

162162
@Override
163-
public Provider<String> getGitOrigin() {
163+
public String getGitOrigin() {
164164
return gitOrigin;
165165
}
166166

@@ -239,7 +239,7 @@ public void setBwcVersions(Provider<BwcVersions> bwcVersions) {
239239
}
240240

241241
// for testing; not part of public api
242-
public void setGitOrigin(Provider<String> gitOrigin) {
242+
public void setGitOrigin(String gitOrigin) {
243243
this.gitOrigin = gitOrigin;
244244
}
245245
}

0 commit comments

Comments
 (0)