New upstream release 2.4.0

This commit is contained in:
Jakub Filak 2015-02-23 06:45:19 +01:00
parent 181e4a81c9
commit 6d542d86f0
18 changed files with 54 additions and 160479 deletions

1
.gitignore vendored
View File

@ -38,3 +38,4 @@ abrt-1.1.13.tar.gz
/abrt-2.2.1.tar.gz /abrt-2.2.1.tar.gz
/abrt-2.2.2.tar.gz /abrt-2.2.2.tar.gz
/abrt-2.3.0.tar.gz /abrt-2.3.0.tar.gz
/abrt-2.4.0.tar.gz

File diff suppressed because it is too large Load Diff

View File

@ -1,48 +0,0 @@
From b7332b068c11ec16c190472684334944abb3607b Mon Sep 17 00:00:00 2001
From: Jakub Filak <jfilak@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@redhat.com>
Related to rhbz#1150169
Signed-off-by: Jakub Filak <jfilak@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"`
--
2.1.0

View File

@ -1,85 +0,0 @@
From 9ef1d95f9556db4fdf02b283e1602b9e63b693c8 Mon Sep 17 00:00:00 2001
From: Jakub Filak <jfilak@redhat.com>
Date: Thu, 9 Oct 2014 10:24:42 +0200
Subject: [PATCH] ureport: attach contact email if configured
Related to rhbz#1150389
Signed-off-by: Jakub Filak <jfilak@redhat.com>
---
src/plugins/abrt-action-ureport | 35 ++++++++++++++++++++++++++++++++---
1 file changed, 32 insertions(+), 3 deletions(-)
diff --git a/src/plugins/abrt-action-ureport b/src/plugins/abrt-action-ureport
index 1abe7b3..df5f3d3 100755
--- a/src/plugins/abrt-action-ureport
+++ b/src/plugins/abrt-action-ureport
@@ -8,6 +8,7 @@
import sys
import os
import getopt
+import augeas
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
@@ -33,12 +34,30 @@ def init_gettext():
gettext.textdomain(GETTEXT_PROGNAME)
-def spawn_and_wait(prog):
+def get_augeas(module, file_path):
+ """
+ A function for efficient configuration of Augeas.
+ Augeas modules are placed in /usr/share/augeas/lenses/dist
+ """
+
+ aug_obj = augeas.Augeas(flags=augeas.Augeas.NO_MODL_AUTOLOAD)
+ aug_obj.set("/augeas/load/{0}/lens".format(module), "{0}.lns".format(module))
+ aug_obj.set("/augeas/load/{0}/incl".format(module), file_path)
+ aug_obj.load()
+ return aug_obj
+
+
+def spawn_and_wait(prog, args=None):
+ if args is None:
+ args = [prog]
+ else:
+ args.insert(0, prog)
+
try:
- return os.spawnlp(os.P_WAIT, prog, prog)
+ return os.spawnvpe(os.P_WAIT, prog, args, os.environ)
except OSError as err:
error_msg(_("Unable to start '%s', error message was: '%s'"),
- prog, err)
+ " ".join(args), err)
return -1
def try_parse_number(dd, filename):
@@ -92,6 +111,7 @@ if __name__ == "__main__":
verbose += 1
set_verbosity(verbose)
+ os.environ["ABRT_VERBOSE"] = str(verbose)
# getcwd might fail if cwd was deleted
try:
@@ -159,6 +179,15 @@ if __name__ == "__main__":
log(_("Adding you to CC List of the existing bugzilla bug"))
run_event("watch_Bugzilla", dirname)
+ email = os.getenv("uReport_ContactEmail")
+ if not email:
+ augeas = get_augeas("libreport", "/etc/libreport/plugins/ureport.conf")
+ email = augeas.get("/files/etc/libreport/plugins/ureport.conf/ContactEmail")
+
+ if email:
+ log1("Attaching ContactEmail: " + email)
+ spawn_and_wait("reporter-ureport", ["-A", "-E"])
+
sys.exit(exitcode)
else:
error_msg_and_die(_("reporter-ureport failed with exit code %d" % exitcode))
--
2.1.0

View File

@ -1,28 +0,0 @@
From ad9e9d1609fd9e1365bf558f15c62ecb21304911 Mon Sep 17 00:00:00 2001
From: Jakub Filak <jfilak@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@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 0ae8c72..90c5b0d 100644
--- a/src/applet/applet.c
+++ b/src/applet/applet.c
@@ -1331,7 +1331,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);
}
--
2.1.0

View File

@ -1,30 +0,0 @@
From ab46bc9d85331fca923853353663c0ce0edc3716 Mon Sep 17 00:00:00 2001
From: Jakub Filak <jfilak@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@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.
--
2.1.0

View File

