Compare commits

..

4 commits

Author SHA1 Message Date
Julius Milan
ce22458aef Fixes and improvements
- logging: rename log() to log_warning()
- reporter-mantisbt: Fix typo in help
- bugzilla: add check if option -d was entered
- dd: extend create_dump_dir to allow set pid in dumpdir name
- lib: fix to ensure order of login credentials when reporting using abrt-cli
- configure.ac: update glib min. version dependency
- lib: fix newline issue with ask_password
2017-08-31 16:56:57 +02:00
Petr Šabata
ea83325b23 Weaken the python3 bindings base package dependency for modular builds
Different parts of libreports are built and shipped with
different modules in F26 Boltron, namely modules/shared-userspace
and modules/dnf.  This allows libreport-python3 from modules/dnf
work with libreport from modules/shared-userspace even though
they have different dist tags.

This only affects modularity builds and shouldn't be needed
beyond F26 Boltron.

Signed-off-by: Petr Šabata <contyk@redhat.com>
2017-06-12 17:01:41 +02:00
Matej Habrnal
b730895e1c Fixes and improvements
- augeas: trim spaces on eol, around value separator
- add journal default entries to reporter-systemd-journal

Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
2017-04-13 14:35:41 +02:00
Matej Habrnal
221ea17013 New upstream release 2.9.1
Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
2017-03-16 11:20:09 +01:00
24 changed files with 3728 additions and 726 deletions

View file

@ -1 +0,0 @@
1

34
.gitignore vendored
View file

@ -1,33 +1 @@
/libreport-2.9.3.tar.gz
/libreport-2.9.4.tar.gz
/libreport-2.9.5.tar.gz
/libreport-2.9.6.tar.gz
/libreport-2.9.7.tar.gz
/libreport-2.10.0.tar.gz
/libreport-2.10.1.tar.gz
/libreport-2.11.0.tar.gz
/libreport-2.11.1.tar.gz
/libreport-2.11.2.tar.gz
/libreport-2.11.3.tar.gz
/libreport-2.12.0.tar.gz
/libreport-2.13.0.tar.gz
/libreport-2.13.1.tar.gz
/libreport-2.14.0.tar.gz
/libreport-2.15.1.tar.gz
/libreport-2.15.2.tar.gz
/libreport-2.16.0.tar.gz
/libreport-2.17.0.tar.gz
/libreport-2.17.1.tar.gz
/libreport-2.17.2.tar.gz
/libreport-2.17.3.tar.gz
/libreport-2.17.4.tar.gz
/libreport-2.17.5.tar.gz
/libreport-2.17.6.tar.gz
/libreport-2.17.7.tar.gz
/libreport-2.17.8.tar.gz
/libreport-2.17.9.tar.gz
/libreport-2.17.10.tar.gz
/libreport-2.17.11.tar.gz
/libreport-2.17.13.tar.gz
/libreport-2.17.14.tar.gz
/libreport-2.17.15.tar.gz
/libreport-2.*.tar.gz

View file

@ -1,21 +0,0 @@
specfile_path: libreport.spec
synced_files:
- .packit.yml
- libreport.spec
upstream_package_name: libreport
upstream_project_url: https://github.com/abrt/libreport
downstream_package_name: libreport
# No extra dependencies are necessary to build the SRPM.
srpm_build_deps: []
jobs:
- job: propose_downstream
trigger: release
metadata:
dist_git_branch: fedora-all
- job: copr_build
trigger: pull_request
metadata:
targets:
- fedora-all

View file

