[abrt/f20] abrt 2.2.2-2

Matej Habrnal mhabrnal at fedoraproject.org
Mon Feb 16 13:18:14 UTC 2015


commit 0b651cb081b5b0345e889f0790b2b8917a17be62
Author: Matej Habrnal <mhabrnal at redhat.com>
Date:   Mon Feb 16 14:13:16 2015 +0100

    abrt 2.2.2-2
    
    Signed-off-by: Matej Habrnal <mhabrnal at redhat.com>

 ...thon-support-exceptions-without-traceback.patch |   40 +++++
 0003-xml-fix-a-typo-in-analyze_CCpp.patch          |   28 +++
 ...-fix-the-initialization-in-python-scripts.patch |  185 ++++++++++++++++++++
 ...upport-handling-crashes-in-lxc-containers.patch |   35 ++++
 ...a-use-after-free-bug-uncoverd-by-coverity.patch |   34 ++++
 ...-p-d-add-firefox-on-the-package-blacklist.patch |   42 +++++
 0008-a-h-event-don-t-spam-system-logs.patch        |   39 ++++
 ...-s-p-data-reduce-amount-of-error-messages.patch |   53 ++++++
 ...-t-ignore-errors-in-verbose-logging-modes.patch |   32 ++++
 ...-logging-less-log-messages-for-duplicates.patch |   60 +++++++
 ...etrace-respect-Bugzilla-event-preferences.patch |   26 +++
 ...-cli-make-consistent-commands-in-abrt-cli.patch |  115 ++++++++++++
 ...li-robustize-abrt-console-notification.sh.patch |   70 ++++++++
 0016-retrace-client-humanize-sizes.patch           |   98 +++++++++++
 0017-dbus-fixed-abrt-dbus-memory-leaks.patch       |   47 +++++
 ...-applet-confirm-ignoring-of-notifications.patch |   58 ++++++
 ...table-syntax-in-abrt-console-notification.patch |   49 +++++
 ...-notifications-use-return-instead-of-exit.patch |   48 +++++
 ...t-don-t-show-duphash-instead-of-component.patch |   28 +++
 ...notifications-skip-non-interactive-shells.patch |   30 +++
 0023-make-ABRT-quieter.patch                       |  102 +++++++++++
 ...re-writable-dump-directory-before-reporti.patch |  128 ++++++++++++++
 0026-Remove-garbage-from-ccpp_event.conf.patch     |   26 +++
 ...-load-the-configuration-from-correct-file.patch |   31 ++++
 0028-vmcore-catch-IOErrors-and-OSErrors.patch      |   41 +++++
 ...ove-original-vmcore-file-in-the-last-step.patch |   43 +++++
 0030-console-notifications-add-timeout.patch       |   25 +++
 ...-unbounded-amounts-of-data-when-invoking-.patch |   29 +++
 ...rnalctl-invocations-replace-grep-tail-pip.patch |   29 +++
 0033-applet-Fix-typo-in-cuurent.patch              |   25 +++
 0034-applet-Fix-typo-in-Oterwise.patch             |   34 ++++
 abrt.spec                                          |   50 +++++-
 32 files changed, 1677 insertions(+), 3 deletions(-)
