diff options
Diffstat (limited to 'tester.py')
-rw-r--r-- | tester.py | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/tester.py b/tester.py new file mode 100644 index 0000000..c1f05c5 --- /dev/null +++ b/tester.py @@ -0,0 +1,83 @@ +#!/usr/bin/env python3 +# Adélie Linux architecture package tester +# Ensure all packages are all on arches +# +# Copyright © 2018 Adélie Linux team. All rights reserved. +# + +from apkkit.base.index import Index + +BASE_URL = "https://mirrormaster.adelielinux.org/adelie/{version}/{repo}/{arch}/APKINDEX.tar.gz" +"""The base URL to use for downloading package indexes.""" + +VERSION = "1.0-alpha6" +"""The version to check. Bump this after each release.""" + +def main(): + """The main function.""" + + arches = set() + sys_ign = set() + user_ign = set() + with open('arches', 'r') as arch_file: + arches = [arch[:-1] for arch in arch_file.readlines()] + with open('sys-specific', 'r') as ignore_file: + sys_ign = set(pkg[:-1] for pkg in ignore_file.readlines()) + with open('user-specific', 'r') as ignore_file: + user_ign = set(pkg[:-1] for pkg in ignore_file.readlines()) + + all_sys_pkgs = set() + all_user_pkgs = set() + pkgs = {} + + broken_sys = list() + broken_user = list() + not_broken = list() + + for arch in arches: + print("Loading " + arch + "...") + arch_sys = Index(url=BASE_URL.format(version=VERSION, repo='system', arch=arch)) + arch_user = Index(url=BASE_URL.format(version=VERSION, repo='user', arch=arch)) + + all_sys_pkgs = all_sys_pkgs.union(arch_sys.origins) + all_user_pkgs = all_user_pkgs.union(arch_user.origins) + + pkgs[arch] = {'system': arch_sys.origins, 'user': arch_user.origins} + + for pkg in sys_ign: + all_sys_pkgs.discard(pkg) + for pkg in user_ign: + all_user_pkgs.discard(pkg) + + for arch in arches: + missing_sys = all_sys_pkgs - pkgs[arch]['system'] + missing_user = all_user_pkgs - pkgs[arch]['user'] + + if len(missing_sys) > 0: + print("Missing in {arch}/system:".format(arch=arch)) + print("=========================") + missing = list(missing_sys) + missing.sort() + for pkg in missing: print(pkg) + print("\n\n") + broken_sys.append(arch) + + if len(missing_user) > 0: + print("Missing in {arch}/user:".format(arch=arch)) + print("=========================") + missing = list(missing_user) + missing.sort() + for pkg in missing: print(pkg) + print("\n\n") + broken_user.append(arch) + + if len(missing_sys) == 0 and len(missing_user) == 0: + not_broken.append(arch) + + print("\033[1;32mNo issues\033[1;0m: {a}".format(a=", ".join(not_broken))) + print("\033[1;33mMissing user\033[1;0m: {a}".format(a=", ".join(broken_user))) + print("\033[1;31mMissing system\033[1;0m: {a}".format(a=", ".join(broken_sys))) + +if __name__ == "__main__": + main() + |