Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
{
"$id": "https://github.com/oracle/graal/blob/master/docs/reference-manual/native-image/assets/build-artifacts-schema-v0.9.0.json",
"$schema": "https://json-schema.org/draft/2019-09/schema",
"default": {},
"examples": [
{
"build_info": [
"build-output.json"
],
"debug_info": [
"helloworld",
"sources"
],
"executables": [
"helloworld"
]
}
],
"properties": {
"build_info": {
"default": [],
"items": {
"format": "uri-reference",
"title": "Relative path to file or directory",
"type": "string"
},
"title": "Build information generated by Native Image (not needed at run-time)",
"type": "array"
},
"c_headers": {
"default": [],
"items": {
"format": "uri-reference",
"title": "Relative path to file or directory",
"type": "string"
},
"title": "C header files generated by Native Image (not needed at run-time)",
"type": "array"
},
"debug_info": {
"default": [],
"items": {
"format": "uri-reference",
"title": "Relative path to file or directory",
"type": "string"
},
"title": "Debug information generated by Native Image (not needed at run-time)",
"type": "array"
},
"executables": {
"default": [],
"items": {
"format": "uri-reference",
"title": "Relative path to file or directory",
"type": "string"
},
"title": "Executables generated by Native Image (needed at run-time)",
"type": "array"
},
"import_libraries": {
"default": [],
"items": {
"format": "uri-reference",
"title": "Relative path to file or directory",
"type": "string"
},
"title": "Import libraries generated by Native Image (not needed at run-time)",
"type": "array"
},
"jdk_libraries": {
"default": [],
"items": {
"format": "uri-reference",
"title": "Relative path to file or directory",
"type": "string"
},
"title": "JDK libraries copied by Native Image (needed at run-time)",
"type": "array"
},
"language_home": {
"default": [],
"items": {
"format": "uri-reference",
"title": "Relative path to file or directory",
"type": "string"
},
"title": "Language home artifacts for Truffle languages (needed at run-time)",
"type": "array"
},
"shared_libraries": {
"default": [],
"items": {
"format": "uri-reference",
"title": "Relative path to file or directory",
"type": "string"
},
"title": "Shared libraries generated by Native Image (not needed at run-time)",
"type": "array"
}
},
"required": [],
"title": "JSON schema for the build artifacts of GraalVM Native Image",
"type": "object"
}
1 change: 1 addition & 0 deletions substratevm/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ This changelog summarizes major changes to GraalVM Native Image.
* (GR-41674) Class instanceOf and isAssignableFrom checks do need to make the checked type reachable.
* (GR-41100) Add support for `-XX:HeapDumpPath` to control where heap dumps are created.
* (GR-42148) Adjust build output to report types (primitives, classes, interfaces, and arrays) instead of classes and revise the output schema of `-H:BuildOutputJSONFile`.
* (GR-42375) Add `-H:±GenerateBuildArtifactsFile` option, which generates a `build-artifacts.json` file with a list of all artifacts produced by Native Image. `.build_artifacts.txt` files are now deprecated, disabled (can be re-enabled with env setting `NATIVE_IMAGE_DEPRECATED_BUILD_ARTIFACTS_TXT=true`), and will be removed in a future release.

## Version 22.3.0
* (GR-35721) Remove old build output style and the `-H:±BuildOutputUseNewStyle` option.
Expand Down
38 changes: 23 additions & 15 deletions substratevm/mx.substratevm/mx_substratevm.py
Original file line number Diff line number Diff line change
Expand Up @@ -415,28 +415,36 @@ def help_stdout_check(output):
if t:
hellomodule(args.extra_image_builder_arguments)

