Introduce abrt-addon-python3 package
Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
This commit is contained in:
parent
8949b9e40d
commit
69165ba9cc
187 changed files with 360360 additions and 0 deletions
296
1002-abrt-addon-python3-fixes.patch
Normal file
296
1002-abrt-addon-python3-fixes.patch
Normal file
|
|
@ -0,0 +1,296 @@
|
|||
From c511c8cf4289c1a561102cfa78ea2827c517991f Mon Sep 17 00:00:00 2001
|
||||
From: Matej Habrnal <mhabrnal@redhat.com>
|
||||
Date: Thu, 1 Jun 2017 09:59:53 +0200
|
||||
Subject: [PATCH] abrt addon python3 fixes
|
||||
|
||||
Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
|
||||
---
|
||||
configure.ac | 37 ++++++++++++++++++++++++
|
||||
doc/Makefile.am | 2 ++
|
||||
doc/abrt-python3.conf.txt | 24 ++++++++++++++++
|
||||
doc/python3_event.conf.5 | 1 +
|
||||
src/hooks/Makefile.am | 2 +-
|
||||
src/hooks/abrt_exception_handler3.py.in | 50 ++++++++++++++++++++-------------
|
||||
src/plugins/Makefile.am | 1 +
|
||||
src/plugins/python3_event.conf | 32 +++++++++++++++++++++
|
||||
8 files changed, 128 insertions(+), 21 deletions(-)
|
||||
create mode 100644 doc/abrt-python3.conf.txt
|
||||
create mode 100644 doc/python3_event.conf.5
|
||||
create mode 100644 src/plugins/python3_event.conf
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 02d7e0e..90316e6 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -92,6 +92,43 @@ PYTHON_LIBS=`python-config --libs 2> /dev/null`
|
||||
AC_SUBST(PYTHON_CFLAGS)
|
||||
AC_SUBST(PYTHON_LIBS)
|
||||
|
||||
+AM_CONDITIONAL(BUILD_PYTHON3, true)
|
||||
+AC_PATH_PROG([PYTHON3], [python3], [no])
|
||||
+[if test "$PYTHON3" == "no"]
|
||||
+[then]
|
||||
+ [echo "The python3 program was not found in the search path. Please ensure"]
|
||||
+ [echo "that it is installed and its directory is included in the search path or"]
|
||||
+ [echo "pass --without-python3 to ./configure."]
|
||||
+ [echo "Then run configure again before attempting to build ABRT."]
|
||||
+ [exit 1]
|
||||
+[fi]
|
||||
+
|
||||
+AC_PATH_PROG([PYTHON3_CONFIG], [python3-config], [no])
|
||||
+[if test "$PYTHON3_CONFIG" = "no"]
|
||||
+[then]
|
||||
+ [echo "The python3-config program was not found in the search path. Please ensure"]
|
||||
+ [echo "that it is installed and its directory is included in the search path or"]
|
||||
+ [echo "pass --without-python3 to ./configure."]
|
||||
+ [echo "Then run configure again before attempting to build ABRT."]
|
||||
+ [exit 1]
|
||||
+[fi]
|
||||
+
|
||||
+PYTHON3_CFLAGS=`python3-config --cflags 2> /dev/null`
|
||||
+PYTHON3_LIBS=`python3-config --libs 2> /dev/null`
|
||||
+
|
||||
+AC_SUBST([PYTHON3_PREFIX], ['${prefix}'])
|
||||
+AC_SUBST([PYTHON3_EXEC_PREFIX], ['${exec_prefix}'])
|
||||
+
|
||||
+PYTHON3_DIR=`$PYTHON3 -c "import distutils.sysconfig; \
|
||||
+ print(distutils.sysconfig.get_python_lib(0,0,prefix='$PYTHON3_PREFIX'))"`
|
||||
+PYTHON3_EXECDIR=`$PYTHON3 -c "import distutils.sysconfig; \
|
||||
+ print(distutils.sysconfig.get_python_lib(1,0,prefix='$PYTHON3_EXEC_PREFIX'))"`
|
||||
+
|
||||
+AC_SUBST(PYTHON3_CFLAGS)
|
||||
+AC_SUBST(PYTHON3_LIBS)
|
||||
+AC_SUBST(python3dir, $PYTHON3_DIR)
|
||||
+AC_SUBST(py3execdir, $PYTHON3_EXECDIR)
|
||||
+
|
||||
PKG_CHECK_MODULES([XICE], [ice])
|
||||
PKG_CHECK_MODULES([XSMP], [sm])
|
||||
PKG_CHECK_MODULES([GTK], [gtk+-3.0])
|
||||
diff --git a/doc/Makefile.am b/doc/Makefile.am
|
||||
index d95d9fb..ae05327 100644
|
||||
--- a/doc/Makefile.am
|
||||
+++ b/doc/Makefile.am
|
||||
@@ -46,6 +46,7 @@ MAN5_TXT += abrt.conf.txt
|
||||
MAN5_TXT += abrt-action-save-package-data.conf.txt
|
||||
MAN5_TXT += abrt-xorg.conf.txt
|
||||
MAN5_TXT += abrt-python.conf.txt
|
||||
+MAN5_TXT += abrt-python3.conf.txt
|
||||
MAN5_TXT += abrt-CCpp.conf.txt
|
||||
MAN5_TXT += abrt-oops.conf.txt
|
||||
MAN5_TXT += gpg_keys.conf.txt
|
||||
@@ -58,6 +59,7 @@ MAN5_PREFORMATTED += ccpp_retrace_event.conf.5
|
||||
MAN5_PREFORMATTED += gconf_event.conf.5
|
||||
MAN5_PREFORMATTED += koops_event.conf.5
|
||||
MAN5_PREFORMATTED += python_event.conf.5
|
||||
+MAN5_PREFORMATTED += python3_event.conf.5
|
||||
MAN5_PREFORMATTED += smart_event.conf.5
|
||||
MAN5_PREFORMATTED += vimrc_event.conf.5
|
||||
MAN5_PREFORMATTED += vmcore_event.conf.5
|
||||
diff --git a/doc/abrt-python3.conf.txt b/doc/abrt-python3.conf.txt
|
||||
new file mode 100644
|
||||
index 0000000..a8f3913
|
||||
--- /dev/null
|
||||
+++ b/doc/abrt-python3.conf.txt
|
||||
@@ -0,0 +1,24 @@
|
||||
+abrt-python3.conf(5)
|
||||
+===================
|
||||
+
|
||||
+NAME
|
||||
+----
|
||||
+abrt-python3.conf - Configuration file for ABRT's python 3 crash hook
|
||||
+
|
||||
+DESCRIPTION
|
||||
+-----------
|
||||
+Currently, only one item exists:
|
||||
+
|
||||
+RequireAbsolutePath = 'yes' / 'no' ...::
|
||||
+ If set to 'no', unhandled python 3 exceptions will be caught
|
||||
+ and saved even in scripts which are run without full path
|
||||
+ in sys.argv[0].
|
||||
+ Default is 'yes': do not save them.
|
||||
+
|
||||
+SEE ALSO
|
||||
+--------
|
||||
+abrt.conf(5)
|
||||
+
|
||||
+AUTHORS
|
||||
+-------
|
||||
+* ABRT team
|
||||
diff --git a/doc/python3_event.conf.5 b/doc/python3_event.conf.5
|
||||
new file mode 100644
|
||||
index 0000000..71c3fcb
|
||||
--- /dev/null
|
||||
+++ b/doc/python3_event.conf.5
|
||||
@@ -0,0 +1 @@
|
||||
+.so man5/report_event.conf.5
|
||||
diff --git a/src/hooks/Makefile.am b/src/hooks/Makefile.am
|
||||
index 85502a0..091e322 100644
|
||||
--- a/src/hooks/Makefile.am
|
||||
+++ b/src/hooks/Makefile.am
|
||||
@@ -7,7 +7,7 @@ pluginsconfdir = $(PLUGINS_CONF_DIR)
|
||||
dist_pluginsconf_DATA = \
|
||||
CCpp.conf \
|
||||
python.conf \
|
||||
- oops.conf
|
||||
+ oops.conf \
|
||||
python3.conf \
|
||||
vmcore.conf
|
||||
|
||||
diff --git a/src/hooks/abrt_exception_handler3.py.in b/src/hooks/abrt_exception_handler3.py.in
|
||||
index b20e6f5..e80a7ac 100644
|
||||
--- a/src/hooks/abrt_exception_handler3.py.in
|
||||
+++ b/src/hooks/abrt_exception_handler3.py.in
|
||||
@@ -27,16 +27,12 @@ import os
|
||||
def syslog(msg):
|
||||
"""Log message to system logger (journal)"""
|
||||
|
||||
- from systemd import journal
|
||||
-
|
||||
- # required as a workaround for rhbz#1023041
|
||||
- # where journal tries to log into non-existent log
|
||||
- # and fails (during %check in mock)
|
||||
- #
|
||||
- # try/except block should be removed when the bug is fixed
|
||||
+ import syslog
|
||||
|
||||
try:
|
||||
- journal.send(msg)
|
||||
+ syslog.openlog(ident="python3")
|
||||
+ syslog.syslog(syslog.LOG_ERR, msg)
|
||||
+ syslog.closelog()
|
||||
except:
|
||||
pass
|
||||
|
||||
@@ -51,11 +47,17 @@ def send(data):
|
||||
s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
|
||||
s.settimeout(5)
|
||||
s.connect(@VAR_RUN@ + "/abrt/abrt.socket")
|
||||
- pre = "POST / HTTP/1.1\r\n\r\ntype=Python\0"
|
||||
+ pre = "POST / HTTP/1.1\r\n\r\n"
|
||||
+ pre += "type=Python3\0"
|
||||
+ # Using analyzer=Python intentionally.
|
||||
+ # This causes the some workflow as for Python
|
||||
+ # will be used so we don't need to add a new
|
||||
+ # workflow for Python 3 into libreport due to added
|
||||
+ # abrt-addon-python3 package to epel7
|
||||
+ pre += "analyzer=Python\0"
|
||||
s.sendall(pre.encode())
|
||||
s.sendall(data.encode())
|
||||
|
||||
- s.sendall("\0".encode())
|
||||
s.shutdown(socket.SHUT_WR)
|
||||
|
||||
while True:
|
||||
@@ -89,9 +91,11 @@ def write_dump(tb_text, tb):
|
||||
data += "reason={0}\0".format(tb_text.splitlines()[0])
|
||||
data += "backtrace={0}\0".format(tb_text)
|
||||
|
||||
+ # add environ element
|
||||
data += "environ="
|
||||
- for k, v in os.environ.items():
|
||||
- data += "{0}={1}\n".format(k, v)
|
||||
+ for k,v in os.environ.items():
|
||||
+ data += "{0}={1}\n".format(k,v)
|
||||
+ data += "\0"
|
||||
|
||||
response = send(data)
|
||||
parts = response.split()
|
||||
@@ -102,14 +106,20 @@ def write_dump(tb_text, tb):
|
||||
syslog("error sending data to ABRT daemon: {0}".format(response))
|
||||
|
||||
|
||||
-def conf_enabled(var_name):
|
||||
+def require_abs_path():
|
||||
+ """
|
||||
+ Return True if absolute path requirement is enabled
|
||||
+ in configuration
|
||||
+ """
|
||||
+
|
||||
import problem
|
||||
+
|
||||
try:
|
||||
conf = problem.load_plugin_conf_file("python3.conf")
|
||||
- except:
|
||||
- return -1
|
||||
- else:
|
||||
- conf.get(var_name, -1)
|
||||
+ except OsError:
|
||||
+ return False
|
||||
+
|
||||
+ return conf.get("RequireAbsolutePath", "yes") == "yes"
|
||||
|
||||
|
||||
def handle_exception(etype, value, tb):
|
||||
@@ -158,7 +168,7 @@ def handle_exception(etype, value, tb):
|
||||
.format(sys.argv[0]))
|
||||
|
||||
if sys.argv[0][0] != "/":
|
||||
- if conf_enabled("RequireAbsolutePath") != 0:
|
||||
+ if require_abs_path():
|
||||
raise Exception
|
||||
|
||||
import traceback
|
||||
@@ -167,8 +177,8 @@ def handle_exception(etype, value, tb):
|
||||
|
||||
if tb is not None and etype != IndentationError:
|
||||
tblast = traceback.extract_tb(tb, limit=None)
|
||||
- if len(tblast):
|
||||
- tblast = tblast[len(tblast) - 1]
|
||||
+ if tblast:
|
||||
+ tblast = tuple(tblast[-1])
|
||||
extxt = traceback.format_exception_only(etype, value)
|
||||
if tblast and len(tblast) > 3:
|
||||
ll = []
|
||||
diff --git a/src/plugins/Makefile.am b/src/plugins/Makefile.am
|
||||
index 6dde4b7..557d218 100644
|
||||
--- a/src/plugins/Makefile.am
|
||||
+++ b/src/plugins/Makefile.am
|
||||
@@ -65,6 +65,7 @@ dist_eventsconf_DATA = \
|
||||
xorg_event.conf \
|
||||
vmcore_event.conf \
|
||||
python_event.conf \
|
||||
+ python3_event.conf \
|
||||
smart_event.conf \
|
||||
gconf_event.conf \
|
||||
vimrc_event.conf
|
||||
diff --git a/src/plugins/python3_event.conf b/src/plugins/python3_event.conf
|
||||
new file mode 100644
|
||||
index 0000000..9d1e955
|
||||
--- /dev/null
|
||||
+++ b/src/plugins/python3_event.conf
|
||||
@@ -0,0 +1,32 @@
|
||||
+EVENT=post-create type=Python3 remote!=1
|
||||
+ # (For now this has no effect since python hook doesn't save environ)
|
||||
+ if grep -q ^ABRT_IGNORE_ALL=1 environ \
|
||||
+ || grep -q ^ABRT_IGNORE_PYTHON=1 environ \
|
||||
+ ; then
|
||||
+ echo "ABRT_IGNORE variable is 1 - not saving the crash"
|
||||
+ # abrtd will delete the problem directory when we exit nonzero:
|
||||
+ exit 1
|
||||
+ fi
|
||||
+ abrt-action-analyze-python
|
||||
+
|
||||
+EVENT=report_Bugzilla type=Python3 component!=anaconda
|
||||
+ test -f component || abrt-action-save-package-data
|
||||
+ reporter-bugzilla -b \
|
||||
+ -c /etc/libreport/plugins/bugzilla.conf \
|
||||
+ -F /etc/libreport/plugins/bugzilla_format.conf \
|
||||
+ -A /etc/libreport/plugins/bugzilla_formatdup.conf
|
||||
+
|
||||
+# Send micro report
|
||||
+EVENT=report_uReport type=Python3
|
||||
+ /usr/libexec/abrt-action-ureport
|
||||
+
|
||||
+# update ABRT database after successful report to bugzilla
|
||||
+EVENT=post_report type=Python3
|
||||
+ reporter-ureport -A -B
|
||||
+
|
||||
+# Reporting of python exceptions
|
||||
+EVENT=report-gui type=Python3 component!=anaconda
|
||||
+ report-gtk -- "$DUMP_DIR"
|
||||
+
|
||||
+EVENT=report-cli type=Python3 component!=anaconda
|
||||
+ report-cli -- "$DUMP_DIR"
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
Reference in a new issue