[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, ×tamp_from, ×tamp_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", ×tamp_from);
++ g_variant_get_child(parameters, 3, "x", ×tamp_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