@ -0,0 +1,100 @@
From bc3149ba31c063d334dd95a21c4214cef11f46da Mon Sep 17 00:00:00 2001
From: Julius Milan <jmilan@redhat.com>
Date: Wed, 22 Mar 2017 14:10:04 +0100
Subject: [PATCH] augeas: trim spaces on eol, around value separator
Resolves abrt/libreport#474
Related to rhbz#1434414
---
augeas/libreport.aug | 19 ++++++++++++-------
augeas/test_libreport.aug | 20 ++++++++++++++++++++
2 files changed, 32 insertions(+), 7 deletions(-)
diff --git a/augeas/libreport.aug b/augeas/libreport.aug
index 483eeaf..46ffb73 100644
--- a/augeas/libreport.aug
+++ b/augeas/libreport.aug
@@ -2,19 +2,24 @@ module Libreport =
autoload xfm
(* Define useful primitives *)
- let value_sep = del / ?= ?/ " = "
- let value_to_eol = store /([^ \t\n].*[^ \t\n]|[^ \t\n]?)/
- let eol = del /\n/ "\n"
- let ident = /[a-zA-Z][a-zA-Z_]+/
+ let val_sep = del /[ \t]*=[ \t]*/ " = "
+ let val = store /([^ \t\n].*[^ \t\n]|[^ \t\n])/
+ let eol = del /\n/ "\n"
+ let whitespace_eol = del /[ \t]*\n/ "\n"
+ let ident = /[a-zA-Z][a-zA-Z_]+/
(* Define comment *)
- let comment = [ label "#comment" . del /#[ \t]*/ "# " . value_to_eol . eol ]
+ let commented_line = [ label "#comment" . del /#[ \t]*/ "# " . val . eol ]
+ let empty_comment = [ label "#comment" . value "" . del /#[ \t]*/ "# " . eol ]
+ let comment = commented_line | empty_comment
(* Define empty *)
- let empty = [ del /[ \t]*\n/ "\n" ]
+ let empty = [ del /[ \t]*\n/ "\n" ]
(* Define option *)
- let option = [ del /[ \t]*/ "" . key ident . value_sep . value_to_eol . eol ]
+ let option_val = [ del /[ \t]*/ "" . key ident . val_sep . val . whitespace_eol ]
+ let option_no_val = [ value "" . del /[ \t]*/ "" . key ident . val_sep . eol ]
+ let option = option_val | option_no_val
(* Define lens *)
let lns = ( comment | empty | option )*
diff --git a/augeas/test_libreport.aug b/augeas/test_libreport.aug
index 116e97c..3dfbfa6 100644
--- a/augeas/test_libreport.aug
+++ b/augeas/test_libreport.aug
@@ -16,6 +16,8 @@ Password =
# bugs in selinux-policy component.
# (If you need to add more, the syntax is: \"component[,component...]\")
#
+#
+#
DontMatchComponents = selinux-policy
# for more info about these settings see: https://github.com/abrt/abrt/wiki/FAQ#creating-private-bugzilla-tickets
@@ -25,6 +27,14 @@ PrivateGroups=private
Whitespace_two=start
Whitespace_three =start
Whitespace_four= start
+
+AssignmentWhitespace_a =what
+ AssignmentWhitespace_b = an
+AssignmentWhitespace_c= original
+ AssignmentWhitespace_d = idea
+
+EOLWhitespace_a = nice
+EOLWhitespace_b = nice
"
test Libreport.lns get conf =
@@ -44,6 +54,8 @@ PrivateGroups=private
{ "#comment" = "bugs in selinux-policy component." }
{ "#comment" = "(If you need to add more, the syntax is: \"component[,component...]\")" }
{ "#comment" = "" }
+ { "#comment" = "" }
+ { "#comment" = "" }
{ "DontMatchComponents" = "selinux-policy" }
{}
{ "#comment" = "for more info about these settings see: https://github.com/abrt/abrt/wiki/FAQ#creating-private-bugzilla-tickets" }
@@ -53,3 +65,11 @@ PrivateGroups=private
{ "Whitespace_two" = "start" }
{ "Whitespace_three" = "start" }
{ "Whitespace_four" = "start" }
+ {}
+ { "AssignmentWhitespace_a" = "what" }
+ { "AssignmentWhitespace_b" = "an" }
+ { "AssignmentWhitespace_c" = "original" }
+ { "AssignmentWhitespace_d" = "idea" }
+ {}
+ { "EOLWhitespace_a" = "nice" }
+ { "EOLWhitespace_b" = "nice" }
--
2.9.3

View file

@ -0,0 +1,63 @@
From f97b21d1e1d4bff4e667991997dd78fec3b95159 Mon Sep 17 00:00:00 2001
From: Matej Habrnal <mhabrnal@redhat.com>
Date: Tue, 14 Mar 2017 12:55:25 +0100
Subject: [PATCH] reporter-s-journal: add journal default entries
This commit adds 3 new fields into journal logs. All of them are in the
NONE dump.
The new fields are:
PROBLEM_DIR - Represents absolute file system path of problem directory.
The full path is needed because that is the way with which are
problems identified in DBus Problems2API.
PROBLEM_UUID - Represents uuid
PROBLEM_DUPHASH - Represents duphash
These new fields were needed for ABRT in Cockpit for connecting problems
with journal entries. All three are needed, because the problem directory
might be removed at the time of reading journal but a dupe can be
present there and the dupe can be identified based on DUPHASH or UUID.
Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
---
src/plugins/reporter-systemd-journal.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/src/plugins/reporter-systemd-journal.c b/src/plugins/reporter-systemd-journal.c
index 8df5ac7..957002b 100644
--- a/src/plugins/reporter-systemd-journal.c
+++ b/src/plugins/reporter-systemd-journal.c
@@ -102,6 +102,7 @@ static void msg_content_free(msg_content_t *msg_c)
#define BINARY_NAME "binary"
#define SYSLOG_ID "SYSLOG_IDENTIFIER"
#define MESSAGE_ID "MESSAGE_ID"
+#define DUMPDIR_PATH "DIR"
enum {
DUMP_NONE = 1 << 0,
@@ -122,6 +123,9 @@ static const char *const fields_default[] = {
FILENAME_EXCEPTION_TYPE ,
FILENAME_REASON ,
FILENAME_CRASH_FUNCTION ,
+ DUMPDIR_PATH ,
+ FILENAME_UUID ,
+ FILENAME_DUPHASH ,
NULL
};
@@ -302,6 +306,12 @@ int main(int argc, char **argv)
if (binary_name)
problem_data_add_text_noteditable(problem_data, BINARY_NAME, binary_name);
+ /* add problem dir path into problem data */
+ char *abspath = realpath(dump_dir_name, NULL);
+ if (abspath)
+ problem_data_add_text_noteditable(problem_data, DUMPDIR_PATH, abspath);
+ free(abspath);
+
/* crash_function element is neeeded by systemd journal messages, save ??, if it doesn't exist */
const char *crash_function = problem_data_get_content_or_NULL(problem_data, FILENAME_CRASH_FUNCTION);
if (!crash_function)
--
2.9.3

View file

@ -0,0 +1,37 @@
From d2b5f09e2757f2585eb1003fdf6db43e58013c19 Mon Sep 17 00:00:00 2001
From: Matej Marusak <mmarusak@redhat.com>
Date: Tue, 21 Mar 2017 09:04:38 +0100
Subject: [PATCH] reporter-s-journal: add count to default logs
Field count is available only in FULL dump. There are however two good
reasons why to include this in NONE dump.
1. It is quite useful to know if this problem occurred first time or is it
problem that happens a lot.
2. We need it for cockpit integration. If the problem happened more times it
will have multiple logs. By comparing count in the log and real count, we can
know, if this is the last log of the problem. (timestamps do not work ideally
for this, since the time of problem does not equal to the time of the
log - there is some delay)
Signed-off-by: Matej Marusak <mmarusak@redhat.com>
---
src/plugins/reporter-systemd-journal.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/plugins/reporter-systemd-journal.c b/src/plugins/reporter-systemd-journal.c
index 957002b..d12296e 100644
--- a/src/plugins/reporter-systemd-journal.c
+++ b/src/plugins/reporter-systemd-journal.c
@@ -126,6 +126,7 @@ static const char *const fields_default[] = {
DUMPDIR_PATH ,
FILENAME_UUID ,
FILENAME_DUPHASH ,
+ FILENAME_COUNT ,
NULL
};
--
2.9.3

View file

@ -0,0 +1,297 @@
From 45a5ca011bd0a402cd55bbca950634280e152dea Mon Sep 17 00:00:00 2001
From: Martin Kutlak <mkutlak@redhat.com>
Date: Fri, 7 Apr 2017 10:49:51 +0200
Subject: [PATCH 04/14] lib: fix newline issue with ask_password
The newline wasn't printed out because printing characters in terminal was
disabled (ECHO flag unset). After 'ask_password' function call, there would
have to be print function to create newline, otherwise the next message
would show up in the same line.
ECHONL flag allows to print newline character even if the ECHO flag is disabled.
Logic for the changes of the flags follows:
Change ECHO flag only when:
- ECHO is set (0) and there was no change (0) previously.
OR
- ECHO is unset (1) and there was a change (1) previously.
Change ECHONL flag only when:
- ECHONL is unset (1) and there was no change (0) previously.
OR
- ECHONL is set (0) and there was a change (1) previously.
Also ECHONL needs ICANON flag to be set (It is set by default).
Signed-off-by: Martin Kutlak <mkutlak@redhat.com>
---
configure.ac | 4 ++
src/cli/cli-report.c | 3 -
src/lib/client.c | 18 ++++-
src/plugins/reporter-mantisbt.c | 2 -
tests/Makefile.am | 3 +-
tests/client.at | 152 ++++++++++++++++++++++++++++++++++++++++
tests/testsuite.at | 1 +
7 files changed, 174 insertions(+), 9 deletions(-)
create mode 100644 tests/client.at
diff --git a/configure.ac b/configure.ac
index ccefe50..c8745f8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -239,6 +239,10 @@ PKG_CHECK_MODULES([AUGEAS], [augeas])
#PKG_CHECK_MODULES([LZ4], [liblz4])
+AC_SEARCH_LIBS([forkpty], [util])
+AC_REPLACE_FUNCS([forkpty])
+
+
AC_ARG_WITH(newt,
AS_HELP_STRING([--with-newt],[use newt (default is YES)]),
LIBREPORT_PARSE_WITH([newt]))
diff --git a/src/cli/cli-report.c b/src/cli/cli-report.c
index c83dc20..537b194 100644
--- a/src/cli/cli-report.c
+++ b/src/cli/cli-report.c
@@ -442,9 +442,6 @@ static void ask_for_missing_settings(const char *event_name)
case OPTION_TYPE_PASSWORD:
{
opt->eo_value = ask_password(question);
- /* Newline was not added by pressing Enter because ECHO was
- disabled, so add it now. */
- puts("");
break;
}
case OPTION_TYPE_BOOL:
diff --git a/src/lib/client.c b/src/lib/client.c
index 811f33e..8a4e2ad 100644
--- a/src/lib/client.c
+++ b/src/lib/client.c
@@ -34,14 +34,26 @@ static int is_noninteractive_mode()
int set_echo(int enable)
{
struct termios t;
+ int chvalue = 0;
if (tcgetattr(STDIN_FILENO, &t) < 0)
return 0;
- /* No change needed? */
- if (!(t.c_lflag & ECHO) == !enable)
+ /* ECHO flag change if needed */
+ if ((!(t.c_lflag & ECHO)) == enable)
+ {
+ t.c_lflag ^= ECHO;
+ chvalue = 1;
+ }
+ /* ECHONL flag change if needed */
+ if ((!(t.c_lflag & ECHONL)) != enable)
+ {
+ t.c_lflag ^= ECHONL;
+ chvalue = 1;
+ }
+
+ if (!chvalue)
return 0;
- t.c_lflag ^= ECHO;
if (tcsetattr(STDIN_FILENO, TCSANOW, &t) < 0)
perror_msg_and_die("tcsetattr");
diff --git a/src/plugins/reporter-mantisbt.c b/src/plugins/reporter-mantisbt.c
index 5062d32..622af87 100644
--- a/src/plugins/reporter-mantisbt.c
+++ b/src/plugins/reporter-mantisbt.c
@@ -62,8 +62,6 @@ static char *
ask_mantisbt_password(const char *message)
{
char *password = ask_password(message);
- /* TODO: this should be fixed in ask_password() as other tools have the same problem */
- putchar('\n');
if (password == NULL || password[0] == '\0')
{
set_xfunc_error_retval(EXIT_CANCEL_BY_USER);
diff --git a/tests/Makefile.am b/tests/Makefile.am
index df19403..2b8972d 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -59,7 +59,8 @@ TESTSUITE_AT = \
event_config.at \
proc_helpers.at \
compress.at \
- forbidden_words.at
+ forbidden_words.at \
+ client.at
TESTSUITE_AT_IN = \
bugzilla_plugin.at
diff --git a/tests/client.at b/tests/client.at
new file mode 100644
index 0000000..b643789
--- /dev/null
+++ b/tests/client.at
@@ -0,0 +1,152 @@
+# -*- Autotest -*-
+
+AT_BANNER([Client])
+
+## ---------------- ##
+## set_echo ##
+## ---------------- ##
+
+AT_TESTFUN([set_echo],
+[[
+#include <assert.h>
+#include "client.h"
+#include "internal_libreport.h"
+#include <pty.h>
+
+#define ECHO_TEST (!(new_mode.c_lflag & ECHO))
+#define ECHONL_TEST (!(new_mode.c_lflag & ECHONL))
+
+int main (void)
+{
+ int master_pty;
+
+ pid_t pid = forkpty(&master_pty, NULL, NULL, NULL);
+ if (pid < 0) {
+ perror_msg_and_die("forkpty failed.");
+ }
+
+ if (pid == 0) {
+ int check, result, changed;
+ struct termios old_mode, new_mode;
+ assert(isatty(STDIN_FILENO) == 1);
+
+ check = tcgetattr(STDIN_FILENO, &new_mode);
+ assert(check == 0);
+ old_mode = new_mode;
+
+ new_mode.c_lflag |= ECHO;
+ new_mode.c_lflag &= ~(ECHONL);
+ check = tcsetattr(STDIN_FILENO, TCSANOW, &new_mode);
+ assert(check == 0);
+
+ changed = 0;
+ result = set_echo(changed);
+ check = tcgetattr(STDIN_FILENO, &new_mode);
+ assert(check == 0);
+ assert(result != changed);
+ assert(ECHO_TEST == 1);
+ assert(ECHONL_TEST == 0);
+
+ changed = 1;
+ result = set_echo(changed);
+ check = tcgetattr(STDIN_FILENO, &new_mode);
+ assert(check == 0);
+ assert(result == changed);
+ assert(ECHO_TEST == 0);
+ assert(ECHONL_TEST == 1);
+
+ new_mode.c_lflag &= ~(ECHO);
+ new_mode.c_lflag |= ECHONL;
+ check = tcsetattr(STDIN_FILENO, TCSANOW, &new_mode);
+ assert(check == 0);
+
+ changed = 0;
+ result = set_echo(changed);
+ check = tcgetattr(STDIN_FILENO, &new_mode);
+ assert(result == changed);
+ assert(ECHO_TEST == 1);
+ assert(ECHONL_TEST == 0);
+
+ new_mode.c_lflag |= ECHO;
+ new_mode.c_lflag &= ~(ECHONL);
+ check = tcsetattr(STDIN_FILENO, TCSANOW, &new_mode);
+ assert(check == 0);
+
+ changed = 1;
+ result = set_echo(changed);
+ check = tcgetattr(STDIN_FILENO, &new_mode);
+ assert(result != changed);
+ assert(ECHO_TEST == 0);
+ assert(ECHONL_TEST == 1);
+
+ new_mode.c_lflag &= ~(ECHO | ECHONL);
+ check = tcsetattr(STDIN_FILENO, TCSANOW, &new_mode);
+ assert(check == 0);
+
+ changed = 0;
+ result = set_echo(changed);
+ check = tcgetattr(STDIN_FILENO, &new_mode);
+ assert(result != changed);
+ assert(ECHO_TEST == 1);
+ assert(ECHONL_TEST == 0);
+
+ new_mode.c_lflag &= ~(ECHO | ECHONL);
+ check = tcsetattr(STDIN_FILENO, TCSANOW, &new_mode);
+ assert(check == 0);
+
+ changed = 1;
+ result = set_echo(changed);
+ check = tcgetattr(STDIN_FILENO, &new_mode);
+ assert(check == 0);
+ assert(result == changed);
+ assert(ECHO_TEST == 0);
+ assert(ECHONL_TEST == 1);
+
+ new_mode.c_lflag |= (ECHO | ECHONL);
+ check = tcsetattr(STDIN_FILENO, TCSANOW, &new_mode);
+ assert(check == 0);
+
+ changed = 0;
+ result = set_echo(changed);
+ check = tcgetattr(STDIN_FILENO, &new_mode);
+ assert(check == 0);
+ assert(result != changed);
+ assert(ECHO_TEST == 1);
+ assert(ECHONL_TEST == 0);
+
+ new_mode.c_lflag |= (ECHO | ECHONL);
+ check = tcsetattr(STDIN_FILENO, TCSANOW, &new_mode);
+ assert(check == 0);
+
+ changed = 1;
+ result = set_echo(changed);
+ check = tcgetattr(STDIN_FILENO, &new_mode);
+ assert(check == 0);
+ assert(result == changed);
+ assert(ECHO_TEST == 0);
+ assert(ECHONL_TEST == 1);
+
+ check = tcsetattr(STDIN_FILENO, TCSANOW, &old_mode);
+ assert(check == 0);
+
+ return 0;
+ }
+
+ int status;
+ if (safe_waitpid(pid, &status, 0) < 0) {
+ perror_msg_and_die("waitpid failed.");
+ }
+
+ if (WIFEXITED(status)) {
+ return WEXITSTATUS(status);
+ }
+ else if (WIFSIGNALED(status)) {
+ error_msg_and_die("Killed by signal %d.", WTERMSIG(status));
+ }
+ else {
+ error_msg_and_die("Test unexpectedly stopped/continued.");
+ }
+
+ return 0;
+}
+]])
diff --git a/tests/testsuite.at b/tests/testsuite.at
index a0865b2..45ff6da 100644
--- a/tests/testsuite.at
+++ b/tests/testsuite.at
@@ -30,3 +30,4 @@ m4_include([bugzilla_plugin.at])
m4_include([proc_helpers.at])
m4_include([compress.at])
m4_include([forbidden_words.at])
+m4_include([client.at])
--
2.9.5

View file

@ -0,0 +1,26 @@
From 864b391f904963296b59fc26142f0dc8b5f34833 Mon Sep 17 00:00:00 2001
From: Julius Milan <jmilan@redhat.com>
Date: Wed, 26 Apr 2017 11:07:09 +0200
Subject: [PATCH 05/14] configure.ac: update glib min. version dependency
Related to rhbz#1445669
---
configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index c8745f8..15c743f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -224,7 +224,7 @@ AC_SUBST(PYTHON3_LIBS)
AC_SUBST(python3dir, $PYTHON3_DIR)
AC_SUBST(py3execdir, $PYTHON3_EXECDIR)
-PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.21])
+PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.43])
PKG_CHECK_MODULES([GOBJECT], [gobject-2.0])
PKG_CHECK_MODULES([DBUS], [dbus-1])
PKG_CHECK_MODULES([LIBXML], [libxml-2.0])
--
2.9.5

View file

@ -0,0 +1,401 @@
From f183ccbe0f6e954ec2c9d0e1a1296ac54ff637e5 Mon Sep 17 00:00:00 2001
From: Martin Kutlak <mkutlak@redhat.com>
Date: Tue, 25 Apr 2017 18:20:08 +0200
Subject: [PATCH 08/14] lib: replace hash table with list
Order of login credentials wasn't guaranteed, because event options with missing
values were inserted into hash table and then extracted from it.
I renamed function validate_event as its name was a little bit confusing. The function
returns options that are missing input values and error message should be displayed.
This fixes abrt/abrt#1231
Signed-off-by: Martin Kutlak <mkutlak@redhat.com>
---
src/cli/cli-report.c | 32 ++++++-------
src/gui-wizard-gtk/wizard.c | 4 +-
src/include/event_config.h | 15 +++++-
src/lib/event_config.c | 36 +++++++++++----
src/report-newt/report-newt.c | 25 +++++-----
tests/event_config.at | 103 ++++++++++++++++++++++++++++++++++++++++++
6 files changed, 173 insertions(+), 42 deletions(-)
diff --git a/src/cli/cli-report.c b/src/cli/cli-report.c
index 537b194..fd14888 100644
--- a/src/cli/cli-report.c
+++ b/src/cli/cli-report.c
@@ -414,19 +414,17 @@ static void ask_for_missing_settings(const char *event_name)
{
for (int i = 0; i < 3; ++i)
{
- GHashTable *error_table = validate_event(event_name);
- if (!error_table)
+ GList *err_list = NULL, *iter = NULL;
+ err_list = get_options_with_err_msg(event_name);
+ if(!err_list)
return;
event_config_t *event_config = get_event_config(event_name);
- GHashTableIter iter;
- char *opt_name, *err_msg;
- g_hash_table_iter_init(&iter, error_table);
- while (g_hash_table_iter_next(&iter, (void**)&opt_name, (void**)&err_msg))
+ for (iter = err_list; iter; iter = iter->next)
{
- event_option_t *opt = get_event_option_from_list(opt_name,
- event_config->options);
+ invalid_option_t *err_data = (invalid_option_t *)iter->data;
+ event_option_t *opt = get_event_option_from_list(err_data->invopt_name, event_config->options);
free(opt->eo_value);
opt->eo_value = NULL;
@@ -459,25 +457,27 @@ static void ask_for_missing_settings(const char *event_name)
free(question);
}
- g_hash_table_destroy(error_table);
+ g_list_free_full(err_list, (GDestroyNotify)free_invalid_options);
- error_table = validate_event(event_name);
- if (!error_table)
+ err_list = get_options_with_err_msg(event_name);
+ if (!err_list)
return;
alert(_("Your input is not valid, because of:"));
- g_hash_table_iter_init(&iter, error_table);
- while (g_hash_table_iter_next(&iter, (void**)&opt_name, (void**)&err_msg))
+ for (iter = err_list; iter; iter = iter -> next)
{
- char *msg = xasprintf(_("Bad value for '%s': %s"), opt_name, err_msg);
+ invalid_option_t *err_data = (invalid_option_t *)iter->data;
+ char *msg = xasprintf(_("Bad value for '%s': %s"),
+ err_data->invopt_name,
+ err_data->invopt_error);
alert(msg);
free(msg);
}
- g_hash_table_destroy(error_table);
+ g_list_free_full(err_list, (GDestroyNotify)free_invalid_options);
}
- /* we ask for 3 times and still don't have valid infromation */
+ /* we ask for 3 times and still don't have valid information */
error_msg_and_die("Invalid input, exiting.");
}
diff --git a/src/gui-wizard-gtk/wizard.c b/src/gui-wizard-gtk/wizard.c
index c7136d6..d337805 100644
--- a/src/gui-wizard-gtk/wizard.c
+++ b/src/gui-wizard-gtk/wizard.c
@@ -914,10 +914,10 @@ static gint find_by_button(gconstpointer a, gconstpointer button)
static void check_event_config(const char *event_name)
{
- GHashTable *errors = validate_event(event_name);
+ GList *errors = get_options_with_err_msg(event_name);
if (errors != NULL)
{
- g_hash_table_unref(errors);
+ g_list_free_full(errors, (GDestroyNotify)free_invalid_options);
show_event_config_dialog(event_name, GTK_WINDOW(g_top_most_window));
update_private_ticket_creation_warning_for_selected_event();
}
diff --git a/src/include/event_config.h b/src/include/event_config.h
index fdcb3b4..0e0df98 100644
--- a/src/include/event_config.h
+++ b/src/include/event_config.h
@@ -63,6 +63,17 @@ typedef struct
bool is_advanced;
} event_option_t;
+/*
+ * struct holds
+ * invopt_name = name of the option with invalid value
+ * invopt_error = string of the error message
+ */
+typedef struct
+{
+ char *invopt_name;
+ char *invopt_error;
+} invalid_option_t;
+
event_option_t *new_event_option(void);
void free_event_option(event_option_t *p);
@@ -108,6 +119,8 @@ bool ec_restricted_access_enabled(event_config_t *ec);
void free_event_config(event_config_t *p);
+invalid_option_t *new_invalid_option(void);
+void free_invalid_options(invalid_option_t* p);
void load_event_description_from_file(event_config_t *event_config, const char* filename);
@@ -126,7 +139,7 @@ extern GHashTable *g_event_config_list; // for iterating through entire list o
GList *export_event_config(const char *event_name);
void unexport_event_config(GList *env_list);
-GHashTable *validate_event(const char *event_name);
+GList *get_options_with_err_msg(const char *event_name);
/*
* Checks usability of problem's backtrace rating against required rating level
diff --git a/src/lib/event_config.c b/src/lib/event_config.c
index 9c58d00..c5b7b17 100644
--- a/src/lib/event_config.c
+++ b/src/lib/event_config.c
@@ -22,6 +22,11 @@
GHashTable *g_event_config_list;
static GHashTable *g_event_config_symlinks;
+invalid_option_t *new_invalid_option(void)
+{
+ return xzalloc(sizeof(invalid_option_t));
+}
+
event_option_t *new_event_option(void)
{
return xzalloc(sizeof(event_option_t));
@@ -121,6 +126,15 @@ bool ec_restricted_access_enabled(event_config_t *ec)
return eo->eo_value != NULL && string_to_bool(eo->eo_value);
}
+void free_invalid_options(invalid_option_t *p)
+{
+ if (!p)
+ return;
+ free(p->invopt_name);
+ free(p->invopt_error);
+ free(p);
+}
+
void free_event_option(event_option_t *p)
{
if (!p)
@@ -427,7 +441,7 @@ static char *validate_event_option(event_option_t *opt)
return NULL;
}
-GHashTable *validate_event(const char *event_name)
+GList *get_options_with_err_msg(const char *event_name)
{
INITIALIZE_LIBREPORT();
@@ -435,21 +449,23 @@ GHashTable *validate_event(const char *event_name)
if (!config)
return NULL;
- GHashTable *errors = g_hash_table_new_full(g_str_hash, g_str_equal, free, free);
- GList *li;
+ GList *iter, *err_list = NULL;
- for (li = config->options; li; li = li->next)
+ for (iter = config->options; iter; iter = iter->next)
{
- event_option_t *opt = (event_option_t *)li->data;
+ event_option_t *opt = (event_option_t *)iter->data;
char *err = validate_event_option(opt);
if (err)
- g_hash_table_insert(errors, xstrdup(opt->eo_name), err);
+ {
+ invalid_option_t *inv_opt = new_invalid_option();
+ inv_opt->invopt_name = xstrdup(opt->eo_name);
+ inv_opt->invopt_error = xstrdup(err);
+ err_list = g_list_prepend(err_list, inv_opt);
+ }
}
- if (g_hash_table_size(errors))
- return errors;
-
- g_hash_table_destroy(errors);
+ if (err_list != NULL)
+ return g_list_reverse(err_list);
return NULL;
}
diff --git a/src/report-newt/report-newt.c b/src/report-newt/report-newt.c
index 2427d86..61e279d 100644
--- a/src/report-newt/report-newt.c
+++ b/src/report-newt/report-newt.c
@@ -93,15 +93,14 @@ static int select_reporters(GArray *reporters)
static int configure_reporter(struct reporter *r, bool skip_if_valid)
{
- GHashTable *error_table;
- GList *option;
+ GList *error_list, *option;
event_option_t *opt;
bool first = true, cancel = false;
int num_opts, i;
newtComponent text, *options, button_ok, button_cancel, form;
newtGrid grid, ogrid, bgrid;
- while ((error_table = validate_event(r->name)) ||
+ while ((error_list = get_options_with_err_msg(r->name)) ||
(!skip_if_valid && first && r->config))
{
text = newtTextboxReflowed(0, 0, ec_get_screen_name(r->config) ?
@@ -151,19 +150,19 @@ static int configure_reporter(struct reporter *r, bool skip_if_valid)
form = newtForm(NULL, NULL, 0);
newtGridAddComponentsToForm(grid, form, 1);
- if (!first && error_table)
+ if (!first && error_list)
{
- GHashTableIter iter;
- char *opt_name, *err_msg, buf[4096];
+ GList *iter;
+ char buf[4096];
/* Catenate the error messages */
buf[0] = '\0';
- for (g_hash_table_iter_init(&iter, error_table);
- g_hash_table_iter_next(&iter, (void**)&opt_name, (void**)&err_msg); )
+ for (iter = error_list; iter; iter = iter->next)
{
- opt = get_event_option_from_list(opt_name, r->config->options);
+ invalid_option_t *inv_data = (invalid_option_t *)iter->data;
+ opt = get_event_option_from_list(inv_data->invopt_name, r->config->options);
snprintf(buf + strlen(buf), sizeof (buf) - strlen(buf), "%s: %s\n",
- opt->eo_label ? opt->eo_label : opt->eo_name, err_msg);
+ opt->eo_label ? opt->eo_label : opt->eo_name, inv_data->invopt_error);
}
newtWinMessage(_("Error"), _("Ok"), buf);
@@ -201,14 +200,14 @@ static int configure_reporter(struct reporter *r, bool skip_if_valid)
free(options);
- if (error_table)
- g_hash_table_destroy(error_table);
+ if (error_list)
+ g_list_free_full(error_list,(GDestroyNotify)free_invalid_options);
if (cancel)
break;
first = false;
}
- return !error_table;
+ return !error_list;
}
struct log {
diff --git a/tests/event_config.at b/tests/event_config.at
index 5baf000..badca73 100644
--- a/tests/event_config.at
+++ b/tests/event_config.at
@@ -58,3 +58,106 @@ TS_MAIN
}
TS_RETURN_MAIN
]])
+
+## ------------------------ ##
+## get_options_with_err_msg ##
+## ------------------------ ##
+
+AT_TESTFUN([get_options_with_err_msg], [[
+#include "testsuite.h"
+#include "internal_libreport.h"
+
+event_option_t* create_new_option(const char *n, const char *v, option_type_t t, int ae)
+{
+ event_option_t *op = new_event_option();
+ op->eo_name = xstrdup(n);
+ op->eo_value = NULL;
+ if(v != NULL)
+ op->eo_value = xstrdup(v);
+
+ op->eo_type = t;
+ op->eo_allow_empty = ae;
+
+ return op;
+}
+
+TS_MAIN
+{
+ GList *errors = NULL, *iter = NULL;
+ invalid_option_t *e_op;
+
+ if (!g_event_config_list)
+ g_event_config_list = g_hash_table_new_full(
+ g_str_hash, g_str_equal, free, (GDestroyNotify) free_event_config
+ );
+
+ {
+ event_config_t *evnt = new_event_config("Bugster0");
+ event_option_t *opt_login = create_new_option("Bugtest_Login", NULL, OPTION_TYPE_TEXT, 0);
+ event_option_t *opt_passwd = create_new_option("Bugtest_Password", NULL, OPTION_TYPE_PASSWORD, 0);
+ event_option_t *opt_url = create_new_option("Bugtest_URL", "bug.test", OPTION_TYPE_TEXT, 0);
+
+ evnt->options = g_list_append(evnt->options, opt_login);
+ evnt->options = g_list_append(evnt->options, opt_passwd);
+ evnt->options = g_list_append(evnt->options, opt_url);
+ g_hash_table_insert(g_event_config_list, xstrdup("Bugster0"), evnt);
+
+ errors = get_options_with_err_msg("Bugster0");
+ e_op = (invalid_option_t *)errors->data;
+
+ TS_ASSERT_STRING_EQ(e_op->invopt_name, "Bugtest_Login", "Show login first");
+
+ iter = g_list_next(errors);
+ e_op = (invalid_option_t *)iter->data;
+
+ TS_ASSERT_STRING_EQ(e_op->invopt_name, "Bugtest_Password", "Show password second");
+ TS_ASSERT_PTR_IS_NULL(g_list_next(iter));
+
+ g_list_free_full(errors, (GDestroyNotify)free_invalid_options);
+ }
+
+ {
+ event_config_t *evnt = new_event_config("Bugster1");
+ event_option_t *opt_login = create_new_option("Bugtest_Login", NULL, OPTION_TYPE_TEXT, 0);
+ event_option_t *opt_passwd = create_new_option("Bugtest_Password", NULL, OPTION_TYPE_PASSWORD, 0);
+ event_option_t *opt_url = create_new_option("Bugtest_URL", "bug.test", OPTION_TYPE_TEXT, 0);
+
+ evnt->options = g_list_append(evnt->options, opt_passwd);
+ evnt->options = g_list_append(evnt->options, opt_login);
+ evnt->options = g_list_append(evnt->options, opt_url);
+ g_hash_table_insert(g_event_config_list, xstrdup("Bugster1"), evnt);
+
+ errors = get_options_with_err_msg("Bugster1");
+ e_op = (invalid_option_t *)errors->data;
+
+ TS_ASSERT_STRING_EQ(e_op->invopt_name, "Bugtest_Password", "Show password first");
+
+ iter = g_list_next(errors);
+ e_op = (invalid_option_t *)iter->data;
+
+ TS_ASSERT_STRING_EQ(e_op->invopt_name, "Bugtest_Login", "Show login second");
+ TS_ASSERT_PTR_IS_NULL(g_list_next(iter));
+
+ g_list_free_full(errors, (GDestroyNotify)free_invalid_options);
+ }
+
+ {
+ event_config_t *evnt = new_event_config("Bugster2");
+ event_option_t *opt_login = create_new_option("Bugtest_Login", "login", OPTION_TYPE_TEXT, 0);
+ event_option_t *opt_passwd = create_new_option("Bugtest_Password", "password", OPTION_TYPE_PASSWORD, 0);
+ event_option_t *opt_url = create_new_option("Bugtest_URL", "bug.test", OPTION_TYPE_TEXT, 0);
+
+ evnt->options = g_list_append(evnt->options, opt_login);
+ evnt->options = g_list_append(evnt->options, opt_passwd);
+ evnt->options = g_list_append(evnt->options, opt_url);
+ g_hash_table_insert(g_event_config_list, xstrdup("Bugster2"), evnt);
+
+ errors = get_options_with_err_msg("Bugster2");
+
+ TS_ASSERT_PTR_IS_NULL(errors);
+ }
+
+ free_event_config_data();
+}
+TS_RETURN_MAIN
+]])
--
2.9.5

