mirror of
https://github.com/unmojang/meta.git
synced 2025-09-23 11:10:53 -04:00
Mapped linux-arm variants to mojang provider
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
This commit is contained in:
parent
60a3f5f194
commit
adef8d673c
@ -123,6 +123,26 @@ def mojang_os_to_java_os(mojang_os: MojangJavaOsName) -> JavaRuntimeOS:
|
||||
return JavaRuntimeOS.Unknown
|
||||
|
||||
|
||||
def mojang_component_to_major(mojang_component: MojangJavaComponent) -> int:
|
||||
match mojang_component:
|
||||
case MojangJavaComponent.JreLegacy:
|
||||
return 8
|
||||
case MojangJavaComponent.Alpha:
|
||||
return 17
|
||||
case MojangJavaComponent.Beta:
|
||||
return 17
|
||||
case MojangJavaComponent.Gamma:
|
||||
return 17
|
||||
case MojangJavaComponent.GammaSnapshot:
|
||||
return 17
|
||||
case MojangJavaComponent.Exe:
|
||||
return 0
|
||||
case MojangJavaComponent.Delta:
|
||||
return 21
|
||||
case _:
|
||||
return 0
|
||||
|
||||
|
||||
def mojang_runtime_to_java_runtime(
|
||||
mojang_runtime: MojangJavaRuntime,
|
||||
mojang_component: MojangJavaComponent,
|
||||
@ -240,34 +260,6 @@ def azul_package_to_java_runtime(
|
||||
)
|
||||
|
||||
|
||||
PREFERED_VENDOR_ORDER = ["mojang", "eclipse", "azul"]
|
||||
|
||||
__PREFERED_VENDOR_ORDER = list(reversed(PREFERED_VENDOR_ORDER))
|
||||
|
||||
|
||||
def vendor_priority(vendor: str) -> int:
|
||||
"""Get a numeric priority for a given vendor
|
||||
|
||||
Args:
|
||||
vendor (str): the vendor to check
|
||||
|
||||
Returns:
|
||||
int: how preferable the vendor is, the higher the better
|
||||
"""
|
||||
if vendor not in PREFERED_VENDOR_ORDER:
|
||||
return -1
|
||||
return __PREFERED_VENDOR_ORDER.index(vendor)
|
||||
|
||||
|
||||
def pkg_type_priority(pkg_type: JavaPackageType) -> int:
|
||||
match pkg_type:
|
||||
case JavaPackageType.Jre:
|
||||
return 2
|
||||
case JavaPackageType.Jdk:
|
||||
return 1
|
||||
return -1
|
||||
|
||||
|
||||
def writeJavas(javas: dict[int, list[JavaRuntimeMeta]], uid: str):
|
||||
def oldest_timestamp(a: datetime.datetime | None, b: datetime.datetime):
|
||||
if a is None or a > b:
|
||||
@ -308,6 +300,7 @@ def writeJavas(javas: dict[int, list[JavaRuntimeMeta]], uid: str):
|
||||
|
||||
def main():
|
||||
javas: dict[int, list[JavaRuntimeMeta]] = {}
|
||||
extra_mojang_javas: dict[int, list[JavaRuntimeMeta]] = {}
|
||||
|
||||
def add_java_runtime(runtime: JavaRuntimeMeta, major: int):
|
||||
if major not in javas:
|
||||
@ -315,37 +308,27 @@ def main():
|
||||
print(f"Regestering runtime: {runtime.name} for Java {major}")
|
||||
javas[major].append(runtime)
|
||||
|
||||
print("Processing Mojang Javas")
|
||||
mojang_java_manifest = JavaIndex.parse_file(
|
||||
os.path.join(UPSTREAM_DIR, JAVA_MANIFEST_FILE)
|
||||
)
|
||||
for mojang_os_name in mojang_java_manifest:
|
||||
if mojang_os_name == MojangJavaOsName.Gamecore:
|
||||
continue # empty
|
||||
java_os = mojang_os_to_java_os(mojang_os_name)
|
||||
for comp in mojang_java_manifest[mojang_os_name]:
|
||||
if comp == MojangJavaComponent.Exe:
|
||||
continue # doesn't appear to be used and not marked with a full verison so I don't trust it
|
||||
mojang_runtimes = mojang_java_manifest[mojang_os_name][comp]
|
||||
# only add specific versions to the list
|
||||
if (
|
||||
len(mojang_runtimes) == 0
|
||||
and mojang_os_name
|
||||
in [MojangJavaOsName.WindowsArm64, MojangJavaOsName.MacOSArm64]
|
||||
and comp in [MojangJavaComponent.Alpha, MojangJavaComponent.Beta]
|
||||
):
|
||||
mojang_runtimes = mojang_java_manifest[mojang_os_name][
|
||||
MojangJavaComponent.Gamma
|
||||
(
|
||||
runtime.runtime_os
|
||||
in [JavaRuntimeOS.MacOsArm64, JavaRuntimeOS.WindowsArm64]
|
||||
and major == 8
|
||||
)
|
||||
or (
|
||||
runtime.runtime_os
|
||||
in [
|
||||
JavaRuntimeOS.WindowsArm32,
|
||||
JavaRuntimeOS.LinuxArm32,
|
||||
JavaRuntimeOS.LinuxArm64,
|
||||
]
|
||||
for mojang_runtime in mojang_runtimes:
|
||||
if comp == MojangJavaComponent.JreLegacy:
|
||||
major = 8
|
||||
else:
|
||||
major = int(mojang_runtime.version.name.partition(".")[0])
|
||||
runtime = mojang_runtime_to_java_runtime(mojang_runtime, comp, java_os)
|
||||
add_java_runtime(runtime, major)
|
||||
|
||||
writeJavas(javas=javas, uid=JAVA_MINECRAFT_COMPONENT)
|
||||
javas = {}
|
||||
and major in [8, 17, 21]
|
||||
)
|
||||
or (runtime.runtime_os == JavaRuntimeOS.LinuxX86 and major in [17, 21])
|
||||
):
|
||||
if major not in extra_mojang_javas:
|
||||
extra_mojang_javas[major] = list[JavaRuntimeMeta]()
|
||||
extra_mojang_javas[major].append(runtime)
|
||||
|
||||
print("Processing Adoptium Releases")
|
||||
adoptium_path = os.path.join(UPSTREAM_DIR, ADOPTIUM_DIR, "available_releases.json")
|
||||
@ -411,6 +394,88 @@ def main():
|
||||
writeJavas(javas=javas, uid=JAVA_AZUL_COMPONENT)
|
||||
javas = {}
|
||||
|
||||
# constructs the missing mojang javas based on adoptium or azul
|
||||
def get_mojang_extra_java(
|
||||
mojang_component: MojangJavaComponent, java_os: JavaRuntimeOS
|
||||
) -> JavaRuntimeMeta | None:
|
||||
java_major = mojang_component_to_major(mojang_component)
|
||||
if not java_major in extra_mojang_javas:
|
||||
return None
|
||||
posible_javas = list(
|
||||
filter(lambda x: x.runtime_os == java_os, extra_mojang_javas[java_major])
|
||||
)
|
||||
if len(posible_javas) == 0:
|
||||
return None
|
||||
prefered_vendor = list(filter(lambda x: x.vendor != "azul", posible_javas))
|
||||
if len(prefered_vendor) == 0:
|
||||
prefered_vendor = posible_javas
|
||||
prefered_vendor.sort(key=lambda x: x.version, reverse=True)
|
||||
runtime = prefered_vendor[0]
|
||||
runtime.name = mojang_component
|
||||
return runtime
|
||||
|
||||
print("Processing Mojang Javas")
|
||||
mojang_java_manifest = JavaIndex.parse_file(
|
||||
os.path.join(UPSTREAM_DIR, JAVA_MANIFEST_FILE)
|
||||
)
|
||||
for mojang_os_name in mojang_java_manifest:
|
||||
if mojang_os_name == MojangJavaOsName.Gamecore:
|
||||
continue # empty
|
||||
java_os = mojang_os_to_java_os(mojang_os_name)
|
||||
for comp in mojang_java_manifest[mojang_os_name]:
|
||||
if comp == MojangJavaComponent.Exe:
|
||||
continue # doesn't appear to be used and not marked with a full verison so I don't trust it
|
||||
mojang_runtimes = mojang_java_manifest[mojang_os_name][comp]
|
||||
if len(mojang_runtimes) == 0:
|
||||
if mojang_os_name in [
|
||||
MojangJavaOsName.WindowsArm64,
|
||||
MojangJavaOsName.MacOSArm64,
|
||||
]:
|
||||
if comp in [MojangJavaComponent.Alpha, MojangJavaComponent.Beta]:
|
||||
mojang_runtimes = mojang_java_manifest[mojang_os_name][
|
||||
MojangJavaComponent.Gamma
|
||||
]
|
||||
elif (
|
||||
comp == MojangJavaComponent.JreLegacy
|
||||
): # arm version of win and mac is missing the legacy java
|
||||
runtime = get_mojang_extra_java(comp, java_os)
|
||||
if runtime != None:
|
||||
add_java_runtime(runtime, mojang_component_to_major(comp))
|
||||
if (
|
||||
mojang_os_name == MojangJavaOsName.Linuxi386
|
||||
and comp != MojangJavaComponent.JreLegacy
|
||||
): # the linux x86 is missing all but legacy
|
||||
runtime = get_mojang_extra_java(comp, java_os)
|
||||
if runtime != None:
|
||||
add_java_runtime(runtime, mojang_component_to_major(comp))
|
||||
for mojang_runtime in mojang_runtimes:
|
||||
if comp == MojangJavaComponent.JreLegacy:
|
||||
major = 8
|
||||
else:
|
||||
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
|
||||
for java_os in [
|
||||
JavaRuntimeOS.WindowsArm32,
|
||||
JavaRuntimeOS.LinuxArm32,
|
||||
JavaRuntimeOS.LinuxArm64,
|
||||
]:
|
||||
for comp in [
|
||||
MojangJavaComponent.JreLegacy,
|
||||
MojangJavaComponent.Alpha,
|
||||
MojangJavaComponent.Beta,
|
||||
MojangJavaComponent.Gamma,
|
||||
MojangJavaComponent.GammaSnapshot,
|
||||
MojangJavaComponent.Delta,
|
||||
]:
|
||||
runtime = get_mojang_extra_java(comp, java_os)
|
||||
if runtime != None:
|
||||
add_java_runtime(runtime, mojang_component_to_major(comp))
|
||||
|
||||
writeJavas(javas=javas, uid=JAVA_MINECRAFT_COMPONENT)
|
||||
javas = {}
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
Loading…
x
Reference in New Issue
Block a user