forked from mirrors/nixpkgs
9e4ba681fd
This commit adds entries to the Rosetta Stones in adoptopenjdk-bin/generate-sources.py and compilers/openjdk/8.nix, and runs adoptopenjdk-bin/generate-sources.py to regenerate adoptopenjdk-bin/sources.json. With this commit, `nix-build . -A jdk8_headless` succeeds on powerpc64le. Headless jdk is used as part of the build process for many packages so this opens up access to them.
68 lines
2.2 KiB
Python
Executable file
68 lines
2.2 KiB
Python
Executable file
#!/usr/bin/env nix-shell
|
|
#!nix-shell --pure -i python3 -p "python3.withPackages (ps: with ps; [ requests ])"
|
|
|
|
import json
|
|
import re
|
|
import requests
|
|
import sys
|
|
|
|
releases = ("openjdk8", "openjdk11", "openjdk13", "openjdk14", "openjdk15", "openjdk16")
|
|
oses = ("mac", "linux")
|
|
types = ("jre", "jdk")
|
|
impls = ("hotspot", "openj9")
|
|
|
|
arch_to_nixos = {
|
|
"x64": ("x86_64",),
|
|
"aarch64": ("aarch64",),
|
|
"arm": ("armv6l", "armv7l"),
|
|
"ppc64le": ("powerpc64le",),
|
|
}
|
|
|
|
def get_sha256(url):
|
|
resp = requests.get(url)
|
|
if resp.status_code != 200:
|
|
print("error: could not fetch checksum from url {}: code {}".format(url, resp.code), file=sys.stderr)
|
|
sys.exit(1)
|
|
return resp.text.strip().split(" ")[0]
|
|
|
|
def generate_sources(release, assets):
|
|
out = {}
|
|
for asset in assets:
|
|
if asset["os"] not in oses: continue
|
|
if asset["binary_type"] not in types: continue
|
|
if asset["openjdk_impl"] not in impls: continue
|
|
if asset["heap_size"] != "normal": continue
|
|
if asset["architecture"] not in arch_to_nixos: continue
|
|
|
|
# examples: 11.0.1+13, 8.0.222+10
|
|
version, build = asset["version_data"]["semver"].split("+")
|
|
|
|
type_map = out.setdefault(asset["os"], {})
|
|
impl_map = type_map.setdefault(asset["binary_type"], {})
|
|
arch_map = impl_map.setdefault(asset["openjdk_impl"], {
|
|
"packageType": asset["binary_type"],
|
|
"vmType": asset["openjdk_impl"],
|
|
})
|
|
|
|
for nixos_arch in arch_to_nixos[asset["architecture"]]:
|
|
arch_map[nixos_arch] = {
|
|
"url": asset["binary_link"],
|
|
"sha256": get_sha256(asset["checksum_link"]),
|
|
"version": version,
|
|
"build": build,
|
|
}
|
|
|
|
return out
|
|
|
|
out = {}
|
|
for release in releases:
|
|
resp = requests.get("https://api.adoptopenjdk.net/v2/latestAssets/releases/" + release)
|
|
if resp.status_code != 200:
|
|
print("error: could not fetch data for release {} (code {})".format(release, resp.code), file=sys.stderr)
|
|
sys.exit(1)
|
|
out[release] = generate_sources(release, resp.json())
|
|
|
|
with open("sources.json", "w") as f:
|
|
json.dump(out, f, indent=2, sort_keys=True)
|
|
f.write('\n')
|