View file

@ -0,0 +1,63 @@
From 52bc62513f23a7a379ba48dc2895626cf842bb1a Mon Sep 17 00:00:00 2001
From: Matej Habrnal <mhabrnal@redhat.com>
Date: Thu, 15 Jun 2017 17:12:53 +0200
Subject: [PATCH 10/14] dd: extend create_dump_dir to allow set pid in dumpdir
name
Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
---
src/include/dump_dir.h | 3 +++
src/lib/create_dump_dir.c | 9 +++++++--
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/src/include/dump_dir.h b/src/include/dump_dir.h
index fb3a470..793caf4 100644
--- a/src/include/dump_dir.h
+++ b/src/include/dump_dir.h
@@ -486,6 +486,9 @@ typedef int (*save_data_call_back)(struct dump_dir *, void *args);
struct dump_dir *create_dump_dir(const char *base_dir_name, const char *type,
uid_t uid, save_data_call_back save_data, void *args);
+struct dump_dir *create_dump_dir_ext(const char *base_dir_name, const char *type,
+ pid_t pid, uid_t uid, save_data_call_back save_data, void *args);
+
/* Creates a new archive from the dump directory contents
*
* The dd argument must be opened for reading.
diff --git a/src/lib/create_dump_dir.c b/src/lib/create_dump_dir.c
index 1c6f1fc..d690c78 100644
--- a/src/lib/create_dump_dir.c
+++ b/src/lib/create_dump_dir.c
@@ -42,7 +42,7 @@ static struct dump_dir *try_dd_create(const char *base_dir_name, const char *dir
return dd;
}
-struct dump_dir *create_dump_dir(const char *base_dir_name, const char *type, uid_t uid, save_data_call_back save_data, void *args)
+struct dump_dir *create_dump_dir_ext(const char *base_dir_name, const char *type, pid_t pid, uid_t uid, save_data_call_back save_data, void *args)
{
INITIALIZE_LIBREPORT();
@@ -59,7 +59,7 @@ struct dump_dir *create_dump_dir(const char *base_dir_name, const char *type, ui
return NULL;
}
- char *problem_id = xasprintf("%s-%s.%ld-%lu"NEW_PD_SUFFIX, type, iso_date_string(&(tv.tv_sec)), (long)tv.tv_usec, (long)getpid());
+ char *problem_id = xasprintf("%s-%s.%ld-%lu"NEW_PD_SUFFIX, type, iso_date_string(&(tv.tv_sec)), (long)tv.tv_usec, (long)pid);
log_info("Saving to %s/%s with uid %d", base_dir_name, problem_id, uid);
@@ -151,6 +151,11 @@ struct dump_dir *create_dump_dir(const char *base_dir_name, const char *type, ui
return dd;
}
+struct dump_dir *create_dump_dir(const char *base_dir_name, const char *type, uid_t uid, save_data_call_back save_data, void *args)
+{
+ return create_dump_dir_ext(base_dir_name, type, getpid(), uid, save_data, args);
+}
+
int save_problem_data_in_dump_dir(struct dump_dir *dd, problem_data_t *problem_data)
{
INITIALIZE_LIBREPORT();
--
2.9.5

View file

@ -0,0 +1,25 @@
From d58bbe86686b3a601211f1f6a0186c73a6afc999 Mon Sep 17 00:00:00 2001
From: Martin Kutlak <mkutlak@redhat.com>
Date: Tue, 20 Jun 2017 16:05:58 +0200
Subject: [PATCH 11/14] augeas: exclude format files
Signed-off-by: Martin Kutlak <mkutlak@redhat.com>
---
augeas/libreport.aug | 1 +
1 file changed, 1 insertion(+)
diff --git a/augeas/libreport.aug b/augeas/libreport.aug
index 46ffb73..dd4252e 100644
--- a/augeas/libreport.aug
+++ b/augeas/libreport.aug
@@ -31,6 +31,7 @@ module Libreport =
. (incl (Sys.getenv("HOME") . "/.cache/abrt/events/*"))
. (excl "/etc/libreport/plugins/bugzilla_format*")
. (excl "/etc/libreport/plugins/mantisbt_format*")
+ . (excl "/etc/libreport/plugins/catalog*")
. Util.stdexcl
let xfm = transform lns filter
--
2.9.5

View file

@ -0,0 +1,66 @@
From a6522407b95cf1410ecb33cbf2adff3a3998f686 Mon Sep 17 00:00:00 2001
From: Martin Kutlak <mkutlak@redhat.com>
Date: Thu, 29 Jun 2017 12:10:25 +0200
Subject: [PATCH 12/14] bugzilla: add check if option -d was entered
The change from commit 946c522ba702c11b7b336552461747541e714bb7 caused that reporter was ALWAYS trying to read
from problem directory. And because the default value for it is set to ".",
running reporter from outside of problem directory caused errors.
Signed-off-by: Martin Kutlak <mkutlak@redhat.com>
---
src/plugins/reporter-bugzilla.c | 29 +++++++++++++++++++----------
1 file changed, 19 insertions(+), 10 deletions(-)
diff --git a/src/plugins/reporter-bugzilla.c b/src/plugins/reporter-bugzilla.c
index 7b7fd22..5364cd4 100644
--- a/src/plugins/reporter-bugzilla.c
+++ b/src/plugins/reporter-bugzilla.c
@@ -334,18 +334,21 @@ int main(int argc, char **argv)
export_abrt_envvars(0);
map_string_t *settings = new_map_string();
- problem_data_t *problem_data;
+ problem_data_t *problem_data = NULL;
- /* pull in some defaults from os-release */
- problem_data = create_problem_data_for_reporting(dump_dir_name);
- if (!problem_data)
- xfunc_die(); /* create_problem_data_for_reporting already emitted error msg */
- else
+ if (opts & OPT_d)
{
- map_string_t *osinfo = new_map_string();
- problem_data_get_osinfo(problem_data, osinfo);
- set_default_settings(osinfo, settings);
- free_map_string(osinfo);
+ /* pull in some defaults from os-release */
+ problem_data = create_problem_data_for_reporting(dump_dir_name);
+ if (!problem_data)
+ xfunc_die(); /* create_problem_data_for_reporting already emitted error msg */
+ else
+ {
+ map_string_t *osinfo = new_map_string();
+ problem_data_get_osinfo(problem_data, osinfo);
+ set_default_settings(osinfo, settings);
+ free_map_string(osinfo);
+ }
}
{
@@ -554,6 +557,12 @@ int main(int argc, char **argv)
free_report_result(reported_to);
}
+ if (!(opts & OPT_d))
+ problem_data = create_problem_data_for_reporting(dump_dir_name);
+
+ if (!problem_data)
+ xfunc_die(); /* create_problem_data_for_reporting already emitted error msg */
+
const char *component = problem_data_get_content_or_die(problem_data, FILENAME_COMPONENT);
const char *duphash = problem_data_get_content_or_NULL(problem_data, FILENAME_DUPHASH);
//COMPAT, remove after 2.1 release
--
2.9.5