@ -1,158 +0,0 @@
From 2e74ca0f15d6d25568f5af1cc9cd30b4b01aa849 Mon Sep 17 00:00:00 2001
From: Jakub Filak <jfilak@redhat.com>
Date: Tue, 14 Oct 2014 03:15:28 +0200
Subject: [PATCH] journal-oops: use the length result of sd_journal_get_data()
journald doesn't guarantee NULL terminated strings returned from
sd_journal_get_data(). It usually works but not always.
This patch fixes the issue by using the length of field data instead of
assuming that string is NULL terminated.
Resolves: #1141549
Signed-off-by: Jakub Filak <jfilak@redhat.com>
---
src/plugins/abrt-dump-journal-oops.c | 13 ++++++-----
src/plugins/abrt-journal.c | 43 ++++++++++++++++++++++--------------
src/plugins/abrt-journal.h | 8 ++++---
3 files changed, 40 insertions(+), 24 deletions(-)
diff --git a/src/plugins/abrt-dump-journal-oops.c b/src/plugins/abrt-dump-journal-oops.c
index 3f1f419..0ff9fe0 100644
--- a/src/plugins/abrt-dump-journal-oops.c
+++ b/src/plugins/abrt-dump-journal-oops.c
@@ -38,8 +38,8 @@ static GList* abrt_journal_extract_kernel_oops(abrt_journal_t *journal)
do
{
- const char *line = NULL;
- if (abrt_journal_get_log_line(journal, &line) < 0)
+ char *line = abrt_journal_get_log_line(journal);
+ if (line == NULL)
error_msg_and_die(_("Cannot read journal data."));
if (lines_info_count == lines_info_size)
@@ -48,10 +48,13 @@ static GList* abrt_journal_extract_kernel_oops(abrt_journal_t *journal)
lines_info = xrealloc(lines_info, lines_info_size * sizeof(lines_info[0]));
}
- lines_info[lines_info_count].level = koops_line_skip_level(&line);
- koops_line_skip_jiffies(&line);
+ char *orig_line = line;
+ lines_info[lines_info_count].level = koops_line_skip_level((const char **)&line);
+ koops_line_skip_jiffies((const char **)&line);
- lines_info[lines_info_count].ptr = xstrdup(line);
+ memmove(orig_line, line, strlen(line) + 1);
+
+ lines_info[lines_info_count].ptr = orig_line;
++lines_info_count;
}
diff --git a/src/plugins/abrt-journal.c b/src/plugins/abrt-journal.c
index 89c8393..e0ae159 100644
--- a/src/plugins/abrt-journal.c
+++ b/src/plugins/abrt-journal.c
@@ -23,6 +23,12 @@
#include <systemd/sd-journal.h>
+/*
+ * http://www.freedesktop.org/software/systemd/man/sd_journal_get_data.html
+ * sd_journal_set_data_threshold() : This threshold defaults to 64K by default.
+ */
+#define JOURNALD_MAX_FIELD_SIZE (64*1024)
+
struct abrt_journal
{
@@ -84,33 +90,38 @@ int abrt_journal_get_field(abrt_journal_t *journal, const char *field, const voi
return 0;
}
-int abrt_journal_get_string_field(abrt_journal_t *journal, const char *field, const char **value)
+char *abrt_journal_get_string_field(abrt_journal_t *journal, const char *field, char *value)
{
- size_t value_len;
- const int r = abrt_journal_get_field(journal, field, (const void **)value, &value_len);
+ size_t data_len;
+ const char *data;
+ const int r = abrt_journal_get_field(journal, field, (const void **)&data, &data_len);
if (r < 0)
{
- return r;
+ log_notice("Cannot read journal data");
+ return NULL;
}
const size_t pfx_len = strlen(field) + 1;
- if (value_len < pfx_len)
+ if (data_len < pfx_len)
{
error_msg("Invalid data format from journal: field data are not prefixed with field name");
- return -EBADMSG;
+ return NULL;
}
- *value += pfx_len;
- return 0;
+ const size_t len = data_len - pfx_len;
+ if (value == NULL)
+ return xstrndup(data + pfx_len, len);
+ /*else*/
+
+ strncpy(value, data + pfx_len, len);
+ /* journal data are not NULL terminated strings, so terminate the string */
+ value[len] = '\0';
+ return value;
}
-int abrt_journal_get_log_line(abrt_journal_t *journal, const char **line)
+char *abrt_journal_get_log_line(abrt_journal_t *journal)
{
- const int r = abrt_journal_get_string_field(journal, "MESSAGE", line);
- if (r < 0)
- log_notice("Cannot read journal data. Exiting");
-
- return r;
+ return abrt_journal_get_string_field(journal, "MESSAGE", NULL);
}
int abrt_journal_get_cursor(abrt_journal_t *journal, char **cursor)
@@ -272,9 +283,9 @@ void abrt_journal_watch_notify_strings(abrt_journal_watch_t *watch, void *data)
{
struct abrt_journal_watch_notify_strings *conf = (struct abrt_journal_watch_notify_strings *)data;
- const char *message = NULL;
+ char message[JOURNALD_MAX_FIELD_SIZE + 1];
- if (abrt_journal_get_string_field(abrt_journal_watch_get_journal(watch), "MESSAGE", &message) < 0)
+ if (abrt_journal_get_string_field(abrt_journal_watch_get_journal(watch), "MESSAGE", (char *)message) == NULL)
error_msg_and_die("Cannot read journal data.");
GList *cur = conf->strings;
diff --git a/src/plugins/abrt-journal.h b/src/plugins/abrt-journal.h
index 219cf60..d509d96 100644
--- a/src/plugins/abrt-journal.h
+++ b/src/plugins/abrt-journal.h
@@ -40,11 +40,13 @@ int abrt_journal_get_field(abrt_journal_t *journal,
const void **value,
size_t *value_len);
-int abrt_journal_get_string_field(abrt_journal_t *journal,
+/* Returns allocated memory if value is NULL; otherwise makes copy of journald
+ * field to memory pointed by value arg. */
+char *abrt_journal_get_string_field(abrt_journal_t *journal,
const char *field,
- const char **value);
+ char *value);
-int abrt_journal_get_log_line(abrt_journal_t *journal, const char **line);
+char *abrt_journal_get_log_line(abrt_journal_t *journal);
int abrt_journal_get_cursor(abrt_journal_t *journal, char **cursor);
--
2.1.0

View File

@ -1,102 +0,0 @@
From 105aab5e018efa7d68e06ff648d0dc9e434e20d2 Mon Sep 17 00:00:00 2001
From: Jakub Filak <jfilak@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@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;
--
2.1.0

View File

@ -1,128 +0,0 @@
From 0a0f129a6622fd7099de8cec6a1d95a4189a91d1 Mon Sep 17 00:00:00 2001
From: Jakub Filak <jfilak@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@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 90c5b0d..644da60 100644
--- a/src/applet/applet.c
+++ b/src/applet/applet.c
@@ -307,6 +307,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)
@@ -324,6 +325,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));
@@ -610,8 +641,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)
@@ -649,7 +685,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
@@ -1118,7 +1154,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
{
@@ -1179,29 +1215,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);
--
2.1.0

