Skip to content
This repository was archived by the owner on Feb 23, 2023. It is now read-only.

Commit 776d130

Browse files
committed
Merge branch 'master' of github.com:spring-projects-experimental/spring-graal-native
2 parents f556a23 + 351ca7a commit 776d130

File tree

17 files changed

+85
-47
lines changed

17 files changed

+85
-47
lines changed

ci/pipeline.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,14 +160,14 @@ jobs:
160160
build: spring-graalvm-native/docker
161161
dockerfile: spring-graalvm-native/docker/Dockerfile.graalvm-ce
162162
build_args:
163-
JVMCI_URL: https://github.com/graalvm/graal-jvmci-8/releases/download/jvmci-20.3-b03/openjdk-8u272+10-jvmci-20.3-b03-fastdebug-linux-amd64.tar.gz
163+
JVMCI_URL: https://github.com/graalvm/graal-jvmci-8/releases/download/jvmci-20.3-b04/openjdk-8u272+10-jvmci-20.3-b04-fastdebug-linux-amd64.tar.gz
164164
GRAALVM_BRANCH: master
165165
- put: graalvm-ce-master-java11-image
166166
params:
167167
build: spring-graalvm-native/docker
168168
dockerfile: spring-graalvm-native/docker/Dockerfile.graalvm-ce
169169
build_args:
170-
JVMCI_URL: https://github.com/graalvm/labs-openjdk-11/releases/download/jvmci-20.3-b03/labsjdk-ce-11.0.9+10-jvmci-20.3-b03-debug-linux-amd64.tar.gz
170+
JVMCI_URL: https://github.com/graalvm/labs-openjdk-11/releases/download/jvmci-20.3-b04/labsjdk-ce-11.0.9+10-jvmci-20.3-b04-debug-linux-amd64.tar.gz
171171
GRAALVM_BRANCH: master
172172
- name: build-spring-graalvm-native-images
173173
public: true

docker/build-graalvm-ce-images.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@ docker build \
1515
-t springci/graalvm-ce:20.2-dev-java11 - < $DIR/Dockerfile.graalvm-ce
1616

1717
docker build \
18-
--build-arg JVMCI_URL=https://github.com/graalvm/graal-jvmci-8/releases/download/jvmci-20.3-b03/openjdk-8u272+10-jvmci-20.3-b03-fastdebug-linux-amd64.tar.gz \
18+
--build-arg JVMCI_URL=https://github.com/graalvm/graal-jvmci-8/releases/download/jvmci-20.3-b04/openjdk-8u272+10-jvmci-20.3-b04-fastdebug-linux-amd64.tar.gz \
1919
--build-arg GRAALVM_BRANCH=master \
2020
-t springci/graalvm-ce:master-java8 - < $DIR/Dockerfile.graalvm-ce
2121

2222
docker build \
23-
--build-arg JVMCI_URL=https://github.com/graalvm/labs-openjdk-11/releases/download/jvmci-20.3-b03/labsjdk-ce-11.0.9+10-jvmci-20.3-b03-debug-linux-amd64.tar.gz \
23+
--build-arg JVMCI_URL=https://github.com/graalvm/labs-openjdk-11/releases/download/jvmci-20.3-b04/labsjdk-ce-11.0.9+10-jvmci-20.3-b04-debug-linux-amd64.tar.gz \
2424
--build-arg GRAALVM_BRANCH=master \
2525
-t springci/graalvm-ce:master-java11 - < $DIR/Dockerfile.graalvm-ce
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package org.springframework.boot.actuate.autoconfigure.security.servlet;
2+
3+
import org.springframework.graalvm.extension.NativeImageConfiguration;
4+
import org.springframework.graalvm.extension.NativeImageHint;
5+
import org.springframework.graalvm.extension.TypeInfo;
6+
import org.springframework.graalvm.type.AccessBits;
7+
8+
@NativeImageHint(trigger= ManagementWebSecurityAutoConfiguration.class,typeInfos= {
9+
@TypeInfo(typeNames = {
10+
"org.springframework.boot.autoconfigure.security.DefaultWebSecurityCondition",
11+
"org.springframework.boot.autoconfigure.security.DefaultWebSecurityCondition$Classes",
12+
"org.springframework.boot.autoconfigure.security.DefaultWebSecurityCondition$Beans",
13+
}, access = AccessBits.ALL)})
14+
public class ManagementWebSecurityAutoConfigurationHints implements NativeImageConfiguration {
15+
}