View file

@ -0,0 +1,26 @@
From f15195d7c317a94405b33102b36e1a8d7dcb214b Mon Sep 17 00:00:00 2001
From: Matej Marusak <mmarusak@redhat.com>
Date: Fri, 14 Jul 2017 08:24:35 +0200
Subject: [PATCH 13/14] reporter-mantisbt: Fix typo in help
Signed-off-by: Matej Marusak <mmarusak@redhat.com>
---
src/plugins/reporter-mantisbt.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/plugins/reporter-mantisbt.c b/src/plugins/reporter-mantisbt.c
index 622af87..3705bc7 100644
--- a/src/plugins/reporter-mantisbt.c
+++ b/src/plugins/reporter-mantisbt.c
@@ -243,7 +243,7 @@ int main(int argc, char **argv)
"\nTRACKER_NAME to URL field. This option is applied only when a new issue is to be"
"\nfiled. The default value is 'ABRT Server'"
"\n"
- "\nIf not specified, CONFFILE defaults to "CONF_DIR"/plugins/mantisb.conf"
+ "\nIf not specified, CONFFILE defaults to "CONF_DIR"/plugins/mantisbt.conf"
"\nIts lines should have 'PARAM = VALUE' format."
"\nRecognized string parameters: MantisbtURL, Login, Password, Project, ProjectVersion."
"\nRecognized boolean parameter (VALUE should be 1/0, yes/no): SSLVerify, CreatePrivate."
--
2.9.5

