Skip to content

Commit 476a20c

Browse files
Add Gradle rich output support, configure default metadata URL on Maven
Rename JVM reachability metadata -> GraalVM reachability metadata
1 parent 1994d2d commit 476a20c

File tree

14 files changed

+74
-40
lines changed

14 files changed

+74
-40
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
* and provide overrides for cases where configuration files
5656
* are missing.
5757
*/
58-
public interface JvmReachabilityMetadataRepository {
58+
public interface GraalVMReachabilityMetadataRepository {
5959
/**
6060
* Performs a generic query on the repository, returning a list of
6161
* configuration directories. The query may be parameterized with

common/jvm-reachability-metadata/src/main/java/org/graalvm/reachability/internal/FileSystemRepository.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
*/
4141
package org.graalvm.reachability.internal;
4242

43-
import org.graalvm.reachability.JvmReachabilityMetadataRepository;
43+
import org.graalvm.reachability.GraalVMReachabilityMetadataRepository;
4444
import org.graalvm.reachability.Query;
4545
import org.graalvm.reachability.internal.index.artifacts.SingleModuleJsonVersionToConfigDirectoryIndex;
4646
import org.graalvm.reachability.internal.index.artifacts.VersionToConfigDirectoryIndex;
@@ -55,7 +55,7 @@
5555
import java.util.function.Supplier;
5656
import java.util.stream.Collectors;
5757

58-
public class FileSystemRepository implements JvmReachabilityMetadataRepository {
58+
public class FileSystemRepository implements GraalVMReachabilityMetadataRepository {
5959

6060
private final FileSystemModuleToConfigDirectoryIndex moduleIndex;
6161
private final Logger logger;

common/utils/src/main/java/org/graalvm/buildtools/utils/SharedConstants.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,9 @@
5151
*/
5252
public interface SharedConstants {
5353
boolean IS_WINDOWS = System.getProperty("os.name", "unknown").contains("Windows");
54+
boolean IS_CI = System.getenv("CI") != null;
55+
boolean IS_DUMB_TERM = Arrays.asList(null, "", "dumb", "unknown").contains(System.getenv("TERM"));
56+
boolean NO_COLOR = System.getenv("NO_COLOR") != null; // https://no-color.org/
5457
String GRAALVM_EXE_EXTENSION = (IS_WINDOWS ? ".cmd" : "");
5558
String EXECUTABLE_EXTENSION = (IS_WINDOWS ? ".exe" : "");
5659
String NATIVE_IMAGE_EXE = "native-image" + GRAALVM_EXE_EXTENSION;
@@ -72,4 +75,5 @@ public interface SharedConstants {
7275
String AGENT_SESSION_SUBDIR = "session-{pid}-{datetime}";
7376
String AGENT_OUTPUT_DIRECTORY_MARKER = "{output_dir}";
7477
String AGENT_OUTPUT_DIRECTORY_OPTION = "config-output-dir=";
78+
String METADATA_REPO_URL_TEMPLATE = "https://github.com/graalvm/graalvm-reachability-metadata/releases/download/%1$s/graalvm-reachability-metadata-%1$s.zip";
7579
}

docs/src/docs/asciidoc/maven-plugin.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -615,7 +615,7 @@ automatically added to your native build options.
615615
[[metadata-support]]
616616
== GraalVM Reachability Metadata Support
617617

618-
Since release 0.9.12, the plugin adds experimental support for the https://github.com/graalvm/jvm-reachability-metadata/[JVM reachability metadata repository].
618+
Since release 0.9.12, the plugin adds experimental support for the https://github.com/graalvm/graalvm-reachability-metadata/[GraalVM reachability metadata repository].
619619
This repository provides GraalVM metadata for libraries which do not officially support GraalVM native.
620620

621621
A metadata repository consists of configuration files for GraalVM.

docs/src/docs/snippets/gradle/groovy/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ graalvmNative {
120120
fallback = true // Sets the fallback mode of native-image, defaults to false
121121
sharedLibrary = false // Determines if image is a shared library, defaults to false if `java-library` plugin isn't included
122122
quickBuild = false // Determines if image is being built in quick build mode (alternatively use GRAALVM_QUICK_BUILD environment variable)
123+
richOutput = false // Determines if native-image building should be done with rich output
123124

124125
systemProperties = [name1: 'value1', name2: 'value2'] // Sets the system properties to use for the native image builder
125126
configurationFileDirectories.from(file('src/my-config')) // Adds a native image configuration file directory, containing files like reflection configuration

docs/src/docs/snippets/gradle/kotlin/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ graalvmNative {
7878
fallback.set(true) // Sets the fallback mode of native-image, defaults to false
7979
sharedLibrary.set(false) // Determines if image is a shared library, defaults to false if `java-library` plugin isn't included
8080
quickBuild.set(false) // Determines if image is being built in quick build mode (alternatively use GRAALVM_QUICK_BUILD environment variable)
81+
richOutput.set(false) // Determines if native-image building should be done with rich output
8182

8283
systemProperties.putAll(mapOf("name1" to "value1", "name2" to "value2")) // Sets the system properties to use for the native image builder
8384
configurationFileDirectories.from(file("src/my-config")) // Adds a native image configuration file directory, containing files like reflection configuration

native-gradle-plugin/src/functionalTest/groovy/org/graalvm/buildtools/gradle/NativeConfigRepoFunctionalTest.groovy

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,10 @@ class NativeConfigRepoFunctionalTest extends AbstractFunctionalTest {
7575
outputContains "Hello, from reflection!"
7676

7777
and: "doesn't find a configuration directory for the current version"
78-
outputContains "[jvm reachability metadata repository for org.graalvm.internal:library-with-reflection:1.5]: Configuration directory not found. Trying latest version."
78+
outputContains "[graalvm reachability metadata repository for org.graalvm.internal:library-with-reflection:1.5]: Configuration directory not found. Trying latest version."
7979

8080
and: "but finds one thanks to the latest configuration field"
81-
outputContains "[jvm reachability metadata repository for org.graalvm.internal:library-with-reflection:1.5]: Configuration directory is org/graalvm/internal/library-with-reflection/1"
81+
outputContains "[graalvm reachability metadata repository for org.graalvm.internal:library-with-reflection:1.5]: Configuration directory is org/graalvm/internal/library-with-reflection/1"
8282

8383
where:
8484
format | label
@@ -112,7 +112,7 @@ graalvmNative {
112112
outputContains "Reflection failed"
113113

114114
and: "doesn't look for a configuration directory for the current version"
115-
outputDoesNotContain "[jvm reachability metadata repository for org.graalvm.internal:library-with-reflection:1.5]: Configuration directory not found. Trying latest version."
115+
outputDoesNotContain "[graalvm reachability metadata repository for org.graalvm.internal:library-with-reflection:1.5]: Configuration directory not found. Trying latest version."
116116
}
117117

118118
def "can force a dependency to a specific config version"() {
@@ -139,7 +139,7 @@ graalvmNative {
139139
outputContains "Reflection failed"
140140

141141
and: "looks for specific configuration version"
142-
outputContains "[jvm reachability metadata repository for org.graalvm.internal:library-with-reflection:1.5]: Configuration is forced to version 2"
142+
outputContains "[graalvm reachability metadata repository for org.graalvm.internal:library-with-reflection:1.5]: Configuration is forced to version 2"
143143
}
144144

145145
}

native-gradle-plugin/src/main/java/org/graalvm/buildtools/gradle/NativeImagePlugin.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
import org.graalvm.buildtools.agent.AgentConfiguration;
4646
import org.graalvm.buildtools.agent.AgentMode;
4747
import org.graalvm.buildtools.gradle.dsl.GraalVMExtension;
48-
import org.graalvm.buildtools.gradle.dsl.JvmReachabilityMetadataRepositoryExtension;
48+
import org.graalvm.buildtools.gradle.dsl.GraalVMReachabilityMetadataRepositoryExtension;
4949
import org.graalvm.buildtools.gradle.dsl.NativeImageOptions;
5050
import org.graalvm.buildtools.gradle.dsl.agent.AgentOptions;
5151
import org.graalvm.buildtools.gradle.internal.AgentCommandLineProvider;
@@ -55,7 +55,7 @@
5555
import org.graalvm.buildtools.gradle.internal.DeprecatedNativeImageOptions;
5656
import org.graalvm.buildtools.gradle.internal.GraalVMLogger;
5757
import org.graalvm.buildtools.gradle.internal.GradleUtils;
58-
import org.graalvm.buildtools.gradle.internal.JvmReachabilityMetadataService;
58+
import org.graalvm.buildtools.gradle.internal.GraalVMReachabilityMetadataService;
5959
import org.graalvm.buildtools.gradle.internal.NativeConfigurations;
6060
import org.graalvm.buildtools.gradle.internal.agent.AgentConfigurationFactory;
6161
import org.graalvm.buildtools.gradle.tasks.BuildNativeImageTask;
@@ -129,6 +129,7 @@
129129
import static org.graalvm.buildtools.gradle.internal.NativeImageExecutableLocator.graalvmHomeProvider;
130130
import static org.graalvm.buildtools.utils.SharedConstants.AGENT_PROPERTY;
131131
import static org.graalvm.buildtools.utils.SharedConstants.IS_WINDOWS;
132+
import static org.graalvm.buildtools.utils.SharedConstants.METADATA_REPO_URL_TEMPLATE;
132133

133134
/**
134135
* Gradle plugin for GraalVM Native Image.
@@ -307,10 +308,10 @@ private void configureAutomaticTaskCreation(Project project,
307308
}
308309

309310
private void configureJvmReachabilityConfigurationDirectories(Project project, GraalVMExtension graalExtension, NativeImageOptions options, SourceSet sourceSet) {
310-
JvmReachabilityMetadataRepositoryExtension repositoryExtension = reachabilityExtensionOn(graalExtension);
311-
Provider<JvmReachabilityMetadataService> serviceProvider = project.getGradle()
311+
GraalVMReachabilityMetadataRepositoryExtension repositoryExtension = reachabilityExtensionOn(graalExtension);
312+
Provider<GraalVMReachabilityMetadataService> serviceProvider = project.getGradle()
312313
.getSharedServices()
313-
.registerIfAbsent("nativeConfigurationService", JvmReachabilityMetadataService.class, spec -> {
314+
.registerIfAbsent("nativeConfigurationService", GraalVMReachabilityMetadataService.class, spec -> {
314315
LogLevel logLevel = determineLogLevel();
315316
spec.getParameters().getLogLevel().set(logLevel);
316317
spec.getParameters().getUri().set(repositoryExtension.getUri());
@@ -353,8 +354,8 @@ private static LogLevel determineLogLevel() {
353354
return logLevel;
354355
}
355356

356-
private static JvmReachabilityMetadataRepositoryExtension reachabilityExtensionOn(GraalVMExtension graalExtension) {
357-
return ((ExtensionAware) graalExtension).getExtensions().getByType(JvmReachabilityMetadataRepositoryExtension.class);
357+
private static GraalVMReachabilityMetadataRepositoryExtension reachabilityExtensionOn(GraalVMExtension graalExtension) {
358+
return ((ExtensionAware) graalExtension).getExtensions().getByType(GraalVMReachabilityMetadataRepositoryExtension.class);
358359
}
359360

360361
private void deprecateExtension(Project project,
@@ -419,11 +420,11 @@ private GraalVMExtension registerGraalVMExtension(Project project) {
419420
}
420421

421422
private void configureNativeConfigurationRepo(ExtensionAware graalvmNative) {
422-
JvmReachabilityMetadataRepositoryExtension configurationRepository = graalvmNative.getExtensions().create("metadataRepository", JvmReachabilityMetadataRepositoryExtension.class);
423+
GraalVMReachabilityMetadataRepositoryExtension configurationRepository = graalvmNative.getExtensions().create("metadataRepository", GraalVMReachabilityMetadataRepositoryExtension.class);
423424
configurationRepository.getEnabled().convention(false);
424425
configurationRepository.getUri().convention(configurationRepository.getVersion().map(v -> {
425426
try {
426-
return new URI("https://github.com/graalvm/graalvm-reachability-metadata/releases/download/" + v + "/graalvm-reachability-metadata-" + v + ".zip");
427+
return new URI(String.format(METADATA_REPO_URL_TEMPLATE, v));
427428
} catch (URISyntaxException e) {
428429
return null;
429430
}
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,18 +49,18 @@
4949
import java.net.URISyntaxException;
5050

5151
/**
52-
* Extension used to configure the JVM reachability metadata repository.
52+
* Extension used to configure the GraalVM reachability metadata repository.
5353
*/
54-
public interface JvmReachabilityMetadataRepositoryExtension {
54+
public interface GraalVMReachabilityMetadataRepositoryExtension {
5555
/**
56-
* Property used to determine if the native configuration
56+
* Property used to determine if the reachability metadata
5757
* repository should be used.
5858
* @return the enabled property
5959
*/
6060
Property<Boolean> getEnabled();
6161

6262
/**
63-
* A URI pointing to a jvm reachability metadata repository. This must
63+
* A URI pointing to a GraalVM reachability metadata repository. This must
6464
* either be a local file or a remote URI. In case of remote
6565
* files, only zip or tarballs are supported.
6666
* @return the uri property
@@ -70,8 +70,8 @@ public interface JvmReachabilityMetadataRepositoryExtension {
7070
/**
7171
* An optional version of the remote repository: if specified,
7272
* and that no URI is provided, it will automatically use a
73-
* published repository from the official GraalVM configuration
74-
* repository.
73+
* published repository from the official GraalVM reachability
74+
* metadata repository.
7575
*
7676
* @return the version of the repository to use
7777
*/

native-gradle-plugin/src/main/java/org/graalvm/buildtools/gradle/dsl/NativeImageOptions.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,14 @@ public interface NativeImageOptions extends Named {
171171
@Input
172172
Property<Boolean> getQuickBuild();
173173

174+
/**
175+
* Gets the value which determines if image is being built with rich output.
176+
*
177+
* @return The value which determines if image is being built with rich output.
178+
*/
179+
@Input
180+
Property<Boolean> getRichOutput();
181+
174182
/**
175183
* Returns the toolchain used to invoke native-image. Currently pointing
176184
* to a Java launcher due to Gradle limitations.

0 commit comments

Comments
 (0)