---
diff --git a/0002-python-support-exceptions-without-traceback.patch b/0002-python-support-exceptions-without-traceback.patch
new file mode 100644
index 0000000..3af7b30
--- /dev/null
+++ b/0002-python-support-exceptions-without-traceback.patch
@@ -0,0 +1,40 @@
+From d402628b64b0102803481f53e9e88d63ded56c08 Mon Sep 17 00:00:00 2001
+From: Jakub Filak <jfilak at redhat.com>
+Date: Wed, 9 Jul 2014 17:55:36 +0200
+Subject: [PATCH] python: support exceptions without traceback
+
+e.g. SyntaxError (python-2.7.5-13.fc20, python-2.7.7-2.fc21)
+
+Signed-off-by: Jakub Filak <jfilak at redhat.com>
+---
+ src/hooks/abrt_exception_handler.py.in | 14 ++++++++------
+ 1 file changed, 8 insertions(+), 6 deletions(-)
+
+diff --git a/src/hooks/abrt_exception_handler.py.in b/src/hooks/abrt_exception_handler.py.in
+index cb32e14..fa4f34f 100644
+--- a/src/hooks/abrt_exception_handler.py.in
++++ b/src/hooks/abrt_exception_handler.py.in
+@@ -55,12 +55,14 @@ def write_dump(tb_text, tb):
+         executable = sys.argv[0]
+ 
+     dso_list = None
+-    try:
+-        import rpm
+-        dso_list = get_dso_list(tb)
+-    except ImportError as imperr:
+-        syslog("RPM module not available, cannot query RPM db for package "\
+-               "names")
++    # Trace back is None in case of SyntaxError exception.
++    if tb:
++        try:
++            import rpm
++            dso_list = get_dso_list(tb)
++        except ImportError as imperr:
++            syslog("RPM module not available, cannot query RPM db for package "\
++                   "names")
+ 
+     # Open ABRT daemon's socket and write data to it
+     try:
+-- 
+1.9.3
+
diff --git a/0003-xml-fix-a-typo-in-analyze_CCpp.patch b/0003-xml-fix-a-typo-in-analyze_CCpp.patch
new file mode 100644
index 0000000..5a58d9e
--- /dev/null
+++ b/0003-xml-fix-a-typo-in-analyze_CCpp.patch
@@ -0,0 +1,28 @@
+From fb44241a05dd55bbb07041f0f07671c68b1e88df Mon Sep 17 00:00:00 2001
+From: Jakub Filak <jfilak at redhat.com>
+Date: Fri, 18 Jul 2014 13:50:42 +0200
+Subject: [PATCH] xml: fix a typo in analyze_CCpp
+
+Resolves rhbz#1120767
+
+Signed-off-by: Jakub Filak <jfilak at redhat.com>
+---
+ src/plugins/analyze_CCpp.xml.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/plugins/analyze_CCpp.xml.in b/src/plugins/analyze_CCpp.xml.in
+index bdd81eb..c3da3a3 100644
+--- a/src/plugins/analyze_CCpp.xml.in
++++ b/src/plugins/analyze_CCpp.xml.in
+@@ -2,7 +2,7 @@
+ <event>
+     <name>Analyze C/C++ Crash</name>
+     <_description>Send core dump to remote retrace server for analysis or perform local analysis if the remote analysis fails</_description>
+-    <_long-description>Uploads coredump to a server, which generates backtrace and returns it. If user doens't want to upload his coredump to anywhere the event performs local analysis. Local analysis is run event if remote analysis fails.
++    <_long-description>Uploads coredump to a server, which generates backtrace and returns it. If user doesn't want to upload his coredump to anywhere the event performs local analysis. Local analysis is run event if remote analysis fails.
+     Pros: no need for debuginfo downloads. Retrace server's database of debuginfos is more complete. Retrace server may generate better backtraces.
+     Cons: coredump you upload contains all the data from the crashed program, including your private data, if any.
+     </_long-description>
+-- 
+1.9.3
+
diff --git a/0004-gettext-fix-the-initialization-in-python-scripts.patch b/0004-gettext-fix-the-initialization-in-python-scripts.patch
new file mode 100644
index 0000000..85e4cae
--- /dev/null
+++ b/0004-gettext-fix-the-initialization-in-python-scripts.patch
@@ -0,0 +1,185 @@
+From 251153d32f9007af4960463121110b3b0b88fc8d Mon Sep 17 00:00:00 2001
+From: Jakub Filak <jfilak at redhat.com>
+Date: Tue, 22 Jul 2014 16:13:25 +0200
+Subject: [PATCH] gettext: fix the initialization in python scripts
+
+ABRT scripts cannot import and use _ symbol from reportclient because
+reporclient's _ is bound to 'libreport' package.
+
+Related to rhbz#1087880
+
+Signed-off-by: Jakub Filak <jfilak at redhat.com>
+---
+ po/POTFILES.in                               |  2 ++
+ src/daemon/abrt-handle-upload.in             | 26 ++++++++++++++++++++++++--
+ src/plugins/abrt-action-analyze-vmcore.in    | 25 ++++++++++++++++++++++++-
+ src/plugins/abrt-action-install-debuginfo.in |  2 +-
+ src/plugins/abrt-action-ureport              | 25 +++++++++++++++++++++++--
+ 5 files changed, 74 insertions(+), 6 deletions(-)
+
+diff --git a/po/POTFILES.in b/po/POTFILES.in
+index ff9b97a..e3f917b 100644
+--- a/po/POTFILES.in
++++ b/po/POTFILES.in
+@@ -14,6 +14,7 @@ src/daemon/abrtd.c
+ src/daemon/abrt-handle-event.c
+ src/daemon/abrt-upload-watch.c
+ src/daemon/abrt-auto-reporting.c
++src/daemon/abrt-handle-upload.in
+ src/lib/abrt_conf.c
+ src/lib/hooklib.c
+ src/lib/problem_api.c
+@@ -32,6 +33,7 @@ src/plugins/abrt-action-generate-core-backtrace.c
+ src/plugins/abrt-action-install-debuginfo.in
+ src/plugins/abrt-action-perform-ccpp-analysis.in
+ src/plugins/abrt-action-trim-files.c
++src/plugins/abrt-action-ureport
+ src/plugins/abrt-gdb-exploitable
+ src/plugins/abrt-watch-log.c
+ src/plugins/abrt-dump-oops.c
+diff --git a/src/daemon/abrt-handle-upload.in b/src/daemon/abrt-handle-upload.in
+index 084170e..dbc4534 100755
+--- a/src/daemon/abrt-handle-upload.in
++++ b/src/daemon/abrt-handle-upload.in
+@@ -11,7 +11,29 @@ import tempfile
+ import shutil
+ import datetime
+ 
+-from reportclient import _, set_verbosity, error_msg_and_die, error_msg, log
++from reportclient import set_verbosity, error_msg_and_die, error_msg, log
++
++GETTEXT_PROGNAME = "abrt"
++import locale
++import gettext
++
++_ = lambda x: gettext.lgettext(x)
++
++def init_gettext():
++    try:
++        locale.setlocale(locale.LC_ALL, "")
++    except locale.Error:
++        os.environ['LC_ALL'] = 'C'
++        locale.setlocale(locale.LC_ALL, "")
++    # Defeat "AttributeError: 'module' object has no attribute 'nl_langinfo'"
++    try:
++        gettext.bind_textdomain_codeset(GETTEXT_PROGNAME, locale.nl_langinfo(locale.CODESET))
++    except AttributeError:
++        pass
++    gettext.bindtextdomain(GETTEXT_PROGNAME, '/usr/share/locale')
++    gettext.textdomain(GETTEXT_PROGNAME)
++
++
+ import problem
+ 
+ def write_str_to(filename, s):
+@@ -32,7 +54,7 @@ if __name__ == "__main__":
+         sys.exit(die_exitcode)
+ 
+     # localization
+-    #init_gettext() - done by reportclient module init
++    init_gettext()
+ 
+     verbose = 0
+     ABRT_VERBOSE = os.getenv("ABRT_VERBOSE")
+diff --git a/src/plugins/abrt-action-analyze-vmcore.in b/src/plugins/abrt-action-analyze-vmcore.in
+index 11ad846..c08af80 100644
+--- a/src/plugins/abrt-action-analyze-vmcore.in
++++ b/src/plugins/abrt-action-analyze-vmcore.in
+@@ -8,7 +8,28 @@ import sys
+ import getopt
+ from subprocess import Popen, PIPE
+ 
+-from reportclient import _, verbose, set_verbosity, error_msg_and_die, error_msg
++from reportclient import verbose, set_verbosity, error_msg_and_die, error_msg
++
++GETTEXT_PROGNAME = "abrt"
++import locale
++import gettext
++
++_ = lambda x: gettext.lgettext(x)
++
++def init_gettext():
++    try:
++        locale.setlocale(locale.LC_ALL, "")
++    except locale.Error:
++        os.environ['LC_ALL'] = 'C'
++        locale.setlocale(locale.LC_ALL, "")
++    # Defeat "AttributeError: 'module' object has no attribute 'nl_langinfo'"
++    try:
++        gettext.bind_textdomain_codeset(GETTEXT_PROGNAME, locale.nl_langinfo(locale.CODESET))
++    except AttributeError:
++        pass
++    gettext.bindtextdomain(GETTEXT_PROGNAME, '/usr/share/locale')
++    gettext.textdomain(GETTEXT_PROGNAME)
++
+ 
+ PROGNAME = "abrt-action-analyze-vmcore"
+ 
+@@ -26,6 +47,8 @@ if __name__ == "__main__":
+     tmpdir = ""
+     vmcore = ""
+ 
++    init_gettext()
++
+     help_text = _("Usage: {0} [-v[v]] [--core=VMCORE]").format(PROGNAME)
+     try:
+         opts, args = getopt.getopt(sys.argv[1:], "hvd", ["help", "core="])
+diff --git a/src/plugins/abrt-action-install-debuginfo.in b/src/plugins/abrt-action-install-debuginfo.in
+index 5fd3110..f46d1b2 100644
+--- a/src/plugins/abrt-action-install-debuginfo.in
++++ b/src/plugins/abrt-action-install-debuginfo.in
+@@ -11,7 +11,7 @@ import errno
+ import getopt
+ import reportclient
+ from subprocess import Popen, PIPE
+-from reportclient import _, verbose, log, log1, log2, set_verbosity, error_msg_and_die, error_msg
++from reportclient import verbose, log, log1, log2, set_verbosity, error_msg_and_die, error_msg
+ import time
+ from reportclient.debuginfo import DebugInfoDownload, filter_installed_debuginfos, build_ids_to_path, clean_up
+ import problem
+diff --git a/src/plugins/abrt-action-ureport b/src/plugins/abrt-action-ureport
+index 0f6de03..1abe7b3 100755
+--- a/src/plugins/abrt-action-ureport
++++ b/src/plugins/abrt-action-ureport
+@@ -10,7 +10,28 @@ import os
+ import getopt
+ 
+ from report import dd_opendir, DD_FAIL_QUIETLY_ENOENT, run_event_state
+-from reportclient import _, set_verbosity, error_msg_and_die, error_msg, log1, log
++from reportclient import set_verbosity, error_msg_and_die, error_msg, log1, log
++
++GETTEXT_PROGNAME = "abrt"
++import locale
++import gettext
++
++_ = lambda x: gettext.lgettext(x)
++
++def init_gettext():
++    try:
++        locale.setlocale(locale.LC_ALL, "")
++    except locale.Error:
++        os.environ['LC_ALL'] = 'C'
++        locale.setlocale(locale.LC_ALL, "")
++    # Defeat "AttributeError: 'module' object has no attribute 'nl_langinfo'"
++    try:
++        gettext.bind_textdomain_codeset(GETTEXT_PROGNAME, locale.nl_langinfo(locale.CODESET))
++    except AttributeError:
++        pass
++    gettext.bindtextdomain(GETTEXT_PROGNAME, '/usr/share/locale')
++    gettext.textdomain(GETTEXT_PROGNAME)
++
+ 
+ def spawn_and_wait(prog):
+     try:
+@@ -45,7 +66,7 @@ def run_event(event_name, dump_dir_name):
+ 
+ if __name__ == "__main__":
+     # localization
+-    #init_gettext() - done by reportclient module init
++    init_gettext()
+ 
+     verbose = 0
+     ABRT_VERBOSE = os.getenv("ABRT_VERBOSE")
+-- 
+1.9.3
+
diff --git a/0005-Revert-Support-handling-crashes-in-lxc-containers.patch b/0005-Revert-Support-handling-crashes-in-lxc-containers.patch
new file mode 100644
index 0000000..a4761e1
--- /dev/null
+++ b/0005-Revert-Support-handling-crashes-in-lxc-containers.patch
@@ -0,0 +1,35 @@
+From 093ac1dc74fd848fb45959f4b03bca01a054e7c0 Mon Sep 17 00:00:00 2001
+From: Jakub Filak <jfilak at redhat.com>
+Date: Tue, 12 Aug 2014 14:13:25 +0200
+Subject: [PATCH] Revert "Support handling crashes in lxc containers"
+
+This reverts commit 4ab9fbe1a6b7889a0cd59b1406e8789d52171fd2.
+
+Michal Toman <mtoman at redhat.com> (2014-07-16):
+
+While this adds support for containers that have ABRT installed inside
+(unfortunately I am not aware of any at this moment), it completely
+breaks the behavior for standard chroots that people are actually using
+(especially koji + mock).
+
+Signed-off-by: Jakub Filak <jfilak at redhat.com>
+---
+ src/hooks/abrt-install-ccpp-hook.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/hooks/abrt-install-ccpp-hook.in b/src/hooks/abrt-install-ccpp-hook.in
+index 3939b15..aa01231 100755
+--- a/src/hooks/abrt-install-ccpp-hook.in
++++ b/src/hooks/abrt-install-ccpp-hook.in
+@@ -9,7 +9,7 @@ verbose=false
+ PATTERN_FILE="/proc/sys/kernel/core_pattern"
+ SAVED_PATTERN_DIR="@VAR_RUN@/abrt"
+ SAVED_PATTERN_FILE="@VAR_RUN@/abrt/saved_core_pattern"
+-HOOK_BIN="/usr/sbin/chroot /proc/%P/root @libexecdir@/abrt-hook-ccpp"
++HOOK_BIN="@libexecdir@/abrt-hook-ccpp"
+ # Must match percent_specifiers[] order in abrt-hook-ccpp.c:
+ PATTERN="|$HOOK_BIN %s %c %p %u %g %t %e"
+ # Same, but with bogus "executable name" parameter
+-- 
+1.9.3
+
diff --git a/0006-koops-fix-a-use-after-free-bug-uncoverd-by-coverity.patch b/0006-koops-fix-a-use-after-free-bug-uncoverd-by-coverity.patch
new file mode 100644
index 0000000..ba7ce87
--- /dev/null
+++ b/0006-koops-fix-a-use-after-free-bug-uncoverd-by-coverity.patch
@@ -0,0 +1,34 @@
+From 9ada4ca561c6f81600f6002d7c672ce9959bd78f Mon Sep 17 00:00:00 2001
+From: Jakub Filak <jfilak at redhat.com>
+Date: Fri, 1 Aug 2014 16:13:35 +0200
+Subject: [PATCH] koops: fix a use-after-free bug uncoverd by coverity
+
+Signed-off-by: Jakub Filak <jfilak at redhat.com>
+---
+ src/plugins/abrt-action-analyze-oops.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/plugins/abrt-action-analyze-oops.c b/src/plugins/abrt-action-analyze-oops.c
+index 1e94e43..f74ebcb 100644
+--- a/src/plugins/abrt-action-analyze-oops.c
++++ b/src/plugins/abrt-action-analyze-oops.c
+@@ -62,7 +62,6 @@ int main(int argc, char **argv)
+     char *oops = dd_load_text(dd, FILENAME_BACKTRACE);
+     char hash_str[SHA1_RESULT_LEN*2 + 1];
+     int bad = koops_hash_str(hash_str, oops);
+-    free(oops);
+     if (bad)
+     {
+         error_msg("Can't find a meaningful backtrace for hashing in '%s'", dump_dir_name);
+@@ -96,6 +95,8 @@ int main(int argc, char **argv)
+         }
+     }
+ 
++    free(oops);
++
+     if (!bad)
+     {
+         dd_save_text(dd, FILENAME_UUID, hash_str);
+-- 
+1.9.3
+
diff --git a/0007-a-a-s-p-d-add-firefox-on-the-package-blacklist.patch b/0007-a-a-s-p-d-add-firefox-on-the-package-blacklist.patch
new file mode 100644
index 0000000..a8bb2c2
--- /dev/null
+++ b/0007-a-a-s-p-d-add-firefox-on-the-package-blacklist.patch
@@ -0,0 +1,42 @@
+From 9f9c0e5ad48f8ff3dd719f76903b38fe3f86c689 Mon Sep 17 00:00:00 2001
+From: Jakub Filak <jfilak at redhat.com>
+Date: Tue, 26 Aug 2014 20:37:34 +0200
+Subject: [PATCH] a-a-s-p-d: add firefox on the package blacklist
+
+And drop the path to plugins-container from the path blacklist because:
+- the path belongs to firefox package
+- the path is invalid, the correct path is:
+  /usr/lib(64)/firefox/plugin-container
+
+Resolves rhbz#1132018
+
+Signed-off-by: Jakub Filak <jfilak at redhat.com>
+---
+ src/daemon/abrt-action-save-package-data.conf | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/daemon/abrt-action-save-package-data.conf b/src/daemon/abrt-action-save-package-data.conf
+index 3d35bb6..cac3c7c 100644
+--- a/src/daemon/abrt-action-save-package-data.conf
++++ b/src/daemon/abrt-action-save-package-data.conf
+@@ -7,7 +7,7 @@ OpenGPGCheck = yes
+ 
+ # Blacklisted packages
+ #
+-BlackList = nspluginwrapper, valgrind, strace, mono-core
++BlackList = nspluginwrapper, valgrind, strace, mono-core, firefox
+ 
+ # Process crashes in executables which do not belong to any package?
+ #
+@@ -15,7 +15,7 @@ ProcessUnpackaged = no
+ 
+ # Blacklisted executable paths (shell patterns)
+ #
+-BlackListedPaths = /usr/share/doc/*, */example*, /usr/bin/nspluginviewer, /usr/lib/xulrunner-*/plugin-container
++BlackListedPaths = /usr/share/doc/*, */example*, /usr/bin/nspluginviewer
+ 
+ # interpreters names
+ Interpreters = python2, python2.7, python, python3, python3.3, perl, perl5.16.2
+-- 
+1.9.3
+
diff --git a/0008-a-h-event-don-t-spam-system-logs.patch b/0008-a-h-event-don-t-spam-system-logs.patch
new file mode 100644
index 0000000..ec966e8
--- /dev/null
+++ b/0008-a-h-event-don-t-spam-system-logs.patch
@@ -0,0 +1,39 @@
+From ebf1fc2fc34a182fbe0cb4a99d4a07f1e72925dd Mon Sep 17 00:00:00 2001
+From: Jakub Filak <jfilak at redhat.com>
+Date: Tue, 26 Aug 2014 23:57:46 +0200
+Subject: [PATCH] a-h-event: don't spam system logs
+
+Don't print messages about invalid dump directories so many times.
+Every dump directory has at leas 4 post-create events and after end of
+each of these events abrt-handle-event tries to find duplicates. It
+means 4x opens every dump directory, so it prints 4 lines for a single
+invalid dump directory.
+
+This patch dissables the error messages in the default log mode.
+
+Related to rhbz#1133674
+
+Signed-off-by: Jakub Filak <jfilak at redhat.com>
+---
+ src/daemon/abrt-handle-event.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/daemon/abrt-handle-event.c b/src/daemon/abrt-handle-event.c
+index 7100171..a65f86e 100644
+--- a/src/daemon/abrt-handle-event.c
++++ b/src/daemon/abrt-handle-event.c
+@@ -282,7 +282,11 @@ static int is_crash_a_dup(const char *dump_dir_name, void *param)
+         if (strcmp(dump_dir_name, dump_dir_name2) == 0)
+             goto next; /* we are never a dup of ourself */
+ 
++        int sv_logmode = logmode;
++        /* Silently ignore any error in the silent log level. */
++        logmode = g_verbose == 0 ? 0 : sv_logmode;
+         dd = dd_opendir(dump_dir_name2, /*flags:*/ DD_FAIL_QUIETLY_ENOENT | DD_OPEN_READONLY);
++        logmode = sv_logmode;
+         if (!dd)
+             goto next;
+ 
+-- 
+1.9.3
+
diff --git a/0009-a-a-s-p-data-reduce-amount-of-error-messages.patch b/0009-a-a-s-p-data-reduce-amount-of-error-messages.patch
new file mode 100644
index 0000000..184ec39
--- /dev/null
+++ b/0009-a-a-s-p-data-reduce-amount-of-error-messages.patch
@@ -0,0 +1,53 @@
+From 2d29ecb0067dad7f5abf7b469dde84484b1a79ed Mon Sep 17 00:00:00 2001
+From: Jakub Filak <jfilak at redhat.com>
+Date: Wed, 27 Aug 2014 08:45:24 +0200
+Subject: [PATCH] a-a-s-p-data: reduce amount of error messages
+
+Read each GPG key only once. The GPG key dirs may contain many symlinks
+and if their target cannot be read, then we print an error message for
+every symlink pointing to the unreadable file. What's worse, the error
+messages show a path to the target, so users see several identical
+messages in the system logs.
+
+Related to rhbz#1133674
+
+Signed-off-by: Jakub Filak <jfilak at redhat.com>
+---
+ src/daemon/abrt-action-save-package-data.c | 16 +++++++++++-----
+ 1 file changed, 11 insertions(+), 5 deletions(-)
+
+diff --git a/src/daemon/abrt-action-save-package-data.c b/src/daemon/abrt-action-save-package-data.c
+index 6dbcfc2..cc86327 100644
+--- a/src/daemon/abrt-action-save-package-data.c
++++ b/src/daemon/abrt-action-save-package-data.c
+@@ -91,16 +91,22 @@ static void load_gpg_keys(void)
+     if (strcmp(gpg_keys_dir, "") != 0)
+     {
+         log_debug("Reading gpg keys from '%s'", gpg_keys_dir);
++        GHashTable *done_set = g_hash_table_new(g_str_hash, g_str_equal);
+         GList *gpg_files = get_file_list(gpg_keys_dir, NULL /* we don't care about the file ext */);
+-        GList *tmp_gpp_files = gpg_files;
+-        while (tmp_gpp_files)
++        for (GList *iter = gpg_files; iter; iter = g_list_next(iter))
+         {
+-            log_debug("Loading gpg key '%s'", fo_get_fullpath((file_obj_t *)tmp_gpp_files->data));
+-            settings_setOpenGPGPublicKeys = g_list_append(settings_setOpenGPGPublicKeys, xstrdup(fo_get_fullpath((file_obj_t *)(tmp_gpp_files->data)) ));
+-            tmp_gpp_files = g_list_next(tmp_gpp_files);
++            const char *key_path = fo_get_fullpath((file_obj_t *)iter->data);
++
++            if (g_hash_table_contains(done_set, key_path))
++                continue;
++
++            g_hash_table_insert(done_set, (gpointer)key_path, NULL);
++            log_debug("Loading gpg key '%s'", key_path);
++            settings_setOpenGPGPublicKeys = g_list_append(settings_setOpenGPGPublicKeys, xstrdup(key_path));
+         }
+ 
+         g_list_free_full(gpg_files, (GDestroyNotify)free_file_obj);
++        g_hash_table_destroy(done_set);
+     }
+ }
+ 
+-- 
+1.9.3
+
diff --git a/0010-dbus-don-t-ignore-errors-in-verbose-logging-modes.patch b/0010-dbus-don-t-ignore-errors-in-verbose-logging-modes.patch
new file mode 100644
index 0000000..54d74e6
--- /dev/null
+++ b/0010-dbus-don-t-ignore-errors-in-verbose-logging-modes.patch
@@ -0,0 +1,32 @@
+From 92a1237a3ece2b9cfbd8293b372e2f7a1b60b3d6 Mon Sep 17 00:00:00 2001
+From: Jakub Filak <jfilak at redhat.com>
+Date: Wed, 27 Aug 2014 08:52:39 +0200
+Subject: [PATCH] dbus: don't ignore errors in verbose logging modes
+
+Ignoring of errors even in higher levels of verbosity makes debugging
+really hard.
+
+Related to rhbz#1133674
+
+Signed-off-by: Jakub Filak <jfilak at redhat.com>
+---
+ src/lib/problem_api.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/lib/problem_api.c b/src/lib/problem_api.c
+index c2b4b1c..07707db 100644
+--- a/src/lib/problem_api.c
++++ b/src/lib/problem_api.c
+@@ -53,7 +53,8 @@ int for_each_problem_in_dir(const char *path,
+              * when we raced with wizard.
+              */
+             int sv_logmode = logmode;
+-            logmode = 0;
++            /* Silently ignore errors only in the silent log level. */
++            logmode = g_verbose == 0 ? 0: sv_logmode;
+             struct dump_dir *dd = dd_opendir(full_name, DD_OPEN_READONLY | DD_FAIL_QUIETLY_EACCES | DD_DONT_WAIT_FOR_LOCK);
+             logmode = sv_logmode;
+             if (dd)
+-- 
+1.9.3
+
diff --git a/0011-logging-less-log-messages-for-duplicates.patch b/0011-logging-less-log-messages-for-duplicates.patch
new file mode 100644
index 0000000..549edd4
--- /dev/null
+++ b/0011-logging-less-log-messages-for-duplicates.patch
@@ -0,0 +1,60 @@
+From 03c64e1439baf60426b002ecb1b7052a426d348e Mon Sep 17 00:00:00 2001
+From: Jakub Filak <jfilak at redhat.com>
+Date: Wed, 27 Aug 2014 09:30:54 +0200
+Subject: [PATCH] logging: less log messages for duplicates
+
+Related to rhbz#1133674
+
+Signed-off-by: Jakub Filak <jfilak at redhat.com>
+---
+ src/daemon/abrt-handle-event.c | 4 ++--
+ src/daemon/abrt-server.c       | 5 ++---
+ 2 files changed, 4 insertions(+), 5 deletions(-)
+
+diff --git a/src/daemon/abrt-handle-event.c b/src/daemon/abrt-handle-event.c
+index a65f86e..2ed88db 100644
+--- a/src/daemon/abrt-handle-event.c
++++ b/src/daemon/abrt-handle-event.c
+@@ -142,7 +142,7 @@ static int dup_uuid_compare(const struct dump_dir *dd)
+     free(dd_uuid);
+ 
+     if (!different)
+-        log("Duplicate: UUID");
++        log_notice("Duplicate: UUID");
+ 
+     return !different;
+ }
+@@ -197,7 +197,7 @@ static int dup_corebt_compare(const struct dump_dir *dd)
+     free(dd_corebt);
+ 
+     if (isdup)
+-        log("Duplicate: core backtrace");
++        log_notice("Duplicate: core backtrace");
+ 
+     return isdup;
+ }
+diff --git a/src/daemon/abrt-server.c b/src/daemon/abrt-server.c
+index 307b41b..9951468 100644
+--- a/src/daemon/abrt-server.c
++++ b/src/daemon/abrt-server.c
+@@ -194,15 +194,14 @@ static int run_post_create(const char *dirname)
+             strbuf_append_str(cmd_output, raw);
+             char *msg = cmd_output->buf;
+ 
+-            /* Hmm, DUP_OF_DIR: ends up in syslog. move log() into 'else'? */
+-            log("%s", msg);
+-
+             if (child_is_post_create
+              && prefixcmp(msg, "DUP_OF_DIR: ") == 0
+             ) {
+                 free(dup_of_dir);
+                 dup_of_dir = xstrdup(msg + strlen("DUP_OF_DIR: "));
+             }
++            else
++                log("%s", msg);
+ 
+             strbuf_clear(cmd_output);
+             /* jump to next line */
+-- 
+1.9.3
+
diff --git a/0012-retrace-respect-Bugzilla-event-preferences.patch b/0012-retrace-respect-Bugzilla-event-preferences.patch
new file mode 100644
index 0000000..203d306
--- /dev/null
+++ b/0012-retrace-respect-Bugzilla-event-preferences.patch
@@ -0,0 +1,26 @@
+From cecdd6d7af7988d9f86c98f301b15fdee349e403 Mon Sep 17 00:00:00 2001
+From: Jakub Filak <jfilak at redhat.com>
+Date: Thu, 28 Aug 2014 15:02:38 +0200
+Subject: [PATCH] retrace: respect Bugzilla event preferences
+
+Signed-off-by: Jakub Filak <jfilak at redhat.com>
+---
+ src/plugins/analyze_RetraceServer.xml.in | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/plugins/analyze_RetraceServer.xml.in b/src/plugins/analyze_RetraceServer.xml.in
+index e437cac..db2cd6e 100644
+--- a/src/plugins/analyze_RetraceServer.xml.in
++++ b/src/plugins/analyze_RetraceServer.xml.in
+@@ -10,6 +10,8 @@
+     <gui-review-elements>no</gui-review-elements>
+     <sending-sensitive-data>yes</sending-sensitive-data>
+     <options>
++        <import-event-options event="report_Bugzilla"/>
++
+         <option type="text" name="RETRACE_SERVER_URL">
+            <_label>Retrace server URL</_label>
+            <default-value>retrace.fedoraproject.org</default-value>
+-- 
+1.9.3
+
diff --git a/0013-cli-make-consistent-commands-in-abrt-cli.patch b/0013-cli-make-consistent-commands-in-abrt-cli.patch
new file mode 100644
index 0000000..7c9692c
--- /dev/null
+++ b/0013-cli-make-consistent-commands-in-abrt-cli.patch
@@ -0,0 +1,115 @@
+From 87b450235e38a4d00f3a4b008229fe02debec26f Mon Sep 17 00:00:00 2001
+From: Matej Habrnal <mhabrnal at redhat.com>
+Date: Mon, 8 Sep 2014 13:27:56 +0200
+Subject: [PATCH] cli: make consistent commands in abrt-cli
+
+Add abbreviations to the client's parametres.
+
+Related to rhbz#1066501
+---
+ doc/abrt-cli.txt      |  2 +-
+ src/cli/abrt-cli.c    | 20 +++++++++++---------
+ src/cli/builtin-cmd.h |  2 +-
+ src/cli/rm.c          |  2 +-
+ 4 files changed, 14 insertions(+), 12 deletions(-)
+
+diff --git a/doc/abrt-cli.txt b/doc/abrt-cli.txt
+index 792e781..1c95655 100644
+--- a/doc/abrt-cli.txt
++++ b/doc/abrt-cli.txt
+@@ -9,7 +9,7 @@ SYNOPSIS
+ --------
+ 'abrt-cli' list   [-vdf] [DIR]...
+ 
+-'abrt-cli' rm     [-v]   DIR...
++'abrt-cli' remove [-v]   DIR...
+ 
+ 'abrt-cli' report [-v]   DIR...
+ 
+diff --git a/src/cli/abrt-cli.c b/src/cli/abrt-cli.c
+index a95b8bf..c04c132 100644
+--- a/src/cli/abrt-cli.c
++++ b/src/cli/abrt-cli.c
+@@ -20,14 +20,15 @@
+ #include "libabrt.h"
+ #include "builtin-cmd.h"
+ 
+-#define USAGE_OPTS_WIDTH 12
++#define USAGE_OPTS_WIDTH 16
+ #define USAGE_GAP         2
+ 
+ /* TODO: add --pager(default) and --no-pager */
+ 
+-#define CMD(NAME, help) { #NAME, cmd_##NAME , (help) }
++#define CMD(NAME, ABBREV, help) { #NAME, ABBREV, cmd_##NAME , (help) }
+ struct cmd_struct {
+     const char *cmd;
++    const char *abbrev;
+     int (*fn)(int, const char **);
+     const char *help;
+ };
+@@ -41,6 +42,7 @@ static void list_cmds_help(const struct cmd_struct *commands)
+ 
+         pos = fprintf(stderr, "    ");
+         pos += fprintf(stderr, "%s", p->cmd);
++        pos += fprintf(stderr, ", %s", p->abbrev);
+ 
+         if (pos <= USAGE_OPTS_WIDTH)
+             pad = USAGE_OPTS_WIDTH - pos;
+@@ -110,7 +112,7 @@ static void handle_internal_command(int argc, const char **argv,
+ 
+     for (const struct cmd_struct *p = commands; p->cmd; ++p)
+     {
+-        if (strcmp(p->cmd, cmd) != 0)
++        if (strcmp(p->cmd, cmd) != 0 && strcmp(p->abbrev, cmd) != 0)
+             continue;
+ 
+         exit(p->fn(argc, argv));
+@@ -143,12 +145,12 @@ int main(int argc, const char **argv)
+         );
+ 
+     const struct cmd_struct commands[] = {
+-        CMD(list, _("List problems [in DIRs]")),
+-        CMD(rm, _("Remove problem directory DIR")),
+-        CMD(report, _("Analyze and report problem data in DIR")),
+-        CMD(info, _("Print information about DIR")),
+-        CMD(status, _("Print the count of the recent crashes")),
+-        {NULL, NULL, NULL}
++        CMD(list, "ls", _("List problems [in DIRs]")),
++        CMD(remove, "rm", _("Remove problem directory DIR")),
++        CMD(report, "e",_("Analyze and report problem data in DIR")),
++        CMD(info, "i", _("Print information about DIR")),
++        CMD(status, "st",_("Print the count of the recent crashes")),
++        {NULL, NULL, NULL, NULL}
+     };
+ 
+     migrate_to_xdg_dirs();
+diff --git a/src/cli/builtin-cmd.h b/src/cli/builtin-cmd.h
+index 491760b..18588e1 100644
+--- a/src/cli/builtin-cmd.h
++++ b/src/cli/builtin-cmd.h
+@@ -21,7 +21,7 @@
+ #define _BUILTIN_CMD_H_
+ 
+ extern int cmd_list(int argc, const char **argv);
+-extern int cmd_rm(int argc, const char **argv);
++extern int cmd_remove(int argc, const char **argv);
+ extern int cmd_report(int argc, const char **argv);
+ extern int cmd_info(int argc, const char **argv);
+ extern int cmd_status(int argc, const char **argv);
+diff --git a/src/cli/rm.c b/src/cli/rm.c
+index 8f185a4..fe458ff 100644
+--- a/src/cli/rm.c
++++ b/src/cli/rm.c
+@@ -25,7 +25,7 @@
+  *   add -q, --quite
+  */
+ 
+-int cmd_rm(int argc, const char **argv)
++int cmd_remove(int argc, const char **argv)
+ {
+     const char *program_usage_string = _(
+         "& rm [options] DIR..."
+-- 
+1.9.3
+
diff --git a/0015-cli-robustize-abrt-console-notification.sh.patch b/0015-cli-robustize-abrt-console-notification.sh.patch
new file mode 100644
index 0000000..60fba06
--- /dev/null
+++ b/0015-cli-robustize-abrt-console-notification.sh.patch
@@ -0,0 +1,70 @@
+From 2d19dcd4dd4f937e48fb1e4ebd440ac99754d68a Mon Sep 17 00:00:00 2001
+From: Jakub Filak <jfilak at redhat.com>
+Date: Mon, 15 Sep 2014 08:40:05 +0200
+Subject: [PATCH] cli: robustize abrt-console-notification.sh
+
+- don't show any notifications without a terminal connected to stdout
+- don't continue without writable $HOME directory
+- forward all error messages to /dev/null
+
+Resolves rhbz#1141485
+Related to rhbz#1139001
+
+Signed-off-by: Jakub Filak <jfilak at redhat.com>
+---
+ src/cli/abrt-console-notification.sh | 30 ++++++++++++++++++++++++------
+ 1 file changed, 24 insertions(+), 6 deletions(-)
+
+diff --git a/src/cli/abrt-console-notification.sh b/src/cli/abrt-console-notification.sh
+index 937abb0..0090747 100755
+--- a/src/cli/abrt-console-notification.sh
++++ b/src/cli/abrt-console-notification.sh
+@@ -1,21 +1,39 @@
++# If shell is not connect to a terminal, exit immediately, because this script
++# should print out ABRT's status and it is senseless to continue without
++# terminal.
++tty -s || exit 0
++
++# If $HOME is not set, a non human user is logging in to shell but this script
++# should provide information to human users, therefore exiting immediately
++# without showing the notification.
++if [ -z "$HOME" ]; then
++    exit 0
++fi
++
++if [ -z "$ABRT_DEBUG_LOG" ]; then
++    ABRT_DEBUG_LOG="/dev/null"
++fi
++
+ LPATHDIR="$HOME/.cache/abrt"
+ SINCEFILE="$LPATHDIR/lastnotification"
+ 
+ if [ ! -f "$LPATHDIR" ]; then
+-    mkdir -p "$LPATHDIR"
++    # It might happen that user doesn't have write access on his home.
++    mkdir -p "$LPATHDIR" &> "$ABRT_DEBUG_LOG" || exit 0
+ fi
+ 
+-TMPPATH=`mktemp --tmpdir="$LPATHDIR" lastnotification.XXXXXXXX 2> /dev/null`
++TMPPATH=`mktemp --tmpdir="$LPATHDIR" lastnotification.XXXXXXXX 2> "$ABRT_DEBUG_LOG"`
+ 
+ SINCE=0
+ if [ -f "$SINCEFILE" ]; then
+-    SINCE=`cat $SINCEFILE 2> /dev/null`
++    SINCE=`cat $SINCEFILE 2> "$ABRT_DEBUG_LOG"`
+ fi
+ 
+ # always update the lastnotification
+ if [ -f "$TMPPATH" ]; then
+-    date +%s > "$TMPPATH"
+-    mv -f "$TMPPATH" "$SINCEFILE"
++    # Be quite in case of errors and don't scare users by strange error messages.
++    date +%s > "$TMPPATH" 2> "$ABRT_DEBUG_LOG"
++    mv -f "$TMPPATH" "$SINCEFILE" &> "$ABRT_DEBUG_LOG"
+ fi
+ 
+-abrt-cli status --since="$SINCE" 2> /dev/null
++abrt-cli status --since="$SINCE" 2> "$ABRT_DEBUG_LOG"
+-- 
+1.9.3
+
diff --git a/0016-retrace-client-humanize-sizes.patch b/0016-retrace-client-humanize-sizes.patch
new file mode 100644
index 0000000..3a93e76
--- /dev/null
+++ b/0016-retrace-client-humanize-sizes.patch
@@ -0,0 +1,98 @@
+From b38e21eac482e85de1f0b09d0ec7187844c1a19d Mon Sep 17 00:00:00 2001
+From: Jakub Filak <jfilak at redhat.com>
+Date: Mon, 15 Sep 2014 11:44:02 +0200
+Subject: [PATCH] retrace-client: humanize sizes
+
+G_FORMAT_SIZE_IEC_UNITS
+
+ use IEC (base 1024) units with "KiB"-style suffixes. IEC units should
+only be used for reporting things with a strong "power of 2" basis, like
+RAM sizes or RAID stripe sizes. Network and storage sizes should be
+reported in the normal SI units.
+
+Fixes #844
+
+Signed-off-by: Jakub Filak <jfilak at redhat.com>
+---
+ src/plugins/abrt-retrace-client.c | 36 +++++++++++++++++++++++-------------
+ 1 file changed, 23 insertions(+), 13 deletions(-)
+
+diff --git a/src/plugins/abrt-retrace-client.c b/src/plugins/abrt-retrace-client.c
+index 60bbbc2..0b67773 100644
+--- a/src/plugins/abrt-retrace-client.c
++++ b/src/plugins/abrt-retrace-client.c
+@@ -511,10 +511,16 @@ static int create(bool delete_temp_archive,
+     if (unpacked_size > settings->max_unpacked_size)
+     {
+         alert_crash_too_large();
+-        error_msg_and_die(_("The size of your crash is %lld bytes, "
++
++        /* Leaking size and max_size in hope the memory will be released in
++         * error_msg_and_die() */
++        gchar *size = g_format_size_full(unpacked_size, G_FORMAT_SIZE_IEC_UNITS);
++        gchar *max_size = g_format_size_full(settings->max_unpacked_size, G_FORMAT_SIZE_IEC_UNITS);
++
++        error_msg_and_die(_("The size of your crash is %s, "
+                             "but the retrace server only accepts "
+-                            "crashes smaller or equal to %lld bytes."),
+-                          unpacked_size, settings->max_unpacked_size);
++                            "crashes smaller or equal to %s."),
++                            size, max_size);
+     }
+ 
+     if (settings->supported_formats)
+@@ -610,14 +616,19 @@ static int create(bool delete_temp_archive,
+ 
+     /* Get the file size. */
+     fstat(tempfd, &file_stat);
++    gchar *human_size = g_format_size_full((long long)file_stat.st_size, G_FORMAT_SIZE_IEC_UNITS);
+     if ((long long)file_stat.st_size > settings->max_packed_size)
+     {
+         alert_crash_too_large();
+-        error_msg_and_die(_("The size of your archive is %lld bytes, "
++
++        /* Leaking human_size and max_size in hope the memory will be released in
++         * error_msg_and_die() */
++        gchar *max_size = g_format_size_full(settings->max_packed_size, G_FORMAT_SIZE_IEC_UNITS);
++
++        error_msg_and_die(_("The size of your archive is %s, "
+                             "but the retrace server only accepts "
+-                            "archives smaller or equal %lld bytes."),
+-                          (long long)file_stat.st_size,
+-                          settings->max_packed_size);
++                            "archives smaller or equal to %s."),
++                          human_size, max_size);
+     }
+ 
+     free_settings(settings);
+@@ -626,8 +637,8 @@ static int create(bool delete_temp_archive,
+ 
+     if (size_mb > 8) /* 8 MB - should be configurable */
+     {
+-        char *question = xasprintf(_("You are going to upload %d megabytes. "
+-                                     "Continue?"), size_mb);
++        char *question = xasprintf(_("You are going to upload %s. "
++                                     "Continue?"), human_size);
+ 
+         int response = ask_yes_no(question);
+         free(question);
+@@ -669,13 +680,12 @@ static int create(bool delete_temp_archive,
+ 
+     if (delay)
+     {
+-        if (size_mb > 1)
+-            printf(_("Uploading %d megabytes\n"), size_mb);
+-        else
+-            printf(_("Uploading %lld bytes\n"), (long long)file_stat.st_size);
++        printf(_("Uploading %s\n"), human_size);
+         fflush(stdout);
+     }
+ 
++    g_free(human_size);
++
+     strbuf_free(http_request);
+     int result = 0;
+     int i;
+-- 
+1.9.3
+
diff --git a/0017-dbus-fixed-abrt-dbus-memory-leaks.patch b/0017-dbus-fixed-abrt-dbus-memory-leaks.patch
new file mode 100644
index 0000000..d675b05
--- /dev/null
+++ b/0017-dbus-fixed-abrt-dbus-memory-leaks.patch
@@ -0,0 +1,47 @@
+From a1f14b2e4585981a4cf6408509412bcfacbd9ea8 Mon Sep 17 00:00:00 2001
+From: Matej Habrnal <mhabrnal at redhat.com>
+Date: Thu, 18 Sep 2014 15:02:01 +0200
+Subject: [PATCH] dbus: fixed abrt-dbus memory leaks
+
+Fixed memory leaks in abrt-dbus (method FindProblemByElementInTimeRange).
+This method leaks memory if fuzzing on org.freedesktop.problems interface.
+
+Related to rhbz#1015473
+
+Signed-off-by: Matej Habrnal <mhabrnal at redhat.com>
+---
+ src/dbus/abrt-dbus.c | 18 +++++++++++-------
+ 1 file changed, 11 insertions(+), 7 deletions(-)
+
+diff --git a/src/dbus/abrt-dbus.c b/src/dbus/abrt-dbus.c
+index 0350dee..308a9af 100644
+--- a/src/dbus/abrt-dbus.c
++++ b/src/dbus/abrt-dbus.c
+@@ -685,13 +685,17 @@ static void handle_method_call(GDBusConnection *connection,
+ 
+     if (g_strcmp0(method_name, "FindProblemByElementInTimeRange") == 0)
+     {
+-        const char *element;
+-        const char *value;
+-        long timestamp_from;
+-        long timestamp_to;
+-        bool all;
+-
+-        g_variant_get(parameters, "(ssxxb)", &element, &value, &timestamp_from, &timestamp_to, &all);
++        const gchar *element;
++        const gchar *value;
++        glong timestamp_from;
++        glong timestamp_to;
++        gboolean all;
++
++        g_variant_get_child(parameters, 0, "&s", &element);
++        g_variant_get_child(parameters, 1, "&s", &value);
++        g_variant_get_child(parameters, 2, "x", &timestamp_from);
++        g_variant_get_child(parameters, 3, "x", &timestamp_to);
++        g_variant_get_child(parameters, 4, "b", &all);
+ 
+         if (all && polkit_check_authorization_dname(caller, "org.freedesktop.problems.getall") == PolkitYes)
+             caller_uid = 0;
+-- 
+1.9.3
+
diff --git a/0018-applet-confirm-ignoring-of-notifications.patch b/0018-applet-confirm-ignoring-of-notifications.patch
new file mode 100644
index 0000000..1afcfc6
--- /dev/null
+++ b/0018-applet-confirm-ignoring-of-notifications.patch
@@ -0,0 +1,58 @@
+From 783a85a5161335f6722e132cc6fcb030054766e7 Mon Sep 17 00:00:00 2001
+From: Jakub Filak <jfilak at redhat.com>
+Date: Wed, 1 Oct 2014 17:14:50 +0200
+Subject: [PATCH] applet: confirm ignoring of notifications
+
+and fix a bug in abrt-action-notify
+
+Related to rhbz#1084031
+
+Signed-off-by: Jakub Filak <jfilak at redhat.com>
+---
+ src/applet/applet.c            | 16 +++++++++++++---
+ src/plugins/abrt-action-notify |  2 +-
+ 2 files changed, 14 insertions(+), 4 deletions(-)
+
+diff --git a/src/applet/applet.c b/src/applet/applet.c
+index 27c5fad..1618d8c 100644
+--- a/src/applet/applet.c
++++ b/src/applet/applet.c
+@@ -667,9 +667,19 @@ static void action_ignore(NotifyNotification *notification, gchar *action, gpoin
+ {
+     problem_info_t *pi = (problem_info_t *)user_data;
+ 
+-    log_debug("Ignoring problem '%s'", problem_info_get_dir(pi));
+-
+-    ignored_problems_add_problem_data(g_ignore_set, pi->problem_data);
++    const char *const message = _(
++            "You are going to mute notifications of a particular problem. " \
++            "You will never see a notification bubble for this problem again, " \
++            "however, ABRT will be detecting it and you will be able " \
++            "to report it from ABRT GUI." \
++            "\n\n" \
++            "Do you want to continue?");
++
++    if (run_ask_yes_no_yesforever_dialog("AskIgnoreForever", message, NULL))
++    {
++        log_debug("Ignoring problem '%s'", problem_info_get_dir(pi));
++        ignored_problems_add_problem_data(g_ignore_set, pi->problem_data);
++    }
+ 
+     GError *err = NULL;
+     notify_notification_close(notification, &err);
+diff --git a/src/plugins/abrt-action-notify b/src/plugins/abrt-action-notify
+index cbabf74..8b8f38e 100644
+--- a/src/plugins/abrt-action-notify
++++ b/src/plugins/abrt-action-notify
+@@ -99,7 +99,7 @@ def emit_crash_dbus_signal(problem_data):
+         # member is a Boolean flag which is True if the element is required
+         arguments = ((FILENAME_PACKAGE, True), (CD_DUMPDIR, True),
+                 (FILENAME_UID, False), (FILENAME_UUID, False),
+-                (FILENAME_PACKAGE, False))
++                (FILENAME_DUPHASH, False))
+ 
+         for elem in arguments:
+             itm = problem_data.get(elem[0])
+-- 
+1.9.3
+
diff --git a/0019-cli-use-portable-syntax-in-abrt-console-notification.patch b/0019-cli-use-portable-syntax-in-abrt-console-notification.patch
new file mode 100644
index 0000000..73da4c0
--- /dev/null
+++ b/0019-cli-use-portable-syntax-in-abrt-console-notification.patch
@@ -0,0 +1,49 @@
+From 05bf4d55d0316f6048b327399cef0db941db29e8 Mon Sep 17 00:00:00 2001
+From: Jakub Filak <jfilak at redhat.com>
+Date: Mon, 15 Sep 2014 13:43:10 +0200
+Subject: [PATCH] cli: use portable syntax in abrt-console-notification
+
+Thanks Dominic Cleal
+
+Resolves rhbz#1141485
+Related to rhbz#1139001
+
+Signed-off-by: Jakub Filak <jfilak at redhat.com>
+---
+ src/cli/abrt-console-notification.sh | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/src/cli/abrt-console-notification.sh b/src/cli/abrt-console-notification.sh
+index 0090747..849273c 100755
+--- a/src/cli/abrt-console-notification.sh
++++ b/src/cli/abrt-console-notification.sh
+@@ -19,21 +19,21 @@ SINCEFILE="$LPATHDIR/lastnotification"
+ 
+ if [ ! -f "$LPATHDIR" ]; then
+     # It might happen that user doesn't have write access on his home.
+-    mkdir -p "$LPATHDIR" &> "$ABRT_DEBUG_LOG" || exit 0
++    mkdir -p "$LPATHDIR" >"$ABRT_DEBUG_LOG" 2>&1 || exit 0
+ fi
+ 
+ TMPPATH=`mktemp --tmpdir="$LPATHDIR" lastnotification.XXXXXXXX 2> "$ABRT_DEBUG_LOG"`
+ 
+ SINCE=0
+ if [ -f "$SINCEFILE" ]; then
+-    SINCE=`cat $SINCEFILE 2> "$ABRT_DEBUG_LOG"`
++    SINCE=`cat $SINCEFILE 2>"$ABRT_DEBUG_LOG"`
+ fi
+ 
+ # always update the lastnotification
+ if [ -f "$TMPPATH" ]; then
+     # Be quite in case of errors and don't scare users by strange error messages.
+-    date +%s > "$TMPPATH" 2> "$ABRT_DEBUG_LOG"
+-    mv -f "$TMPPATH" "$SINCEFILE" &> "$ABRT_DEBUG_LOG"
++    date +%s > "$TMPPATH" 2>"$ABRT_DEBUG_LOG"
++    mv -f "$TMPPATH" "$SINCEFILE" >"$ABRT_DEBUG_LOG" 2>&1
+ fi
+ 
+-abrt-cli status --since="$SINCE" 2> "$ABRT_DEBUG_LOG"
++abrt-cli status --since="$SINCE" 2>"$ABRT_DEBUG_LOG"
+-- 
+1.9.3
+
diff --git a/0020-console-notifications-use-return-instead-of-exit.patch b/0020-console-notifications-use-return-instead-of-exit.patch
new file mode 100644
index 0000000..7c2c3b1
--- /dev/null
+++ b/0020-console-notifications-use-return-instead-of-exit.patch
@@ -0,0 +1,48 @@
+From a8f12ee8aa40d9ff05004bf6661ab442ad161202 Mon Sep 17 00:00:00 2001
+From: Jakub Filak <jfilak at redhat.com>
+Date: Thu, 9 Oct 2014 16:28:12 +0200
+Subject: [PATCH] console-notifications: use return instead of exit
+
+Thanks Ray Strode [halfline] <rstrode at redhat.com>
+
+Related to rhbz#1150169
+
+Signed-off-by: Jakub Filak <jfilak at redhat.com>
+---
+ src/cli/abrt-console-notification.sh | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/src/cli/abrt-console-notification.sh b/src/cli/abrt-console-notification.sh
+index 849273c..38de7bb 100755
+--- a/src/cli/abrt-console-notification.sh
++++ b/src/cli/abrt-console-notification.sh
+@@ -1,13 +1,13 @@
+-# If shell is not connect to a terminal, exit immediately, because this script
++# If shell is not connect to a terminal, return immediately, because this script
+ # should print out ABRT's status and it is senseless to continue without
+ # terminal.
+-tty -s || exit 0
++tty -s || return 0
+ 
+ # If $HOME is not set, a non human user is logging in to shell but this script
+-# should provide information to human users, therefore exiting immediately
++# should provide information to human users, therefore returning immediately
+ # without showing the notification.
+ if [ -z "$HOME" ]; then
+-    exit 0
++    return 0
+ fi
+ 
+ if [ -z "$ABRT_DEBUG_LOG" ]; then
+@@ -19,7 +19,7 @@ SINCEFILE="$LPATHDIR/lastnotification"
+ 
+ if [ ! -f "$LPATHDIR" ]; then
+     # It might happen that user doesn't have write access on his home.
+-    mkdir -p "$LPATHDIR" >"$ABRT_DEBUG_LOG" 2>&1 || exit 0
++    mkdir -p "$LPATHDIR" >"$ABRT_DEBUG_LOG" 2>&1 || return 0
+ fi
+ 
+ TMPPATH=`mktemp --tmpdir="$LPATHDIR" lastnotification.XXXXXXXX 2> "$ABRT_DEBUG_LOG"`
+-- 
+1.9.3
+
diff --git a/0021-applet-don-t-show-duphash-instead-of-component.patch b/0021-applet-don-t-show-duphash-instead-of-component.patch
new file mode 100644
index 0000000..77cfd8a
--- /dev/null
+++ b/0021-applet-don-t-show-duphash-instead-of-component.patch
@@ -0,0 +1,28 @@
+From f5066db720d371604c8c1c42225a193602e72c84 Mon Sep 17 00:00:00 2001
+From: Jakub Filak <jfilak at redhat.com>
+Date: Fri, 10 Oct 2014 11:18:51 +0200
+Subject: [PATCH] applet: don't show duphash instead of component
+
+Related to rhbz#1084031
+
+Signed-off-by: Jakub Filak <jfilak at redhat.com>
+---
+ src/applet/applet.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/applet/applet.c b/src/applet/applet.c
+index 1618d8c..1da90fd 100644
+--- a/src/applet/applet.c
++++ b/src/applet/applet.c
+@@ -1327,7 +1327,7 @@ static void Crash(DBusMessage* signal)
+     if (duphash != NULL && duphash[0] != '\0')
+         problem_data_add_text_noteditable(pi->problem_data, FILENAME_DUPHASH, duphash);
+     if (package_name != NULL && package_name[0] != '\0')
+-        problem_data_add_text_noteditable(pi->problem_data, FILENAME_COMPONENT, duphash);
++        problem_data_add_text_noteditable(pi->problem_data, FILENAME_COMPONENT, package_name);
+     pi->foreign = foreign_problem;
+     show_problem_notification(pi, flags);
+ }
+-- 
+1.9.3
+
diff --git a/0022-console-notifications-skip-non-interactive-shells.patch b/0022-console-notifications-skip-non-interactive-shells.patch
new file mode 100644
index 0000000..62b2988
--- /dev/null
+++ b/0022-console-notifications-skip-non-interactive-shells.patch
@@ -0,0 +1,30 @@
+From caffc34bd6eada503ec0b8231dbecbfa5652eedd Mon Sep 17 00:00:00 2001
+From: Jakub Filak <jfilak at redhat.com>
+Date: Sat, 11 Oct 2014 00:05:07 +0200
+Subject: [PATCH] console-notifications: skip non-interactive shells
+
+Related to rhbz#1141485
+Related to rhbz#1139001
+
+Signed-off-by: Jakub Filak <jfilak at redhat.com>
+---
+ src/cli/abrt-console-notification.sh | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/src/cli/abrt-console-notification.sh b/src/cli/abrt-console-notification.sh
+index 38de7bb..976dfc3 100755
+--- a/src/cli/abrt-console-notification.sh
++++ b/src/cli/abrt-console-notification.sh
+@@ -3,6 +3,9 @@
+ # terminal.
+ tty -s || return 0
+ 
++# Skip all for noninteractive shells for the same reason as above.
++[ -z "$PS1" ] && return 0
++
+ # If $HOME is not set, a non human user is logging in to shell but this script
+ # should provide information to human users, therefore returning immediately
+ # without showing the notification.
+-- 
+1.9.3
+
diff --git a/0023-make-ABRT-quieter.patch b/0023-make-ABRT-quieter.patch
new file mode 100644
index 0000000..a36cd59
--- /dev/null
+++ b/0023-make-ABRT-quieter.patch
@@ -0,0 +1,102 @@
+From 0f0a1c1b58b73bfa0b7449bc59a580dc321dba8b Mon Sep 17 00:00:00 2001
+From: Jakub Filak <jfilak at redhat.com>
+Date: Wed, 15 Oct 2014 13:33:51 +0200
+Subject: [PATCH] make ABRT quieter
+
+Related: #1048384, #1147664
+
+Signed-off-by: Jakub Filak <jfilak at redhat.com>
+---
+ src/daemon/abrtd.c                                |  7 +++++--
+ src/hooks/abrt-hook-ccpp.c                        | 10 +++++-----
+ src/plugins/abrt-action-generate-core-backtrace.c |  2 +-
+ 3 files changed, 11 insertions(+), 8 deletions(-)
+
+diff --git a/src/daemon/abrtd.c b/src/daemon/abrtd.c
+index b8426dd..cce49eb 100644
+--- a/src/daemon/abrtd.c
++++ b/src/daemon/abrtd.c
+@@ -626,7 +626,7 @@ int main(int argc, char** argv)
+     s_signal_pipe_write = s_signal_pipe[1];
+ 
+     /* Enter the event loop */
+-    log("Init complete, entering main loop");
++    log_debug("Init complete, entering main loop");
+     run_main_loop(pMainloop);
+ 
+  cleanup:
+@@ -652,7 +652,10 @@ int main(int argc, char** argv)
+     /* Exiting */
+     if (s_sig_caught && s_sig_caught != SIGALRM && s_sig_caught != SIGCHLD)
+     {
+-        error_msg("Got signal %d, exiting", s_sig_caught);
++        /* We use TERM to stop abrtd, so not printing out error message. */
++        if (s_sig_caught != SIGTERM)
++            error_msg("Got signal %d, exiting", s_sig_caught);
++
+         signal(s_sig_caught, SIG_DFL);
+         raise(s_sig_caught);
+     }
+diff --git a/src/hooks/abrt-hook-ccpp.c b/src/hooks/abrt-hook-ccpp.c
+index 8e141d4..6f471e9 100644
+--- a/src/hooks/abrt-hook-ccpp.c
++++ b/src/hooks/abrt-hook-ccpp.c
+@@ -184,13 +184,13 @@ static char* get_executable(pid_t pid, int *fd_p)
+     if (deleted > executable && strcmp(deleted, " (deleted)") == 0)
+     {
+         *deleted = '\0';
+-        log("File '%s' seems to be deleted", executable);
++        log_info("File '%s' seems to be deleted", executable);
+     }
+     /* find and cut off prelink suffixes from the path */
+     char *prelink = executable + strlen(executable) - strlen(".#prelink#.XXXXXX");
+     if (prelink > executable && strncmp(prelink, ".#prelink#.", strlen(".#prelink#.")) == 0)
+     {
+-        log("File '%s' seems to be a prelink temporary file", executable);
++        log_info("File '%s' seems to be a prelink temporary file", executable);
+         *prelink = '\0';
+     }
+     return executable;
+@@ -649,7 +649,7 @@ int main(int argc, char** argv)
+              * but it does not log file name */
+             error_msg_and_die("Error saving '%s'", path);
+         }
+-        log("Saved core dump of pid %lu (%s) to %s (%llu bytes)", (long)pid, executable, path, (long long)core_size);
++        log_notice("Saved core dump of pid %lu (%s) to %s (%llu bytes)", (long)pid, executable, path, (long long)core_size);
+         return 0;
+     }
+ 
+@@ -836,7 +836,7 @@ int main(int argc, char** argv)
+             strcpy(path, newpath);
+         free(newpath);
+ 
+-        log("Saved core dump of pid %lu (%s) to %s (%llu bytes)", (long)pid, executable, path, (long long)core_size);
++        log_notice("Saved core dump of pid %lu (%s) to %s (%llu bytes)", (long)pid, executable, path, (long long)core_size);
+ 
+         notify_new_path(path);
+ 
+@@ -874,7 +874,7 @@ int main(int argc, char** argv)
+             unlink(core_basename);
+             return 1;
+         }
+-        log("Saved core dump of pid %lu to %s (%llu bytes)", (long)pid, full_core_basename, (long long)core_size);
++        log_notice("Saved core dump of pid %lu to %s (%llu bytes)", (long)pid, full_core_basename, (long long)core_size);
+     }
+ 
+     return 0;
+diff --git a/src/plugins/abrt-action-generate-core-backtrace.c b/src/plugins/abrt-action-generate-core-backtrace.c
+index a992a5b..791af83 100644
+--- a/src/plugins/abrt-action-generate-core-backtrace.c
++++ b/src/plugins/abrt-action-generate-core-backtrace.c
+@@ -61,7 +61,7 @@ int main(int argc, char **argv)
+         sr_debug_parser = true;
+ 
+     /* Let user know what's going on */
+-    log(_("Generating core_backtrace"));
++    log_notice(_("Generating core_backtrace"));
+ 
+     char *error_message = NULL;
+     bool success;
+-- 
+1.9.3
+
diff --git a/0024-applet-ensure-writable-dump-directory-before-reporti.patch b/0024-applet-ensure-writable-dump-directory-before-reporti.patch
new file mode 100644
index 0000000..d550f5d
--- /dev/null
+++ b/0024-applet-ensure-writable-dump-directory-before-reporti.patch
@@ -0,0 +1,128 @@
+From 9604d1b52843a3939fcee440b5c3ec6efd0ce9df Mon Sep 17 00:00:00 2001
+From: Jakub Filak <jfilak at redhat.com>
+Date: Tue, 21 Oct 2014 14:57:10 +0200
+Subject: [PATCH] applet: ensure writable dump directory before reporting
+
+Related to rhbz#1084027
+
+Signed-off-by: Jakub Filak <jfilak at redhat.com>
+---
+ src/applet/applet.c | 62 ++++++++++++++++++++++++++++++++++-------------------
+ 1 file changed, 40 insertions(+), 22 deletions(-)
+
+diff --git a/src/applet/applet.c b/src/applet/applet.c
+index 1da90fd..f73ad74 100644
+--- a/src/applet/applet.c
++++ b/src/applet/applet.c
+@@ -303,6 +303,7 @@ typedef struct problem_info {
+     bool incomplete;
+     bool reported;
+     bool was_announced;
++    bool is_writable;
+ } problem_info_t;
+ 
+ static void push_to_deferred_queue(problem_info_t *pi)
+@@ -320,6 +321,36 @@ static void problem_info_set_dir(problem_info_t *pi, const char *dir)
+     problem_data_add_text_noteditable(pi->problem_data, CD_DUMPDIR, dir);
+ }
+ 
++static bool problem_info_ensure_writable(problem_info_t *pi)
++{
++    if (pi->is_writable)
++        return true;
++
++    /* chown the directory in any case, because kernel oopses are not foreign */
++    /* but their dump directories are not writable without chowning them or */
++    /* stealing them. The stealing is deprecated as it breaks the local */
++    /* duplicate search and root cannot see them */
++    const int res = chown_dir_over_dbus(problem_info_get_dir(pi));
++    if (pi->foreign && res != 0)
++    {
++        error_msg(_("Can't take ownership of '%s'"), problem_info_get_dir(pi));
++        return false;
++    }
++    pi->foreign = false;
++
++    struct dump_dir *dd = open_directory_for_writing(problem_info_get_dir(pi), /* don't ask */ NULL);
++    if (!dd)
++    {
++        error_msg(_("Can't open directory for writing '%s'"), problem_info_get_dir(pi));
++        return false;
++    }
++
++    problem_info_set_dir(pi, dd->dd_dirname);
++    pi->is_writable = true;
++    dd_close(dd);
++    return true;
++}
++
+ static problem_info_t *problem_info_new(const char *dir)
+ {
+     problem_info_t *pi = xzalloc(sizeof(*pi));
+@@ -606,8 +637,13 @@ static pid_t spawn_event_handler_child(const char *dump_dir_name, const char *ev
+     return child;
+ }
+ 
+-static void run_report_from_applet(const char *dirname)
++static void run_report_from_applet(problem_info_t *pi)
+ {
++    if (!problem_info_ensure_writable(pi))
++        return;
++
++    const char *dirname = problem_info_get_dir(pi);
++
+     fflush(NULL); /* paranoia */
+     pid_t pid = fork();
+     if (pid < 0)
+@@ -645,7 +681,7 @@ static void action_report(NotifyNotification *notification, gchar *action, gpoin
+     {
+         if (strcmp(A_REPORT_REPORT, action) == 0)
+         {
+-            run_report_from_applet(problem_info_get_dir(pi));
++            run_report_from_applet(pi);
+             problem_info_free(pi);
+         }
+         else
+@@ -1114,7 +1150,7 @@ static gboolean handle_event_output_cb(GIOChannel *gio, GIOCondition condition,
+         if (pi->known || !(state->flags & REPORT_UNKNOWN_PROBLEM_IMMEDIATELY))
+             notify_problem(pi);
+         else
+-            run_report_from_applet(problem_info_get_dir(pi));
++            run_report_from_applet(pi);
+     }
+     else
+     {
+@@ -1175,29 +1211,11 @@ static void export_event_configuration(const char *event_name)
+ 
+ static void run_event_async(problem_info_t *pi, const char *event_name, int flags)
+ {
+-    /* chown the directory in any case, because kernel oopses are not foreign */
+-    /* but their dump directories are not writable without chowning them or */
+-    /* stealing them. The stealing is deprecated as it breaks the local */
+-    /* duplicate search and root cannot see them */
+-    const int res = chown_dir_over_dbus(problem_info_get_dir(pi));
+-    if (pi->foreign && res != 0)
++    if (!problem_info_ensure_writable(pi))
+     {
+-        error_msg(_("Can't take ownership of '%s'"), problem_info_get_dir(pi));
+         problem_info_free(pi);
+         return;
+     }
+-    pi->foreign = false;
+-
+-    struct dump_dir *dd = open_directory_for_writing(problem_info_get_dir(pi), /* don't ask */ NULL);
+-    if (!dd)
+-    {
+-        error_msg(_("Can't open directory for writing '%s'"), problem_info_get_dir(pi));
+-        problem_info_free(pi);
+-        return;
+-    }
+-
+-    problem_info_set_dir(pi, dd->dd_dirname);
+-    dd_close(dd);
+ 
+     export_event_configuration(event_name);
+ 
+-- 
+1.9.3
+
diff --git a/0026-Remove-garbage-from-ccpp_event.conf.patch b/0026-Remove-garbage-from-ccpp_event.conf.patch
new file mode 100644
index 0000000..5629fa9
--- /dev/null
+++ b/0026-Remove-garbage-from-ccpp_event.conf.patch
@@ -0,0 +1,26 @@
+From 196a13cf2265ffdac293975a676c2ff16fedf2ba Mon Sep 17 00:00:00 2001
+From: Martin Milata <mmilata at redhat.com>
+Date: Mon, 24 Nov 2014 17:43:02 +0100
+Subject: [PATCH] Remove garbage from ccpp_event.conf
+
+Signed-off-by: Martin Milata <mmilata at redhat.com>
+---
+ src/plugins/ccpp_event.conf | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/src/plugins/ccpp_event.conf b/src/plugins/ccpp_event.conf
+index 9fbe760..96e7891 100644
+--- a/src/plugins/ccpp_event.conf
++++ b/src/plugins/ccpp_event.conf
+@@ -16,8 +16,6 @@ EVENT=post-create analyzer=CCpp
+         fi
+         # Try generating backtrace, if it fails we can still use
+         # the hash generated by abrt-action-analyze-c
+-        ##satyr migration:
+-        #satyr abrt-create-core-stacktrace "$DUMP_DIR"
+         abrt-action-generate-core-backtrace
+         # Run GDB plugin to see if crash looks exploitable
+         abrt-action-analyze-vulnerability
+-- 
+1.9.3
+
diff --git a/0027-python-load-the-configuration-from-correct-file.patch b/0027-python-load-the-configuration-from-correct-file.patch
new file mode 100644
index 0000000..422e9f4
--- /dev/null
+++ b/0027-python-load-the-configuration-from-correct-file.patch
@@ -0,0 +1,31 @@
+From 15a068e4bbef7da966a8f753277fce065e50d7e4 Mon Sep 17 00:00:00 2001
+From: Jakub Filak <jfilak at redhat.com>
+Date: Tue, 25 Nov 2014 15:54:15 +0100
+Subject: [PATCH] python: load the configuration from correct file
+
+Python2 exception handler has its configuration stored in python.conf
+file.
+
+Related: rhbz#1166633
+
+Signed-off-by: Jakub Filak <jfilak at redhat.com>
+---
+ src/hooks/abrt_exception_handler.py.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/hooks/abrt_exception_handler.py.in b/src/hooks/abrt_exception_handler.py.in
+index fa4f34f..8412e5f 100644
+--- a/src/hooks/abrt_exception_handler.py.in
++++ b/src/hooks/abrt_exception_handler.py.in
+@@ -177,7 +177,7 @@ def require_abs_path():
+     import problem
+ 
+     try:
+-        conf = problem.load_plugin_conf_file("python3.conf")
++        conf = problem.load_plugin_conf_file("python.conf")
+     except OsError:
+         return False
+ 
+-- 
+1.9.3
+
diff --git a/0028-vmcore-catch-IOErrors-and-OSErrors.patch b/0028-vmcore-catch-IOErrors-and-OSErrors.patch
new file mode 100644
index 0000000..d379289
--- /dev/null
+++ b/0028-vmcore-catch-IOErrors-and-OSErrors.patch
@@ -0,0 +1,41 @@
+From 684a5fcce536e628c339119accd04d42e1f27152 Mon Sep 17 00:00:00 2001
+From: Jakub Filak <jfilak at redhat.com>
+Date: Thu, 27 Nov 2014 12:45:04 +0100
+Subject: [PATCH] vmcore: catch IOErrors and OSErrors
+
+Perhaps some temporary data cleaner removed problem directory while the hook
+was still using in.
+
+Resolves: rhbz#1077241
+
+Signed-off-by: Jakub Filak <jfilak at redhat.com>
+---
+ src/hooks/abrt_harvest_vmcore.py.in | 12 ++++++++++--
+ 1 file changed, 10 insertions(+), 2 deletions(-)
+
+diff --git a/src/hooks/abrt_harvest_vmcore.py.in b/src/hooks/abrt_harvest_vmcore.py.in
+index 17e2be8..c6a7e6b 100644
+--- a/src/hooks/abrt_harvest_vmcore.py.in
++++ b/src/hooks/abrt_harvest_vmcore.py.in
+@@ -272,8 +272,16 @@ def harvest_vmcore():
+             except OSError:
+                 sys.stderr.write("Unable to delete '%s'. Ignoring\n" % f_full)
+ 
+-        # Let abrtd know what type of problem it is:
+-        create_abrtd_info(destdirnew)
++        try:
++            # Let abrtd know what type of problem it is:
++            create_abrtd_info(destdirnew)
++        except EnvironmentError as ex:
++            sys.stderr.write("Unable to create problem directory info: " + str(ex))
++            try:
++                shutil.rmtree(destdirnew)
++            except Exception as ex:
++                sys.stderr.write("Unable to remove incomplete problem directory: " + str(ex))
++            continue
+ 
+         # chown -R 0:0
+         change_owner_rec(destdirnew)
+-- 
+1.9.3
+
diff --git a/0029-vmcore-remove-original-vmcore-file-in-the-last-step.patch b/0029-vmcore-remove-original-vmcore-file-in-the-last-step.patch
new file mode 100644
index 0000000..720c93d
--- /dev/null
+++ b/0029-vmcore-remove-original-vmcore-file-in-the-last-step.patch
@@ -0,0 +1,43 @@
+From d92ce50f162e0e4defeb99a5cf35941b382ba3d7 Mon Sep 17 00:00:00 2001
+From: Jakub Filak <jfilak at redhat.com>
+Date: Thu, 27 Nov 2014 14:30:48 +0100
+Subject: [PATCH] vmcore: remove original vmcore file in the last step
+
+Signed-off-by: Jakub Filak <jfilak at redhat.com>
+---
+ src/hooks/abrt_harvest_vmcore.py.in | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/src/hooks/abrt_harvest_vmcore.py.in b/src/hooks/abrt_harvest_vmcore.py.in
+index c6a7e6b..256f8f1 100644
+--- a/src/hooks/abrt_harvest_vmcore.py.in
++++ b/src/hooks/abrt_harvest_vmcore.py.in
+@@ -266,12 +266,6 @@ def harvest_vmcore():
+             shutil.rmtree(destdirnew)
+             continue
+ 
+-        if copyvmcore == 'no':
+-            try:
+-                shutil.rmtree(f_full)
+-            except OSError:
+-                sys.stderr.write("Unable to delete '%s'. Ignoring\n" % f_full)
+-
+         try:
+             # Let abrtd know what type of problem it is:
+             create_abrtd_info(destdirnew)
+@@ -291,6 +285,12 @@ def harvest_vmcore():
+         # Get rid of  the .new suffix
+         shutil.move(destdirnew, destdir)
+ 
++        if copyvmcore == 'no':
++            try:
++                shutil.rmtree(f_full)
++            except OSError:
++                sys.stderr.write("Unable to delete '%s'. Ignoring\n" % f_full)
++
+         problem.notify_new_path(destdir)
+ 
+ 
+-- 
+1.9.3
+
diff --git a/0030-console-notifications-add-timeout.patch b/0030-console-notifications-add-timeout.patch
new file mode 100644
index 0000000..b173f54
--- /dev/null
+++ b/0030-console-notifications-add-timeout.patch
@@ -0,0 +1,25 @@
+From cf01ca8b589d66d975fc3b1525b58df466411c22 Mon Sep 17 00:00:00 2001
+From: Jakub Filak <jfilak at redhat.com>
+Date: Tue, 20 Jan 2015 15:12:05 +0100
+Subject: [PATCH] console-notifications: add timeout
+
+Related to #898
+
+Signed-off-by: Jakub Filak <jfilak at redhat.com>
+---
+ src/cli/abrt-console-notification.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/cli/abrt-console-notification.sh b/src/cli/abrt-console-notification.sh
+index 976dfc3..a98f164 100755
+--- a/src/cli/abrt-console-notification.sh
++++ b/src/cli/abrt-console-notification.sh
+@@ -39,4 +39,4 @@ if [ -f "$TMPPATH" ]; then
+     mv -f "$TMPPATH" "$SINCEFILE" >"$ABRT_DEBUG_LOG" 2>&1
+ fi
+ 
+-abrt-cli status --since="$SINCE" 2>"$ABRT_DEBUG_LOG"
++timeout 10s abrt-cli status --since="$SINCE" 2>"$ABRT_DEBUG_LOG" || echo "'abrt-cli status' timed out"
+-- 
+1.9.3
+
diff --git a/0031-Don-t-slurp-unbounded-amounts-of-data-when-invoking-.patch b/0031-Don-t-slurp-unbounded-amounts-of-data-when-invoking-.patch
new file mode 100644
index 0000000..29526e7
--- /dev/null
+++ b/0031-Don-t-slurp-unbounded-amounts-of-data-when-invoking-.patch
@@ -0,0 +1,29 @@
+From eeb63b2105786e63a75cac69311408908c8ecf28 Mon Sep 17 00:00:00 2001
+From: Gregory Collins <greg at gregorycollins.net>
+Date: Tue, 20 Jan 2015 18:39:42 -0800
+Subject: [PATCH] Don't slurp unbounded amounts of data when invoking
+ journalctl. Fixes #887.
+
+---
+ src/plugins/ccpp_event.conf | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/plugins/ccpp_event.conf b/src/plugins/ccpp_event.conf
+index 96e7891..985e80d 100644
+--- a/src/plugins/ccpp_event.conf
++++ b/src/plugins/ccpp_event.conf
+@@ -38,9 +38,9 @@ EVENT=post-create analyzer=CCpp
+             else
+                 uid=`cat uid` &&
+                 log="[System Logs]:\n" &&
+-                log=$log`journalctl -b --system | grep -F -e "$base_executable" | tail -99` &&
++                log=$log`journalctl -b --since=-3m --system | grep -F -e "$base_executable" | tail -99` &&
+                 log=$log"\n[User Logs]:\n" &&
+-                log=$log`journalctl _UID="$uid" -b | grep -F -e "$base_executable" | tail -99` &&
++                log=$log`journalctl _UID="$uid" -b --since=-3m | grep -F -e "$base_executable" | tail -99` &&
+                 log=`echo -e "$log"`
+             fi
+             if test -n "$log"; then
+-- 
+1.9.3
+
diff --git a/0032-Rewrite-journalctl-invocations-replace-grep-tail-pip.patch b/0032-Rewrite-journalctl-invocations-replace-grep-tail-pip.patch
new file mode 100644
index 0000000..03bd60b
--- /dev/null
+++ b/0032-Rewrite-journalctl-invocations-replace-grep-tail-pip.patch
@@ -0,0 +1,29 @@
+From 5ac45a9f799a83e8e7756fbb613adc0e7570a1a5 Mon Sep 17 00:00:00 2001
+From: Gregory Collins <greg at gregorycollins.net>
+Date: Wed, 21 Jan 2015 04:38:58 +0100
+Subject: [PATCH] Rewrite journalctl invocations: replace grep/tail pipeline
+ with journalctl builtins.
+
+---
+ src/plugins/ccpp_event.conf | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/plugins/ccpp_event.conf b/src/plugins/ccpp_event.conf
+index 985e80d..894c7eb 100644
+--- a/src/plugins/ccpp_event.conf
++++ b/src/plugins/ccpp_event.conf
+@@ -38,9 +38,9 @@ EVENT=post-create analyzer=CCpp
+             else
+                 uid=`cat uid` &&
+                 log="[System Logs]:\n" &&
+-                log=$log`journalctl -b --since=-3m --system | grep -F -e "$base_executable" | tail -99` &&
++                log=$log`journalctl -b --since=-3m --system -n 99 _COMM="$base_executable"` &&
+                 log=$log"\n[User Logs]:\n" &&
+-                log=$log`journalctl _UID="$uid" -b --since=-3m | grep -F -e "$base_executable" | tail -99` &&
++                log=$log`journalctl -b --since=-3m -n 99 _COMM="$base_executable" _UID="$uid"` &&
+                 log=`echo -e "$log"`
+             fi
+             if test -n "$log"; then
+-- 
+1.9.3
+
diff --git a/0033-applet-Fix-typo-in-cuurent.patch b/0033-applet-Fix-typo-in-cuurent.patch
new file mode 100644
index 0000000..43a1634
--- /dev/null
+++ b/0033-applet-Fix-typo-in-cuurent.patch
@@ -0,0 +1,25 @@
+From 414ac716c6d3d93c01687bf2a5592caedff35c0d Mon Sep 17 00:00:00 2001
+From: Bastien Nocera <hadess at hadess.net>
+Date: Wed, 21 Jan 2015 15:37:27 +0100
+Subject: [PATCH] applet: Fix typo in "cuurent"
+
+---
+ src/applet/applet.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/applet/applet.c b/src/applet/applet.c
+index f73ad74..1c3865c 100644
+--- a/src/applet/applet.c
++++ b/src/applet/applet.c
+@@ -488,7 +488,7 @@ static void new_dir_exists(GList **new_dirs)
+          * DIR2      - Current dir list has new element. IOW: new dir exists!
+          *             Advance only current dirlist ptr.
+          *      DIR3 - Only old list has element. Advance only old ptr.
+-         * DIR4 ==== - Old list ended, cuurent one didn't. New dir exists!
++         * DIR4 ==== - Old list ended, current one didn't. New dir exists!
+          * ====
+          */
+         GList *l1 = dirlist = g_list_sort(dirlist, (GCompareFunc)strcmp);
+-- 
+1.9.3
+
diff --git a/0034-applet-Fix-typo-in-Oterwise.patch b/0034-applet-Fix-typo-in-Oterwise.patch
new file mode 100644
index 0000000..b6e00ce
--- /dev/null
+++ b/0034-applet-Fix-typo-in-Oterwise.patch
@@ -0,0 +1,34 @@
+From 5edb4efdf25cc8b79b8d5b0b2c58001381aa5f17 Mon Sep 17 00:00:00 2001
+From: Bastien Nocera <hadess at hadess.net>
+Date: Wed, 21 Jan 2015 16:53:37 +0100
+Subject: [PATCH] applet: Fix typo in "Oterwise"
+
+---
+ src/applet/applet.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/applet/applet.c b/src/applet/applet.c
+index 1c3865c..ae11fac 100644
+--- a/src/applet/applet.c
++++ b/src/applet/applet.c
+@@ -588,7 +588,7 @@ static void fork_exec_gui(const char *problem_id)
+ 
+  record_dirs:
+     /* Scan dirs and save new $XDG_CACHE_HOME/abrt/applet_dirlist.
+-     * (Oterwise, after a crash, next time applet is started,
++     * (Otherwise, after a crash, next time applet is started,
+      * it will show alert icon even if we did click on it
+      * "in previous life"). We ignore function return value.
+      */
+@@ -769,7 +769,7 @@ static void on_notify_close(NotifyNotification *notification, gpointer user_data
+     g_object_unref(notification);
+ 
+     /* Scan dirs and save new $XDG_CACHE_HOME/abrt/applet_dirlist.
+-     * (Oterwise, after a crash, next time applet is started,
++     * (Otherwise, after a crash, next time applet is started,
+      * it will show alert icon even if we did click on it
+      * "in previous life"). We ignore finction return value.
+      */
+-- 
+1.9.3
+
diff --git a/abrt.spec b/abrt.spec
index 667db6c..287d9b4 100644
--- a/abrt.spec
+++ b/abrt.spec
@@ -40,12 +40,49 @@
 Summary: Automatic bug detection and reporting tool
 Name: abrt
 Version: 2.2.2
-Release: 1%{?dist}
+Release: 2%{?dist}
 License: GPLv2+
 Group: Applications/System
-URL: https://fedorahosted.org/abrt/
+URL: https://github.com/abrt/abrt/wiki/ABRT-Project
 Source: https://fedorahosted.org/released/%{name}/%{name}-%{version}.tar.gz
 
+# git format-patch -N -topo-order 2.2.2 -o ~/fed/abrt/
+# i=0; for p in `ls *patch`; do echo Patch$((i += 1)): $p; done
+#Patch1: 0001-update-.gitignore.patch
+Patch2: 0002-python-support-exceptions-without-traceback.patch
+Patch3: 0003-xml-fix-a-typo-in-analyze_CCpp.patch
+Patch4: 0004-gettext-fix-the-initialization-in-python-scripts.patch
+Patch5: 0005-Revert-Support-handling-crashes-in-lxc-containers.patch
+Patch6: 0006-koops-fix-a-use-after-free-bug-uncoverd-by-coverity.patch
+Patch7: 0007-a-a-s-p-d-add-firefox-on-the-package-blacklist.patch
+Patch8: 0008-a-h-event-don-t-spam-system-logs.patch
+Patch9: 0009-a-a-s-p-data-reduce-amount-of-error-messages.patch
+Patch10: 0010-dbus-don-t-ignore-errors-in-verbose-logging-modes.patch
+Patch11: 0011-logging-less-log-messages-for-duplicates.patch
+Patch12: 0012-retrace-respect-Bugzilla-event-preferences.patch
+Patch13: 0013-cli-make-consistent-commands-in-abrt-cli.patch
+# Patch14: 0014-spec-remove-dependency-on-crash-from-abrt-addon-vmco.patch
+Patch15: 0015-cli-robustize-abrt-console-notification.sh.patch
+Patch16: 0016-retrace-client-humanize-sizes.patch
+Patch17: 0017-dbus-fixed-abrt-dbus-memory-leaks.patch
+Patch18: 0018-applet-confirm-ignoring-of-notifications.patch
+Patch19: 0019-cli-use-portable-syntax-in-abrt-console-notification.patch
+Patch20: 0020-console-notifications-use-return-instead-of-exit.patch
+Patch21: 0021-applet-don-t-show-duphash-instead-of-component.patch
+Patch22: 0022-console-notifications-skip-non-interactive-shells.patch
+Patch23: 0023-make-ABRT-quieter.patch
+Patch24: 0024-applet-ensure-writable-dump-directory-before-reporti.patch
+# Patch25: 0025-spec-update-the-URL.patch
+Patch26: 0026-Remove-garbage-from-ccpp_event.conf.patch
+Patch27: 0027-python-load-the-configuration-from-correct-file.patch
+Patch28: 0028-vmcore-catch-IOErrors-and-OSErrors.patch
+Patch29: 0029-vmcore-remove-original-vmcore-file-in-the-last-step.patch
+Patch30: 0030-console-notifications-add-timeout.patch
+Patch31: 0031-Don-t-slurp-unbounded-amounts-of-data-when-invoking-.patch
+Patch32: 0032-Rewrite-journalctl-invocations-replace-grep-tail-pip.patch
+Patch33: 0033-applet-Fix-typo-in-cuurent.patch
+Patch34: 0034-applet-Fix-typo-in-Oterwise.patch
+
 # '%%autosetup -S git' -> git
 BuildRequires: git
 
@@ -206,7 +243,6 @@ Summary: %{name}'s vmcore addon
 Group: System Environment/Libraries
 Requires: %{name} = %{version}-%{release}
 Requires: abrt-addon-kerneloops
-Requires: crash
 Requires: kexec-tools
 Requires: abrt-python
 Requires: python-augeas
@@ -926,6 +962,14 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
 %config(noreplace) %{_sysconfdir}/profile.d/abrt-console-notification.sh
 
 %changelog
+* Mon Feb 16 2015 Matej Habrnal <mhabrnal at redhat.com> 2.2.2-2
+- a-a-s-p-d: add firefox on the package blacklist
+- a-h-event: don't spam system logs
+- a-a-s-p-data: reduce amount of error messages
+- cli: make consistent commands in abrt-cli
+- cli: robustize abrt-console-notification.sh
+- Resolves: #1120767, #1132018, #1121415, #1048384, #1147664, #1077241
+
 * Mon Jul 14 2014 Jakub Filak <jfilak at redhat.com> 2.2.2-1
 - switch from gdb to native unwinder (elfutils)
 - applet: chown each notified problem before reporting it


More information about the scm-commits mailing list