View File

@ -1,42 +0,0 @@
From 2fa193aba3cb1dd630faa65385a92e11d92806d1 Mon Sep 17 00:00:00 2001
From: Jakub Filak <jfilak@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@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
--
2.1.0

View File

@ -1,212 +0,0 @@
From aa503cf6722fffa2dbf3d400a4e2bbeac2f78d65 Mon Sep 17 00:00:00 2001
From: Jakub Filak <jfilak@redhat.com>
Date: Thu, 23 Oct 2014 16:37:14 +0200
Subject: [PATCH] a-a-g-machine-id: add systemd's machine id
The dmidecode based algorithm may not work on all architectures.
man machine-id
Related to rhbz#1140044
Signed-off-by: Jakub Filak <jfilak@redhat.com>
---
src/plugins/abrt-action-generate-machine-id | 165 ++++++++++++++++++++++++++--
1 file changed, 153 insertions(+), 12 deletions(-)
diff --git a/src/plugins/abrt-action-generate-machine-id b/src/plugins/abrt-action-generate-machine-id
index 0aea787..b2de822 100644
--- a/src/plugins/abrt-action-generate-machine-id
+++ b/src/plugins/abrt-action-generate-machine-id
@@ -1,14 +1,47 @@
#!/usr/bin/python
+
+## Copyright (C) 2014 ABRT team <abrt-devel-list@redhat.com>
+## Copyright (C) 2014 Red Hat, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA
+
+"""This module provides algorithms for generating Machine IDs.
+"""
+
+import sys
from argparse import ArgumentParser
+import logging
-import dmidecode
import hashlib
+def generate_machine_id_dmidecode():
+ """Generate a machine_id based off dmidecode fields
-# Generate a machine_id based off dmidecode fields
-def generate_machine_id():
- dmixml = dmidecode.dmidecodeXML()
+ The function generates the same result as sosreport-uploader
+
+ Returns a machine ID as string or throws RuntimeException
+
+ """
+ try:
+ import dmidecode
+ except ImportError as ex:
+ raise RuntimeError("Could not import dmidecode module: {0}"
+ .format(str(ex)))
+
+ dmixml = dmidecode.dmidecodeXML()
# Fetch all DMI data into a libxml2.xmlDoc object
dmixml.SetResultType(dmidecode.DMIXML_DOC)
xmldoc = dmixml.QuerySection('all')
@@ -38,20 +71,128 @@ def generate_machine_id():
return machine_id.hexdigest()
-if __name__ == "__main__":
- CMDARGS = ArgumentParser(description = "Generate a machine_id based off dmidecode fields")
- CMDARGS.add_argument('-o', '--output', type=str, help='Output file')
+def generate_machine_id_systemd():
+ """Generate a machine_id equals to a one generated by systemd
+
+ This function returns contents of /etc/machine-id
+
+ Returns a machine ID as string or throws RuntimeException.
+
+ """
+
+ try:
+ with open('/etc/machine-id', 'r') as midf:
+ return "".join((l.strip() for l in midf))
+ except IOError as ex:
+ raise RuntimeError("Could not use systemd's machine-id: {0}"
+ .format(str(ex)))
+
+
+GENERATORS = { 'sosreport_uploader-dmidecode' : generate_machine_id_dmidecode,
+ 'systemd' : generate_machine_id_systemd }
+
+
+def generate_machine_id(generators):
+ """Generates all requested machine id with all required generators
+
+ Keyword arguments:
+ generators -- a list of generator names
+
+ Returns a dictionary where keys are generators and associated values are
+ products of those generators.
+
+ """
+
+ ids = {}
+ workers = GENERATORS
+ for sd in generators:
+ try:
+ ids[sd] = workers[sd]()
+ except RuntimeError as ex:
+ logging.error("Machine-ID generator '{0}' failed: {1}"
+ .format(sd, ex.message))
+
+ return ids
+
+
+def print_result(ids, outfile, prefixed):
+ """Writes a dictionary of machine ids to a file
+
+ Each dictionary entry is written on a single line and the last line does
+ not have new line character. The new line character is omitted as it is a
+ common approach in ABRT.
+
+ Keyword arguments:
+ ids -- a dictionary [generator name: machine ids]
+ outfile -- output file
+ prefixed -- use 'generator name=' prefix or not
+ """
+
+ fmt = '{0}={1}' if prefixed else '{1}'
+
+ items_iter = ids.iteritems()
+ try:
+ sd, mid = items_iter.next()
+ outfile.write(fmt.format(sd, mid))
+ except StopIteration:
+ return
+
+ fmt = '\n' + fmt
+ for sd, mid in items_iter:
+ outfile.write(fmt.format(sd,mid))
+
+
+def print_generators(outfile=None):
+ """Prints requested generators
+
+ Keyword arguments:
+ outfile -- output file (default: sys.stdout)
+
+ """
+ if outfile is None:
+ outfile = sys.stdout
+
+ for sd in GENERATORS.iterkeys():
+ outfile.write("{0}\n".format(sd))
+
+
+if __name__ == '__main__':
+ CMDARGS = ArgumentParser(description = "Generate a machine_id")
+ CMDARGS.add_argument('-o', '--output', type=str,
+ help="Output file")
+ CMDARGS.add_argument('-g', '--generators', nargs='+', type=str,
+ help="Use given generators only")
+ CMDARGS.add_argument('-l', '--list-generators', action='store_true',
+ default=False, help="Print out a list of usable generators")
+ CMDARGS.add_argument('-n', '--noprefix', action='store_true',
+ default=False, help="Do not use generator name as prefix for IDs")
OPTIONS = CMDARGS.parse_args()
ARGS = vars(OPTIONS)
- machineid = generate_machine_id()
+ logging.basicConfig(format='%(message)s')
+
+ if ARGS['list_generators']:
+ print_generators()
+ sys.exit(0)
+
+ requested_generators = None
+ if ARGS['generators']:
+ requested_generators = ARGS['generators']
+ else:
+ requested_generators = GENERATORS.keys()
+
+ machineids = generate_machine_id(requested_generators)
if ARGS['output']:
try:
- with open(ARGS['output'], 'w') as outfile:
- outfile.write(machineid)
+ with open(ARGS['output'], 'w') as fout:
+ print_result(machineids, fout, not ARGS['noprefix'])
except IOError as ex:
- print ex
+ logging.error("Could not open output file: {0}".format(str(ex)))
+ sys.exit(1)
else:
- print machineid
+ print_result(machineids, sys.stdout, not ARGS['noprefix'])
+ sys.stdout.write('\n')
+
+ sys.exit(len(requested_generators) - len(machineids.keys()))
--
2.1.0

