From 434e34bb510b4cab04e64cd5b21d635c6be8c8ea Mon Sep 17 00:00:00 2001 From: Mikko Rapeli Date: Fri, 29 Nov 2024 13:46:32 +0000 Subject: [PATCH] fail.py: handle missing cgitb It's no longer in python standard library starting at version 3.13. Fixes: root@qemuarm64:~# aa-complain /etc/apparmor.d/* Traceback (most recent call last): File "/usr/sbin/aa-complain", line 18, in from apparmor.fail import enable_aa_exception_handler File "/usr/lib/python3.13/site-packages/apparmor/fail.py", line 12, in import cgitb ModuleNotFoundError: No module named 'cgitb' Signed-off-by: Mikko Rapeli --- utils/apparmor/fail.py | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) Upstream-Status: Backport diff --git a/utils/apparmor/fail.py b/utils/apparmor/fail.py index ece6efc4..a71ceb66 100644 --- a/utils/apparmor/fail.py +++ b/utils/apparmor/fail.py @@ -8,7 +8,11 @@ # # ------------------------------------------------------------------ -import cgitb +try: + import cgitb +except ImportError: + cgitb = None + pass import sys import traceback from tempfile import NamedTemporaryFile @@ -32,20 +36,21 @@ def handle_exception(*exc_info): print('', file=sys.stderr) error(ex.value) else: - with NamedTemporaryFile('w', prefix='apparmor-bugreport-', suffix='.txt', delete=False) as file: - cgitb_hook = cgitb.Hook(display=1, file=file, format='text', context=10) - cgitb_hook.handle(exc_info) - - file.write('Please consider reporting a bug at https://gitlab.com/apparmor/apparmor/-/issues\n') - file.write('and attach this file.\n') + if cgitb: + with NamedTemporaryFile('w', prefix='apparmor-bugreport-', suffix='.txt', delete=False) as file: + cgitb_hook = cgitb.Hook(display=1, file=file, format='text', context=10) + cgitb_hook.handle(exc_info) + file.write('Please consider reporting a bug at https://gitlab.com/apparmor/apparmor/-/issues\n') + file.write('and attach this file.\n') print(''.join(traceback.format_exception(*exc_info)), file=sys.stderr) - print('', file=sys.stderr) print('An unexpected error occurred!', file=sys.stderr) print('', file=sys.stderr) - print('For details, see %s' % file.name, file=sys.stderr) + if cgitb: + print('For details, see %s' % file.name, file=sys.stderr) print('Please consider reporting a bug at https://gitlab.com/apparmor/apparmor/-/issues', file=sys.stderr) - print('and attach this file.', file=sys.stderr) + if cgitb: + print('and attach this file.', file=sys.stderr) def enable_aa_exception_handler(): -- 2.43.0