spring-graalvm-native-configuration/src/main/java/org/springframework/boot/autoconfigure/security/servlet/SecurityHints.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,19 @@
6868
},
6969
typeNames= {
7070
"org.springframework.security.authentication.cas.ProxyUntrustedException",
71-
},
72-
access=AccessBits.CLASS|AccessBits.DECLARED_CONSTRUCTORS),
71+
}
72+
),
7373
// TODO interesting that gs-securing-web causes these to be needed although it is in thymeleaf (due to SpEL expressions I think)
7474
@TypeInfo(
7575
typeNames = "org.thymeleaf.standard.expression.RestrictedRequestAccessUtils$RestrictedRequestWrapper",
7676
types= { HttpServletRequestWrapper.class,ServletRequestWrapper.class,ServletRequest.class},
77-
access=AccessBits.CLASS|AccessBits.DECLARED_CONSTRUCTORS|AccessBits.DECLARED_FIELDS|AccessBits.DECLARED_METHODS)
77+
access=AccessBits.CLASS|AccessBits.DECLARED_CONSTRUCTORS|AccessBits.DECLARED_FIELDS|AccessBits.DECLARED_METHODS),
78+
79+
@TypeInfo(typeNames = {
80+
"org.springframework.boot.autoconfigure.security.DefaultWebSecurityCondition",
81+
"org.springframework.boot.autoconfigure.security.DefaultWebSecurityCondition$Classes",
82+
"org.springframework.boot.autoconfigure.security.DefaultWebSecurityCondition$Beans",
83+
}, access = AccessBits.ALL)
7884
})
7985
public class SecurityHints implements NativeImageConfiguration {
8086
}

spring-graalvm-native-configuration/src/main/java/org/springframework/boot/logging/LogbackHints.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import ch.qos.logback.classic.pattern.MDCConverter;
88
import ch.qos.logback.classic.pattern.MessageConverter;
99
import ch.qos.logback.classic.pattern.ThreadConverter;
10+
import ch.qos.logback.core.Appender;
1011
import ch.qos.logback.core.pattern.Converter;
1112

1213
import org.springframework.boot.logging.logback.ColorConverter;
@@ -20,6 +21,7 @@
2021
// TODO Send a PR to Logback to remove reflection usage in ch.qos.logback.classic.PatternLayout
2122
@NativeImageHint(typeInfos = {
2223
@TypeInfo(types= {
24+
Appender.class, // Workaround for https://github.com/spring-projects/spring-boot/issues/23985
2325
DateConverter.class,
2426
LevelConverter.class,
2527
LoggerConverter.class,
@@ -30,7 +32,7 @@
3032
ColorConverter.class,
3133
WhitespaceThrowableProxyConverter.class,
3234
ExtendedWhitespaceThrowableProxyConverter.class
33-
},access=AccessBits.LOAD_AND_CONSTRUCT)
35+
})
3436
})
3537
public class LogbackHints implements NativeImageConfiguration {
3638
}

spring-graalvm-native-configuration/src/main/java/org/springframework/context/annotation/ContextAnnotationHints.java

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@
1515
*/
1616
package org.springframework.context.annotation;
1717

18-
import org.apache.catalina.core.ApplicationContext;
1918
import org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor;
2019
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
2120
import org.springframework.boot.autoconfigure.AutoConfigurationExcludeFilter;
21+
import org.springframework.context.ApplicationContext;
2222
import org.springframework.context.EmbeddedValueResolverAware;
2323
import org.springframework.context.EnvironmentAware;
2424
import org.springframework.context.event.DefaultEventListenerFactory;
@@ -30,12 +30,6 @@
3030
import org.springframework.graalvm.extension.TypeInfo;
3131
import org.springframework.graalvm.type.AccessBits;
3232

