From 6be5440ff6d88db80bf862d04504c74610f7ed7a Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Wed, 8 Feb 2023 14:38:15 +0000 Subject: Fix invalid packageset after process_relarea If post-stale removal package set validation fails, don't change the packageset during process_relarea(). This makes it similar to process_uploads, in that the packageset can't be changed to something invalid. (Scenario: vaulting is requested via 'vault' command, which triggers process_relarea(), which applies any requested vaultings during it's stale evaluation. If that fails to validate, the packageset is broken and any subsequent uploads will fail until after another relarea scan takes place) Fixes: 0939d5bd86f4 ("Add 'calm-tool vault'") --- calm/calm.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/calm/calm.py b/calm/calm.py index b6e7e6e..54d0155 100755 --- a/calm/calm.py +++ b/calm/calm.py @@ -121,7 +121,11 @@ def process_relarea(args, state): # packages can be stale due to changes made directly in the release # area, so first check here if there are any stale packages to vault if args.stale: - stale_to_vault = remove_stale_packages(args, packages, state) + fresh_packages = {} + for arch in common_constants.ARCHES: + fresh_packages[arch] = package.merge(packages[arch]) + + stale_to_vault = remove_stale_packages(args, fresh_packages, state) if stale_to_vault: for arch in common_constants.ARCHES + ['noarch', 'src']: logging.info("vaulting %d old package(s) for arch %s" % (len(stale_to_vault[arch]), arch)) @@ -130,6 +134,8 @@ def process_relarea(args, state): logging.error("error while evaluating stale packages") return None + packages = fresh_packages + # clean up any empty directories if not args.dryrun: utils.rmemptysubdirs(args.rel_area) -- cgit v1.2.3