summaryrefslogtreecommitdiff
path: root/meta
diff options
context:
space:
mode:
Diffstat (limited to 'meta')
-rw-r--r--meta/common/java.py3
-rw-r--r--meta/model/java.py151
-rw-r--r--meta/run/generate_java.py75
-rw-r--r--meta/run/update_java.py82
4 files changed, 222 insertions, 89 deletions
diff --git a/meta/common/java.py b/meta/common/java.py
index ec13b2a55f..8b83f65aa0 100644
--- a/meta/common/java.py
+++ b/meta/common/java.py
@@ -4,11 +4,14 @@ BASE_DIR = "java_runtime"
RELEASE_FILE = join(BASE_DIR, "releases.json")
ADOPTIUM_DIR = join(BASE_DIR, "adoptium")
+OPENJ9_DIR = join(BASE_DIR, "ibm")
AZUL_DIR = join(BASE_DIR, "azul")
ADOPTIUM_VERSIONS_DIR = join(ADOPTIUM_DIR, "versions")
+OPENJ9_VERSIONS_DIR = join(OPENJ9_DIR, "versions")
AZUL_VERSIONS_DIR = join(AZUL_DIR, "versions")
JAVA_MINECRAFT_COMPONENT = "net.minecraft.java"
JAVA_ADOPTIUM_COMPONENT = "net.adoptium.java"
+JAVA_OPENJ9_COMPONENT = "com.ibm.java"
JAVA_AZUL_COMPONENT = "com.azul.java"
diff --git a/meta/model/java.py b/meta/model/java.py
index b941860726..4a7571e491 100644
--- a/meta/model/java.py
+++ b/meta/model/java.py
@@ -18,7 +18,7 @@ class JavaRuntimeOS(StrEnum):
MacOsX64 = "mac-os-x64"
MacOsX86 = "mac-os-x86" # rare
MacOsArm64 = "mac-os-arm64"
- # MacOsArm32 = "mac-os-arm32" # doesn't exsist
+ # MacOsArm32 = "mac-os-arm32" # doesn't exist
LinuxX64 = "linux-x64"
LinuxX86 = "linux-x86"
LinuxArm64 = "linux-arm64"
@@ -123,15 +123,18 @@ class APIQuery(MetaBase):
return urlencode(set_parts, doseq=True)
-class AdoptiumJvmImpl(StrEnum):
- Hostspot = "hotspot"
+# Adoptx refers to both Adoptium (Eclipse Temurin) and AdoptOpenJDK (IBM Semeru Runtime Open Edition)
+class AdoptxJvmImpl(StrEnum):
+ Hotspot = "hotspot"
+ OpenJ9 = "openj9"
-class AdoptiumVendor(StrEnum):
+class AdoptxVendor(StrEnum):
Eclipse = "eclipse"
+ Ibm = "ibm"
-class AdoptiumArchitecture(StrEnum):
+class AdoptxArchitecture(StrEnum):
X64 = "x64"
X86 = "x86"
X32 = "x32"
@@ -144,22 +147,22 @@ class AdoptiumArchitecture(StrEnum):
Riscv64 = "riscv64"
-class AdoptiumReleaseType(StrEnum):
- GenralAccess = "ga"
+class AdoptxReleaseType(StrEnum):
+ GeneralAccess = "ga"
EarlyAccess = "ea"
-class AdoptiumSortMethod(StrEnum):
+class AdoptxSortMethod(StrEnum):
Default = "DEFAULT"
Date = "DATE"
-class AdoptiumSortOrder(StrEnum):
+class AdoptxSortOrder(StrEnum):
Asc = "ASC"
Desc = "DESC"
-class AdoptiumImageType(StrEnum):
+class AdoptxImageType(StrEnum):
Jdk = "jdk"
Jre = "jre"
Testimage = "testimage"
@@ -169,12 +172,12 @@ class AdoptiumImageType(StrEnum):
Sbom = "sbom"
-class AdoptiumHeapSize(StrEnum):
+class AdoptxHeapSize(StrEnum):
Normal = "normal"
Large = "large"
-class AdoptiumProject(StrEnum):
+class AdoptxProject(StrEnum):
Jdk = "jdk"
Valhalla = "valhalla"
Metropolis = "metropolis"
@@ -182,12 +185,12 @@ class AdoptiumProject(StrEnum):
Shenandoah = "shenandoah"
-class AdoptiumCLib(StrEnum):
+class AdoptxCLib(StrEnum):
Musl = "musl"
Glibc = "glibc"
-class AdoptiumOs(StrEnum):
+class AdoptxOs(StrEnum):
Linux = "linux"
Windows = "windows"
Mac = "mac"
@@ -196,43 +199,72 @@ class AdoptiumOs(StrEnum):
AlpineLinux = "alpine-linux"
-ADOPTIUM_API_BASE = " https://api.adoptium.net"
-ADOPTIUM_API_FEATURE_RELEASES = f"{ADOPTIUM_API_BASE}/v3/assets/feature_releases/{{feature_version}}/{{release_type}}"
+ADOPTIUM_API_BASE = "https://api.adoptium.net"
+OPENJ9_API_BASE = " https://api.adoptopenjdk.net"
+ADOPTX_API_FEATURE_RELEASES = f"{{base_url}}/v3/assets/feature_releases/{{feature_version}}/{{release_type}}"
# ?image_type={{image_type}}&heap_size={{heap_size}}&project={{project}}&vendor={{vendor}}&page_size={{page_size}}&page={{page}}&sort_method={{sort_method}}&sort_order={{sort_order}}
-ADOPTIUM_API_AVAILABLE_RELEASES = f"{ADOPTIUM_API_BASE}/v3/info/available_releases"
+ADOPTX_API_AVAILABLE_RELEASES = f"{{base_url}}/v3/info/available_releases"
-class AdoptiumAPIFeatureReleasesQuery(APIQuery):
- architecture: Optional[AdoptiumArchitecture] = None
+class AdoptxAPIFeatureReleasesQuery(APIQuery):
+ architecture: Optional[AdoptxArchitecture] = None
before: Optional[datetime] = None
- c_lib: Optional[AdoptiumCLib] = None
- heap_size: Optional[AdoptiumHeapSize] = AdoptiumHeapSize.Normal
- image_type: Optional[AdoptiumImageType] = None
- jvm_impl: Optional[AdoptiumJvmImpl] = None
- os: Optional[AdoptiumOs] = None
+ c_lib: Optional[AdoptxCLib] = None
+ heap_size: Optional[AdoptxHeapSize] = AdoptxHeapSize.Normal
+ image_type: Optional[AdoptxImageType] = None
+ jvm_impl: Optional[AdoptxJvmImpl] = None
+ os: Optional[AdoptxOs] = None
+ vendor: Optional[AdoptxVendor] = None
page_size: int = 10
page: int = 0
- project: Optional[AdoptiumProject] = AdoptiumProject.Jdk
- sort_method: Optional[AdoptiumSortMethod] = AdoptiumSortMethod.Default
- sort_order: Optional[AdoptiumSortOrder] = AdoptiumSortOrder.Desc
- vendor: Optional[AdoptiumVendor] = AdoptiumVendor.Eclipse
+ project: Optional[AdoptxProject] = AdoptxProject.Jdk
+ sort_method: Optional[AdoptxSortMethod] = AdoptxSortMethod.Default
+ sort_order: Optional[AdoptxSortOrder] = AdoptxSortOrder.Desc
-def adoptiumAPIFeatureReleasesUrl(
- feature: int,
- release_type: AdoptiumReleaseType = AdoptiumReleaseType.GenralAccess,
- query: AdoptiumAPIFeatureReleasesQuery = AdoptiumAPIFeatureReleasesQuery(),
+def adoptxAPIFeatureReleasesUrl(
+ base_url: str,
+ feature_version: int,
+ release_type: AdoptxReleaseType = AdoptxReleaseType.GeneralAccess,
+ query: AdoptxAPIFeatureReleasesQuery = AdoptxAPIFeatureReleasesQuery(),
):
url = urlparse(
- ADOPTIUM_API_FEATURE_RELEASES.format(
- feature_version=feature,
+ ADOPTX_API_FEATURE_RELEASES.format(
+ base_url=base_url,
+ feature_version=feature_version,
release_type=release_type.value,
)
)
return urlunparse(url._replace(query=query.to_query()))
-class AdoptiumAvailableReleases(MetaBase):
+def adoptiumAPIFeatureReleasesUrl(
+ feature_version: int,
+ release_type: AdoptxReleaseType = AdoptxReleaseType.GeneralAccess,
+ query: AdoptxAPIFeatureReleasesQuery = AdoptxAPIFeatureReleasesQuery(),
+):
+ return adoptxAPIFeatureReleasesUrl(
+ feature_version=feature_version,
+ release_type=release_type,
+ query=query,
+ base_url=ADOPTIUM_API_BASE,
+ )
+
+
+def openj9APIFeatureReleasesUrl(
+ feature_version: int,
+ release_type: AdoptxReleaseType = AdoptxReleaseType.GeneralAccess,
+ query: AdoptxAPIFeatureReleasesQuery = AdoptxAPIFeatureReleasesQuery(),
+):
+ return adoptxAPIFeatureReleasesUrl(
+ feature_version=feature_version,
+ release_type=release_type,
+ query=query,
+ base_url=OPENJ9_API_BASE,
+ )
+
+
+class AdoptxAvailableReleases(MetaBase):
available_releases: list[int]
available_lts_releases: list[int]
most_recent_lts: Optional[int]
@@ -241,13 +273,13 @@ class AdoptiumAvailableReleases(MetaBase):
tip_version: Optional[int]
-class AdoptiumFile(MetaBase):
+class AdoptxFile(MetaBase):
name: str
link: str
size: Optional[int]
-class AdoptiumPackage(AdoptiumFile):
+class AdoptxPackage(AdoptxFile):
checksum: Optional[str]
checksum_link: Optional[str]
signature_link: Optional[str]
@@ -255,22 +287,22 @@ class AdoptiumPackage(AdoptiumFile):
# we intentionally omit download_count
-class AdoptiumBinary(MetaBase):
+class AdoptxBinary(MetaBase):
os: str
- architecture: AdoptiumArchitecture
- image_type: AdoptiumImageType
- c_lib: Optional[AdoptiumCLib]
- jvm_impl: AdoptiumJvmImpl
- package: Optional[AdoptiumPackage]
- installer: Optional[AdoptiumPackage]
- heap_size: AdoptiumHeapSize
+ architecture: AdoptxArchitecture
+ image_type: AdoptxImageType
+ c_lib: Optional[AdoptxCLib]
+ jvm_impl: AdoptxJvmImpl
+ package: Optional[AdoptxPackage]
+ installer: Optional[AdoptxPackage]
+ heap_size: AdoptxHeapSize
updated_at: datetime
scm_ref: Optional[str]
- project: AdoptiumProject
+ project: AdoptxProject
# we intentionally omit download_count
-class AdoptiumVersion(MetaBase):
+class AdoptxVersion(MetaBase):
major: Optional[int]
minor: Optional[int]
security: Optional[int]
@@ -283,31 +315,31 @@ class AdoptiumVersion(MetaBase):
optional: Optional[str]
-class AdoptiumRelease(MetaBase):
+class AdoptxRelease(MetaBase):
release_id: str = Field(alias="id")
release_link: str
release_name: str
timestamp: datetime
updated_at: datetime
- binaries: list[AdoptiumBinary]
+ binaries: list[AdoptxBinary]
release_type: str
- vendor: AdoptiumVendor
- version_data: AdoptiumVersion
- source: Optional[AdoptiumFile]
- release_notes: Optional[AdoptiumFile]
+ vendor: AdoptxVendor
+ version_data: AdoptxVersion
+ source: Optional[AdoptxFile]
+ release_notes: Optional[AdoptxFile]
# we intentionally omit download_count
-class AdoptiumReleases(MetaBase):
- __root__: list[AdoptiumRelease]
+class AdoptxReleases(MetaBase):
+ __root__: list[AdoptxRelease]
- def __iter__(self) -> Generator[tuple[str, AdoptiumRelease], None, None]:
+ def __iter__(self) -> Generator[tuple[str, AdoptxRelease], None, None]:
yield from ((str(i), val) for i, val in enumerate(self.__root__))
- def __getitem__(self, item: int) -> AdoptiumRelease:
+ def __getitem__(self, item: int) -> AdoptxRelease:
return self.__root__[item]
- def append(self, rls: AdoptiumRelease):
+ def append(self, rls: AdoptxRelease):
self.__root__.append(rls)
@@ -556,7 +588,8 @@ class ZuluPackagesDetail(MetaBase):
MOJANG_OS_NAMES = ["mac-os", "linux", "windows"]
MOJANG_OS_ARCHITECTURES = [
- "x64" "x86",
+ "x64",
+ "x86",
"arm64",
"arm32",
]
diff --git a/meta/run/generate_java.py b/meta/run/generate_java.py
index 13e01a0496..257326542a 100644
--- a/meta/run/generate_java.py
+++ b/meta/run/generate_java.py
@@ -9,9 +9,12 @@ from meta.common import ensure_component_dir, launcher_path, upstream_path
from meta.common.java import (
JAVA_MINECRAFT_COMPONENT,
JAVA_ADOPTIUM_COMPONENT,
+ JAVA_OPENJ9_COMPONENT,
JAVA_AZUL_COMPONENT,
ADOPTIUM_DIR,
ADOPTIUM_VERSIONS_DIR,
+ OPENJ9_DIR,
+ OPENJ9_VERSIONS_DIR,
AZUL_DIR,
AZUL_VERSIONS_DIR,
)
@@ -25,11 +28,11 @@ from meta.model.java import (
JavaChecksumMeta,
JavaChecksumType,
JavaRuntimeDownloadType,
- AdoptiumAvailableReleases,
- AdoptiumReleases,
- AdoptiumRelease,
- AdoptiumImageType,
- AdoptiumBinary,
+ AdoptxAvailableReleases,
+ AdoptxReleases,
+ AdoptxRelease,
+ AdoptxImageType,
+ AdoptxBinary,
ZuluPackageList,
ZuluPackageDetail,
AzulJavaPackageType,
@@ -193,9 +196,9 @@ def mojang_runtime_to_java_runtime(
)
-def adoptium_release_binary_to_java_runtime(
- rls: AdoptiumRelease,
- binary: AdoptiumBinary,
+def adoptx_release_binary_to_java_runtime(
+ rls: AdoptxRelease,
+ binary: AdoptxBinary,
runtime_os: JavaRuntimeOS,
) -> JavaRuntimeMeta:
assert binary.package is not None
@@ -216,7 +219,13 @@ def adoptium_release_binary_to_java_runtime(
),
build=rls.version_data.build,
)
- rls_name = f"{rls.vendor}_temurin_{binary.image_type}{version}"
+
+ if rls.vendor == "eclipse":
+ rls_distribution = "temurin"
+ elif rls.vendor == "ibm":
+ rls_distribution = "semeru-open"
+
+ rls_name = f"{rls.vendor}_{rls_distribution}_{binary.image_type}{version}"
return JavaRuntimeMeta(
name=rls_name,
vendor=rls.vendor,
@@ -315,7 +324,7 @@ def main():
def add_java_runtime(runtime: JavaRuntimeMeta, major: int):
if major not in javas:
javas[major] = list[JavaRuntimeMeta]()
- print(f"Regestering runtime: {runtime.name} for Java {major}")
+ print(f"Registering runtime: {runtime.name} for Java {major}")
javas[major].append(runtime)
# only add specific versions to the list
@@ -349,18 +358,18 @@ def main():
print("Processing Adoptium Releases")
adoptium_path = os.path.join(UPSTREAM_DIR, ADOPTIUM_DIR, "available_releases.json")
if os.path.exists(adoptium_path):
- adoptium_available_releases = AdoptiumAvailableReleases.parse_file(
+ adoptium_available_releases = AdoptxAvailableReleases.parse_file(
adoptium_path
)
for major in adoptium_available_releases.available_releases:
- adoptium_releases = AdoptiumReleases.parse_file(
+ adoptium_releases = AdoptxReleases.parse_file(
os.path.join(UPSTREAM_DIR, ADOPTIUM_VERSIONS_DIR, f"java{major}.json")
)
for _, rls in adoptium_releases:
for binary in rls.binaries:
if (
binary.package is None
- or binary.image_type is not AdoptiumImageType.Jre
+ or binary.image_type is not AdoptxImageType.Jre
):
continue
binary_arch = translate_arch(str(binary.architecture))
@@ -370,13 +379,44 @@ def main():
continue
java_os = JavaRuntimeOS(f"{binary_os}-{binary_arch}")
- runtime = adoptium_release_binary_to_java_runtime(
+ runtime = adoptx_release_binary_to_java_runtime(
rls, binary, java_os
)
add_java_runtime(runtime, major)
-
writeJavas(javas=javas, uid=JAVA_ADOPTIUM_COMPONENT)
javas = {}
+
+ print("Processing OpenJ9 Releases")
+ openj9_path = os.path.join(UPSTREAM_DIR, OPENJ9_DIR, "available_releases.json")
+ if os.path.exists(openj9_path):
+ openj9_available_releases = AdoptxAvailableReleases.parse_file(
+ openj9_path
+ )
+ for major in openj9_available_releases.available_releases:
+ openj9_releases = AdoptxReleases.parse_file(
+ os.path.join(UPSTREAM_DIR, OPENJ9_VERSIONS_DIR, f"java{major}.json")
+ )
+ for _, rls in openj9_releases:
+ for binary in rls.binaries:
+ if (
+ binary.package is None
+ or binary.image_type is not AdoptxImageType.Jre
+ ):
+ continue
+ binary_arch = translate_arch(str(binary.architecture))
+ binary_os = translate_os(str(binary.os))
+ if binary_arch is None or binary_os is None:
+ print(f"Ignoring release for {binary.os} {binary.architecture}")
+ continue
+
+ java_os = JavaRuntimeOS(f"{binary_os}-{binary_arch}")
+ runtime = adoptx_release_binary_to_java_runtime(
+ rls, binary, java_os
+ )
+ add_java_runtime(runtime, major)
+ writeJavas(javas=javas, uid=JAVA_OPENJ9_COMPONENT)
+ javas = {}
+
print("Processing Azul Packages")
azul_path = os.path.join(UPSTREAM_DIR, AZUL_DIR, "packages.json")
if os.path.exists(azul_path):
@@ -410,7 +450,7 @@ def main():
writeJavas(javas=javas, uid=JAVA_AZUL_COMPONENT)
javas = {}
- # constructs the missing mojang javas based on adoptium or azul
+ # constructs the missing mojang javas based on adoptium or azul (do not consider openj9 since it is for more niche cases)
def get_mojang_extra_java(
mojang_component: MojangJavaComponent, java_os: JavaRuntimeOS
) -> JavaRuntimeMeta | None:
@@ -434,6 +474,7 @@ def main():
mojang_java_manifest = JavaIndex.parse_file(
os.path.join(UPSTREAM_DIR, JAVA_MANIFEST_FILE)
)
+ # print(mojang_java_manifest)
for mojang_os_name in mojang_java_manifest:
if mojang_os_name == MojangJavaOsName.Gamecore:
continue # empty
@@ -471,7 +512,7 @@ def main():
major = int(mojang_runtime.version.name.partition(".")[0])
runtime = mojang_runtime_to_java_runtime(mojang_runtime, comp, java_os)
add_java_runtime(runtime, major)
- # mojang doesn't provide any versions for the following systems so borrow info from adoptium/azul
+ # mojang doesn't provide any versions for the following systems so borrow info from adoptium/azul (do not consider openj9 since it is for more niche cases)
for java_os in [
JavaRuntimeOS.WindowsArm32,
JavaRuntimeOS.LinuxArm32,
diff --git a/meta/run/update_java.py b/meta/run/update_java.py
index 326fb5f924..bc9ad8db1f 100644
--- a/meta/run/update_java.py
+++ b/meta/run/update_java.py
@@ -4,18 +4,26 @@ from meta.common import upstream_path, ensure_upstream_dir, default_session
from meta.common.java import (
BASE_DIR,
ADOPTIUM_DIR,
+ OPENJ9_DIR,
AZUL_DIR,
ADOPTIUM_VERSIONS_DIR,
+ OPENJ9_VERSIONS_DIR,
AZUL_VERSIONS_DIR,
)
from meta.model.java import (
- ADOPTIUM_API_AVAILABLE_RELEASES,
+ ADOPTIUM_API_BASE,
+ OPENJ9_API_BASE,
+ ADOPTX_API_AVAILABLE_RELEASES,
+ adoptxAPIFeatureReleasesUrl,
adoptiumAPIFeatureReleasesUrl,
- AdoptiumImageType,
- AdoptiumAPIFeatureReleasesQuery,
- AdoptiumAvailableReleases,
- AdoptiumRelease,
- AdoptiumReleases,
+ openj9APIFeatureReleasesUrl,
+ AdoptxJvmImpl,
+ AdoptxVendor,
+ AdoptxImageType,
+ AdoptxAPIFeatureReleasesQuery,
+ AdoptxAvailableReleases,
+ AdoptxRelease,
+ AdoptxReleases,
azulApiPackagesUrl,
AzulApiPackagesQuery,
ZuluPackage,
@@ -33,8 +41,10 @@ UPSTREAM_DIR = upstream_path()
ensure_upstream_dir(BASE_DIR)
ensure_upstream_dir(ADOPTIUM_DIR)
+ensure_upstream_dir(OPENJ9_DIR)
ensure_upstream_dir(AZUL_DIR)
ensure_upstream_dir(ADOPTIUM_VERSIONS_DIR)
+ensure_upstream_dir(OPENJ9_VERSIONS_DIR)
ensure_upstream_dir(AZUL_VERSIONS_DIR)
@@ -43,10 +53,10 @@ sess = default_session()
def main():
print("Getting Adoptium Release Manifests ")
- r = sess.get(ADOPTIUM_API_AVAILABLE_RELEASES)
+ r = sess.get(ADOPTX_API_AVAILABLE_RELEASES.format(base_url=ADOPTIUM_API_BASE))
r.raise_for_status()
- available = AdoptiumAvailableReleases(**r.json())
+ available = AdoptxAvailableReleases(**r.json())
available_releases_file = os.path.join(
UPSTREAM_DIR, ADOPTIUM_DIR, "available_releases.json"
@@ -58,11 +68,11 @@ def main():
page_size = 10
- releases_for_feature: list[AdoptiumRelease] = []
+ releases_for_feature: list[AdoptxRelease] = []
page = 0
while True:
- query = AdoptiumAPIFeatureReleasesQuery(
- image_type=AdoptiumImageType.Jre, page_size=page_size, page=page
+ query = AdoptxAPIFeatureReleasesQuery(
+ image_type=AdoptxImageType.Jre, page_size=page_size, page=page, jvm_impl=AdoptxJvmImpl.Hotspot, vendor=AdoptxVendor.Eclipse
)
api_call = adoptiumAPIFeatureReleasesUrl(feature, query=query)
print("Fetching JRE Page:", page, api_call)
@@ -72,7 +82,7 @@ def main():
else:
r_rls.raise_for_status()
- releases = list(AdoptiumRelease(**rls) for rls in r_rls.json())
+ releases = list(AdoptxRelease(**rls) for rls in r_rls.json())
releases_for_feature.extend(releases)
if len(r_rls.json()) < page_size:
@@ -80,12 +90,58 @@ def main():
page += 1
print("Total Adoptium releases for feature:", len(releases_for_feature))
- releases = AdoptiumReleases(__root__=releases_for_feature)
+ releases = AdoptxReleases(__root__=releases_for_feature)
feature_file = os.path.join(
UPSTREAM_DIR, ADOPTIUM_VERSIONS_DIR, f"java{feature}.json"
)
releases.write(feature_file)
+ print("Getting OpenJ9 Release Manifests ")
+ r = sess.get(ADOPTX_API_AVAILABLE_RELEASES.format(base_url=OPENJ9_API_BASE))
+ r.raise_for_status()
+
+ available = AdoptxAvailableReleases(**r.json())
+
+ available_releases_file = os.path.join(
+ UPSTREAM_DIR, OPENJ9_DIR, "available_releases.json"
+ )
+ available.write(available_releases_file)
+
+ for feature in available.available_releases:
+ print("Getting Manifests for OpenJ9 feature release:", feature)
+
+ page_size = 10
+
+ releases_for_feature: list[AdoptxRelease] = []
+ page = 0
+ while True:
+ query = AdoptxAPIFeatureReleasesQuery(
+ image_type=AdoptxImageType.Jre, page_size=page_size, page=page, jvm_impl=AdoptxJvmImpl.OpenJ9, vendor=AdoptxVendor.Ibm
+ )
+ api_call = openj9APIFeatureReleasesUrl(feature, query=query)
+ print("Fetching JRE Page:", page, api_call)
+ r_rls = sess.get(api_call)
+ if r_rls.status_code == 404:
+ break
+ else:
+ r_rls.raise_for_status()
+
+ releases = list(AdoptxRelease(**rls) for rls in r_rls.json())
+ releases_for_feature.extend(releases)
+
+ if len(r_rls.json()) < page_size:
+ break
+ page += 1
+
+ print("Total OpenJ9 releases for feature:", len(releases_for_feature))
+ releases = AdoptxReleases(__root__=releases_for_feature)
+ if len(releases_for_feature) == 0:
+ continue
+ feature_file = os.path.join(
+ UPSTREAM_DIR, OPENJ9_VERSIONS_DIR, f"java{feature}.json"
+ )
+ releases.write(feature_file)
+
print("Getting Azul Release Manifests")
zulu_packages: list[ZuluPackage] = []
page = 1