File diff suppressed because it is too large Load diff

View file

@ -1,42 +0,0 @@
From 9be0010e109d307921a049d10078813423227582 Mon Sep 17 00:00:00 2001
From: Nicolas Iooss <nicolas.iooss_git@polytechnique.org>
Date: Fri, 15 Dec 2023 18:03:33 +0100
Subject: [PATCH] Fix compatibility with libxml2 2.12
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Since libxml2 2.12, xmlNodePtr is no longer included by libxml/encoding.h.
This leads to build errors such as:
CC reporter_mantisbt-reporter-mantisbt.o
In file included from reporter-mantisbt.c:22:
mantisbt.h:48:5: error: unknown type name xmlNodePtr
48 | xmlNodePtr sr_root;
| ^~~~~~~~~~
mantisbt.h:49:5: error: unknown type name xmlNodePtr
49 | xmlNodePtr sr_body;
| ^~~~~~~~~~
mantisbt.h:50:5: error: unknown type name xmlNodePtr
50 | xmlNodePtr sr_method;
| ^~~~~~~~~~
Fix this by including libxml/tree.h.
Signed-off-by: Nicolas Iooss <nicolas.iooss_git@polytechnique.org>
---
src/plugins/mantisbt.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/plugins/mantisbt.h b/src/plugins/mantisbt.h
index 1feaf8f88..6979e7244 100644
--- a/src/plugins/mantisbt.h
+++ b/src/plugins/mantisbt.h
@@ -25,6 +25,7 @@ extern "C" {
#endif
#include <libxml/encoding.h>
+#include <libxml/tree.h>
#include "problem_report.h"
#define SOAP_STRING "ns2:string"

View file

@ -1,3 +0,0 @@
This repository is maintained by packit.
https://packit.dev/
The file was generated using packit 0.91.0.post1.dev4+ge6fd4a25.

70
autogen.sh Executable file
View file

@ -0,0 +1,70 @@
#! /bin/sh
print_help()
{
cat << EOH
Prepares the source tree for configuration
Usage:
autogen.sh [sydeps [--install]]
Options:
sysdeps prints out all dependencies
--install install all dependencies ('sudo yum install \$DEPS')
EOH
}
build_depslist()
{
DEPS_LIST=`grep "^\(Build\)\?Requires:" *.spec.in | grep -v "%{name}" | tr -s " " | tr "," "\n" | cut -f2 -d " " | grep -v "^libreport" | sort -u | tr "\n" " "`
}
case "$1" in
"--help"|"-h")
print_help
exit 0
;;
"sysdeps")
build_depslist
if [ "$2" == "--install" ]; then
set -x verbose
sudo yum install $DEPS_LIST
set +x verbose
else
echo $DEPS_LIST
fi
exit 0
;;
*)
echo "Running gen-version"
./gen-version
mkdir -p m4
echo "Creating m4/aclocal.m4 ..."
test -r m4/aclocal.m4 || touch m4/aclocal.m4
echo "Running autopoint"
autopoint --force || exit 1
echo "Running intltoolize..."
intltoolize --force --copy --automake || exit 1
echo "Running aclocal..."
aclocal || exit 1
echo "Running libtoolize..."
libtoolize || exit 1
echo "Running autoheader..."
autoheader || return 1
echo "Running autoconf..."
autoconf --force || exit 1
echo "Running automake..."
automake --add-missing --force --copy || exit 1
;;
esac

