| 1 | #!/usr/bin/env python3 |
| 2 | |
| 3 | import json |
| 4 | import sys |
| 5 | |
| 6 | from ruamel.yaml import YAML |
| 7 | |
| 8 | ALWAYS_RUN_ARCHES = ["amd64", "x86_64", 'i386', 'armhf', 'aarch64', 'arm64'] |
| 9 | SHORT_RUN = sys.argv[1] |
| 10 | yaml = YAML(typ='safe') |
| 11 | entries = list() |
| 12 | run_limited = False |
| 13 | |
| 14 | with open('.github/data/distros.yml') as f: |
| 15 | data = yaml.load(f) |
| 16 | |
| 17 | if bool(int(SHORT_RUN)): |
| 18 | run_limited = True |
| 19 | |
| 20 | for i, v in enumerate(data['include']): |
| 21 | if 'packages' in data['include'][i]: |
| 22 | for arch in data['include'][i]['packages']['arches']: |
| 23 | if arch in ALWAYS_RUN_ARCHES or not run_limited: |
| 24 | entries.append({ |
| 25 | 'distro': data['include'][i]['distro'], |
| 26 | 'version': data['include'][i]['version'], |
| 27 | 'repo_distro': data['include'][i]['packages']['repo_distro'], |
| 28 | 'format': data['include'][i]['packages']['type'], |
| 29 | 'base_image': data['include'][i]['base_image'] if 'base_image' in data['include'][i] else ':'.join([data['include'][i]['distro'], data['include'][i]['version']]), |
| 30 | 'builder_rev': data['include'][i]['packages']['builder_rev'], |
| 31 | 'platform': data['platform_map'][arch], |
| 32 | 'bundle_sentry': data['include'][i]['bundle_sentry'][arch], |
| 33 | 'arch': arch, |
| 34 | 'runner': data['arch_data'][arch]['runner'], |
| 35 | 'qemu': data['arch_data'][arch]['qemu'], |
| 36 | }) |
| 37 | |
| 38 | entries.sort(key=lambda k: (data['arch_order'].index(k['arch']), k['distro'], k['version'])) |
| 39 | matrix = json.dumps({'include': entries}, sort_keys=True) |
| 40 | print(matrix) |