commit:     e4f951e4f7f7e2e158ef2b3617a64a60b06fadbf
Author:     Pacho Ramos <pacho <AT> gentoo <DOT> org>
AuthorDate: Sat Nov  6 08:05:02 2021 +0000
Commit:     Pacho Ramos <pacho <AT> gentoo <DOT> org>
CommitDate: Sat Nov  6 08:05:02 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e4f951e4

app-admin/abrt: Fix running with glib-2.70

Also do lazy python imports to avoid performance issues

Closes: https://bugs.gentoo.org/821199
Thanks-to: Leho Kraav (:macmaN @lkraav)
Thanks-to: Sam James
Package-Manager: Portage-3.0.28, Repoman-3.0.3
Signed-off-by: Pacho Ramos <pacho <AT> gentoo.org>

 app-admin/abrt/abrt-2.14.6-r1.ebuild               | 134 +++++++++++++++++++++
 app-admin/abrt/files/abrt-2.14.6-glib270.patch     |  32 +++++
 .../abrt/files/abrt-2.14.6-lazy-imports.patch      |  57 +++++++++
 3 files changed, 223 insertions(+)

diff --git a/app-admin/abrt/abrt-2.14.6-r1.ebuild 
b/app-admin/abrt/abrt-2.14.6-r1.ebuild
new file mode 100644
index 00000000000..c5c616459b4
--- /dev/null
+++ b/app-admin/abrt/abrt-2.14.6-r1.ebuild
@@ -0,0 +1,134 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+PYTHON_COMPAT=( python3_{8..9} )
+
+inherit autotools python-single-r1 tmpfiles xdg
+
+DESCRIPTION="Automatic bug detection and reporting tool"
+HOMEPAGE="https://github.com/abrt/abrt/wiki/ABRT-Project 
https://github.com/abrt/abrt";
+SRC_URI="https://github.com/${PN}/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+IUSE="selinux test"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+RESTRICT="!test? ( test )"
+
+DEPEND="${PYTHON_DEPS}
+       >=dev-libs/glib-2.56:2
+       >=dev-libs/libreport-2.13.0:=[gtk,python]
+       dev-libs/libxml2:2
+       >=gnome-base/gsettings-desktop-schemas-3.15.1
+       net-libs/libsoup:2.4
+       sys-apps/dbus
+       sys-apps/systemd:0=
+       sys-auth/polkit
+       sys-libs/libcap
+       sys-fs/inotify-tools
+       x11-libs/gtk+:3
+"
+RDEPEND="${DEPEND}
+       acct-user/abrt
+       acct-group/abrt
+       app-arch/cpio
+       app-arch/rpm[python,${PYTHON_SINGLE_USEDEP}]
+       dev-libs/elfutils
+       dev-libs/json-c:0=
+       sys-apps/util-linux
+       >=sys-devel/gdb-7
+       $(python_gen_cond_dep '
+                       dev-libs/satyr[${PYTHON_USEDEP}]
+                       dev-python/argcomplete[${PYTHON_USEDEP}]
+                       dev-python/argh[${PYTHON_USEDEP}]
+                       dev-python/humanize[${PYTHON_USEDEP}]
+       ')
+"
+BDEPEND="
+       $(python_gen_cond_dep 'dev-python/python-systemd[${PYTHON_USEDEP}]')
+       test? (
+               $(python_gen_cond_dep 'dev-python/pytest[${PYTHON_USEDEP}]')
+       )
+       app-text/asciidoc
+       app-text/xmlto
+       >=dev-util/intltool-0.35.0
+       virtual/pkgconfig
+       >=sys-devel/gettext-0.17
+"
+
+PATCHES=(
+       # 
https://github.com/abrt/abrt/commit/a6297858575780b9ed3d14cc42983348924d6048
+       "${FILESDIR}/${P}-glib270.patch"
+
+       # https://github.com/abrt/abrt/pull/1580
+       "${FILESDIR}/${P}-lazy-imports.patch"
+)
+
+pkg_setup() {
+       python-single-r1_pkg_setup
+}
+
+src_prepare() {
+       python_fix_shebang .
+       default
+
+       # Install under proper directory
+       sed -i -e 's:dbusabrtdocdir = 
${datadir}/doc/abrt-dbus-${VERSION}/html:dbusabrtdocdir = 
${datadir}/doc/${PF}/html:' doc/problems-service/Makefile.am || die
+
+       # Ensure this works for systems with and without /usr merge
+       sed -i -e "s:/usr/bin/bash:$(which bash):" init-scripts/abrtd.service 
|| die
+
+       # Fix hardcoded "pytest-3"
+       sed -i -e "s:pytest-3:pytest:" \
+               configure.ac src/python-problem/tests/Makefile.am src/cli/test 
|| die
+
+       # pyhook test is sensitive to the format of python's error messages, and
+       # fails with certain python versions
+       sed -e '/pyhook.at/ d' \
+               -i tests/Makefile.* tests/testsuite.at || die "sed remove 
pyhook tests failed"
+       ./gen-version || die # Needed to be run before autoreconf
+       eautoreconf
+}
+
+src_configure() {
+       myeconfargs=(
+               --libdir="${EPREFIX}/usr/$(get_libdir)"
+               --localstatedir="${EPREFIX}/var"
+               --without-bodhi
+               # package breaks due to not finding libreport-web with bodhi 
plugin enabled
+               --without-rpm
+               $(usex selinux "" "--without-selinux")
+               --with-python3
+               --without-pythondoc
+               # package breaks due to no sphinx-build-3
+               $(use_with test pythontests)
+       )
+
+       econf "${myeconfargs[@]}"
+}
+
+src_install() {
+       default
+       python_optimize
+
+       # /var/spool/abrt is created by dev-libs/libreport
+       diropts -m 700 -o abrt -g abrt
+       keepdir /var/spool/abrt-upload
+
+       find "${D}" -name '*.la' -delete || die
+
+       newinitd "${FILESDIR}/${PN}-2.0.12-r1-init" abrt
+       newconfd "${FILESDIR}/${PN}-2.0.12-r1-conf" abrt
+
+       # Drop empy dirs, handled by tmpfiles
+       rm -r "${ED}"/var/run/ || die
+}
+
+pkg_postinst() {
+       xdg_pkg_postinst
+       tmpfiles_process abrt.conf
+}

diff --git a/app-admin/abrt/files/abrt-2.14.6-glib270.patch 
b/app-admin/abrt/files/abrt-2.14.6-glib270.patch
new file mode 100644
index 00000000000..673a31e0a21
--- /dev/null
+++ b/app-admin/abrt/files/abrt-2.14.6-glib270.patch
@@ -0,0 +1,32 @@
+From a6297858575780b9ed3d14cc42983348924d6048 Mon Sep 17 00:00:00 2001
+From: Michal Srb <mic...@redhat.com>
+Date: Tue, 5 Oct 2021 15:53:48 +0200
+Subject: [PATCH] abrt-dbus: do not try to free session data twice
+
+We free session data in on_g_signal() function, which is also
+invoked when client disappears. Therefore, we don't need to register the
+same free function in g_bus_watch_name_on_connection().
+
+glib2 2.69.2 changed (fixed?) how/when g_bus_watch_name_on_connection()
+calls the provided free function and it uncovered this problem in abrt-dbus.
+
+See rhbz#1997315 for more details.
+
+Signed-off-by: Michal Srb <mic...@redhat.com>
+---
+ src/dbus/abrt_problems2_service.c | 2 +-
+ 2 files changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/dbus/abrt_problems2_service.c 
b/src/dbus/abrt_problems2_service.c
+index 8d543f443..004c7aeb2 100644
+--- a/src/dbus/abrt_problems2_service.c
++++ b/src/dbus/abrt_problems2_service.c
+@@ -571,7 +571,7 @@ static AbrtP2Object *session_object_register(AbrtP2Service 
*service,
+     obj->owner_watcher_id = g_bus_watch_name_on_connection(connection, caller,
+                                                            
G_BUS_NAME_WATCHER_FLAGS_NONE,
+                                                            NULL, 
abrt_p2_service_on_session_owner_vanished,
+-                                                           obj, 
(GDestroyNotify)abrt_p2_object_destroy);
++                                                           obj, NULL);
+ 
+     return obj;
+ }

