summaryrefslogtreecommitdiff
path: root/generateJava.py
diff options
context:
space:
mode:
authorRachel Powers <508861+Ryex@users.noreply.github.com>2023-05-13 16:20:50 -0700
committerRachel Powers <508861+Ryex@users.noreply.github.com>2023-06-16 21:15:37 -0700
commitacc6a4cd95d06327d93ca44578a998f5dac89c17 (patch)
tree527fc5cb7c912dd3399bc3f8be78fb0dcf46bd61 /generateJava.py
parentcbe8419d800e78274c6ce9635e326fa60789724f (diff)
downloadProject-Tick-acc6a4cd95d06327d93ca44578a998f5dac89c17.tar.gz
Project-Tick-acc6a4cd95d06327d93ca44578a998f5dac89c17.zip
fix: ensure JDK options are included (some platform vendor combos don't offer jre)
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
Diffstat (limited to 'generateJava.py')
-rw-r--r--generateJava.py105
1 files changed, 70 insertions, 35 deletions
diff --git a/generateJava.py b/generateJava.py
index 982895725f..5e3420bfb4 100644
--- a/generateJava.py
+++ b/generateJava.py
@@ -1,11 +1,6 @@
import copy
-import hashlib
import os
-from collections import defaultdict, namedtuple
-from operator import attrgetter
-from pprint import pprint
-from packaging import version as pversion
-from typing import Optional, List
+from typing import Optional
from meta.common import ensure_component_dir, launcher_path, upstream_path, static_path
@@ -21,6 +16,7 @@ from meta.model.java import (
JavaRuntimeMap,
JavaRuntimeMeta,
JavaVersionMeta,
+ JavaPackageType,
JavaChecksumMeta,
JavaChecksumType,
JavaRuntimeDownloadType,
@@ -143,26 +139,29 @@ def mojang_runtime_to_java_runtime(
while len(version_parts) < 3:
version_parts.append(0)
- if len(version_parts) < 4:
- version_parts.append(None)
+
+ build = None
+ if len(version_parts) >= 4:
+ build = version_parts[3]
version = JavaVersionMeta(
major=version_parts[0],
minor=version_parts[1],
security=version_parts[2],
- build=version_parts[3],
+ build=build,
name=mojang_runtime.version.name,
)
return JavaRuntimeMeta(
name=f"mojang_jre_{mojang_runtime.version.name}",
vendor="mojang",
url=mojang_runtime.manifest.url,
- release_time=mojang_runtime.version.released,
+ releaseTime=mojang_runtime.version.released,
checksum=JavaChecksumMeta(
type=JavaChecksumType.Sha1, hash=mojang_runtime.manifest.sha1
),
recommended=True,
- download_type=JavaRuntimeDownloadType.Manifest,
+ downloadType=JavaRuntimeDownloadType.Manifest,
+ packageType=JavaPackageType.Jre,
version=version,
)
@@ -170,10 +169,20 @@ def mojang_runtime_to_java_runtime(
def adoptium_release_binary_to_java_runtime(
rls: AdoptiumRelease, binary: AdoptiumBinary
) -> JavaRuntimeMeta:
+ assert binary.package is not None
+
+ checksum = None
+ if binary.package.checksum is not None:
+ checksum = JavaChecksumMeta(
+ type=JavaChecksumType.Sha256, hash=binary.package.checksum
+ )
+
+ pkg_type = JavaPackageType(str(binary.image_type))
+
version = JavaVersionMeta(
- major=rls.version_data.major,
- minor=rls.version_data.minor,
- security=rls.version_data.security,
+ major=rls.version_data.major if rls.version_data.major is not None else 0,
+ minor=rls.version_data.minor if rls.version_data.minor is not None else 0,
+ security=rls.version_data.security if rls.version_data.security is not None else 0,
build=rls.version_data.build,
)
rls_name = f"{rls.vendor}_temurin_{binary.image_type}{version}"
@@ -181,38 +190,51 @@ def adoptium_release_binary_to_java_runtime(
name=rls_name,
vendor=rls.vendor,
url=binary.package.link,
- release_time=rls.timestamp,
- checksum=JavaChecksumMeta(
- type=JavaChecksumType.Sha256, hash=binary.package.checksum
- ),
+ releaseTime=rls.timestamp,
+ checksum=checksum,
recommended=False,
- download_type=JavaRuntimeDownloadType.Archive,
+ downloadType=JavaRuntimeDownloadType.Archive,
+ packageType=pkg_type,
version=version,
)
def azul_package_to_java_runtime(pkg: ZuluPackageDetail) -> JavaRuntimeMeta:
version_parts = copy.copy(pkg.java_version)
- while len(version_parts) < 4:
- version_parts.append(None)
+
+ build = None
+ while len(version_parts) < 3:
+ version_parts.append(0)
+
+ if len(version_parts) >= 4:
+ build = version_parts[3]
version = JavaVersionMeta(
major=version_parts[0],
minor=version_parts[1],
security=version_parts[2],
- build=version_parts[3],
+ build=build,
)
+ pkg_type = JavaPackageType(str(pkg.java_package_type))
+
rls_name = f"azul_{pkg.product}_{pkg.java_package_type}{version}"
+ checksum = None
+ if pkg.sha256_hash is not None:
+ checksum = JavaChecksumMeta(
+ type=JavaChecksumType.Sha256, hash=pkg.sha256_hash
+ )
+
return JavaRuntimeMeta(
name=rls_name,
vendor="azul",
url=pkg.download_url,
- release_time=pkg.build_date,
- checksum=JavaChecksumMeta(type=JavaChecksumType.Sha256, hash=pkg.sha256_hash),
+ releaseTime=pkg.build_date,
+ checksum=checksum,
recommended=False,
- download_type=JavaRuntimeDownloadType.Archive,
+ downloadType=JavaRuntimeDownloadType.Archive,
+ packageType=pkg_type,
version=version,
)
@@ -236,9 +258,17 @@ def vendor_priority(vendor: str) -> int:
return __PREFERED_VENDOR_ORDER.index(vendor)
-def ensure_one_recommended(runtimes: list[JavaRuntimeMeta]):
+def pkg_type_priority(pkg_type: JavaPackageType) -> int:
+ if pkg_type == JavaPackageType.Jre:
+ return 2
+ elif pkg_type == JavaPackageType.Jdk:
+ return 1
+ else:
+ return -1
+
+def ensure_one_recommended(runtimes: list[JavaRuntimeMeta]) -> Optional[JavaRuntimeMeta]:
if len(runtimes) < 1:
- return # can't do anything
+ return None# can't do anything
recommended: Optional[JavaRuntimeMeta] = None
found_first = False
@@ -252,15 +282,18 @@ def ensure_one_recommended(runtimes: list[JavaRuntimeMeta]):
need_resort = True
if recommended and not need_resort:
- print("Recommending", recommended.name)
- return # we have one recommended already
+ return recommended # we have one recommended already
if recommended is None:
recommended = runtimes[0]
+
def better_java_runtime(runtime: JavaRuntimeMeta):
+ assert recommended is not None
if vendor_priority(runtime.vendor) < vendor_priority(recommended.vendor):
return False
+ if pkg_type_priority(runtime.package_type) < pkg_type_priority(recommended.package_type):
+ return False
if runtime.version < recommended.version:
return False
if runtime.release_time < recommended.release_time:
@@ -273,7 +306,7 @@ def ensure_one_recommended(runtimes: list[JavaRuntimeMeta]):
recommended = runtime
recommended.recommended = True
- print("Recommending", recommended.name)
+ return recommended
def main():
@@ -316,7 +349,7 @@ def main():
adoptium_releases = AdoptiumReleases.parse_file(
os.path.join(UPSTREAM_DIR, ADOPTIUM_VERSIONS_DIR, f"java{major}.json")
)
- for rls in adoptium_releases:
+ for _, rls in adoptium_releases:
for binary in rls.binaries:
if binary.package is None:
continue
@@ -334,7 +367,7 @@ def main():
azul_packages = ZuluPackages.parse_file(
os.path.join(UPSTREAM_DIR, AZUL_DIR, "packages.json")
)
- for pkg in azul_packages:
+ for _, pkg in azul_packages:
pkg_detail = ZuluPackageDetail.parse_file(
os.path.join(UPSTREAM_DIR, AZUL_VERSIONS_DIR, f"{pkg.package_uuid}.json")
)
@@ -357,9 +390,11 @@ def main():
add_java_runtime(runtime, major, java_os)
for major, runtimes in javas.items():
- for java_os in runtimes:
- print(f"Total runtimes for Java {major} {java_os}:", len(runtimes[java_os]))
- ensure_one_recommended(runtimes[java_os])
+ for java_os, runtime_list in runtimes:
+ print(f"Total runtimes for Java {major} {java_os}:", len(runtime_list))
+ rec = ensure_one_recommended(runtime_list)
+ if rec is not None:
+ print(f"Recomending {rec.name} for Java {major} {java_os}")
runtimes_file = os.path.join(LAUNCHER_DIR, JAVA_COMPONENT, f"java{major}.json")
runtimes.write(runtimes_file)