View file

@ -1,15 +0,0 @@
--- !Policy
product_versions:
- fedora-*
decision_context: bodhi_update_push_testing
subject_type: koji_build
rules:
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}
--- !Policy
product_versions:
- fedora-*
decision_context: bodhi_update_push_stable
subject_type: koji_build
rules:
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}

View file

@ -1,46 +0,0 @@
problem_item_get_size expects unsigned long * argument in problem_data.at test
Otherwise, the test fails to build on i686 with GCC 14.
Submitted upstream: <https://github.com/abrt/libreport/pull/802>
diff --git a/tests/problem_data.at b/tests/problem_data.at
index 4d8bf0075c0a8b91..db67a76732d48663 100644
--- a/tests/problem_data.at
+++ b/tests/problem_data.at
@@ -89,7 +89,7 @@ int main(int argc, char **argv)
struct problem_item *itm = problem_data_add_ext(data, "1", "foo", CD_FLAG_TXT | CD_FLAG_ISNOTEDITABLE, PROBLEM_ITEM_UNINITIALIZED_SIZE);
const size_t old_size = strlen(itm->content);
{
- size_t current_size = PROBLEM_ITEM_UNINITIALIZED_SIZE;
+ unsigned long current_size = PROBLEM_ITEM_UNINITIALIZED_SIZE;
assert(problem_item_get_size(itm, &current_size) == 0);
assert(current_size != PROBLEM_ITEM_UNINITIALIZED_SIZE);
assert(current_size == old_size);
@@ -97,7 +97,7 @@ int main(int argc, char **argv)
{
g_free(itm->content);
itm->content = NULL;
- size_t current_size = PROBLEM_ITEM_UNINITIALIZED_SIZE;
+ unsigned long current_size = PROBLEM_ITEM_UNINITIALIZED_SIZE;
assert(problem_item_get_size(itm, &current_size) == 0);
assert(current_size != PROBLEM_ITEM_UNINITIALIZED_SIZE);
assert(current_size == old_size);
@@ -120,7 +120,7 @@ int main(int argc, char **argv)
struct problem_item *itm = problem_data_add_ext(data, "2", flnm, CD_FLAG_BIN, PROBLEM_ITEM_UNINITIALIZED_SIZE);
{
- size_t current_size = PROBLEM_ITEM_UNINITIALIZED_SIZE;
+ unsigned long current_size = PROBLEM_ITEM_UNINITIALIZED_SIZE;
assert(problem_item_get_size(itm, &current_size) == 0);
assert(current_size != PROBLEM_ITEM_UNINITIALIZED_SIZE);
assert(current_size == old_size);
@@ -129,7 +129,7 @@ int main(int argc, char **argv)
close(flds);
unlink(flnm);
assert(stat(flnm, &buf) != 0);
- size_t current_size = PROBLEM_ITEM_UNINITIALIZED_SIZE;
+ unsigned long current_size = PROBLEM_ITEM_UNINITIALIZED_SIZE;
assert(problem_item_get_size(itm, &current_size) == 0);
assert(current_size != PROBLEM_ITEM_UNINITIALIZED_SIZE);
assert(current_size == old_size);

View file

@ -1,28 +0,0 @@
Remove incorrect casts from tests/string_list.at
The list_order argument already has the correct pointer type const
char * const * (after array-to-pointer decay).
Submitted upstream: <https://github.com/abrt/libreport/pull/802>
diff --git a/tests/string_list.at b/tests/string_list.at
index 6af162a2f8da3919..2118298da4de0ec3 100644
--- a/tests/string_list.at
+++ b/tests/string_list.at
@@ -22,13 +22,13 @@ int main(void)
NULL
};
- int index = libreport_index_of_string_in_list(FILENAME_REASON, (char**) list_order);
+ int index = libreport_index_of_string_in_list(FILENAME_REASON, list_order);
assert(index == 0);
- index = libreport_index_of_string_in_list(FILENAME_COUNT, (char**) list_order);
+ index = libreport_index_of_string_in_list(FILENAME_COUNT, list_order);
assert(index == 5);
- index = libreport_index_of_string_in_list("other", (char**) list_order);
+ index = libreport_index_of_string_in_list("other", list_order);
assert(index < 0);
return 0;

File diff suppressed because it is too large Load diff

View file

@ -1 +1 @@
SHA512 (libreport-2.17.15.tar.gz) = a4707f5272f037f91b4f4b562d3f0eb165ae7790699714accdd1af40216f37bd40d430a06925b1b7b8ac2d2cf97fd0cc4efded51dc22d21d9ef2abedf796e5fe
SHA512 (libreport-2.9.1.tar.gz) = 2cffb44fd8da625a9a0613f91ce3d485fe21b0a1f5932f6d6bfbdb4d41337f95c49f525556596aeef2fc3737015151d43250f287dc624f97469f087ff9213bde

View file

@ -1,11 +0,0 @@
#!/usr/bin/bash
gcc -x c -o smoke_test -lreport -Wno-implicit-function-declaration - <<EOF
#include <stdio.h>
int main(void) {
libreport_init();
printf("libreport initialized OK\n");
return 0;
}
EOF
./smoke_test

View file

@ -1,15 +0,0 @@
summary: Basic smoke test for libreport
prepare:
how: install
# Do not attempt to install conflicting subpackages.
exclude:
- abrt-atomic
- abrt-java-connector-container
- python3-abrt-container-addon
# Prerequisite for smoke testing liblibreport.
package:
- gcc
execute:
script: |
tests/library-smoke.sh
report-cli --version