View File

@ -1,34 +0,0 @@
From 35e52c1820a84da2623a7cf4c71baf9fa6f2e12e Mon Sep 17 00:00:00 2001
From: Jakub Filak <jfilak@redhat.com>
Date: Fri, 24 Oct 2014 15:50:02 +0200
Subject: [PATCH] a-a-g-machine-id: suppress its failures in abrt_event.conf
If an event script exits with a non-zero code, abrtd deletes entire dump
directory.
Failures of a-a-g-machine-id must not lead to the deletion of a dump
directory.
Related to rhbz#1140044
Signed-off-by: Jakub Filak <jfilak@redhat.com>
---
src/daemon/abrt_event.conf | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/daemon/abrt_event.conf b/src/daemon/abrt_event.conf
index 4597627..3322a81 100644
--- a/src/daemon/abrt_event.conf
+++ b/src/daemon/abrt_event.conf
@@ -92,7 +92,7 @@ EVENT=post-create runlevel=
# Example: if you want to include *machineid* in dump directories:
#EVENT=post-create
- /usr/libexec/abrt-action-generate-machine-id -o $DUMP_DIR/machineid
+ /usr/libexec/abrt-action-generate-machine-id -o $DUMP_DIR/machineid || :
# Example:
# if you want to upload data immediately at the moment of a crash to
--
2.1.0

View File

