diff options
Diffstat (limited to 'device-deps-regenerator/device2kernel.py')
-rw-r--r-- | device-deps-regenerator/device2kernel.py | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/device-deps-regenerator/device2kernel.py b/device-deps-regenerator/device2kernel.py new file mode 100644 index 0000000..0a96361 --- /dev/null +++ b/device-deps-regenerator/device2kernel.py @@ -0,0 +1,47 @@ +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) |