On 09/04/2012 03:48 PM, Jakub Filak wrote:
> Signed-off-by: Jakub Filak <[email protected]>
> ---
> 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.)