diff options
| author | Sefa Eyeoglu <contact@scrumplex.net> | 2024-06-14 16:59:45 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-06-14 16:59:45 +0200 |
| commit | 395ca19ee418d535158904f2639f5b4fbe574b52 (patch) | |
| tree | 4ecc30f3aa0fe8d9b79483a823b1a178a3fa618b /meta/run/update_java.py | |
| parent | a4f59d327a02338b8342d83931758e6a17a85e00 (diff) | |
| parent | 6706cb5258e023bdada0cb4de0291bc96e113132 (diff) | |
| download | Project-Tick-395ca19ee418d535158904f2639f5b4fbe574b52.tar.gz Project-Tick-395ca19ee418d535158904f2639f5b4fbe574b52.zip | |
Merge pull request #19 from Ryex/javas
Add java runtime metadata
Diffstat (limited to 'meta/run/update_java.py')
| -rw-r--r-- | meta/run/update_java.py | 158 |
1 files changed, 158 insertions, 0 deletions
diff --git a/meta/run/update_java.py b/meta/run/update_java.py new file mode 100644 index 0000000000..326fb5f924 --- /dev/null +++ b/meta/run/update_java.py @@ -0,0 +1,158 @@ +import os + +from meta.common import upstream_path, ensure_upstream_dir, default_session +from meta.common.java import ( + BASE_DIR, + ADOPTIUM_DIR, + AZUL_DIR, + ADOPTIUM_VERSIONS_DIR, + AZUL_VERSIONS_DIR, +) +from meta.model.java import ( + ADOPTIUM_API_AVAILABLE_RELEASES, + adoptiumAPIFeatureReleasesUrl, + AdoptiumImageType, + AdoptiumAPIFeatureReleasesQuery, + AdoptiumAvailableReleases, + AdoptiumRelease, + AdoptiumReleases, + azulApiPackagesUrl, + AzulApiPackagesQuery, + ZuluPackage, + ZuluPackageList, + AzulArchiveType, + AzulReleaseStatus, + AzulAvailabilityType, + AzulJavaPackageType, + azulApiPackageDetailUrl, + ZuluPackageDetail, + ZuluPackagesDetail, +) + +UPSTREAM_DIR = upstream_path() + +ensure_upstream_dir(BASE_DIR) +ensure_upstream_dir(ADOPTIUM_DIR) +ensure_upstream_dir(AZUL_DIR) +ensure_upstream_dir(ADOPTIUM_VERSIONS_DIR) +ensure_upstream_dir(AZUL_VERSIONS_DIR) + + +sess = default_session() + + +def main(): + print("Getting Adoptium Release Manifests ") + r = sess.get(ADOPTIUM_API_AVAILABLE_RELEASES) + r.raise_for_status() + + available = AdoptiumAvailableReleases(**r.json()) + + available_releases_file = os.path.join( + UPSTREAM_DIR, ADOPTIUM_DIR, "available_releases.json" + ) + available.write(available_releases_file) + + for feature in available.available_releases: + print("Getting Manifests for Adoptium feature release:", feature) + + page_size = 10 + + releases_for_feature: list[AdoptiumRelease] = [] + page = 0 + while True: + query = AdoptiumAPIFeatureReleasesQuery( + image_type=AdoptiumImageType.Jre, page_size=page_size, page=page + ) + api_call = adoptiumAPIFeatureReleasesUrl(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(AdoptiumRelease(**rls) for rls in r_rls.json()) + releases_for_feature.extend(releases) + + if len(r_rls.json()) < page_size: + break + page += 1 + + print("Total Adoptium releases for feature:", len(releases_for_feature)) + releases = AdoptiumReleases(__root__=releases_for_feature) + feature_file = os.path.join( + UPSTREAM_DIR, ADOPTIUM_VERSIONS_DIR, f"java{feature}.json" + ) + releases.write(feature_file) + + print("Getting Azul Release Manifests") + zulu_packages: list[ZuluPackage] = [] + page = 1 + page_size = 100 + while True: + + query = AzulApiPackagesQuery( + archive_type=AzulArchiveType.Zip, + release_status=AzulReleaseStatus.Ga, + availability_types=[AzulAvailabilityType.CA], + java_package_type=AzulJavaPackageType.Jre, + javafx_bundled=False, + latest=True, + page=page, + page_size=page_size, + ) + api_call = azulApiPackagesUrl(query=query) + + print("Processing Page:", page, api_call) + + r = sess.get(api_call) + if r.status_code == 404: + break + else: + r.raise_for_status() + + packages = list(ZuluPackage(**pkg) for pkg in r.json()) + zulu_packages.extend(packages) + if len(packages) < page_size: + break + page += 1 + + print("Total Azul Packages:", len(zulu_packages)) + packages = ZuluPackageList(__root__=zulu_packages) + azul_manifest_file = os.path.join(UPSTREAM_DIR, AZUL_DIR, "packages.json") + packages.write(azul_manifest_file) + + azul_major_versions: dict[int, ZuluPackagesDetail] = {} + + for _, pkg in packages: + + major_version = pkg.java_version[0] + if major_version not in azul_major_versions: + azul_major_versions[major_version] = ZuluPackagesDetail(__root__=[]) + + pkg_file = os.path.join( + UPSTREAM_DIR, AZUL_VERSIONS_DIR, f"{pkg.package_uuid}.json" + ) + if os.path.exists(pkg_file) and os.path.isfile(pkg_file): + pkg_detail = ZuluPackageDetail.parse_file(pkg_file) + azul_major_versions[major_version].append(pkg_detail) + else: + + api_call = azulApiPackageDetailUrl(pkg.package_uuid) + print("Fetching Azul package manifest:", pkg.package_uuid) + r_pkg = sess.get(api_call) + r_pkg.raise_for_status() + + pkg_detail = ZuluPackageDetail(**r_pkg.json()) + pkg_detail.write(pkg_file) + azul_major_versions[major_version].append(pkg_detail) + + for major in azul_major_versions: + major_file = os.path.join(UPSTREAM_DIR, AZUL_VERSIONS_DIR, f"java{major}.json") + azul_major_versions[major].write(major_file) + + +if __name__ == "__main__": + main() +# |
