On 09/04/2012 03:48 PM, Jakub Filak wrote:
Signed-off-by: Jakub Filak <jfilak(a)redhat.com>
---
abrt.spec.in | 1 +
src/plugins/Makefile.am | 6 ++++--
src/plugins/abrt-action-analyze-crash | 15 +++++++++++++++
src/plugins/ccpp_retrace_event.conf | 2 +-
4 files changed, 21 insertions(+), 3 deletions(-)
create mode 100755 src/plugins/abrt-action-analyze-crash
diff --git a/abrt.spec.in b/abrt.spec.in
index a1c00ba..93689f3 100644
--- a/abrt.spec.in
+++ b/abrt.spec.in
@@ -535,6 +535,7 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null ||
:
%{_bindir}/abrt-action-generate-core-backtrace
%{_bindir}/abrt-action-analyze-backtrace
%{_bindir}/abrt-action-list-dsos
+%{_bindir}/abrt-action-analyze-crash
%{_bindir}/abrt-dedup-client
%{_sbindir}/abrt-install-ccpp-hook
%{_sysconfdir}/libreport/events.d/ccpp_event.conf
diff --git a/src/plugins/Makefile.am b/src/plugins/Makefile.am
index 675b1a7..15223ef 100644
--- a/src/plugins/Makefile.am
+++ b/src/plugins/Makefile.am
@@ -4,7 +4,8 @@ bin_SCRIPTS = \
abrt-action-install-debuginfo \
abrt-action-analyze-core \
abrt-action-analyze-vmcore \
- abrt-action-list-dsos
+ abrt-action-list-dsos \
+ abrt-action-analyze-crash
bin_PROGRAMS = \
abrt-watch-log \
@@ -73,7 +74,8 @@ EXTRA_DIST = \
analyze_VMcore.xml.in \
abrt-action-analyze-vmcore \
https-utils.h \
- post_report.xml.in
+ post_report.xml.in \
+ abrt-action-analyze-crash
abrt_watch_log_SOURCES = \
abrt-watch-log.c
diff --git a/src/plugins/abrt-action-analyze-crash
b/src/plugins/abrt-action-analyze-crash
new file mode 100755
index 0000000..1acca6b
--- /dev/null
+++ b/src/plugins/abrt-action-analyze-crash
@@ -0,0 +1,15 @@
+#!/bin/sh
+# For event handlers
+# Tries to retrace over retrace server
+# If retrace server fails asks user for an approval to run retracing locally
+
+abrt-retrace-client batch --dir "$DUMP_DIR" --status-delay 10 || (
+ echo `gettext "ASK_YES_NO Do you want to perform local analysis?"`
&& read answ
+ if test x"$answ" == x"yes"; then
'==' is a bashism. Better to use '='.
+ abrt-action-analyze-core --core=coredump -o build_ids
&&
+ /usr/libexec/abrt-action-install-debuginfo-to-abrt-cache --size_mb=4096
&&
+ abrt-action-generate-backtrace
+ else
+ exit 1
+ fi
+)
diff --git a/src/plugins/ccpp_retrace_event.conf b/src/plugins/ccpp_retrace_event.conf
index 60e53d7..3cd5450 100644
--- a/src/plugins/ccpp_retrace_event.conf
+++ b/src/plugins/ccpp_retrace_event.conf
@@ -1,5 +1,5 @@
EVENT=analyze_RetraceServer analyzer=CCpp
- abrt-retrace-client batch --dir "$DUMP_DIR" --status-delay 10
&&
+ abrt-action-analyze-crash &&
abrt-action-analyze-backtrace &&
(
bug_id=$(reporter-bugzilla -h `cat duphash`) &&
Adding yet another script feels... not very pleasant to me.
I think just putting the script into the ccpp_retrace_event.conf
is slightly better:
EVENT=analyze_RetraceServer analyzer=CCpp
abrt-retrace-client batch --dir "$DUMP_DIR" --status-delay 10
if test $? != 0; then
(*) echo "ASK_YES_NO" "`gettext "Do you want to perform
analysis locally?"`"
read answ
test x"$answ" = x"yes" || exit 1
#
# Similar/same as analyze_LocalGDB:
#
abrt-action-analyze-core --core=coredump -o build_ids &&
/usr/libexec/abrt-action-install-debuginfo-to-abrt-cache --size_mb=4096
&&
abrt-action-generate-backtrace
fi &&
abrt-action-analyze-backtrace &&
...
(*)
1. ASK_YES_NO should not be localized.
2. `cmd` needs to be quoted: "`cmd`", to prevent multi-word expansion.
(In this case it is not strictly necessary, but a good practice.)