android_mt6572_jiabo/lineage/scripts/device-deps-regenerator/device2kernel.py
2025-09-05 16:56:03 +08:00

51 lines
1.3 KiB
Python

import json
# Define device repos that have repos that depend on them,
# otherwise the script will remove these on the assumption
# they are common repos
COMMON_DEVICE = [
"android_device_asus_flo",
"android_device_asus_grouper",
"android_device_google_marlin",
"android_device_htc_flounder",
"android_device_samsung_espressowifi",
"android_device_samsung_n1awifi",
"android_device_samsung_t0lte",
]
with open("out.json") as f:
mapping = json.load(f)
kernels = {}
reverse_deps = {}
for device in mapping:
deps = mapping[device]
if device not in reverse_deps:
reverse_deps[device] = []
for repo in deps:
if repo["repo"] not in reverse_deps:
reverse_deps[repo["repo"]] = []
reverse_deps[repo["repo"]].append(device)
def simplify_reverse_deps(repo):
if len(reverse_deps[repo]) == 0 and "-common" not in repo:
return {
repo,
}
res = set()
for i in reverse_deps[repo]:
res.update(simplify_reverse_deps(i))
if repo in COMMON_DEVICE:
res.add(repo)
return res
for repo in reverse_deps:
if "kernel" in repo:
kernels[repo] = sorted(list(simplify_reverse_deps(repo)))
with open("kernels.json", "w") as f:
json.dump(kernels, f, indent=4, sort_keys=True)