commit:     718e6b711ac1ed3e0d5c12e466d0c19364f108f2
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sun Jun  8 10:27:00 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sun Jun  8 10:27:59 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=718e6b71

sys-apps/apparmor-utils: fix py3.13 compat

Closes: https://bugs.gentoo.org/957140
Bug: https://bugs.gentoo.org/952709
Signed-off-by: Sam James <sam <AT> gentoo.org>

 ...4.0.3.ebuild => apparmor-utils-4.0.3-r1.ebuild} |  1 +
 .../files/apparmor-utils-4.0.3-py3.13.patch        | 75 ++++++++++++++++++++++
 2 files changed, 76 insertions(+)

diff --git a/sys-apps/apparmor-utils/apparmor-utils-4.0.3.ebuild 
b/sys-apps/apparmor-utils/apparmor-utils-4.0.3-r1.ebuild
similarity index 98%
rename from sys-apps/apparmor-utils/apparmor-utils-4.0.3.ebuild
rename to sys-apps/apparmor-utils/apparmor-utils-4.0.3-r1.ebuild
index c939e9fc7043..87489d42b001 100644
--- a/sys-apps/apparmor-utils/apparmor-utils-4.0.3.ebuild
+++ b/sys-apps/apparmor-utils/apparmor-utils-4.0.3-r1.ebuild
@@ -35,6 +35,7 @@ RDEPEND="${COMMON_DEPEND}
 
 PATCHES=(
        "${FILESDIR}/${PN}-4.0.3-binutils-Fix-missing-include-limits.h.patch"
+       "${FILESDIR}/${PN}-4.0.3-py3.13.patch"
 )
 
 src_prepare() {

diff --git a/sys-apps/apparmor-utils/files/apparmor-utils-4.0.3-py3.13.patch 
b/sys-apps/apparmor-utils/files/apparmor-utils-4.0.3-py3.13.patch
new file mode 100644
index 000000000000..4909fd55fec3
--- /dev/null
+++ b/sys-apps/apparmor-utils/files/apparmor-utils-4.0.3-py3.13.patch
@@ -0,0 +1,75 @@
+https://bugs.gentoo.org/952709
+https://bugs.gentoo.org/957140
+https://gitlab.com/apparmor/apparmor/-/merge_requests/1439
+
+From 434e34bb510b4cab04e64cd5b21d635c6be8c8ea Mon Sep 17 00:00:00 2001
+From: Mikko Rapeli <[email protected]>
+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 <module>
+    from apparmor.fail import enable_aa_exception_handler
+  File "/usr/lib/python3.13/site-packages/apparmor/fail.py", line 12, in 
<module>
+    import cgitb
+ModuleNotFoundError: No module named 'cgitb'
+
+Signed-off-by: Mikko Rapeli <[email protected]>
+---
+ utils/apparmor/fail.py | 25 +++++++++++++++----------
+ 1 file changed, 15 insertions(+), 10 deletions(-)
+
+diff --git a/utils/apparmor/fail.py b/utils/apparmor/fail.py
+index ece6efc43..a71ceb66a 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():
+-- 
+GitLab

Reply via email to