From 0022dc588931c523bd60983921c9ac5342fec022 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Thu, 6 Mar 2025 12:58:56 -0800 Subject: [PATCH] action_utils: Ensure that package are unheld if dist upgrade fails Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/action_utils.py | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/plinth/action_utils.py b/plinth/action_utils.py index 8e275a58a..d03dadef4 100644 --- a/plinth/action_utils.py +++ b/plinth/action_utils.py @@ -475,19 +475,20 @@ def apt_hold(packages): """ held_packages = [] - for package in packages: - current_hold = subprocess.check_output( - ['apt-mark', 'showhold', package]) - if not current_hold: - process = subprocess.run(['apt-mark', 'hold', package], - check=False) - if process.returncode == 0: # success - held_packages.append(package) + try: + for package in packages: + current_hold = subprocess.check_output( + ['apt-mark', 'showhold', package]) + if not current_hold: + process = subprocess.run(['apt-mark', 'hold', package], + check=False) + if process.returncode == 0: # success + held_packages.append(package) - yield held_packages - - for package in held_packages: - subprocess.check_call(['apt-mark', 'unhold', package]) + yield held_packages + finally: + for package in held_packages: + subprocess.check_call(['apt-mark', 'unhold', package]) @contextmanager