with Task('Validate JSON build output', tasks, tags=[mx_gate.Tags.style]) as t:
with Task('Validate JSON build info', tasks, tags=[mx_gate.Tags.style]) as t:
if t:
import json
try:
from jsonschema import validate as json_validate
from jsonschema.exceptions import ValidationError, SchemaError
except ImportError:
mx.abort('Unable to import jsonschema')
with open(join(suite.dir, '..', 'docs', 'reference-manual', 'native-image', 'assets', 'build-output-schema-v0.9.1.json')) as f:
json_schema = json.load(f)
with tempfile.NamedTemporaryFile(prefix='build_json') as json_file:
helloworld(['--output-path', svmbuild_dir(), f'-H:BuildOutputJSONFile={json_file.name}'])
try:
with open(json_file.name) as f:
json_output = json.load(f)
json_validate(json_output, json_schema)
except IOError as e:
mx.abort(f'Unable to load JSON build output: {e}')
except ValidationError as e:
mx.abort(f'Unable to validate JSON build output against the schema: {e}')
except SchemaError as e:
mx.abort(f'JSON schema not valid: {e}')

json_and_schema_file_pairs = [
('build-artifacts.json', 'build-artifacts-schema-v0.9.0.json'),
('build-output.json', 'build-output-schema-v0.9.1.json'),
]

build_output_file = join(svmbuild_dir(), 'build-output.json')
helloworld(['--output-path', svmbuild_dir(), f'-H:BuildOutputJSONFile={build_output_file}', '-H:+GenerateBuildArtifactsFile'])

try:
for json_file, schema_file in json_and_schema_file_pairs:
with open(join(svmbuild_dir(), json_file)) as f:
json_contents = json.load(f)
with open(join(suite.dir, '..', 'docs', 'reference-manual', 'native-image', 'assets', schema_file)) as f:
schema_contents = json.load(f)
json_validate(json_contents, schema_contents)
except IOError as e:
mx.abort(f'Unable to load JSON build info: {e}')
except ValidationError as e:
mx.abort(f'Unable to validate JSON build info against the schema: {e}')
except SchemaError as e:
mx.abort(f'JSON schema not valid: {e}')


def native_unittests_task(extra_build_args=None):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
import com.oracle.svm.agent.configwithorigins.ConfigurationWithOriginsTracer;
import com.oracle.svm.agent.tracing.core.TracingResultWriter;
import com.oracle.svm.configure.config.conditional.PartialConfigurationWithOrigins;
import com.oracle.svm.configure.json.JsonWriter;
import com.oracle.svm.core.util.json.JsonWriter;
import com.oracle.svm.core.configure.ConfigurationFile;