@ -1,59 +0,0 @@
From 301fe7c65ba4431833ad8a9df7a4366eda889682 Mon Sep 17 00:00:00 2001
From: Jakub Filak <jfilak@redhat.com>
Date: Fri, 31 Oct 2014 23:00:10 +0100
Subject: [PATCH] a-a-g-machine-id: omit trailing new-line for one-liners only
Signed-off-by: Jakub Filak <jfilak@redhat.com>
---
src/plugins/abrt-action-generate-machine-id | 21 +++++++++------------
1 file changed, 9 insertions(+), 12 deletions(-)
diff --git a/src/plugins/abrt-action-generate-machine-id b/src/plugins/abrt-action-generate-machine-id
index b2de822..6f43258 100644
--- a/src/plugins/abrt-action-generate-machine-id
+++ b/src/plugins/abrt-action-generate-machine-id
@@ -118,9 +118,9 @@ def generate_machine_id(generators):
def print_result(ids, outfile, prefixed):
"""Writes a dictionary of machine ids to a file
- Each dictionary entry is written on a single line and the last line does
- not have new line character. The new line character is omitted as it is a
- common approach in ABRT.
+ Each dictionary entry is written on a single line. The function does not
+ print trailing new-line if the dictionary contains only one item as it is
+ common format of one-liners placed in a dump directory.
Keyword arguments:
ids -- a dictionary [generator name: machine ids]
@@ -130,15 +130,10 @@ def print_result(ids, outfile, prefixed):
fmt = '{0}={1}' if prefixed else '{1}'
- items_iter = ids.iteritems()
- try:
- sd, mid = items_iter.next()
- outfile.write(fmt.format(sd, mid))
- except StopIteration:
- return
+ if len(ids) > 1:
+ fmt += '\n'
- fmt = '\n' + fmt
- for sd, mid in items_iter:
+ for sd, mid in ids.iteritems():
outfile.write(fmt.format(sd,mid))
@@ -193,6 +188,8 @@ if __name__ == '__main__':
sys.exit(1)
else:
print_result(machineids, sys.stdout, not ARGS['noprefix'])
- sys.stdout.write('\n')
+ # print_results() omits new-line for one-liners
+ if len(machineids) == 1:
+ sys.stdout.write('\n')
sys.exit(len(requested_generators) - len(machineids.keys()))
--
2.1.0

View File

@ -1,31 +0,0 @@
From 77fd4057c1364edc7a1815b73bb980229c8b9d65 Mon Sep 17 00:00:00 2001
From: Jakub Filak <jfilak@redhat.com>
Date: Fri, 31 Oct 2014 23:01:07 +0100
Subject: [PATCH] a-a-g-machine-id: do not print any error from the event
handler
It is expected that dmidecode-less systems will print an error message
related to the fact that dmidecode doesn't work, hence forwarding of
STDOUT and STDERR to 'event_log' file.
Signed-off-by: Jakub Filak <jfilak@redhat.com>
---
src/daemon/abrt_event.conf | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/daemon/abrt_event.conf b/src/daemon/abrt_event.conf
index 3322a81..feb02a3 100644
--- a/src/daemon/abrt_event.conf
+++ b/src/daemon/abrt_event.conf
@@ -92,7 +92,7 @@ EVENT=post-create runlevel=
# Example: if you want to include *machineid* in dump directories:
#EVENT=post-create
- /usr/libexec/abrt-action-generate-machine-id -o $DUMP_DIR/machineid || :
+ /usr/libexec/abrt-action-generate-machine-id -o $DUMP_DIR/machineid >>event_log 2>&1 || :
# Example:
# if you want to upload data immediately at the moment of a crash to
--
2.1.0

View File

@ -1,34 +0,0 @@
From f5e65811d450c9117fa036bd82d161e5f936d5a0 Mon Sep 17 00:00:00 2001
From: Jakub Filak <jfilak@redhat.com>
Date: Fri, 31 Oct 2014 23:02:57 +0100
Subject: [PATCH] sos: use all valuable plugins
This commit mirrors the state of rhel7
Signed-off-by: Jakub Filak <jfilak@redhat.com>
---
src/daemon/abrt_event.conf | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/daemon/abrt_event.conf b/src/daemon/abrt_event.conf
index feb02a3..1153cc0 100644
--- a/src/daemon/abrt_event.conf
+++ b/src/daemon/abrt_event.conf
@@ -69,11 +69,13 @@ EVENT=post-create runlevel=
# if you would rather perform this collection later):
#EVENT=post-create
nice sosreport --tmp-dir "$DUMP_DIR" --batch \
- --only=anaconda --only=bootloader --only=devicemapper \
+ --only=anaconda --only=boot --only=devicemapper \
--only=filesys --only=hardware --only=kernel --only=libraries \
--only=memory --only=networking --only=nfsserver --only=pam \
--only=process --only=rpm -k rpm.rpmva=off --only=ssh \
--only=startup --only=yum --only=general --only=x11 \
+ --only=cups --only=logs --only=grub2 --only=cron --only=pci \
+ --only=auditd --only=selinux --only=lvm2 --only=sar \
>sosreport.log 2>&1 \
&& {
rm sosreport.log
--
2.1.0

View File

@ -1,58 +0,0 @@
From 1fc0e782d56af4df3f21560929176a09103923ad Mon Sep 17 00:00:00 2001
From: Martin Milata <mmilata@redhat.com>
Date: Tue, 4 Nov 2014 16:51:24 +0100
Subject: [PATCH] koops: improve 'reason' text for page faults
Current : 'general protection fault: 4000 [#1] SMP'
Improved: 'general protection fault in i915_gem_do_execbuffer'
Resolves rhbz#998887.
Signed-off-by: Martin Milata <mmilata@redhat.com>
---
src/plugins/oops-utils.c | 22 ++++++++++++++++++++--
1 file changed, 20 insertions(+), 2 deletions(-)
diff --git a/src/plugins/oops-utils.c b/src/plugins/oops-utils.c
index 9e2355e..ea6c639 100644
--- a/src/plugins/oops-utils.c
+++ b/src/plugins/oops-utils.c
@@ -12,6 +12,8 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
+#include <satyr/stacktrace.h>
+
#include "oops-utils.h"
#include "libabrt.h"
@@ -242,8 +244,24 @@ void abrt_oops_save_data_in_dump_dir(struct dump_dir *dd, char *oops, const char
// TODO: add "Kernel oops: " prefix, so that all oopses have recognizable FILENAME_REASON?
// kernel oops 1st line may look quite puzzling otherwise...
- strchrnul(second_line, '\n')[0] = '\0';
- dd_save_text(dd, FILENAME_REASON, second_line);
+ char *reason_pretty = NULL;
+ char *error = NULL;
+ struct sr_stacktrace *trace = sr_stacktrace_parse(SR_REPORT_KERNELOOPS, second_line, &error);
+ if (trace)
+ {
+ reason_pretty = sr_stacktrace_get_reason(trace);
+ sr_stacktrace_free(trace);
+ }
+ else
+ free(error);
+
+ if (reason_pretty)
+ {
+ dd_save_text(dd, FILENAME_REASON, reason_pretty);
+ free(reason_pretty);
+ }
+ else
+ dd_save_text(dd, FILENAME_REASON, second_line);
}
int abrt_oops_signaled_sleep(int seconds)
--
2.1.0

123
abrt.spec
View File

@ -40,13 +40,13 @@
%define docdirversion -%{version} %define docdirversion -%{version}
%endif %endif
%define libreport_ver 2.3.0-3 %define libreport_ver 2.4.0
%define satyr_ver 0.15-2 %define satyr_ver 0.16
Summary: Automatic bug detection and reporting tool Summary: Automatic bug detection and reporting tool
Name: abrt Name: abrt
Version: 2.3.0 Version: 2.4.0
Release: 5%{?dist} Release: 1%{?dist}
License: GPLv2+ License: GPLv2+
Group: Applications/System Group: Applications/System
URL: https://github.com/abrt/abrt/wiki/ABRT-Project URL: https://github.com/abrt/abrt/wiki/ABRT-Project
@ -56,55 +56,13 @@ Patch0: disable-OpenGPGCheck-in-Fedora-Rawhide.patch
# git format-patch %%{Version} --topo-order -N -M; # git format-patch %%{Version} --topo-order -N -M;
# for p in `ls 0*.patch`; do printf "Patch%04d: %s\n" $i $p; ((i++)); done # for p in `ls 0*.patch`; do printf "Patch%04d: %s\n" $i $p; ((i++)); done
Patch0001: 0001-Translation-updates.patch
#Patch0002: 0002-testsuite-added-missing-test-for-abrt-cli-option-pro.patch
#Patch0003: 0003-testsuite-added-nachineid-test.patch
#Patch0004: 0004-testsuite-added-test-for-ureport-with-Authentication.patch
#Patch0005: 0005-testsuite-added-test-for-ureport-authorization-throu.patch
Patch0006: 0006-console-notifications-use-return-instead-of-exit.patch
Patch0007: 0007-ureport-attach-contact-email-if-configured.patch
Patch0008: 0008-applet-don-t-show-duphash-instead-of-component.patch
#Patch0009: 0009-testsuite-console-notifications.patch
Patch0010: 0010-console-notifications-skip-non-interactive-shells.patch
#Patch0011: 0011-testsuite-run-console-notification-tests-in-screen.patch
#Patch0012: 0012-testsuite-add-console-notification-on-the-rhel7-list.patch
#Patch0013: 0013-testsuite-install-abrt-console-notification.patch
#Patch0014: 0014-testsuite-added-test-for-integration-of-rhtsupport-w.patch
#Patch0015: 0015-testsuite-added-another-test-for-integration-of-rhts.patch
#Patch0016: 0016-testsuite-added-isolated-test-rhts-test-for-rhel6.patch
#Patch0017: 0017-testsuite-console-notifications-fix-couple-of-bugs.patch
#Patch0018: 0018-testsuite-dump-journal-oops-check-output.patch
#Patch0019: 0019-testsuite-fix-koops-journal-parsing-for-s390x.patch
#Patch0020: 0020-testsuite-show-diff-of-dumped-journal-oops-and-expec.patch
Patch0021: 0021-journal-oops-use-the-length-result-of-sd_journal_get.patch
#Patch0021: 0022-testsuite-abrt-action-ureport.patch
#Patch0022: 0023-testsuite-abrt-action-ureport.patch
Patch0023: 0024-make-ABRT-quieter.patch
#Patch0024: 0025-testsuite-rhts-test.patch
Patch0025: 0026-applet-ensure-writable-dump-directory-before-reporti.patch
#Patch0026: 0027-testsuite-rhsm-entitlement-aut-must-not-fail-with-mo.patch
#Patch0027: 0028-testsuite-use-the-entitlement-certs-with-rhsm.patch
#Patch0028: 0029-testsuite-do-not-user-uReport_URL-in-reporter-rhtsup.patch
Patch0029: 0030-a-a-s-p-d-add-firefox-on-the-package-blacklist.patch
#Patch0030: 0031-testsuite-infinite-recursion-stack-traces.patch
Patch0031: 0032-a-a-g-machine-id-add-systemd-s-machine-id.patch
#Patch0032: 0033-testsuite-add-sanity-test-for-a-a-g-machine-id.patch
Patch0033: 0034-a-a-g-machine-id-suppress-its-failures-in-abrt_event.patch
#Patch0034: 0035-testsuite-infinite-recursion-stack-traces-fix.patch
#Patch0035: 0036-testsuite-verify-that-machineid-contains-two-values.patch
Patch0036: 0037-a-a-g-machine-id-omit-trailing-new-line-for-one-line.patch
Patch0037: 0038-a-a-g-machine-id-do-not-print-any-error-from-the-eve.patch
Patch0038: 0039-sos-use-all-valuable-plugins.patch
Patch0039: 0040-koops-improve-reason-text-for-page-faults.patch
#Patch0040: 0041-testsuite-ureport-does-not-fail-on-rhsm-errors.patch
#Patch0041: 0042-spec-update-the-URL.patch
# '%%autosetup -S git' -> git # '%%autosetup -S git' -> git
BuildRequires: git BuildRequires: git
BuildRequires: dbus-devel BuildRequires: dbus-devel
BuildRequires: gtk3-devel BuildRequires: gtk3-devel
BuildRequires: glib2-devel >= 2.43
BuildRequires: rpm-devel >= 4.6 BuildRequires: rpm-devel >= 4.6
BuildRequires: desktop-file-utils BuildRequires: desktop-file-utils
BuildRequires: libnotify-devel BuildRequires: libnotify-devel
@ -180,9 +138,9 @@ Group: User Interface/Desktops
Requires: %{name} = %{version}-%{release} Requires: %{name} = %{version}-%{release}
Requires: %{name}-dbus = %{version}-%{release} Requires: %{name}-dbus = %{version}-%{release}
Requires: gnome-abrt Requires: gnome-abrt
Requires: gsettings-desktop-schemas >= 3.15
BuildRequires: libreport-gtk-devel >= %{libreport_ver} BuildRequires: libreport-gtk-devel >= %{libreport_ver}
BuildRequires: libICE-devel BuildRequires: gsettings-desktop-schemas-devel >= 3.15
BuildRequires: libSM-devel
# we used to have abrt-applet, now abrt-gui includes it: # we used to have abrt-applet, now abrt-gui includes it:
Provides: abrt-applet = %{version}-%{release} Provides: abrt-applet = %{version}-%{release}
Obsoletes: abrt-applet < 0.0.5 Obsoletes: abrt-applet < 0.0.5
@ -193,11 +151,19 @@ Requires: abrt-gui-libs = %{version}-%{release}
%description gui %description gui
GTK+ wizard for convenient bug reporting. GTK+ wizard for convenient bug reporting.
%package addon-coredump-helper
Summary: %{name}'s /proc/sys/kernel/core_pattern helper
Group: System Environment/Libraries
Requires: abrt-libs = %{version}-%{release}
%description addon-coredump-helper
This package contains hook for C/C++ crashed programs.
%package addon-ccpp %package addon-ccpp
Summary: %{name}'s C/C++ addon Summary: %{name}'s C/C++ addon
Group: System Environment/Libraries Group: System Environment/Libraries
Requires: cpio Requires: cpio
Requires: gdb >= 7.0-3 Requires: gdb >= 7.8.1-31
Requires: elfutils Requires: elfutils
%if 0%{!?rhel:1} %if 0%{!?rhel:1}
# abrt-action-perform-ccpp-analysis wants to run analyze_RetraceServer: # abrt-action-perform-ccpp-analysis wants to run analyze_RetraceServer:
@ -205,11 +171,11 @@ Requires: %{name}-retrace-client
%endif %endif
Requires: %{name} = %{version}-%{release} Requires: %{name} = %{version}-%{release}
Requires: abrt-libs = %{version}-%{release} Requires: abrt-libs = %{version}-%{release}
Requires: %{name}-addon-coredump-helper = %{version}-%{release}
Requires: libreport-python Requires: libreport-python
%description addon-ccpp %description addon-ccpp
This package contains hook for C/C++ crashed programs and %{name}'s C/C++ This package contains %{name}'s C/C++ analyzer plugin.
analyzer plugin.
%package addon-upload-watch %package addon-upload-watch
Summary: %{name}'s upload addon Summary: %{name}'s upload addon
@ -380,7 +346,7 @@ Requires: abrt-addon-python
Requires: abrt-addon-python3 Requires: abrt-addon-python3
Requires: abrt-addon-xorg Requires: abrt-addon-xorg
# Default config of addon-ccpp requires gdb # Default config of addon-ccpp requires gdb
Requires: gdb >= 7.0-3 Requires: gdb >= 7.8.1-31
Requires: elfutils Requires: elfutils
Requires: abrt-gui Requires: abrt-gui
Requires: gnome-abrt Requires: gnome-abrt
@ -550,12 +516,15 @@ exit 0
# $1 == 1 if install; 2 if upgrade # $1 == 1 if install; 2 if upgrade
%systemd_post abrtd.service %systemd_post abrtd.service
%post addon-coredump-helper
%systemd_post abrt-ccpp.service
%post addon-ccpp %post addon-ccpp
# this is required for transition from 1.1.x to 2.x # this is required for transition from 1.1.x to 2.x
# because /cache/abrt-di/* was created under root with root:root # because /cache/abrt-di/* was created under root with root:root
# so 2.x fails when it tries to extract debuginfo there.. # so 2.x fails when it tries to extract debuginfo there..
chown -R abrt:abrt %{_localstatedir}/cache/abrt-di chown -R abrt:abrt %{_localstatedir}/cache/abrt-di
%systemd_post abrt-ccpp.service %systemd_post abrt-journal-core.service
%post addon-kerneloops %post addon-kerneloops
%systemd_post abrt-oops.service %systemd_post abrt-oops.service
@ -577,9 +546,12 @@ chown -R abrt:abrt %{_localstatedir}/cache/abrt-di
%preun %preun
%systemd_preun abrtd.service %systemd_preun abrtd.service
%preun addon-ccpp %preun addon-coredump-helper
%systemd_preun abrt-ccpp.service %systemd_preun abrt-ccpp.service
%preun addon-ccpp
%systemd_preun abrt-journal-core.service
%preun addon-kerneloops %preun addon-kerneloops
%systemd_preun abrt-oops.service %systemd_preun abrt-oops.service
@ -600,9 +572,12 @@ chown -R abrt:abrt %{_localstatedir}/cache/abrt-di
%postun %postun
%systemd_postun_with_restart abrtd.service %systemd_postun_with_restart abrtd.service
%postun addon-ccpp %postun addon-coredump-helper
%systemd_postun_with_restart abrt-ccpp.service %systemd_postun_with_restart abrt-ccpp.service
%postun addon-ccpp
%systemd_postun_with_restart abrt-journal-core.service
%postun addon-kerneloops %postun addon-kerneloops
%systemd_postun_with_restart abrt-oops.service %systemd_postun_with_restart abrt-oops.service
@ -643,19 +618,8 @@ fi
abrtdir=$(grep "DumpLocation" /etc/abrt/abrt.conf | cut -d'=' -f2 | tr -d ' '); cd $abrtdir 2>/dev/null && for i in `find . -name "analyzer" 2>/dev/null`; do len=${#i};cp "$i" "${i:0:$len-9}/type"; done; for i in `find "$abrtdir" -mindepth 1 -maxdepth 1 -type d`; do chown `stat --format=%U:abrt $i` $i/*; done abrtdir=$(grep "DumpLocation" /etc/abrt/abrt.conf | cut -d'=' -f2 | tr -d ' '); cd $abrtdir 2>/dev/null && for i in `find . -name "analyzer" 2>/dev/null`; do len=${#i};cp "$i" "${i:0:$len-9}/type"; done; for i in `find "$abrtdir" -mindepth 1 -maxdepth 1 -type d`; do chown `stat --format=%U:abrt $i` $i/*; done
service abrtd condrestart >/dev/null 2>&1 || : service abrtd condrestart >/dev/null 2>&1 || :
%posttrans addon-ccpp %posttrans addon-coredump-helper
service abrt-ccpp condrestart >/dev/null 2>&1 || : service abrt-ccpp condrestart >/dev/null 2>&1 || :
# Regenerate core_bactraces because of missing crash threads
abrtdir=$(grep "DumpLocation" /etc/abrt/abrt.conf | cut -d'=' -f2 | tr -d ' ')
if test -d "$abrtdir"; then
for DD in `find "$abrtdir" -mindepth 1 -maxdepth 1 -type d`
do
if test -f "$DD/analyzer" && grep -q "^CCpp$" "$DD/analyzer"; then
/usr/bin/abrt-action-generate-core-backtrace -d "$DD" -- >/dev/null 2>&1 || :
test -f "$DD/core_backtrace" && chown `stat --format=%U:abrt $DD` "$DD/core_backtrace" || :
fi
done
fi
%posttrans addon-kerneloops %posttrans addon-kerneloops
service abrt-oops condrestart >/dev/null 2>&1 || : service abrt-oops condrestart >/dev/null 2>&1 || :
@ -701,9 +665,11 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%{_bindir}/abrt-action-notify %{_bindir}/abrt-action-notify
%{_mandir}/man1/abrt-action-notify.1.gz %{_mandir}/man1/abrt-action-notify.1.gz
%{_bindir}/abrt-action-save-package-data %{_bindir}/abrt-action-save-package-data
%{_bindir}/abrt-action-save-container-data
%{_bindir}/abrt-watch-log %{_bindir}/abrt-watch-log
%{_bindir}/abrt-action-analyze-python %{_bindir}/abrt-action-analyze-python
%{_bindir}/abrt-action-analyze-xorg %{_bindir}/abrt-action-analyze-xorg
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.problems.daemon.conf
%config(noreplace) %{_sysconfdir}/%{name}/abrt.conf %config(noreplace) %{_sysconfdir}/%{name}/abrt.conf
%{_datadir}/%{name}/conf.d/abrt.conf %{_datadir}/%{name}/conf.d/abrt.conf
%config(noreplace) %{_sysconfdir}/%{name}/abrt-action-save-package-data.conf %config(noreplace) %{_sysconfdir}/%{name}/abrt-action-save-package-data.conf
@ -787,19 +753,24 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%{_mandir}/man1/abrt-applet.1* %{_mandir}/man1/abrt-applet.1*
%{_mandir}/man1/system-config-abrt.1* %{_mandir}/man1/system-config-abrt.1*
%files addon-ccpp %files addon-coredump-helper
%defattr(-,root,root,-) %defattr(-,root,root,-)
%config(noreplace) %{_sysconfdir}/%{name}/plugins/CCpp.conf %config(noreplace) %{_sysconfdir}/%{name}/plugins/CCpp.conf
%{_datadir}/%{name}/conf.d/plugins/CCpp.conf %{_datadir}/%{name}/conf.d/plugins/CCpp.conf
%{_mandir}/man5/abrt-CCpp.conf.5.gz %{_mandir}/man5/abrt-CCpp.conf.5.gz
%dir %attr(0775, abrt, abrt) %{_localstatedir}/cache/abrt-di %{_libexecdir}/abrt-hook-ccpp
%if %{with systemd} %if %{with systemd}
%{_unitdir}/abrt-ccpp.service %{_unitdir}/abrt-ccpp.service
%else %else
%{_initrddir}/abrt-ccpp %{_initrddir}/abrt-ccpp
%endif %endif
%{_libexecdir}/abrt-hook-ccpp
%files addon-ccpp
%defattr(-,root,root,-)
%dir %attr(0775, abrt, abrt) %{_localstatedir}/cache/abrt-di
%{_libexecdir}/abrt-gdb-exploitable %{_libexecdir}/abrt-gdb-exploitable
%{_unitdir}/abrt-journal-core.service
# attr(6755) ~= SETUID|SETGID # attr(6755) ~= SETUID|SETGID
%attr(6755, abrt, abrt) %{_libexecdir}/abrt-action-install-debuginfo-to-abrt-cache %attr(6755, abrt, abrt) %{_libexecdir}/abrt-action-install-debuginfo-to-abrt-cache
@ -815,6 +786,7 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%{_bindir}/abrt-action-list-dsos %{_bindir}/abrt-action-list-dsos
%{_bindir}/abrt-action-perform-ccpp-analysis %{_bindir}/abrt-action-perform-ccpp-analysis
%{_bindir}/abrt-action-analyze-ccpp-local %{_bindir}/abrt-action-analyze-ccpp-local
%{_bindir}/abrt-dump-journal-core
%{_sbindir}/abrt-install-ccpp-hook %{_sbindir}/abrt-install-ccpp-hook
%config(noreplace) %{_sysconfdir}/libreport/events.d/ccpp_event.conf %config(noreplace) %{_sysconfdir}/libreport/events.d/ccpp_event.conf
%{_mandir}/man5/ccpp_event.conf.5.gz %{_mandir}/man5/ccpp_event.conf.5.gz
@ -1010,6 +982,15 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%config(noreplace) %{_sysconfdir}/profile.d/abrt-console-notification.sh %config(noreplace) %{_sysconfdir}/profile.d/abrt-console-notification.sh
%changelog %changelog
* Fri Feb 20 2015 Jakub Filak <jfilak@redhat.com> - 2.4.0-1
- gracefully handle crashes in containers
- reworked abrt-applet's work-flow
- process unpackaged by default
- support collecting coredumps from systemd-coredumpctl
- search for log lines in journald more efficiently
- support sending micro-reports without the need to save coredump
- create a new package abrt-coredump-helper for Fedora Atomic
* Fri Nov 07 2014 Jakub Filak <jfilak@redhat.com> - 2.3.0-5 * Fri Nov 07 2014 Jakub Filak <jfilak@redhat.com> - 2.3.0-5
- koops: improve 'reason' text for page faults - koops: improve 'reason' text for page faults
- do not detect Firefox crashes - do not detect Firefox crashes

View File

@ -1 +1 @@
faa666301f4512723486300212cd7e58 abrt-2.3.0.tar.gz 6369e9f30d04d02991112dba79b9891a abrt-2.4.0.tar.gz