diff --git a/app-admin/abrt/files/abrt-2.14.6-lazy-imports.patch 
b/app-admin/abrt/files/abrt-2.14.6-lazy-imports.patch
new file mode 100644
index 00000000000..5c892a8ecab
--- /dev/null
+++ b/app-admin/abrt/files/abrt-2.14.6-lazy-imports.patch
@@ -0,0 +1,57 @@
+From 4755f2171aa50a72d8ec03260c8cbc602263a6c0 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <m...@hroncok.cz>
+Date: Fri, 24 Sep 2021 17:48:07 +0200
+Subject: [PATCH] Use lazy imports in abrt_exception_handler3
+
+The abrt_exception_handler3 module is always imported when Python starts,
+but all the modules imported from it (except sys) are only used during crashes.
+
+Especially the systemd.journal import is really expensive.
+
+Fixes https://bugzilla.redhat.com/show_bug.cgi?id=2007664
+---
+ src/hooks/abrt_exception_handler3.py.in | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/src/hooks/abrt_exception_handler3.py.in 
b/src/hooks/abrt_exception_handler3.py.in
+index 89e2474b..0bc548e0 100644
+--- a/src/hooks/abrt_exception_handler3.py.in
++++ b/src/hooks/abrt_exception_handler3.py.in
+@@ -20,13 +20,15 @@
+ Module for the ABRT exception handling hook
+ """
+ 
++# Avoid importing anything but sys here, use lazy imports.
++# This file is imported on every Python startup,
++# all unused imports only increase the startup time and memory usage.
+ import sys
+-import os
+ 
+-from systemd import journal
+ 
+ def syslog(msg):
+     """Log message to system logger (journal)"""
++    from systemd import journal
+ 
+     journal.send(msg)
+ 
+@@ -68,6 +70,8 @@ def send(data):
+ 
+ 
+ def write_dump(tb_text, tb):
++    import os
++
+     if sys.argv[0][0] == "/":
+         executable = os.path.abspath(sys.argv[0])
+     else:
+@@ -118,6 +122,7 @@ def handle_exception(etype, value, tb):
+         sys.excepthook = sys.__excepthook__  # pylint: disable-msg=E1101
+ 
+         import errno
++        import os
+ 
+         # Ignore Ctrl-C
+         # SystemExit rhbz#636913 -> this exception is not an error
+-- 
+2.31.1
+

Reply via email to