public class ConditionalConfigurationPartialRunWriter implements TracingResultWriter {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@

import com.oracle.svm.agent.tracing.core.Tracer;
import com.oracle.svm.agent.tracing.core.TracingResultWriter;
import com.oracle.svm.configure.json.JsonWriter;
import com.oracle.svm.core.util.json.JsonWriter;
import com.oracle.svm.core.util.VMError;

public class TraceFileWriter extends Tracer implements TracingResultWriter {
Expand Down
Original file line number Diff line number Diff line change
@@ -1 +1,4 @@
Args = --add-exports=org.graalvm.sdk/org.graalvm.nativeimage.impl=ALL-UNNAMED -H:IncludeResources=com/oracle/svm/configure/test/config/.*json
Args = \
--add-exports=org.graalvm.sdk/org.graalvm.nativeimage.impl=ALL-UNNAMED \
--add-exports=org.graalvm.nativeimage.builder/com.oracle.svm.core.util.json=ALL-UNNAMED \
-H:IncludeResources=com/oracle/svm/configure/test/config/.*json
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@

import com.oracle.svm.configure.config.ConfigurationFileCollection;
import com.oracle.svm.configure.config.ConfigurationSet;
import com.oracle.svm.configure.json.JsonWriter;
import com.oracle.svm.core.util.json.JsonWriter;
import com.oracle.svm.core.configure.ConfigurationFile;
import com.oracle.svm.core.util.VMError;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
import org.junit.Test;

import com.oracle.svm.configure.config.ResourceConfiguration;
import com.oracle.svm.configure.json.JsonWriter;
import com.oracle.svm.core.util.json.JsonWriter;
import com.oracle.svm.core.configure.ResourceConfigurationParser;
import com.oracle.svm.core.configure.ResourcesRegistry;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@

import java.util.function.Consumer;

import com.oracle.svm.configure.json.JsonPrintable;
import com.oracle.svm.core.util.json.JsonPrintable;
import com.oracle.svm.core.configure.ConfigurationParser;
import org.graalvm.nativeimage.impl.ConfigurationCondition;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@
import com.oracle.svm.configure.filters.FilterConfigurationParser;
import com.oracle.svm.configure.filters.ModuleFilterTools;
import com.oracle.svm.configure.filters.HierarchyFilterNode;
import com.oracle.svm.configure.json.JsonWriter;
import com.oracle.svm.core.util.json.JsonWriter;
import com.oracle.svm.configure.trace.AccessAdvisor;
import com.oracle.svm.configure.trace.TraceProcessor;
import com.oracle.svm.core.configure.ConfigurationFile;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@

import org.graalvm.nativeimage.impl.ConfigurationCondition;

import com.oracle.svm.configure.json.JsonWriter;
import com.oracle.svm.core.util.json.JsonWriter;

final class ConfigurationConditionPrintable {
static void printConditionAttribute(ConfigurationCondition condition, JsonWriter writer) throws IOException {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@
import java.util.List;
import java.util.Objects;

import com.oracle.svm.configure.json.JsonPrintable;
import com.oracle.svm.configure.json.JsonWriter;
import com.oracle.svm.core.util.json.JsonPrintable;
import com.oracle.svm.core.util.json.JsonWriter;

import jdk.vm.ci.meta.MetaUtil;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@

import java.io.IOException;

import com.oracle.svm.configure.json.JsonPrintable;
import com.oracle.svm.configure.json.JsonWriter;
import com.oracle.svm.core.util.json.JsonPrintable;
import com.oracle.svm.core.util.json.JsonWriter;

public final class ConfigurationPredefinedClass implements JsonPrintable {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@

import com.oracle.svm.configure.ConfigurationBase;
import com.oracle.svm.configure.config.conditional.ConditionalConfigurationPredicate;
import com.oracle.svm.configure.json.JsonPrintable;
import com.oracle.svm.configure.json.JsonWriter;
import com.oracle.svm.core.util.json.JsonPrintable;
import com.oracle.svm.core.util.json.JsonWriter;
import com.oracle.svm.core.configure.ConfigurationFile;
import com.oracle.svm.core.util.VMError;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,9 @@

import com.oracle.svm.configure.config.ConfigurationMemberInfo.ConfigurationMemberAccessibility;
import com.oracle.svm.configure.config.ConfigurationMemberInfo.ConfigurationMemberDeclaration;
import com.oracle.svm.configure.json.JsonPrintable;
import com.oracle.svm.configure.json.JsonPrinter;
import com.oracle.svm.configure.json.JsonWriter;
import com.oracle.svm.core.util.json.JsonPrintable;
import com.oracle.svm.core.util.json.JsonPrinter;
import com.oracle.svm.core.util.json.JsonWriter;

/**
* Type usage information, part of a {@link TypeConfiguration}. Unlike other configuration classes
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
import org.graalvm.nativeimage.impl.ConfigurationCondition;

import com.oracle.svm.configure.ConfigurationBase;
import com.oracle.svm.configure.json.JsonWriter;
import com.oracle.svm.core.util.json.JsonWriter;
import com.oracle.svm.core.configure.ConfigurationFile;
import com.oracle.svm.core.configure.PredefinedClassesConfigurationParser;
import com.oracle.svm.core.hub.PredefinedClassesSupport;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
import org.graalvm.nativeimage.impl.ConfigurationCondition;

import com.oracle.svm.configure.ConfigurationBase;
import com.oracle.svm.configure.json.JsonWriter;
import com.oracle.svm.core.util.json.JsonWriter;
import com.oracle.svm.core.configure.ConditionalElement;

public final class ProxyConfiguration extends ConfigurationBase<ProxyConfiguration, ProxyConfiguration.Predicate> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,8 @@
import org.graalvm.nativeimage.impl.ConfigurationCondition;

import com.oracle.svm.configure.ConfigurationBase;
import com.oracle.svm.configure.json.JsonPrinter;
import com.oracle.svm.configure.json.JsonWriter;
import com.oracle.svm.core.util.json.JsonPrinter;
import com.oracle.svm.core.util.json.JsonWriter;
import com.oracle.svm.core.configure.ConditionalElement;
import com.oracle.svm.core.configure.ConfigurationParser;
import com.oracle.svm.core.configure.ResourceConfigurationParser;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,8 @@
import org.graalvm.nativeimage.impl.RuntimeSerializationSupport;

import com.oracle.svm.configure.ConfigurationBase;
import com.oracle.svm.configure.json.JsonPrintable;
import com.oracle.svm.configure.json.JsonWriter;
import com.oracle.svm.core.util.json.JsonPrintable;
import com.oracle.svm.core.util.json.JsonWriter;
import com.oracle.svm.core.configure.ConditionalElement;
import com.oracle.svm.core.configure.ConfigurationParser;
import com.oracle.svm.core.configure.SerializationConfigurationParser;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,10 @@
import java.util.Comparator;
import java.util.Objects;

import com.oracle.svm.configure.json.JsonPrintable;
import com.oracle.svm.core.util.json.JsonPrintable;
import org.graalvm.nativeimage.impl.ConfigurationCondition;

import com.oracle.svm.configure.json.JsonWriter;
import com.oracle.svm.core.util.json.JsonWriter;
import com.oracle.svm.core.configure.SerializationConfigurationParser;

public class SerializationConfigurationLambdaCapturingType implements JsonPrintable {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@

import org.graalvm.nativeimage.impl.ConfigurationCondition;

import com.oracle.svm.configure.json.JsonPrintable;
import com.oracle.svm.configure.json.JsonWriter;
import com.oracle.svm.core.util.json.JsonPrintable;
import com.oracle.svm.core.util.json.JsonWriter;
import com.oracle.svm.core.configure.SerializationConfigurationParser;

public class SerializationConfigurationType implements JsonPrintable, Comparable<SerializationConfigurationType> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
import org.graalvm.nativeimage.impl.ConfigurationCondition;

import com.oracle.svm.configure.ConfigurationBase;
import com.oracle.svm.configure.json.JsonWriter;
import com.oracle.svm.core.util.json.JsonWriter;
import com.oracle.svm.core.configure.ConditionalElement;
import com.oracle.svm.core.util.VMError;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@
import java.util.List;
import java.util.Set;

import com.oracle.svm.configure.json.JsonPrintable;
import com.oracle.svm.configure.json.JsonWriter;
import com.oracle.svm.core.util.json.JsonPrintable;
import com.oracle.svm.core.util.json.JsonWriter;
import com.oracle.svm.core.configure.ConfigurationFile;

public class HumanReadableConfigurationWithOrigins implements JsonPrintable {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@
import org.graalvm.util.json.JSONParserException;

import com.oracle.svm.configure.config.ConfigurationSet;
import com.oracle.svm.configure.json.JsonPrintable;
import com.oracle.svm.configure.json.JsonWriter;
import com.oracle.svm.core.util.json.JsonPrintable;
import com.oracle.svm.core.util.json.JsonWriter;
import com.oracle.svm.core.configure.ConfigurationFile;
import com.oracle.svm.core.configure.ConfigurationParser;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@

import org.graalvm.collections.EconomicMap;

import com.oracle.svm.configure.json.JsonWriter;
import com.oracle.svm.core.util.json.JsonWriter;

public class ComplexFilter implements ConfigurationFilter {
private HierarchyFilterNode hierarchyFilterNode;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@

import org.graalvm.collections.EconomicMap;

import com.oracle.svm.configure.json.JsonPrintable;
import com.oracle.svm.core.util.json.JsonPrintable;

public interface ConfigurationFilter extends JsonPrintable {

Expand Down
Loading