comps-sync.py: Factor package manifest loading code
This commit is contained in:
parent
afdf98e97a
commit
e00b1c88fe
1 changed files with 17 additions and 20 deletions
|
@ -51,6 +51,19 @@ def is_exclude_listed(pkgname):
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def load_packages_from_manifest(manifest_path):
|
||||||
|
'''Load the list of packages from an rpm-ostree manifest file.'''
|
||||||
|
with open(manifest_path, encoding='UTF-8') as f:
|
||||||
|
manifest = yaml.safe_load(f)
|
||||||
|
manifest_packages = {}
|
||||||
|
manifest_packages['all'] = set(manifest['packages'])
|
||||||
|
for arch in ARCHES:
|
||||||
|
if f'packages-{arch}' in manifest:
|
||||||
|
manifest_packages[arch] = set(manifest[f'packages-{arch}'])
|
||||||
|
else:
|
||||||
|
manifest_packages[arch] = set()
|
||||||
|
return manifest_packages
|
||||||
|
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
parser.add_argument("--save", help="Write changes", action='store_true')
|
parser.add_argument("--save", help="Write changes", action='store_true')
|
||||||
parser.add_argument("src", help="Source path")
|
parser.add_argument("src", help="Source path")
|
||||||
|
@ -59,16 +72,8 @@ args = parser.parse_args()
|
||||||
|
|
||||||
print("Syncing packages common to all desktops:")
|
print("Syncing packages common to all desktops:")
|
||||||
|
|
||||||
base_pkgs_path = 'fedora-common-ostree-pkgs.yaml'
|
manifest_path = 'fedora-common-ostree-pkgs.yaml'
|
||||||
with open(base_pkgs_path, encoding='UTF-8') as f:
|
manifest_packages = load_packages_from_manifest(manifest_path)
|
||||||
manifest = yaml.safe_load(f)
|
|
||||||
manifest_packages = {}
|
|
||||||
manifest_packages['all'] = set(manifest['packages'])
|
|
||||||
for arch in ARCHES:
|
|
||||||
if f'packages-{arch}' in manifest:
|
|
||||||
manifest_packages[arch] = set(manifest[f'packages-{arch}'])
|
|
||||||
else:
|
|
||||||
manifest_packages[arch] = set()
|
|
||||||
|
|
||||||
with open('comps-sync-exclude-list.yml', encoding='UTF-8') as f:
|
with open('comps-sync-exclude-list.yml', encoding='UTF-8') as f:
|
||||||
doc = yaml.safe_load(f)
|
doc = yaml.safe_load(f)
|
||||||
|
@ -167,7 +172,7 @@ else:
|
||||||
print(' {} ({}, groups: {}, arches: {})'.format(pkg, format_pkgtype(req), ', '.join(groups), ', '.join(arches)))
|
print(' {} ({}, groups: {}, arches: {})'.format(pkg, format_pkgtype(req), ', '.join(groups), ', '.join(arches)))
|
||||||
|
|
||||||
if (n_manifest_new > 0 or n_comps_new > 0) and args.save:
|
if (n_manifest_new > 0 or n_comps_new > 0) and args.save:
|
||||||
write_manifest(base_pkgs_path, manifest_packages)
|
write_manifest(manifest_path, manifest_packages)
|
||||||
|
|
||||||
# List of comps groups used for each desktop
|
# List of comps groups used for each desktop
|
||||||
desktops_comps_groups = {
|
desktops_comps_groups = {
|
||||||
|
@ -188,15 +193,7 @@ for desktop, groups in desktops_comps_groups.items():
|
||||||
print(f'Syncing packages for {desktop}:')
|
print(f'Syncing packages for {desktop}:')
|
||||||
|
|
||||||
manifest_path = f'{desktop}-desktop-pkgs.yaml'
|
manifest_path = f'{desktop}-desktop-pkgs.yaml'
|
||||||
with open(manifest_path, encoding='UTF-8') as f:
|
manifest_packages = load_packages_from_manifest(manifest_path)
|
||||||
manifest = yaml.safe_load(f)
|
|
||||||
manifest_packages = {}
|
|
||||||
manifest_packages['all'] = set(manifest['packages'])
|
|
||||||
for arch in ARCHES:
|
|
||||||
if f'packages-{arch}' in manifest:
|
|
||||||
manifest_packages[arch] = set(manifest[f'packages-{arch}'])
|
|
||||||
else:
|
|
||||||
manifest_packages[arch] = set()
|
|
||||||
|
|
||||||
# Filter packages in the comps desktop group using the exclude_list
|
# Filter packages in the comps desktop group using the exclude_list
|
||||||
comps_group_pkgs = {}
|
comps_group_pkgs = {}
|
||||||
|
|
Loading…
Reference in a new issue