summaryrefslogtreecommitdiffstats
path: root/device-deps-regenerator/device2kernel.py
diff options
context:
space:
mode:
Diffstat (limited to 'device-deps-regenerator/device2kernel.py')
-rw-r--r--device-deps-regenerator/device2kernel.py47
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)