33-
/*
34-
// Not quite right... this is a superclass of a selector we've already added...
35-
proposedHints.put(AdviceModeImportSelector,
36-
new CompilationHint(true, true, new String[0]
37-
));
38-
*/
3933
@NativeImageHint(trigger = AdviceModeImportSelector.class, abortIfTypesMissing = true, follow = true)
4034
// TODO can be {@link Configuration}, {@link ImportSelector}, {@link ImportBeanDefinitionRegistrar}
4135
// @Imports has @CompilationHint(skipIfTypesMissing=false?, follow=true)
@@ -47,11 +41,10 @@
4741
// TODO Check required access for enums like this FilterType
4842
@NativeImageHint(typeInfos = { @TypeInfo(types = { FilterType.class }, access = AccessBits.CLASS | AccessBits.DECLARED_METHODS | AccessBits.DECLARED_FIELDS) })
4943
@NativeImageHint(typeInfos = {
50-
@TypeInfo(typeNames = "org.springframework.context.annotation.ConfigurationClassParser$DefaultDeferredImportSelectorGroup",
51-
access=AccessBits.LOAD_AND_CONSTRUCT)})
44+
@TypeInfo(typeNames = "org.springframework.context.annotation.ConfigurationClassParser$DefaultDeferredImportSelectorGroup"
45+
)})
5246
@NativeImageHint(typeInfos = {
53-
@TypeInfo(types = {
54-
org.springframework.context.ApplicationContext.class, // petclinic-jpa shows errors in startup log without this
47+
@TypeInfo(types = {
5548
AutowireCapableBeanFactory.class, // security sample shows errors on startup without this
5649
EmbeddedValueResolverAware.class,EnvironmentAware.class,
5750
AnnotationConfigApplicationContext.class,
@@ -61,13 +54,14 @@
6154
EventListenerMethodProcessor.class,
6255
DefaultEventListenerFactory.class,
6356
AutowiredAnnotationBeanPostProcessor.class
64-
}, access = AccessBits.CLASS | AccessBits.DECLARED_CONSTRUCTORS),
65-
@TypeInfo( types= {ComponentScan.Filter.class},access=AccessBits.CLASS|AccessBits.DECLARED_METHODS),
57+
}),
58+
@TypeInfo(types= ComponentScan.Filter.class,access=AccessBits.CLASS|AccessBits.DECLARED_METHODS),
6659
@TypeInfo(types = { ConfigurationClassPostProcessor.class },
6760
methods = {
6861
@MethodInfo(name="setMetadataReaderFactory",parameterTypes=MetadataReaderFactory.class)
69-
},
70-
access=AccessBits.LOAD_AND_CONSTRUCT)
62+
}
63+
),
64+
@TypeInfo(types= ApplicationContext.class, access = AccessBits.LOAD_AND_CONSTRUCT|AccessBits.RESOURCE)
7165
})
7266
public class ContextAnnotationHints implements NativeImageConfiguration {
7367
}

spring-graalvm-native-configuration/src/main/resources/META-INF/services/org.springframework.graalvm.extension.NativeImageConfiguration

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ org.springframework.boot.actuate.autoconfigure.env.EnvironmentEndpointAutoConfig
2020
org.springframework.boot.actuate.autoconfigure.health.HealthEndpointAutoConfigurationHints
2121
org.springframework.boot.actuate.autoconfigure.info.InfoEndpointAutoConfigurationHints
2222
org.springframework.boot.actuate.autoconfigure.metrics.MetricsEndpointAutoConfigurationHints
23+
org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfigurationHints
2324
org.springframework.boot.actuate.autoconfigure.web.mappings.MappingsEndpointAutoConfigurationHints
2425
org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextConfigurationImportSelectorHints
2526
org.springframework.boot.autoconfigure.AutoConfigurationHints

spring-graalvm-native-docs/src/main/asciidoc/options.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ See {project-home}/issues/8[this issue] for more details.
3838
You can use it with specific classes or package specified if needed.
3939

4040
* `-H:+PrintAnalysisCallTree` helps to find what classes, methods, and fields are used and why.
41-
You can find more details in GraalVM https://github.com/oracle/graal/blob/master/substratevm/REPORTS.md[reports documentation].
41+
You can find more details in GraalVM https://github.com/oracle/graal/blob/master/substratevm/Reports.md[reports documentation].
4242

4343
* `-H:ReportAnalysisForbiddenType=com.example.Foo` helps to find why the specified class is included in the native image.
4444

spring-graalvm-native-docs/src/main/asciidoc/support.adoc

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
[[support]]
22
== Support
33

4+
=== GraalVM
5+
6+
GraalVM version {graalvm-version} is supported.
7+
48
=== Language
59

6-
Java 8, Java 11 and Kotlin 1.3+ are supported. GraalVM version 20.2.0 should be used.
10+
Java 8, Java 11 and Kotlin 1.3+ are supported.
711

812
=== Spring Boot
913

10-
IMPORTANT: Only Spring Boot {boot-version} and above are supported.
14+
IMPORTANT: `spring-graalvm-native` {version} is designed to be used with Spring Boot {boot-version}.
1115

1216
The following starters are supported, the group ID is `org.springframework.boot` unless specified otherwise.
1317

spring-graalvm-native-samples/commandlinerunner-jafu/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<dependency>
3030
<groupId>org.springframework.fu</groupId>
3131
<artifactId>spring-fu-jafu</artifactId>
32-
<version>0.4.1</version>
32+
<version>0.4.2</version>
3333
</dependency>
3434
<dependency>
3535
<groupId>org.springframework.boot</groupId>

0 commit comments

Comments
 (0)