@@ -8,24 +8,50 @@ local common_json = import "../common.json";
8
8
{
9
9
# JDK definitions
10
10
# ***************
11
+ local jdk_base = {
12
+ name: error "name not set" , # string; The JDK provider, e.g. "jpg-jdk", "labsjdk"
13
+ version: error "version not set" , # string; Full version string, e.g., "ce-21+35-jvmci-23.1-b15"
14
+ jdk_version:: error "jdk_version not set" , # int; The major JDK version, e.g., 21
15
+ jdk_name:: "jdk%d" % self .jdk_version, # string; The major JDK version with the JDK prefix.
16
+ # For the latest (unreleased) this should be overridden with "jdk-latest"
17
+ # otherwise the jdk_version with the "jdk" prefix, e.g., "jdk21".
18
+ # This should be use for constructing CI job names.
19
+ # Optional:
20
+ # "build_id": "33",
21
+ # "release": true,
22
+ # "platformspecific": true,
23
+ # "extrabundles": ["static-libs"],
24
+ },
25
+ # ***************
11
26
local variants(name) = [name, name + "Debug" , name + "-llvm" ],
27
+ # gets the JDK major version from a labsjdk version string (e.g., "ce-21+35-jvmci-23.1-b15" -> 21)
28
+ local parse_labsjdk_version(version) =
29
+ assert std.startsWith (version, "ce-" ) || std.startsWith (version, "ee-" ) : "Unsupported labsjdk version: " + version;
30
+ local number_prefix(str) =
31
+ if std.length (str) == 0 || std.length (std.findSubstr (str[0 ], "0123456789" )) == 0 then
32
+ ""
33
+ else
34
+ str[0 ] + number_prefix(str[1 :])
35
+ ;
36
+ std.parseInt (number_prefix(version[3 :]))
37
+ ,
12
38
local jdks_data = {
13
- oraclejdk11: common_json.jdks["oraclejdk11" ] + { jdk_version:: 11 },
39
+ oraclejdk11: jdk_base + common_json.jdks["oraclejdk11" ] + { jdk_version:: 11 },
14
40
} + {
15
- [name]: common_json.jdks[name] + { jdk_version:: 17 }
41
+ [name]: jdk_base + common_json.jdks[name] + { jdk_version:: 17 }
16
42
for name in ["oraclejdk17" ] + variants("labsjdk-ce-17" ) + variants("labsjdk-ee-17" )
17
43
} + {
18
- [name]: common_json.jdks[name] + { jdk_version:: 19 }
44
+ [name]: jdk_base + common_json.jdks[name] + { jdk_version:: 19 }
19
45
for name in ["oraclejdk19" ] + variants("labsjdk-ce-19" ) + variants("labsjdk-ee-19" )
20
46
} + {
21
- [name]: common_json.jdks[name] + { jdk_version:: 20 }
47
+ [name]: jdk_base + common_json.jdks[name] + { jdk_version:: 20 }
22
48
for name in ["oraclejdk20" ] + variants("labsjdk-ce-20" ) + variants("labsjdk-ee-20" )
23
49
} + {
24
- [name]: common_json.jdks[name] + { jdk_version:: 21 }
50
+ [name]: jdk_base + common_json.jdks[name] + { jdk_version:: 21 }
25
51
for name in ["oraclejdk21" ] + variants("labsjdk-ce-21" ) + variants("labsjdk-ee-21" )
26
52
} + {
27
- [name]: common_json.jdks[name] + { jdk_version:: 22 }
28
- for name in variants("labsjdk-ce-22 " ) + variants("labsjdk-ee-22 " )
53
+ [name]: jdk_base + common_json.jdks[name] + { jdk_version:: parse_labsjdk_version( self .version), jdk_name:: "jdk-latest" }
54
+ for name in variants("labsjdk-ce-latest " ) + variants("labsjdk-ee-latest " )
29
55
},
30
56
assert std.assertEqual (std.objectFields (common_json.jdks), std.objectFields (jdks_data)),
31
57
@@ -39,6 +65,7 @@ local common_json = import "../common.json";
39
65
[if std.endsWith (name, "llvm" ) then "LLVM_JAVA_HOME" else "JAVA_HOME" ]: jdks_data[name]
40
66
},
41
67
jdk_version:: jdks_data[name].jdk_version,
68
+ jdk_name:: jdks_data[name].jdk_name,
42
69
},
43
70
for name in std.objectFields (jdks_data)
44
71
} + {
0 commit comments