You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by dw...@apache.org on 2022/04/10 18:35:52 UTC
[lucene] branch main updated: LUCENE-10510: Check module access prior to running gjf/spotless tasks (#802)
This is an automated email from the ASF dual-hosted git repository.
dweiss pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/lucene.git
The following commit(s) were added to refs/heads/main by this push:
new ba1062620c5 LUCENE-10510: Check module access prior to running gjf/spotless tasks (#802)
ba1062620c5 is described below
commit ba1062620c5e41099792996d3b78095884c382f2
Author: Dawid Weiss <da...@carrotsearch.com>
AuthorDate: Sun Apr 10 20:35:45 2022 +0200
LUCENE-10510: Check module access prior to running gjf/spotless tasks (#802)
---
gradle/generation/local-settings.gradle | 26 +++++++++++++++++++++++++-
gradle/validation/error-prone.gradle | 4 +++-
gradle/validation/spotless.gradle | 2 ++
help/localSettings.txt | 11 ++++++++---
4 files changed, 38 insertions(+), 5 deletions(-)
diff --git a/gradle/generation/local-settings.gradle b/gradle/generation/local-settings.gradle
index fd906b87f28..9d437ff5d14 100644
--- a/gradle/generation/local-settings.gradle
+++ b/gradle/generation/local-settings.gradle
@@ -22,6 +22,30 @@
def hasDefaults = rootProject.file("gradle.properties").exists()
configure(rootProject) {
+ // Add a task verifying that gradle process has access to JVM internals.
+ // this is occasionally needed for certain tasks.
+ task checkJdkInternalsExportedToGradle() {
+ doFirst {
+ def jdkCompilerModule = ModuleLayer.boot().findModule("jdk.compiler").orElseThrow()
+ def gradleModule = getClass().module
+ def internalsExported = [
+ "com.sun.tools.javac.api",
+ "com.sun.tools.javac.file",
+ "com.sun.tools.javac.parser",
+ "com.sun.tools.javac.tree",
+ "com.sun.tools.javac.util"
+ ].stream()
+ .allMatch(pkg -> jdkCompilerModule.isExported(pkg, gradleModule))
+
+ if (!internalsExported) {
+ throw new GradleException(
+ "Certain gradle tasks and plugins require access to jdk.compiler" +
+ " internals, your gradle.properties might have just been generated or could be" +
+ " out of sync (see help/localSettings.txt)")
+ }
+ }
+ }
+
task localSettings() {
doFirst {
// If we don't have the defaults yet, create them.
@@ -43,7 +67,7 @@ systemProp.file.encoding=UTF-8
# Set up gradle JVM defaults.
# The heap seems huge but gradle runs out of memory on lower values (don't know why).
#
-# We also open up internal compiler modules for spotless/ google jaa format.
+# We also open up internal compiler modules for spotless/ google java format.
org.gradle.jvmargs=-Xmx3g \\
--add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED \\
--add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED \\
diff --git a/gradle/validation/error-prone.gradle b/gradle/validation/error-prone.gradle
index 205f608771c..5ca48a7211c 100644
--- a/gradle/validation/error-prone.gradle
+++ b/gradle/validation/error-prone.gradle
@@ -22,7 +22,7 @@ if (rootProject.usesAltJvm && rootProject.runtimeJavaVersion > JavaVersion.VERSI
}
if (!Boolean.parseBoolean(propertyOrDefault("tests.nightly", "false"))) {
- skipReason = "skipped on non-nightly runs, pass -Dtests.nightly=true to run"
+ skipReason = "skipped on non-nightly runs, pass -Ptests.nightly=true to run"
}
if (skipReason) {
@@ -58,6 +58,8 @@ allprojects { prj ->
}
tasks.withType(JavaCompile) { task ->
+ task.dependsOn ":checkJdkInternalsExportedToGradle"
+
options.errorprone.disableWarningsInGeneratedCode = true
options.errorprone.errorproneArgs = [
'-Xep:InlineMeSuggester:OFF', // We don't use this annotation
diff --git a/gradle/validation/spotless.gradle b/gradle/validation/spotless.gradle
index 0ee79cc0b07..372bcf2f9e7 100644
--- a/gradle/validation/spotless.gradle
+++ b/gradle/validation/spotless.gradle
@@ -103,9 +103,11 @@ configure(project(":lucene").subprojects) { prj ->
tasks.matching { task -> task.name == "spotlessApply" }.configureEach { v ->
tidy.dependsOn v
+ v.dependsOn ":checkJdkInternalsExportedToGradle"
}
tasks.matching { task -> task.name == "spotlessCheck" }.configureEach { v ->
check.dependsOn v
+ v.dependsOn ":checkJdkInternalsExportedToGradle"
}
}
diff --git a/help/localSettings.txt b/help/localSettings.txt
index 95968152943..6772c31077b 100644
--- a/help/localSettings.txt
+++ b/help/localSettings.txt
@@ -4,9 +4,14 @@ Local developer settings
The first invocation of any task in Lucene's gradle build will generate
and save a project-local 'gradle.properties' file. This file contains
the defaults you may (but don't have to) tweak for your particular hardware
-(or taste).
-
-This is an overview of some of these settings.
+(or taste). Note there are certain settings in that file that may
+be _required_ at runtime for certain plugins (an example is the spotless/
+google java format plugin, which requires adding custom exports to JVM modules). Gradle
+build only generates this file if it's not already present (it never overwrites
+the defaults) -- occasionally you may have to manually delete (or move) this
+file and regenerate from scratch.
+
+This is an overview of some settings present in gradle.properties.
Parallelism
-----------