Skip to content

Commit 7b2378e

Browse files
authored
Support Java 22
1 parent c5cc9d8 commit 7b2378e

File tree

12 files changed

+182
-171
lines changed

12 files changed

+182
-171
lines changed

azure-pipelines.yml

Lines changed: 107 additions & 106 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,10 @@ jobs:
1515

1616
# The dependsOn clauses are:
1717
# * Everything depends on the canary jobs (the main jdk21 jobs), except those jobs themselves.
18-
# * Anything *_jdk11 or *_jdk17 or *_jdk20 depends on *_jdk21.
19-
## TODO: The jdk20 jobs are a bit gratuitous. They are placeholders for jdk22 when it is released.
20-
## Leaving those placeholders will ease the jdk22 edits to this file.
18+
# * Anything *_jdk11 or *_jdk17 or *_jdk22 depends on *_jdk21.
19+
## TODO: Sometimes jdkXX jobs, for a previous non-LTS version (such as jdk20) are a bit gratuitous.
20+
## They are placeholders for the next non-LTS version (such as jdk22) when it is released.
21+
## Leaving those placeholders will ease the edits to this file.
2122

2223
- job: canary_jobs
2324
dependsOn:
@@ -28,6 +29,7 @@ jobs:
2829
- typecheck_part1_jdk21
2930
- typecheck_part2_jdk21
3031
- misc_jdk21
32+
- misc_jdk22
3133
pool:
3234
vmImage: 'ubuntu-latest'
3335
steps:
@@ -70,18 +72,18 @@ jobs:
7072
fetchDepth: 25
7173
- bash: ./checker/bin-devel/test-cftests-junit.sh
7274
displayName: test-cftests-junit.sh
73-
# - job: junit_jdk20
74-
# dependsOn:
75-
# - canary_jobs
76-
# pool:
77-
# vmImage: 'ubuntu-latest'
78-
# container: mdernst/cf-ubuntu-jdk20:latest
79-
# timeoutInMinutes: 70
80-
# steps:
81-
# - checkout: self
82-
# fetchDepth: 25
83-
# - bash: ./checker/bin-devel/test-cftests-junit.sh
84-
# displayName: test-cftests-junit.sh
75+
- job: junit_jdk22
76+
dependsOn:
77+
- canary_jobs
78+
pool:
79+
vmImage: 'ubuntu-latest'
80+
container: mdernst/cf-ubuntu-jdk22:latest
81+
timeoutInMinutes: 70
82+
steps:
83+
- checkout: self
84+
fetchDepth: 25
85+
- bash: ./checker/bin-devel/test-cftests-junit.sh
86+
displayName: test-cftests-junit.sh
8587
- job: nonjunit_jdk11
8688
dependsOn:
8789
- canary_jobs
@@ -115,17 +117,17 @@ jobs:
115117
fetchDepth: 25
116118
- bash: ./checker/bin-devel/test-cftests-nonjunit.sh
117119
displayName: test-cftests-nonjunit.sh
118-
# - job: nonjunit_jdk20
119-
# dependsOn:
120-
# - canary_jobs
121-
# pool:
122-
# vmImage: 'ubuntu-latest'
123-
# container: mdernst/cf-ubuntu-jdk20:latest
124-
# steps:
125-
# - checkout: self
126-
# fetchDepth: 25
127-
# - bash: ./checker/bin-devel/test-cftests-nonjunit.sh
128-
# displayName: test-cftests-nonjunit.sh
120+
- job: nonjunit_jdk22
121+
dependsOn:
122+
- canary_jobs
123+
pool:
124+
vmImage: 'ubuntu-latest'
125+
container: mdernst/cf-ubuntu-jdk22:latest
126+
steps:
127+
- checkout: self
128+
fetchDepth: 25
129+
- bash: ./checker/bin-devel/test-cftests-nonjunit.sh
130+
displayName: test-cftests-nonjunit.sh
129131
# Sometimes one of the invocations of wpi-many in `./gradlew wpiManyTest`
130132
# takes much longer to complete than normal, and this Azure job times out.
131133
# When there is a timeout, one cannot examine wpi or wpi-many logs.
@@ -179,20 +181,20 @@ jobs:
179181
fetchDepth: 25
180182
- bash: ./checker/bin-devel/test-cftests-inference-part2.sh
181183
displayName: test-cftests-inference-part2.sh
182-
# - job: inference_jdk20
183-
# dependsOn:
184-
# - canary_jobs
185-
# - inference_part1_jdk21
186-
# - inference_part2_jdk21
187-
# pool:
188-
# vmImage: 'ubuntu-latest'
189-
# container: mdernst/cf-ubuntu-jdk20:latest
190-
# timeoutInMinutes: 90
191-
# steps:
192-
# - checkout: self
193-
# fetchDepth: 25
194-
# - bash: ./checker/bin-devel/test-cftests-inference.sh
195-
# displayName: test-cftests-inference.sh
184+
- job: inference_jdk22
185+
dependsOn:
186+
- canary_jobs
187+
- inference_part1_jdk21
188+
- inference_part2_jdk21
189+
pool:
190+
vmImage: 'ubuntu-latest'
191+
container: mdernst/cf-ubuntu-jdk22:latest
192+
timeoutInMinutes: 90
193+
steps:
194+
- checkout: self
195+
fetchDepth: 25
196+
- bash: ./checker/bin-devel/test-cftests-inference.sh
197+
displayName: test-cftests-inference.sh
196198
# Unlimited fetchDepth for misc_jobs, because of need to make contributors.tex
197199
- job: misc_jdk11
198200
dependsOn:
@@ -224,18 +226,16 @@ jobs:
224226
- checkout: self
225227
- bash: ./checker/bin-devel/test-misc.sh
226228
displayName: test-misc.sh
227-
# - job: misc_jdk20
228-
# dependsOn:
229-
# # - canary_jobs
230-
# - misc_jdk21
231-
# pool:
232-
# vmImage: 'ubuntu-latest'
233-
# container: mdernst/cf-ubuntu-jdk20-plus:latest
234-
# steps:
235-
# - checkout: self
236-
# fetchDepth: 25
237-
# - bash: ./checker/bin-devel/test-misc.sh
238-
# displayName: test-misc.sh
229+
# This is a canary job, so it has no `dependsOn`.
230+
- job: misc_jdk22
231+
pool:
232+
vmImage: 'ubuntu-latest'
233+
container: mdernst/cf-ubuntu-jdk22-plus:latest
234+
steps:
235+
- checkout: self
236+
fetchDepth: 25
237+
- bash: ./checker/bin-devel/test-misc.sh
238+
displayName: test-misc.sh
239239
- job: typecheck_jdk11
240240
dependsOn:
241241
- canary_jobs
@@ -281,19 +281,19 @@ jobs:
281281
fetchDepth: 1000
282282
- bash: ./checker/bin-devel/test-typecheck-part2.sh
283283
displayName: test-typecheck-part2.sh
284-
# - job: typecheck_jdk20
285-
# dependsOn:
286-
# - canary_jobs
287-
# - typecheck_part1_jdk21
288-
# - typecheck_part2_jdk21
289-
# pool:
290-
# vmImage: 'ubuntu-latest'
291-
# container: mdernst/cf-ubuntu-jdk20-plus:latest
292-
# steps:
293-
# - checkout: self
294-
# fetchDepth: 1000
295-
# - bash: ./checker/bin-devel/test-typecheck.sh
296-
# displayName: test-typecheck.sh
284+
- job: typecheck_jdk22
285+
dependsOn:
286+
- canary_jobs
287+
- typecheck_part1_jdk21
288+
- typecheck_part2_jdk21
289+
pool:
290+
vmImage: 'ubuntu-latest'
291+
container: mdernst/cf-ubuntu-jdk22-plus:latest
292+
steps:
293+
- checkout: self
294+
fetchDepth: 1000
295+
- bash: ./checker/bin-devel/test-typecheck.sh
296+
displayName: test-typecheck.sh
297297
- job: daikon_jdk11
298298
dependsOn:
299299
- canary_jobs
@@ -346,20 +346,21 @@ jobs:
346346
fetchDepth: 25
347347
- bash: ./checker/bin-devel/test-daikon.sh
348348
displayName: test-daikon-part2.sh
349-
# - job: daikon_jdk20
350-
# dependsOn:
351-
# - canary_jobs
352-
# - daikon_part1_jdk21
353-
# - daikon_part2_jdk21
354-
# pool:
355-
# vmImage: 'ubuntu-latest'
356-
# container: mdernst/cf-ubuntu-jdk20:latest
357-
# timeoutInMinutes: 80
358-
# steps:
359-
# - checkout: self
360-
# fetchDepth: 25
361-
# - bash: ./checker/bin-devel/test-daikon.sh
362-
# displayName: test-daikon.sh
349+
- job: daikon_jdk22
350+
dependsOn:
351+
- canary_jobs
352+
- daikon_part1_jdk21
353+
- daikon_part2_jdk21
354+
pool:
355+
vmImage: 'ubuntu-latest'
356+
container: mdernst/cf-ubuntu-jdk22:latest
357+
timeoutInMinutes: 80
358+
steps:
359+
- checkout: self
360+
fetchDepth: 25
361+
- bash: ./checker/bin-devel/test-daikon.sh
362+
displayName: test-daikon.sh
363+
## I'm not sure why the guava_jdk11 job is failing (it's due to Error Prone).
363364
# - job: guava_jdk11
364365
# dependsOn:
365366
# - canary_jobs
@@ -403,19 +404,19 @@ jobs:
403404
fetchDepth: 25
404405
- bash: ./checker/bin-devel/test-guava.sh
405406
displayName: test-guava.sh
406-
# - job: guava_jdk20
407-
# dependsOn:
408-
# - canary_jobs
409-
# - guava_jdk21
410-
# pool:
411-
# vmImage: 'ubuntu-latest'
412-
# container: mdernst/cf-ubuntu-jdk20:latest
413-
# timeoutInMinutes: 70
414-
# steps:
415-
# - checkout: self
416-
# fetchDepth: 25
417-
# - bash: ./checker/bin-devel/test-guava.sh
418-
# displayName: test-guava.sh
407+
- job: guava_jdk22
408+
dependsOn:
409+
- canary_jobs
410+
- guava_jdk21
411+
pool:
412+
vmImage: 'ubuntu-latest'
413+
container: mdernst/cf-ubuntu-jdk22:latest
414+
timeoutInMinutes: 70
415+
steps:
416+
- checkout: self
417+
fetchDepth: 25
418+
- bash: ./checker/bin-devel/test-guava.sh
419+
displayName: test-guava.sh
419420
- job: plume_lib_jdk11
420421
dependsOn:
421422
- canary_jobs
@@ -451,18 +452,18 @@ jobs:
451452
fetchDepth: 25
452453
- bash: ./checker/bin-devel/test-plume-lib.sh
453454
displayName: test-plume-lib.sh
454-
# - job: plume_lib_jdk20
455-
# dependsOn:
456-
# - canary_jobs
457-
# - plume_lib_jdk21
458-
# pool:
459-
# vmImage: 'ubuntu-latest'
460-
# container: mdernst/cf-ubuntu-jdk20:latest
461-
# steps:
462-
# - checkout: self
463-
# fetchDepth: 25
464-
# - bash: ./checker/bin-devel/test-plume-lib.sh
465-
# displayName: test-plume-lib.sh
455+
- job: plume_lib_jdk22
456+
dependsOn:
457+
- canary_jobs
458+
- plume_lib_jdk21
459+
pool:
460+
vmImage: 'ubuntu-latest'
461+
container: mdernst/cf-ubuntu-jdk22:latest
462+
steps:
463+
- checkout: self
464+
fetchDepth: 25
465+
- bash: ./checker/bin-devel/test-plume-lib.sh
466+
displayName: test-plume-lib.sh
466467
## The downstream jobs are not currently needed because test-downstream.sh is empty.
467468
# - job: downstream_jdk11
468469
# dependsOn:
@@ -499,13 +500,13 @@ jobs:
499500
# fetchDepth: 25
500501
# - bash: ./checker/bin-devel/test-downstream.sh
501502
# displayName: test-downstream.sh
502-
# - job: downstream_jdk20
503+
# - job: downstream_jdk22
503504
# dependsOn:
504505
# - canary_jobs
505506
# - downstream_jdk21
506507
# pool:
507508
# vmImage: 'ubuntu-latest'
508-
# container: mdernst/cf-ubuntu-jdk20:latest
509+
# container: mdernst/cf-ubuntu-jdk22:latest
509510
# steps:
510511
# - checkout: self
511512
# fetchDepth: 25

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ ext {
3232
isJava17orHigher = JavaVersion.current() >= JavaVersion.VERSION_17
3333
isJava21orHigher = JavaVersion.current() >= JavaVersion.VERSION_21
3434

35-
// As of 2023-09-23, delombok doesn't yet support JDK 22; see https://projectlombok.org/changelog .
35+
// As of 2024-08-19 (Lombok 1.18.34), delombok doesn't yet support JDK 23; see https://projectlombok.org/changelog .
3636
skipDelombok = JavaVersion.current() > JavaVersion.VERSION_21
3737

3838
parentDir = file("${rootDir}/../").absolutePath

checker/bin-devel/Dockerfile-README

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,22 +54,22 @@ export DPROJECT=cf
5454
create_upload_docker_image
5555

5656
export OS=ubuntu
57-
export JDKVER=jdk20
57+
export JDKVER=jdk21
5858
export DPROJECT=cf
5959
create_upload_docker_image
6060

6161
export OS=ubuntu
62-
export JDKVER=jdk20-plus
62+
export JDKVER=jdk21-plus
6363
export DPROJECT=cf
6464
create_upload_docker_image
6565

6666
export OS=ubuntu
67-
export JDKVER=jdk21
67+
export JDKVER=jdk22
6868
export DPROJECT=cf
6969
create_upload_docker_image
7070

7171
export OS=ubuntu
72-
export JDKVER=jdk21-plus
72+
export JDKVER=jdk22-plus
7373
export DPROJECT=cf
7474
create_upload_docker_image
7575

checker/bin-devel/Dockerfile-ubuntu-jdk20 renamed to checker/bin-devel/Dockerfile-ubuntu-jdk22

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
# Create a Docker image that is ready to run the main Checker Framework tests,
2-
# using JDK 20.
2+
# using JDK 22.
33
# (This is OpenJDK, not Oracle JDK. There are different instructions for
44
# installing a LTS release of Java.)
55
# To convert this file to use a newer JDK, search (from the top level of the
6-
# Checker Framework and Annotation Tools repositories) for: (java|jdk).?20\b
6+
# Checker Framework and Annotation Tools repositories) for: (java|jdk).?22\b
77

88
# "ubuntu" is the latest LTS release. "ubuntu:rolling" is the latest release.
9-
# Ubuntu 23.10 contains the package "openjdk-20-jdk".
10-
FROM ubuntu:23.10
9+
# See releases at https://hub.docker.com/_/ubuntu for available images.
10+
# See https://packages.ubuntu.com/search?suite=default&section=all&arch=any&keywords=openjdk-22-jdk&searchon=names
11+
# to see what Ubuntu versions support a particular OpenJDK version.
12+
FROM ubuntu:mantic
1113
MAINTAINER Michael Ernst <[email protected]>
1214

1315
# According to
@@ -29,7 +31,7 @@ RUN export DEBIAN_FRONTEND=noninteractive \
2931
ca-certificates-java \
3032
&& aptitude -y install \
3133
openjdk-17-jdk \
32-
openjdk-20-jdk
34+
openjdk-22-jdk
3335

3436
# Known good combinations of JTReg and the JDK appear at https://builds.shipilev.net/jtreg/ .
3537

checker/bin-devel/Dockerfile-ubuntu-jdk20-plus renamed to checker/bin-devel/Dockerfile-ubuntu-jdk22-plus

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
# Create a Docker image that is ready to run the full Checker Framework tests,
2-
# including building the manual and Javadoc, using JDK 20.
2+
# including building the manual and Javadoc, using JDK 22.
33
# (This is OpenJDK, not Oracle JDK. There are different instructions for
44
# installing a LTS release of Java.)
55
# To convert this file to use a newer JDK, search (from the top level of the
6-
# Checker Framework and Annotation Tools repositories) for: (java|jdk).?20\b
6+
# Checker Framework and Annotation Tools repositories) for: (java|jdk).?22\b
77

88
# "ubuntu" is the latest LTS release. "ubuntu:rolling" is the latest release.
9-
# Ubuntu 23.10 contains the package "openjdk-20-jdk".
10-
FROM ubuntu:23.10
9+
# See releases at https://hub.docker.com/_/ubuntu for available images.
10+
# See https://packages.ubuntu.com/search?suite=default&section=all&arch=any&keywords=openjdk-22-jdk&searchon=names
11+
# to see what Ubuntu versions support a particular OpenJDK version.
12+
FROM ubuntu:mantic
1113
MAINTAINER Michael Ernst <[email protected]>
1214

1315
# According to
@@ -29,7 +31,7 @@ RUN export DEBIAN_FRONTEND=noninteractive \
2931
ca-certificates-java \
3032
&& aptitude -y install \
3133
openjdk-17-jdk \
32-
openjdk-20-jdk
34+
openjdk-22-jdk
3335

3436
# Known good combinations of JTReg and the JDK appear at https://builds.shipilev.net/jtreg/ .
3537

checker/bin-devel/clone-related.sh

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,9 @@ echo "... done: (cd ${AT} && ./.build-without-test.sh)"
8484

8585
# Download dependencies, trying a second time if there is a failure.
8686
(TERM=dumb timeout 300 ./gradlew resolveDependencies || \
87-
(sleep 1m && ./gradlew resolveDependencies))
87+
(echo "./gradlew resolveDependencies failed; sleeping before trying again." && \
88+
sleep 1m && \
89+
echo "Trying again: ./gradlew resolveDependencies" && \
90+
TERM=dumb timeout 300 ./gradlew resolveDependencies))
8891

8992
echo Exiting checker/bin-devel/clone-related.sh in "$(pwd)"

0 commit comments

Comments
 (0)