Skip to content

Commit 8f943a6

Browse files
authored
[Build] Update Gradle wrapper to 8.11.1 (#115886)
replace deprecated gradle api fix permission api usage in debian and rpm package creation remove deprecated usage of #ProjectDependency..getDependencyProject() improves gradle configuration cache reading in our weekly benchmark by almost 30%
1 parent e90eb7a commit 8f943a6

File tree

12 files changed

+125
-30
lines changed

12 files changed

+125
-30
lines changed

build-tools-internal/gradle/wrapper/gradle-wrapper.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionSha256Sum=2ab88d6de2c23e6adae7363ae6e29cbdd2a709e992929b48b6530fd0c7133bd6
4-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip
3+
distributionSha256Sum=89d4e70e4e84e2d2dfbb63e4daa53e21b25017cc70c37e4eea31ee51fb15098a
4+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-all.zip
55
networkTimeout=10000
66
validateDistributionUrl=true
77
zipStoreBase=GRADLE_USER_HOME

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import org.gradle.api.artifacts.Configuration;
1919
import org.gradle.api.artifacts.Dependency;
2020
import org.gradle.api.artifacts.ProjectDependency;
21+
import org.gradle.api.internal.artifacts.dependencies.ProjectDependencyInternal;
2122
import org.gradle.api.plugins.BasePluginExtension;
2223
import org.gradle.api.plugins.JavaPlugin;
2324
import org.gradle.api.tasks.javadoc.Javadoc;
@@ -82,12 +83,15 @@ private void configureJavadocForConfiguration(Project project, boolean shadow, C
8283
.sorted(Comparator.comparing(Dependency::getGroup))
8384
.filter(d -> d instanceof ProjectDependency)
8485
.map(d -> (ProjectDependency) d)
85-
.filter(p -> p.getDependencyProject() != null)
8686
.forEach(projectDependency -> configureDependency(project, shadow, projectDependency));
8787
}
8888

8989
private void configureDependency(Project project, boolean shadowed, ProjectDependency dep) {
90-
var upstreamProject = dep.getDependencyProject();
90+
// we should use variant aware dependency management to resolve artifacts required for javadoc here
91+
Project upstreamProject = project.project(((ProjectDependencyInternal) dep).getIdentityPath().getPath());
92+
if (upstreamProject == null) {
93+
return;
94+
}
9195
if (shadowed) {
9296
/*
9397
* Include the source of shadowed upstream projects so we don't

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

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,15 @@
1010
package org.elasticsearch.gradle.internal.test;
1111

1212
import org.apache.commons.lang.StringUtils;
13-
import org.elasticsearch.gradle.plugin.PluginBuildPlugin;
1413
import org.gradle.api.Plugin;
1514
import org.gradle.api.Project;
1615
import org.gradle.api.artifacts.Configuration;
16+
import org.gradle.api.artifacts.Dependency;
1717
import org.gradle.api.artifacts.ProjectDependency;
18+
import org.gradle.api.artifacts.dsl.DependencyHandler;
19+
import org.gradle.api.attributes.Attribute;
20+
import org.gradle.api.attributes.LibraryElements;
21+
import org.gradle.api.internal.artifacts.dependencies.ProjectDependencyInternal;
1822
import org.gradle.api.plugins.ExtraPropertiesExtension;
1923
import org.gradle.api.tasks.Copy;
2024
import org.gradle.api.tasks.SourceSetContainer;
@@ -45,23 +49,34 @@ public void apply(final Project project) {
4549

4650
Configuration testImplementationConfig = project.getConfigurations().getByName("testImplementation");
4751
testImplementationConfig.getDependencies().all(dep -> {
48-
if (dep instanceof ProjectDependency
49-
&& ((ProjectDependency) dep).getDependencyProject().getPlugins().hasPlugin(PluginBuildPlugin.class)) {
50-
project.getGradle()
51-
.projectsEvaluated(gradle -> addPluginResources(project, ((ProjectDependency) dep).getDependencyProject()));
52+
if (dep instanceof ProjectDependency && dep.getGroup().contains("plugin")) {
53+
addPluginResources(project, ((ProjectDependency) dep));
5254
}
5355
});
5456
}
5557

56-
private static void addPluginResources(final Project project, final Project pluginProject) {
57-
final File outputDir = new File(project.getBuildDir(), "/generated-test-resources/" + pluginProject.getName());
58-
String camelProjectName = stream(pluginProject.getName().split("-")).map(t -> StringUtils.capitalize(t))
58+
private static void addPluginResources(final Project project, final ProjectDependency projectDependency) {
59+
final File outputDir = new File(project.getBuildDir(), "/generated-test-resources/" + projectDependency.getName());
60+
String camelProjectName = stream(projectDependency.getName().split("-")).map(t -> StringUtils.capitalize(t))
5961
.collect(Collectors.joining());
6062
String taskName = "copy" + camelProjectName + "Metadata";
63+
String metadataConfiguration = "resolved" + camelProjectName + "Metadata";
64+
Configuration pluginMetadata = project.getConfigurations().maybeCreate(metadataConfiguration);
65+
pluginMetadata.getAttributes().attribute(Attribute.of("pluginMetadata", Boolean.class), true);
66+
pluginMetadata.getAttributes()
67+
.attribute(
68+
LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE,
69+
project.getObjects().named(LibraryElements.class, LibraryElements.RESOURCES)
70+
);
71+
DependencyHandler dependencyHandler = project.getDependencies();
72+
ProjectDependencyInternal pluginProject = (ProjectDependencyInternal) projectDependency;
73+
74+
String path = pluginProject.getIdentityPath().getPath();
75+
Dependency pluginMetadataDependency = dependencyHandler.project(Map.of("path", path));
76+
dependencyHandler.add(metadataConfiguration, pluginMetadataDependency);
6177
project.getTasks().register(taskName, Copy.class, copy -> {
6278
copy.into(outputDir);
63-
copy.from(pluginProject.getTasks().named("pluginProperties"));
64-
copy.from(pluginProject.file("src/main/plugin-metadata"));
79+
copy.from(pluginMetadata);
6580
});
6681

6782
Map<String, Object> map = Map.of("builtBy", taskName);

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/RestTestBasePlugin.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import org.gradle.api.file.ConfigurableFileCollection;
4444
import org.gradle.api.file.FileCollection;
4545
import org.gradle.api.file.FileTree;
46+
import org.gradle.api.internal.artifacts.dependencies.ProjectDependencyInternal;
4647
import org.gradle.api.provider.ProviderFactory;
4748
import org.gradle.api.tasks.ClasspathNormalizer;
4849
import org.gradle.api.tasks.PathSensitivity;
@@ -251,7 +252,7 @@ private void copyDependencies(Project project, DependencySet dependencies, Confi
251252
configuration.getDependencies()
252253
.stream()
253254
.filter(d -> d instanceof ProjectDependency)
254-
.map(d -> project.getDependencies().project(Map.of("path", ((ProjectDependency) d).getDependencyProject().getPath())))
255+
.map(d -> project.getDependencies().project(Map.of("path", ((ProjectDependencyInternal) d).getIdentityPath().getPath())))
255256
.forEach(dependencies::add);
256257
}
257258

@@ -328,8 +329,11 @@ private Configuration createPluginConfiguration(Project project, String name, bo
328329
Collection<Dependency> additionalDependencies = new LinkedHashSet<>();
329330
for (Iterator<Dependency> iterator = dependencies.iterator(); iterator.hasNext();) {
330331
Dependency dependency = iterator.next();
332+
// this logic of relying on other projects metadata should probably live in a build service
331333
if (dependency instanceof ProjectDependency projectDependency) {
332-
Project dependencyProject = projectDependency.getDependencyProject();
334+
Project dependencyProject = project.project(
335+
((ProjectDependencyInternal) projectDependency).getIdentityPath().getPath()
336+
);
333337
List<String> extendedPlugins = dependencyProject.getExtensions()
334338
.getByType(PluginPropertiesExtension.class)
335339
.getExtendedPlugins();

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ static String toArchString(Architecture architecture) {
3434
case X86_64 -> "x64";
3535
case AARCH64 -> "aarch64";
3636
case X86 -> "x86";
37+
default -> throw new UnsupportedOperationException("Architecture " + architecture);
3738
};
3839
}
3940

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
8.10.2
1+
8.11.1

build-tools/src/main/java/org/elasticsearch/gradle/LazyFileOutputStream.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,12 @@ public void write(byte b[], int off, int len) throws IOException {
3939
bootstrap();
4040
delegate.write(b, off, len);
4141
}
42+
43+
@Override
44+
public void write(byte b[]) throws IOException {
45+
bootstrap();
46+
delegate.write(b);
47+
}
4248
};
4349
}
4450

build-tools/src/main/java/org/elasticsearch/gradle/plugin/BasePluginBuildPlugin.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
import org.gradle.api.Task;
2525
import org.gradle.api.Transformer;
2626
import org.gradle.api.artifacts.type.ArtifactTypeDefinition;
27+
import org.gradle.api.attributes.Attribute;
28+
import org.gradle.api.attributes.LibraryElements;
2729
import org.gradle.api.file.CopySpec;
2830
import org.gradle.api.file.FileCollection;
2931
import org.gradle.api.file.RegularFile;
@@ -126,9 +128,27 @@ private TaskProvider<Zip> createBundleTasks(final Project project, PluginPropert
126128
// know about the plugin (used by test security code to statically initialize the plugin in unit tests)
127129
var testSourceSet = project.getExtensions().getByType(SourceSetContainer.class).getByName("test");
128130
Map<String, Object> map = Map.of("builtBy", buildProperties);
129-
testSourceSet.getOutput().dir(map, new File(project.getBuildDir(), "generated-resources"));
131+
132+
File generatedResources = new File(project.getBuildDir(), "generated-resources");
133+
testSourceSet.getOutput().dir(map, generatedResources);
130134
testSourceSet.getResources().srcDir(pluginMetadata);
131135

136+
// expose the plugin properties and metadata for other plugins to use in their tests.
137+
// See TestWithDependenciesPlugin for how this is used.
138+
project.getConfigurations().create("pluginMetadata", conf -> {
139+
conf.getAttributes().attribute(Attribute.of("pluginMetadata", Boolean.class), true);
140+
conf.getAttributes()
141+
.attribute(
142+
LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE,
143+
project.getObjects().named(LibraryElements.class, LibraryElements.RESOURCES)
144+
);
145+
});
146+
147+
project.getArtifacts().add("pluginMetadata", new File(project.getBuildDir(), "generated-descriptor"), artifact -> {
148+
artifact.builtBy(buildProperties);
149+
});
150+
project.getArtifacts().add("pluginMetadata", pluginMetadata);
151+
// getAttributes().attribute(ArtifactTypeDefinition.ARTIFACT_TYPE_ATTRIBUTE, "plugin-metadata");
132152
var bundleSpec = createBundleSpec(project, pluginMetadata, buildProperties);
133153
extension.setBundleSpec(bundleSpec);
134154
// create the actual bundle task, which zips up all the files for the plugin

distribution/packages/build.gradle

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ import java.util.regex.Pattern
4343
*/
4444

4545
plugins {
46-
id "com.netflix.nebula.ospackage-base" version "11.9.1"
46+
id "com.netflix.nebula.ospackage-base" version "11.10.0"
4747
}
4848

4949
['deb', 'rpm'].each { type ->
@@ -195,7 +195,7 @@ def commonPackageConfig(String type, String architecture) {
195195
configurationFile '/etc/elasticsearch/users_roles'
196196
from("${packagingFiles}") {
197197
dirPermissions {
198-
unix(02750)
198+
unix(0750)
199199
}
200200
into('/etc')
201201
permissionGroup 'elasticsearch'
@@ -208,7 +208,7 @@ def commonPackageConfig(String type, String architecture) {
208208
from("${packagingFiles}/etc/elasticsearch") {
209209
into('/etc/elasticsearch')
210210
dirPermissions {
211-
unix(02750)
211+
unix(0750)
212212
}
213213
setgid = true
214214
filePermissions {
@@ -260,7 +260,7 @@ def commonPackageConfig(String type, String architecture) {
260260

261261
// ========= empty dirs =========
262262
// NOTE: these are created under packagingFiles as empty, but the permissions are set here
263-
Closure copyEmptyDir = { path, u, g, mode ->
263+
Closure copyEmptyDir = { path, u, g, gid, mode ->
264264
File file = new File(path)
265265
into(file.parent) {
266266
from "${packagingFiles}/${file.parent}"
@@ -272,12 +272,12 @@ def commonPackageConfig(String type, String architecture) {
272272
dirPermissions {
273273
unix(mode)
274274
}
275-
setgid (mode == 02750)
275+
setgid(gid)
276276
}
277277
}
278-
copyEmptyDir('/var/log/elasticsearch', 'elasticsearch', 'elasticsearch', 02750)
279-
copyEmptyDir('/var/lib/elasticsearch', 'elasticsearch', 'elasticsearch', 02750)
280-
copyEmptyDir('/usr/share/elasticsearch/plugins', 'root', 'root', 0755)
278+
copyEmptyDir('/var/log/elasticsearch', 'elasticsearch', 'elasticsearch', true, 0750)
279+
copyEmptyDir('/var/lib/elasticsearch', 'elasticsearch', 'elasticsearch', true, 0750)
280+
copyEmptyDir('/usr/share/elasticsearch/plugins', 'root', 'root', false, 0755)
281281

282282
// the oss package conflicts with the default distribution and vice versa
283283
conflicts('elasticsearch-oss')

gradle/verification-metadata.xml

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -944,6 +944,11 @@
944944
<sha256 value="d694edd7bae3bc1a8e0dae2f5a22c479ff04d6b9bfcb0ab751a42f02e02d2100" origin="Generated by Gradle"/>
945945
</artifact>
946946
</component>
947+
<component group="com.netflix.nebula" name="gradle-ospackage-plugin" version="11.10.0">
948+
<artifact name="gradle-ospackage-plugin-11.10.0.jar">
949+
<sha256 value="93c264b05864f8db979a169a99e4bfaad84caa30b829743f67210382dff89619" origin="Generated by Gradle"/>
950+
</artifact>
951+
</component>
947952
<component group="com.netflix.nebula" name="gradle-ospackage-plugin" version="11.9.1">
948953
<artifact name="gradle-ospackage-plugin-11.9.1.jar">
949954
<sha256 value="63b2c387cb83481bb8d7e33e0be02e9000c0ec30843ca7730641392f3f5f28ad" origin="Generated by Gradle"/>
@@ -3045,6 +3050,11 @@
30453050
<sha256 value="29b2628d0f028119715916849c19eed45b32cdc67eb13551798c73afa4aa23d6" origin="Generated by Gradle"/>
30463051
</artifact>
30473052
</component>
3053+
<component group="org.apache.maven" name="maven-archiver" version="3.5.1">
3054+
<artifact name="maven-archiver-3.5.1.jar">
3055+
<sha256 value="d0674469f8e6fbc866dbc5c955463d7629b7755ac7c87a235b9469d8257d6b8c" origin="Generated by Gradle"/>
3056+
</artifact>
3057+
</component>
30483058
<component group="org.apache.maven" name="maven-artifact" version="3.6.1">
30493059
<artifact name="maven-artifact-3.6.1.jar">
30503060
<sha256 value="797fa1bcf54d7216e863b8177c04507d09c708eec153626eca473054c0eb56f3" origin="Generated by Gradle"/>
@@ -3060,6 +3070,11 @@
30603070
<sha256 value="c29763149b09b294c981d12d70f96ea4edb60d462238bb5dcbaae224e6acfdaa" origin="Generated by Gradle"/>
30613071
</artifact>
30623072
</component>
3073+
<component group="org.apache.maven" name="maven-model" version="3.1.1">
3074+
<artifact name="maven-model-3.1.1.jar">
3075+
<sha256 value="e71bad235af182c43dfcaa9b649032352cf859f9d09f79e1f537268384176de1" origin="Generated by Gradle"/>
3076+
</artifact>
3077+
</component>
30633078
<component group="org.apache.maven" name="maven-model" version="3.6.1">
30643079
<artifact name="maven-model-3.6.1.jar">
30653080
<sha256 value="ab10ced4a0f692cae285effacc70d458806ede856b9a2b3b318de1eb2f2f3b05" origin="Generated by Gradle"/>
@@ -3130,6 +3145,11 @@
31303145
<sha256 value="3ba9c619893c767db0f9c3e826d5118b57c35229301bcd16d865a89cec16a7e5" origin="Generated by Gradle"/>
31313146
</artifact>
31323147
</component>
3148+
<component group="org.apache.maven.shared" name="maven-shared-utils" version="3.3.3">
3149+
<artifact name="maven-shared-utils-3.3.3.jar">
3150+
<sha256 value="44a60c610f4e31524b03d81a698b1ecceba116320ea510babf859575b2ea7233" origin="Generated by Gradle"/>
3151+
</artifact>
3152+
</component>
31333153
<component group="org.apache.mina" name="mina-core" version="2.0.17">
31343154
<artifact name="mina-core-2.0.17.jar">
31353155
<sha256 value="08316826fa2b9357b061e52fa8f19ccae75420c949ebe29e28759d2bddd9b39b" origin="Generated by Gradle"/>
@@ -3438,6 +3458,11 @@
34383458
<sha256 value="92654f493ecfec52082e76354f0ebf87648dc3d5cec2e3c3cdb947c016747a53" origin="Generated by Gradle"/>
34393459
</artifact>
34403460
</component>
3461+
<component group="org.codehaus.plexus" name="plexus-archiver" version="4.2.3">
3462+
<artifact name="plexus-archiver-4.2.3.jar">
3463+
<sha256 value="fff8157bfb3d6f1f099c7da7de3e14bfd061ad4ab29599afa7bbf0271368d748" origin="Generated by Gradle"/>
3464+
</artifact>
3465+
</component>
34413466
<component group="org.codehaus.plexus" name="plexus-classworlds" version="2.6.0">
34423467
<artifact name="plexus-classworlds-2.6.0.jar">
34433468
<sha256 value="52f77c5ec49f787c9c417ebed5d6efd9922f44a202f217376e4f94c0d74f3549" origin="Generated by Gradle"/>
@@ -3453,6 +3478,16 @@
34533478
<sha256 value="e003802501574637f7abdc4e83e6d509a31e9ff825d12da6d1e419acf9688705" origin="Generated by Gradle"/>
34543479
</artifact>
34553480
</component>
3481+
<component group="org.codehaus.plexus" name="plexus-interpolation" version="1.26">
3482+
<artifact name="plexus-interpolation-1.26.jar">
3483+
<sha256 value="b3b5412ce17889103ea564bcdfcf9fb3dfa540344ffeac6b538a73c9d7182662" origin="Generated by Gradle"/>
3484+
</artifact>
3485+
</component>
3486+
<component group="org.codehaus.plexus" name="plexus-io" version="3.2.0">
3487+
<artifact name="plexus-io-3.2.0.jar">
3488+
<sha256 value="15cf8cbd9e014b7156482bbb48e515613158bdd9b4b908d21e6b900f7876f6ff" origin="Generated by Gradle"/>
3489+
</artifact>
3490+
</component>
34563491
<component group="org.codehaus.plexus" name="plexus-utils" version="3.2.0">
34573492
<artifact name="plexus-utils-3.2.0.jar">
34583493
<sha256 value="0b91029df4c216b8824bd95361f52e260e86ccf93a2619fd88c8f15d23dcb30d" origin="Generated by Gradle"/>
@@ -3868,6 +3903,11 @@
38683903
<sha256 value="631656eb38639b0ae41161f706ff7fbe04313b5b8f42892da5ec656390031fc6" origin="Generated by Gradle"/>
38693904
</artifact>
38703905
</component>
3906+
<component group="org.iq80.snappy" name="snappy" version="0.4">
3907+
<artifact name="snappy-0.4.jar">
3908+
<sha256 value="46a0c87d504ce9d6063e1ff6e4d20738feb49d8abf85b5071a7d18df4f11bac9" origin="Generated by Gradle"/>
3909+
</artifact>
3910+
</component>
38713911
<component group="org.javassist" name="javassist" version="3.18.1-GA">
38723912
<artifact name="javassist-3.18.1-GA.jar">
38733913
<sha256 value="3fb71231afd098bb0f93f5eb97aa8291c8d0556379125e596f92ec8f944c6162" origin="Generated by Gradle"/>
@@ -4623,6 +4663,11 @@
46234663
<sha256 value="211b306cfc44f8f96df3a0a3ddaf75ba8c5289eed77d60d72f889bb855f535e5" origin="Generated by Gradle"/>
46244664
</artifact>
46254665
</component>
4666+
<component group="org.vafer" name="jdeb" version="1.10">
4667+
<artifact name="jdeb-1.10.jar">
4668+
<sha256 value="254cbb052f718f36ee2a75ae95bd2e0251b0513fc76d038b6dbbcf0942fcc11f" origin="Generated by Gradle"/>
4669+
</artifact>
4670+
</component>
46264671
<component group="org.vafer" name="jdeb" version="1.8">
46274672
<artifact name="jdeb-1.8.jar">
46284673
<sha256 value="374fe02a09314da6ec8219e005598e760323a1abe4b715cc33ce3e2a9bcda932" origin="Generated by Gradle"/>

0 commit comments

Comments
 (0)