summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPacho Ramos <pacho@gentoo.org>2021-11-06 09:05:02 +0100
committerPacho Ramos <pacho@gentoo.org>2021-11-06 09:05:02 +0100
commite4f951e4f7f7e2e158ef2b3617a64a60b06fadbf (patch)
treeacb56c17443779d029ca2b68ee58999ec5d2340d /app-admin
parentapp-emulation/libvirt: enable py3.10 (diff)
downloadgentoo-e4f951e4f7f7e2e158ef2b3617a64a60b06fadbf.tar.gz
gentoo-e4f951e4f7f7e2e158ef2b3617a64a60b06fadbf.tar.bz2
gentoo-e4f951e4f7f7e2e158ef2b3617a64a60b06fadbf.zip
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@gentoo.org>
Diffstat (limited to 'app-admin')
-rw-r--r--app-admin/abrt/abrt-2.14.6-r1.ebuild134
-rw-r--r--app-admin/abrt/files/abrt-2.14.6-glib270.patch32
-rw-r--r--app-admin/abrt/files/abrt-2.14.6-lazy-imports.patch57
3 files changed, 223 insertions, 0 deletions
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 000000000000..c5c616459b44
--- /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 000000000000..673a31e0a212
--- /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 <michal@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 <michal@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 000000000000..5c892a8ecab8
--- /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?= <miro@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
+