[PATCH-libreport] report-python: don't include executable
by Martin Milata
Doesn't really make sense, as it is always path to the python
executable. bz#741255
---
src/include/problem_data.h | 3 +++
src/lib/problem_data.c | 5 +++++
src/report-python/problem_data.c | 8 ++++++++
3 files changed, 16 insertions(+), 0 deletions(-)
diff --git a/src/include/problem_data.h b/src/include/problem_data.h
index 14d1240..87037a2 100644
--- a/src/include/problem_data.h
+++ b/src/include/problem_data.h
@@ -74,6 +74,9 @@ void add_to_problem_data(problem_data_t *problem_data,
const char *name,
const char *content);
+/* Removes item from problem data */
+void remove_from_problem_data(problem_data_t *problem_data, const char *key);
+
static inline struct problem_item *get_problem_data_item_or_NULL(problem_data_t *problem_data, const char *key)
{
return (struct problem_item *)g_hash_table_lookup(problem_data, key);
diff --git a/src/lib/problem_data.c b/src/lib/problem_data.c
index 2ddff86..7d85709 100644
--- a/src/lib/problem_data.c
+++ b/src/lib/problem_data.c
@@ -155,6 +155,11 @@ void add_to_problem_data(problem_data_t *problem_data,
add_to_problem_data_ext(problem_data, name, content, CD_FLAG_TXT + CD_FLAG_ISNOTEDITABLE);
}
+void remove_from_problem_data(problem_data_t *problem_data, const char *key)
+{
+ g_hash_table_remove(problem_data, key);
+}
+
const char *get_problem_item_content_or_die(problem_data_t *problem_data, const char *key)
{
struct problem_item *item = get_problem_data_item_or_NULL(problem_data, key);
diff --git a/src/report-python/problem_data.c b/src/report-python/problem_data.c
index 9067dea..8b4088d 100644
--- a/src/report-python/problem_data.c
+++ b/src/report-python/problem_data.c
@@ -115,8 +115,16 @@ static PyObject *p_create_dump_dir_from_problem_data(PyObject *pself, PyObject *
static PyObject *p_add_basics_to_problem_data(PyObject *pself, PyObject *always_null)
{
p_problem_data *self = (p_problem_data*)pself;
+ int have_executable = (get_problem_data_item_or_NULL(self->cd, "executable") != NULL);
+
add_basics_to_problem_data(self->cd);
+ /* Workaround - the executable item will always be /usr/bin/python, which is useless. */
+ if (!have_executable)
+ {
+ remove_from_problem_data(self->cd, "executable");
+ }
+
Py_RETURN_NONE;
}
--
1.7.6.4
12 years, 1 month
[PATCH] tabbed details - v2
by Jiri Moskovcak
- this time only editable items are shown - the question is - does it
make sense to search even not-editable fields, can these fields contain
some sensitive information?
J.
12 years, 6 months
[PATCH] tabbed details - preview
by Jiri Moskovcak
Hi,
this is just a preview of what I'd like to implement. The patch changes
the backtrace_editor window, adds a tab for every editable item from
problem_data
- works:
- a tab for every TXT item from problem_data
- doesn't work:
- search search only in backtrace
- didn't fix teh glade file, so it might not work with older glade
- search should search thru all the items, mark the found text in the
text_view and also mark every tab which contains the text_buffer where
the text has been found..
Ideas?
Thank you,
Jirka
12 years, 6 months
fixed compilation with gtk3
by Jiri Moskovcak
This patch make the wizard compile against gtk3, the changes I have made
are:
- gtk_entry_set_editable(GTK_ENTRY(textbox), TRUE);
+ g_object_set(G_OBJECT(textbox), "editable", TRUE, NULL);
-> gtk3 drops a lot of these "helper" function, so to set a property of
some widget please use g_object_set() which works for both gtk2/3
- if (k == GDK_Delete || k == GDK_KP_Delete)
+ if (k == GDK_KEY_Delete || k == GDK_KEY_KP_Delete)
-> GDK_KEY_* seems to be the correct name - it also works in both gtk2/3
-> this patch also adds --enable-gtk3 config switch which defaults to
off, so to recompile wizard with gtk3:
$ make clean && ./configure --enable-gtk3 && make
Nikola, can you please test if it compiles on rhel6?
Thank you,
Jirka
12 years, 6 months
user settings
by Miroslav Lichvar
The following patches add ability to save and load user settings. They
are stored for each application in a separate file in
$HOME/.abrt/settings/ in the same format as abrt.conf and event
configs.
Comments welcome.
--
Miroslav Lichvar
12 years, 6 months
[PATCH] new bodhi plugin
by Nikola Pajkovsky
Signed-off-by: Nikola Pajkovsky <npajkovs(a)redhat.com>
---
.gitignore | 3 +
configure.ac | 18 ++
libreport.spec.in | 18 ++
src/include/internal_libreport.h | 2 +
src/lib/strbuf.c | 30 ++++
src/plugins/Makefile.am | 29 +++
src/plugins/abrt-bodhi.c | 271 +++++++++++++++++++++++++++++
src/plugins/analyze_LocalGDB_Bodhi.xml.in | 7 +
src/plugins/bodhi_event.conf | 10 +
src/plugins/reporter-bugzilla.c | 40 ++++-
10 files changed, 424 insertions(+), 4 deletions(-)
create mode 100644 src/plugins/abrt-bodhi.c
create mode 100644 src/plugins/analyze_LocalGDB_Bodhi.xml.in
create mode 100644 src/plugins/bodhi_event.conf
diff --git a/.gitignore b/.gitignore
index 7b57798..c5b3edf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,6 +17,7 @@ src/plugins/reporter-print
src/plugins/reporter-rhtsupport
src/plugins/reporter-upload
src/plugins/report
+src/plugins/abrt-bodhi
src/report-newt/report-newt
# autotools
@@ -79,6 +80,8 @@ tests/atlocal
tests/testsuite
tests/testsuite.log
tests/package.m4
+testsuite.dir/
+testsuite.log
# misc
\#*
diff --git a/configure.ac b/configure.ac
index c0eecf0..6fc3960 100644
--- a/configure.ac
+++ b/configure.ac
@@ -20,6 +20,9 @@ AC_ARG_ENABLE(debug,
[Enable debug information])],
[CFLAGS="$CFLAGS -DDEBUG -ggdb -g"])
+AC_ARG_ENABLE([bodhi],
+ AC_HELP_STRING([--disable-bodhi], [do not use bodhi plugin]))
+
dnl ****** INTERNATIONALIZATION **********************
GETTEXT_PACKAGE=libreport
AC_SUBST(GETTEXT_PACKAGE)
@@ -73,6 +76,21 @@ PKG_CHECK_MODULES([PYTHON], [python],,[
])
PKG_CHECK_MODULES([NEWT], [libnewt])
+AS_IF([test "x$enable_bodhi" != "xno"], [
+ dnl Do the stuff needed for enabling the feature
+ AC_CHECK_LIB([json], [json_tokener_parse],
+ [AM_CONDITIONAL(HAVE_BODHI, true)
+ AC_DEFINE([HAVE_BODHI], [1], [have bodhi])
+ PKG_CHECK_MODULES([JSON_C], [json])],
+ [AM_CONDITIONAL(HAVE_BODHI, false)
+ AC_DEFINE([HAVE_BODHI], [0], [have bodhi])])
+ ],
+ [test "x$enable_bodhi" = xno], [
+ AM_CONDITIONAL(HAVE_BODHI, false)
+ AC_DEFINE([HAVE_BODHI], [0], [have bodhi])
+ ]
+)
+
PKG_PROG_PKG_CONFIG
AC_CHECK_HEADER([libtar.h], [],
diff --git a/libreport.spec.in b/libreport.spec.in
index 48f7484..cd48a57 100644
--- a/libreport.spec.in
+++ b/libreport.spec.in
@@ -150,6 +150,18 @@ Obsoletes: report-plugin-bugzilla < 0.23-1
Provides: report-config-bugzilla-redhat-com = 0.23-1
Obsoletes: report-config-bugzilla-redhat-com < 0.23-1
+%if 0%{?fedora}
+%package plugin-bodhi
+Summary: %{name}'s bodhi plugin
+BuildRequires: json-c-devel
+Group: System Environment/Libraries
+Requires: %{name} = %{version}-%{release}
+Requires: PackageKit
+
+%description plugin-bodhi
+Search for a new updates in bodhi server
+%endif
+
%description plugin-bugzilla
Plugin to report bugs into the bugzilla.
@@ -312,6 +324,12 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%{_mandir}/man*/reporter-mailx.*
%{_bindir}/reporter-mailx
+%if 0%{?fedora}
+%files plugin-bodhi
+%defattr(-,root,root,-)
+%{_bindir}/abrt-action-bodhi
+%endif
+
%files plugin-bugzilla
%defattr(-,root,root,-)
%config(noreplace) %{_sysconfdir}/libreport/plugins/bugzilla.conf
diff --git a/src/include/internal_libreport.h b/src/include/internal_libreport.h
index 4982ef0..af1e7ca 100644
--- a/src/include/internal_libreport.h
+++ b/src/include/internal_libreport.h
@@ -100,6 +100,8 @@ int prefixcmp(const char *str, const char *prefix);
int suffixcmp(const char *str, const char *suffix);
#define strtrim libreport_strtrim
char *strtrim(char *str);
+#define strtrimch libreport_strtrimch
+char *strtrimch(char *str, int ch);
#define concat_path_file libreport_concat_path_file
char *concat_path_file(const char *path, const char *filename);
#define append_to_malloced_string libreport_append_to_malloced_string
diff --git a/src/lib/strbuf.c b/src/lib/strbuf.c
index e1477e1..365f31a 100644
--- a/src/lib/strbuf.c
+++ b/src/lib/strbuf.c
@@ -60,6 +60,36 @@ char *strtrim(char *str)
return str;
}
+/*
+ * Trims characters both from left and right side of a string.
+ * Modifies the string in-place. Returns the trimmed string.
+ */
+char *strtrimch(char *str, int ch)
+{
+ if (!str)
+ return NULL;
+
+ char *tmp = str;
+
+
+ // Remove leading characters.
+ while (*tmp == ch)
+ ++tmp;
+
+ memmove(str, tmp, strlen(str));
+
+ // Remove trailing spaces.
+ int i = strlen(str);
+ while (--i >= 0)
+ {
+ if (str[i] != ch)
+ break;
+ }
+ str[++i] = '\0';
+ return str;
+}
+
+
struct strbuf *strbuf_new(void)
{
struct strbuf *buf = xzalloc(sizeof(*buf));
diff --git a/src/plugins/Makefile.am b/src/plugins/Makefile.am
index cee4f14..c5f1810 100644
--- a/src/plugins/Makefile.am
+++ b/src/plugins/Makefile.am
@@ -10,6 +10,9 @@ bin_PROGRAMS = \
reporter-mailx \
reporter-print \
report
+if HAVE_BODHI
+bin_PROGRAMS += abrt-bodhi
+endif
pluginsconfdir = $(PLUGINS_CONF_DIR)
@@ -30,6 +33,9 @@ dist_events_DATA = \
report_RHTSupport.xml \
report_Kerneloops.xml \
report_Uploader.xml
+if HAVE_BODHI
+dist_events_DATA += analyze_LocalGDB_Bodhi.xml
+endif
@INTLTOOL_XML_RULE@
@@ -41,6 +47,9 @@ dist_eventsconf_DATA = \
bugzilla_event.conf \
rhtsupport_event.conf \
uploader_event.conf
+if HAVE_BODHI
+dist_eventsconf_DATA += bodhi_event.conf
+endif
MAN_TXT = \
reporter-print.txt \
@@ -74,6 +83,9 @@ EXTRA_DIST = \
report_RHTSupport.xml.in \
report_Kerneloops.xml.in \
report_Uploader.xml.in
+if HAVE_BODHI
+EXTRA_DIST += analyze_LocalGDB_Bodhi.xml.in
+endif
$(DESTDIR)/$(DEBUG_INFO_DIR):
$(mkdir_p) '$@'
@@ -234,4 +246,21 @@ report_CPPFLAGS = \
report_LDADD = \
../lib/libreport.la
+if HAVE_BODHI
+abrt_bodhi_SOURCES = \
+ abrt-bodhi.c
+abrt_bodhi_CPPFLAGS = \
+ -I$(srcdir)/../include \
+ -I$(srcdir)/../lib \
+ $(GLIB_CFLAGS) \
+ $(LIBREPORT_CFLAGS) \
+ $(JSON_C_CFLAGS) \
+ -D_GNU_SOURCE \
+ -Wall -Wwrite-strings -Werror
+abrt_bodhi_LDADD = \
+ $(JSON_C_LIBS) \
+ ../lib/libreport.la \
+ ../lib/libabrt_web.la
+endif
+
DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@
diff --git a/src/plugins/abrt-bodhi.c b/src/plugins/abrt-bodhi.c
new file mode 100644
index 0000000..427fd39
--- /dev/null
+++ b/src/plugins/abrt-bodhi.c
@@ -0,0 +1,271 @@
+/*
+ Copyright (C) 2011 ABRT Team
+ Copyright (C) 2011 RedHat 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, Fifth Floor, Boston, MA 02110-1301 USA.
+*/
+
+#include "internal_libreport.h"
+#include "abrt_curl.h"
+#include "client.h"
+
+#include <json/json.h>
+
+//699198,705037,705036
+
+static const char *const bodhi_url = "https://admin.fedoraproject.org/updates/%s";
+
+struct bodhi {
+ GList *nvr;
+ char *date_pushed;
+ char *status;
+ char *dist_tag;
+ int karma;
+
+ GList *bz_ids;
+};
+
+enum {
+ BODHI_READ_STR,
+ BODHI_READ_INT,
+ BODHI_READ_JSON_OBJ,
+};
+
+static void free_bodhi_list(GList *bodhi_list)
+{
+ if (!bodhi_list)
+ return;
+
+ for (GList *li = bodhi_list; li; li = li->next)
+ {
+ struct bodhi *b = (struct bodhi *) li->data;
+ list_free_with_free(b->bz_ids);
+ list_free_with_free(b->nvr);
+ free(b);
+ }
+
+ g_list_free(bodhi_list);
+}
+
+static void bodhi_read_value(json_object *json, const char *item_name,
+ void *value, int flags)
+{
+ json_object *j = json_object_object_get(json, item_name);
+ if (!j)
+ {
+ error_msg("'%s' section is not available", item_name);
+ return;
+ }
+
+ switch (flags) {
+ case BODHI_READ_INT:
+ *(int *) value = json_object_get_int(j);
+ break;
+ case BODHI_READ_STR:
+ *(char **) value = (char *) xstrdup(json_object_to_json_string(j));
+ value = strtrimch(*(char **) value, '"');
+ break;
+ case BODHI_READ_JSON_OBJ:
+ *(json_object **) value = (json_object *) j;
+ break;
+ };
+}
+
+#if 0
+static void print_bodhi(struct bodhi *b)
+{
+ for (GList *l = b->nvr; l; l = l->next)
+ printf("'%s' ", (char *)l->data);
+
+ if (b->date_pushed)
+ printf(" '%s'", b->date_pushed);
+
+ if (b->status)
+ printf(" '%s'", b->status);
+
+ if (b->dist_tag)
+ printf(" '%s'", b->dist_tag);
+
+ printf(" %i", b->karma);
+
+
+/*
+ for (GList *li = b->bz_ids; li; li = li->next)
+ printf(" %i", *(int*) li->data);
+*/
+ puts("");
+}
+#endif
+
+static GList *bodhi_parse_json(json_object *json, const char *release)
+{
+
+ int num_items = 0;
+ bodhi_read_value(json, "num_items", &num_items, BODHI_READ_INT);
+ if (num_items <= 0)
+ return NULL;
+
+ json_object *updates = NULL;
+ bodhi_read_value(json, "updates", &updates, BODHI_READ_JSON_OBJ);
+ if (!updates)
+ return NULL;
+
+ int updates_len = json_object_array_length(updates);
+
+ GList *bodhi_list = NULL;
+ for (int i = 0; i < updates_len; ++i)
+ {
+ json_object *updates_item = json_object_array_get_idx(updates, i);
+
+ /* some of item are null */
+ if (!updates_item)
+ continue;
+
+ struct bodhi *b = xzalloc(sizeof(struct bodhi));
+ bodhi_read_value(updates_item, "date_pushed", &b->date_pushed, BODHI_READ_STR);
+ bodhi_read_value(updates_item, "karma", &b->karma, BODHI_READ_INT);
+ bodhi_read_value(updates_item, "status", &b->status, BODHI_READ_STR);
+
+ json_object *release_item = NULL;
+ bodhi_read_value(updates_item, "release", &release_item, BODHI_READ_JSON_OBJ);
+ if (release_item)
+ bodhi_read_value(release_item, "dist_tag", &b->dist_tag, BODHI_READ_STR);
+
+ json_object *bugs = NULL;
+ bodhi_read_value(updates_item, "bugs", &release_item, BODHI_READ_JSON_OBJ);
+ if (bugs)
+ {
+ for (int j = 0; j < json_object_array_length(bugs); ++j)
+ {
+ int *bz_id = xmalloc(sizeof(int));
+ json_object *bug_item = json_object_array_get_idx(bugs, j);
+ bodhi_read_value(bug_item, "bz_id", bz_id, BODHI_READ_INT);
+ b->bz_ids = g_list_append(b->bz_ids, bz_id);
+ }
+ }
+
+ json_object *builds_item = NULL;
+ bodhi_read_value(updates_item, "builds", &builds_item, BODHI_READ_JSON_OBJ);
+ if (builds_item)
+ {
+ int builds_len = json_object_array_length(builds_item);
+ for (int k = 0; k < builds_len; ++k)
+ {
+ char *nvr = NULL;
+ json_object *build = json_object_array_get_idx(builds_item, k);
+ bodhi_read_value(build, "nvr", &nvr, BODHI_READ_STR);
+ b->nvr = g_list_append(b->nvr, nvr);
+ }
+ }
+
+ bodhi_list = g_list_append(bodhi_list, b);
+
+// print_bodhi(b);
+ }
+
+ return bodhi_list;
+}
+
+static GList *bodhi_query_list(const char *query, const char *release)
+{
+ char *bodhi_url_bugs = xasprintf(bodhi_url, "list");
+
+ abrt_post_state_t *post_state = new_abrt_post_state(
+ ABRT_POST_WANT_BODY|ABRT_POST_WANT_SSL_VERIFY);
+
+ const char *headers[] = {
+ "Accept: application/json",
+ NULL
+ };
+
+ abrt_post_string(post_state, bodhi_url_bugs, "application/x-www-form-urlencoded",
+ headers, query);
+ free(bodhi_url_bugs);
+
+// log("%s", post_state->body);
+
+ json_object *json = json_tokener_parse(post_state->body);
+ if (is_error(json))
+ error_msg_and_die("fatal: unable parse response from bodhi server");
+
+ GList *bodhi_list = bodhi_parse_json(json, release);
+ json_object_put(json);
+ free_abrt_post_state(post_state);
+
+ return bodhi_list;
+}
+
+int main(int argc, char **argv)
+{
+ abrt_init(argv);
+
+ char *bugs = NULL, *release = NULL;
+ /* Keep enum above and order of options below in sync! */
+ struct options program_options[] = {
+ OPT__VERBOSE(&g_verbose),
+ OPT_STRING('b', "bugs", &bugs, "ID1[,ID2,...]" , _("List of bug ids")),
+ OPT_STRING('r', "release", &release, "RELEASE", _("Specify a release")),
+ OPT_END()
+ };
+
+ const char *program_usage_string = _(
+ "\1 [-v] [-r] (-b ID1[,ID2,...] | PKG-NAME) [PKG-NAME]... \n"
+ "\n"
+ "Search for a new updates in bodhi server"
+ );
+
+ /* unsigned opts = */ parse_opts(argc, argv, program_options, program_usage_string);
+
+ if (!bugs && !argv[optind])
+ show_usage_and_die(program_usage_string, program_options);
+
+ struct strbuf *query = strbuf_new();
+ if (bugs)
+ query = strbuf_append_strf(query, "bugs=%s&", bugs);
+
+ if (release)
+ query = strbuf_append_strf(query, "release=%s&", release);
+
+ if (argv[optind])
+ query = strbuf_append_strf(query, "package=%s&", argv[optind]);
+
+ if (query->buf[query->len - 1] == '&')
+ query->buf[query->len - 1] = '\0';
+
+ GList *update_list = bodhi_query_list(query->buf, release);
+ strbuf_free(query);
+
+ if (!update_list)
+ return 0;
+
+ struct strbuf *q = strbuf_new();
+ strbuf_append_str(q, "pkcon --repo-enable=fedora --repo-repo=updates-testing");
+ for (GList *l = update_list; l; l = l->next)
+ {
+ struct bodhi *b = (struct bodhi *) l->data;
+ for (GList *nvr = b->nvr; nvr; nvr = nvr->next)
+ strbuf_append_strf(q, " %s", (char *) nvr->data);
+ }
+
+ int ret = ask_yes_no(q->buf);
+ if (ret)
+ {
+ log("start downloading pkg and stop reporting");
+ return ret;
+ }
+ strbuf_free(q);
+ free_bodhi_list(update_list);
+ return ret;
+}
diff --git a/src/plugins/analyze_LocalGDB_Bodhi.xml.in b/src/plugins/analyze_LocalGDB_Bodhi.xml.in
new file mode 100644
index 0000000..6fa480f
--- /dev/null
+++ b/src/plugins/analyze_LocalGDB_Bodhi.xml.in
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<event>
+ <_name>Local GNU Debugger + bodhi client</_name>
+ <_description>write doc</_description>
+ <_long-description>write doc</_long-description>
+ <creates-items>backtrace</creates-items>
+</event>
diff --git a/src/plugins/bodhi_event.conf b/src/plugins/bodhi_event.conf
new file mode 100644
index 0000000..3e0cd79
--- /dev/null
+++ b/src/plugins/bodhi_event.conf
@@ -0,0 +1,10 @@
+EVENT=analyze_LocalGDB_Bodhi analyzer=CCpp
+ abrt-action-analyze-core --core=coredump -o build_ids &&
+ /usr/libexec/abrt-action-install-debuginfo-to-abrt-cache --size_mb=4096 &&
+ abrt-action-generate-backtrace &&
+ abrt-action-analyze-backtrace &&
+ (
+ release=$(rpm --eval '%dist' | cut -d"." -f2) &&
+ bug_id=$(reporter-bugzilla -h `cat duphash`) &&
+ abrt-bodhi -r $release -b $bug_id
+ )
\ No newline at end of file
diff --git a/src/plugins/reporter-bugzilla.c b/src/plugins/reporter-bugzilla.c
index 83995b7..cbd06f7 100644
--- a/src/plugins/reporter-bugzilla.c
+++ b/src/plugins/reporter-bugzilla.c
@@ -252,7 +252,7 @@ int main(int argc, char **argv)
OPT_b = 1 << 4,
};
- char *ticket_no = NULL;
+ char *ticket_no = NULL, *duphash = NULL;
/* Keep enum above and order of options below in sync! */
struct options program_options[] = {
OPT__VERBOSE(&g_verbose),
@@ -260,6 +260,7 @@ int main(int argc, char **argv)
OPT_LIST( 'c', NULL, &conf_file , "FILE", _("Configuration file (may be given many times)")),
OPT_OPTSTRING('t', "ticket", &ticket_no, "ID" , _("Attach FILEs [to bug with this ID]")),
OPT_BOOL( 'b', NULL, NULL, _("When creating bug, attach binary files too")),
+ OPT_STRING( 'h', "duphash", &duphash, "DUPHASH", _("Find BUG-ID according to DUPHASH")),
OPT_END()
};
unsigned opts = parse_opts(argc, argv, program_options, program_usage_string);
@@ -317,9 +318,6 @@ int main(int argc, char **argv)
login = environ ? environ : get_map_string_item_or_empty(settings, "Login");
environ = getenv("Bugzilla_Password");
password = environ ? environ : get_map_string_item_or_empty(settings, "Password");
- if (!login[0] || !password[0])
- error_msg_and_die(_("Empty login or password, please check your configuration"));
-
environ = getenv("Bugzilla_BugzillaURL");
bugzilla_url = environ ? environ : get_map_string_item_or_empty(settings, "BugzillaURL");
if (!bugzilla_url[0])
@@ -329,6 +327,40 @@ int main(int argc, char **argv)
environ = getenv("Bugzilla_SSLVerify");
ssl_verify = string_to_bool(environ ? environ : get_map_string_item_or_empty(settings, "SSLVerify"));
+ if (duphash)
+ {
+ char *hash;
+ if (prefixcmp(duphash, "abrt_hash:"))
+ hash = xasprintf("abrt_hash:%s", duphash);
+ else
+ hash = xstrdup(duphash);
+
+ struct abrt_xmlrpc *client = abrt_xmlrpc_new_client(bugzilla_xmlrpc, ssl_verify);
+
+ /* it's fedora specific */
+ char *query = xasprintf("ALL whiteboard:\"%s\" product:\"Fedora\"", hash);
+ free(hash);
+
+ xmlrpc_value *result = abrt_xmlrpc_call(client, "Bug.search", "({s:s})",
+ "quicksearch", query);
+ free(query);
+
+ xmlrpc_value *all_bugs = rhbz_get_member("bugs", result);
+ xmlrpc_DECREF(result);
+
+ int all_bugs_size = rhbz_array_size(all_bugs);
+ if (all_bugs_size > 0)
+ {
+ int bug_id = rhbz_bug_id(all_bugs);
+ printf("%i", bug_id);
+ }
+
+ exit(EXIT_SUCCESS);
+ }
+
+ if (!login[0] || !password[0])
+ error_msg_and_die(_("Empty login or password, please check your configuration"));
+
if (opts & OPT_t)
{
if (!argv[optind])
--
1.7.7.1.431.g10b2a
12 years, 6 months
New coredump2packages with libsolv
by Karel Klic
Dear all,
Here is a rewrite of coredump2packages script that is used in retrace
server. It uses libsolv to scan repository metadata and to check which
packages can be installed together. Dependency on yum was completely
dropped, as yum dependency solver was not versatile enough to satisfy
the requirements.
This new coredump2packages should return the best available package list
from the provided repositories all the time. The returned package list
is always installable. When the script cannot determine the package
containing the executable binary referenced from a coredump, it dowloads
the debuginfo package to tmp and checks appropriate symlink. A
disadvantage is that it is slower than the old script, because it does
more things.
Dependency:
libsolv: http://jnovy.fedorapeople.org/libsolv-0.0.0-1.src.rpm
install python-solv
Usage:
See the attached manpage. I am testing it with the following command:
./coredump2packages coredump_evince --fields packages components \
missing_build_ids missing_packages program_packages program_components \
installable_packages installable_components \
installable_program_package installable_program_component \
full_installable_packages --log=stdout
However, I haven't tested it much: just single devel machine with remote
Fedora 14 repositories. Local repositories should be tested. Good test
script would discover remaining bugs in the code.
Karel
#! /usr/bin/python
# -*- coding:utf-8;mode:python -*-
#
# Extracts package information from a coredump.
# Repository handling code was mostly copied from libsolv's pysolv
# example.
#
# Requires Python 2.6+, libsolv Python bindings, rpm2cpio, cpio,
# eu-unstrip.
import StringIO
import argparse
import glob
import iniparse
import os
import re
import shutil
import solv
import stat
import subprocess
import sys
import tempfile
import time
import fnmatch
import urllib2
import functools
import itertools
class GenericRepo(dict):
def __init__(self, name, type, md_cache_dir, attribs = {}):
for k in attribs:
self[k] = attribs[k]
self.name = name
self.type = type
self.md_cache_dir = md_cache_dir
def cache_path(self, ext = None):
path = re.sub(r'^\.', '_', self.name)
if ext:
path += "_" + ext + ".solvx"
else:
path += ".solv"
return os.path.join(self.md_cache_dir, re.sub(r'[/]', '_', path))
def load(self, pool):
self.handle = pool.add_repo(self.name)
self.handle.appdata = self
self.handle.priority = 99 - self['priority']
if self['autorefresh']:
dorefresh = True
if dorefresh:
try:
st = os.stat(self.cache_path())
if time.time() - st[stat.ST_MTIME] < self['metadata_expire']:
dorefresh = False
except OSError, e:
pass
self['cookie'] = ''
if not dorefresh and self.use_cached_repo(None):
log.write("Loading cached repository '{0}'.\n".format(self.name))
return True
return self.load_if_changed()
def load_if_changed(self):
return False
def load_ext(repodata):
return False
def set_from_urls(self, urls):
if not urls:
return
url = urls[0]
log.write(" - using mirror {0}\n".format(re.sub(r'^(.*?/...*?)/.*$', r'\1', url)))
self['baseurl'] = url
def set_from_metalink(self, metalink):
nf = self.download(metalink, False)
if not nf:
return None
f = os.fdopen(os.dup(solv.xfileno(nf)), 'r')
solv.xfclose(nf)
urls = []
chksums = []
for l in f.readlines():
l = l.strip()
m = re.match(r'^https?://.+/', l)
if m:
urls.append(m.group(0))
m = re.match(r'^<hash type="sha256">([0-9a-fA-F]{64})</hash>', l)
if m:
chksums.append(solv.Chksum(solv.REPOKEY_TYPE_SHA256, m.group(1)))
m = re.match(r'^<url.*>(https?://.+)repodata/repomd.xml</url>', l)
if m:
urls.append(m.group(1))
if len(urls) == 0:
chksums = [] # in case the metalink is about a different file
f.close()
self.set_from_urls(urls)
return chksums
def set_from_mirror_list(self, mirrorlist):
nf = self.download(mirrorlist, False)
if not nf:
return
f = os.fdopen(os.dup(solv.xfileno(nf)), 'r')
solv.xfclose(nf)
urls = []
for l in f.readline():
l = l.strip()
if l[0:6] == 'http://' or l[0:7] == 'https://':
urls.append(l)
self.set_from_urls(urls)
f.close()
def download(self, file, uncompress, chksums=[], markincomplete=False):
url = None
if 'baseurl' not in self:
if 'metalink' in self:
if file != self['metalink']:
metalinkchksums = self.set_from_metalink(self['metalink'])
if file == 'repodata/repomd.xml' and len(chksums) == 0:
chksums = metalinkchksums
else:
url = file
elif 'mirrorlist' in self:
if file != self['mirrorlist']:
self.set_from_mirror_list(self['mirrorlist'])
else:
url = file
if not url:
if 'baseurl' not in self:
log.write("Error: {0}: no baseurl\n".format(self.name))
return None
url = re.sub(r'/$', '', self['baseurl']) + '/' + file
log.write(" - downloading {0}\n".format(url))
f = tempfile.TemporaryFile()
try:
urlfile = urllib2.urlopen(url, timeout=30)
while True:
data = urlfile.read(8*32168)
if len(data) == 0:
break
f.write(data)
urlfile.close()
except urllib2.URLError as e:
log.write("Error: {0}: download error: {1}\n".format(url, e))
if markincomplete:
self['incomplete'] = True
return None
f.flush()
os.lseek(f.fileno(), 0, os.SEEK_SET)
verified = (len(chksums) == 0)
for chksum in chksums:
fchksum = solv.Chksum(chksum.type)
if fchksum is None:
if markincomplete:
self['incomplete'] = True
continue
fchksum.add_fd(f.fileno())
if fchksum.raw() != chksum.raw():
if markincomplete:
self['incomplete'] = True
continue
else:
verified = True
if not verified:
log.write("Error {0}: checksum mismatch or unknown checksum type\n".format(file))
return None
if uncompress:
return solv.xfopen_fd(file, os.dup(f.fileno()))
return solv.xfopen_fd(None, os.dup(f.fileno()))
def use_cached_repo(self, ext, mark=False):
if not ext:
cookie = self['cookie']
else:
cookie = self['extcookie']
try:
repopath = self.cache_path(ext)
f = open(repopath, 'r')
f.seek(-32, os.SEEK_END)
fcookie = f.read(32)
if len(fcookie) != 32:
return False
if cookie and fcookie != cookie:
return False
if self.type != 'system' and not ext:
f.seek(-32 * 2, os.SEEK_END)
fextcookie = f.read(32)
if len(fextcookie) != 32:
return False
f.seek(0)
flags = 0
if ext:
flags = solv.Repo.REPO_USE_LOADING | solv.Repo.REPO_EXTEND_SOLVABLES
if ext != 'DL':
flags |= solv.Repo.REPO_LOCALPOOL
if not self.handle.add_solv(f, flags):
return False
if self.type != 'system' and not ext:
self['cookie'] = fcookie
self['extcookie'] = fextcookie
if mark:
# no futimes in python?
try:
os.utime(repopath, None)
except Exception, e:
pass
except IOError, e:
return False
return True
def get_ext_cookie(self, f):
chksum = solv.Chksum(solv.REPOKEY_TYPE_SHA256)
chksum.add(self['cookie'])
if f:
st = os.fstat(f.fileno())
chksum.add(str(st[stat.ST_DEV]))
chksum.add(str(st[stat.ST_INO]))
chksum.add(str(st[stat.ST_SIZE]))
chksum.add(str(st[stat.ST_MTIME]))
extcookie = chksum.raw()
# compatibility to c code
if ord(extcookie[0]) == 0:
extcookie = chr(1) + extcookie[1:]
self['extcookie'] = extcookie
def write_cached_repo(self, ext, info=None):
try:
if not os.path.isdir(self.md_cache_dir):
os.mkdir(self.md_cache_dir, 0755)
(fd, tmpname) = tempfile.mkstemp(prefix='.newsolv-',
dir=self.md_cache_dir)
os.fchmod(fd, 0444)
f = os.fdopen(fd, 'w+')
if not info:
self.handle.write(f)
elif ext:
info.write(f)
else: # rewrite_repos case
self.handle.write_first_repodata(f)
if self.type != 'system' and not ext:
if 'extcookie' not in self:
self.get_ext_cookie(f)
f.write(self['extcookie'])
if not ext:
f.write(self['cookie'])
else:
f.write(self['extcookie'])
f.close()
if self.handle.iscontiguous():
# Switch to saved repo to activate paging and save memory.
nf = solv.xfopen(tmpname)
if not ext:
# Main repository.
self.handle.empty()
if not self.handle.add_solv(nf, solv.Repo.SOLV_ADD_NO_STUBS):
sys.exit("Internal error, cannot reload solv file.")
else:
# Extension repodata.
# Need to extend to repo boundaries, as this is how
# info.write() has written the data.
info.extend_to_repo()
# LOCALPOOL does not help as pool already contains all ids
info.add_solv(nf, solv.Repo.REPO_EXTEND_SOLVABLES)
solv.xfclose(nf)
os.rename(tmpname, self.cache_path(ext))
except IOError, e:
if tmpname:
os.unlink(tmpname)
def update_added_provides(self, addedprovides):
if 'incomplete' in self:
return
if 'handle' not in self:
return
if self.handle.isempty():
return
# Make sure there's just one real repodata with extensions.
repodata = self.handle.first_repodata()
if not repodata:
return
oldaddedprovides = repodata.lookup_idarray(solv.SOLVID_META,
solv.REPOSITORY_ADDEDFILEPROVIDES)
if not set(addedprovides) <= set(oldaddedprovides):
for id in addedprovides:
repodata.add_idarray(solv.SOLVID_META,
solv.REPOSITORY_ADDEDFILEPROVIDES, id)
repodata.internalize()
self.write_cached_repo(None, repodata)
class MetadataRepo(GenericRepo):
def load_if_changed(self):
log.write("Checking rpmmd repo '{0}'.\n".format(self.name))
sys.stdout.flush()
f = self.download("repodata/repomd.xml", False)
if not f:
log.write(" - no repomd.xml file, skipping\n")
self.handle.free(True)
del self.handle
return False
# Calculate a cookie from repomd contents.
chksum = solv.Chksum(solv.REPOKEY_TYPE_SHA256)
chksum.add_fp(f)
self['cookie'] = chksum.raw()
if self.use_cached_repo(None, True):
log.write(" - using cached metadata\n")
solv.xfclose(f)
return True
os.lseek(solv.xfileno(f), 0, os.SEEK_SET)
self.handle.add_repomdxml(f, 0)
solv.xfclose(f)
log.write(" - fetching metadata\n")
(filename, filechksum) = self.find('primary')
if filename:
f = self.download(filename, True, [filechksum], True)
if f:
self.handle.add_rpmmd(f, None, 0)
solv.xfclose(f)
if 'incomplete' in self:
return False # Hopeless, need good primary.
(filename, filechksum) = self.find('updateinfo')
if filename:
f = self.download(filename, True, [filechksum], True)
if f:
self.handle.add_updateinfoxml(f, 0)
solv.xfclose(f)
self.add_exts()
if 'incomplete' not in self:
self.write_cached_repo(None)
# Must be called after writing the repo.
self.handle.create_stubs()
return True
def find(self, what):
di = self.handle.Dataiterator(solv.SOLVID_META,
solv.REPOSITORY_REPOMD_TYPE, what,
solv.Dataiterator.SEARCH_STRING)
di.prepend_keyname(solv.REPOSITORY_REPOMD)
for d in di:
d.setpos_parent()
filename = d.pool.lookup_str(solv.SOLVID_POS,
solv.REPOSITORY_REPOMD_LOCATION)
chksum = d.pool.lookup_checksum(solv.SOLVID_POS,
solv.REPOSITORY_REPOMD_CHECKSUM)
if filename and not chksum:
log.write("Error: no {0} file checksum!\n".format(filename))
filename = None
chksum = None
if filename:
return (filename, chksum)
return (None, None)
def add_ext(self, repodata, what, ext):
filename, chksum = self.find(what)
if not filename and what == 'deltainfo':
filename, chksum = self.find('prestodelta')
if not filename:
return
handle = repodata.new_handle()
repodata.set_poolstr(handle, solv.REPOSITORY_REPOMD_TYPE, what)
repodata.set_str(handle, solv.REPOSITORY_REPOMD_LOCATION, filename)
repodata.set_checksum(handle, solv.REPOSITORY_REPOMD_CHECKSUM, chksum)
if ext == 'DL':
repodata.add_idarray(handle, solv.REPOSITORY_KEYS,
solv.REPOSITORY_DELTAINFO)
repodata.add_idarray(handle, solv.REPOSITORY_KEYS,
solv.REPOKEY_TYPE_FLEXARRAY)
elif ext == 'FL':
repodata.add_idarray(handle, solv.REPOSITORY_KEYS,
solv.SOLVABLE_FILELIST)
repodata.add_idarray(handle, solv.REPOSITORY_KEYS,
solv.REPOKEY_TYPE_DIRSTRARRAY)
repodata.add_flexarray(solv.SOLVID_META, solv.REPOSITORY_EXTERNAL, handle)
def add_exts(self):
repodata = self.handle.add_repodata(0)
self.add_ext(repodata, 'deltainfo', 'DL')
self.add_ext(repodata, 'filelists', 'FL')
repodata.internalize()
def load_ext(self, repodata):
repomdtype = repodata.lookup_str(solv.SOLVID_META,
solv.REPOSITORY_REPOMD_TYPE)
if repomdtype == 'filelists':
ext = 'FL'
elif repomdtype == 'deltainfo':
ext = 'DL'
else:
return False
log.write("Loading extended metadata {1} for {0}.\n".format(
self.name, repomdtype))
if self.use_cached_repo(ext):
log.write(" - found recent copy in cache\n")
return True
log.write(" - fetching\n")
filename = repodata.lookup_str(solv.SOLVID_META,
solv.REPOSITORY_REPOMD_LOCATION)
filechksum = repodata.lookup_checksum(solv.SOLVID_META,
solv.REPOSITORY_REPOMD_CHECKSUM)
f = self.download(filename, True, [filechksum])
if not f:
return False
if ext == 'FL':
self.handle.add_rpmmd(f, 'FL', solv.Repo.REPO_USE_LOADING |
solv.Repo.REPO_EXTEND_SOLVABLES)
elif ext == 'DL':
self.handle.add_deltainfoxml(f, solv.Repo.REPO_USE_LOADING)
solv.xfclose(f)
self.write_cached_repo(ext, repodata)
return True
def load_stub(repodata):
repo = repodata.repo.appdata
if repo:
return repo.load_ext(repodata)
return False
# Process command line arguments
cmdline_parser = argparse.ArgumentParser(description='Get packages for coredump processing.')
cmdline_parser.add_argument('--repos', default=['*'], nargs='+', metavar='WILDCARD',
help='Repositories (wildcard) to be enabled')
cmdline_parser.add_argument('coredump', help='Coredump')
cmdline_parser.add_argument('--log', metavar='FILENAME',
help='Store debug output to a file (it is possible to use "stdout" and "stderr")')
cmdline_parser.add_argument("--md-cache-dir", metavar="DIR", default="/var/cache/solv",
help="Directory to store repository metadata cache.")
FIELDS_CHOICES = ["packages", "components",
"program_packages", "program_components",
"installable_packages", "installable_components",
"installable_program_package", "installable_program_component",
"full_installable_packages",
"missing_build_ids", "missing_packages"]
cmdline_parser.add_argument('--fields', nargs='+', choices=FIELDS_CHOICES,
default=["installable_packages"],
help="Coredump information to be displayed")
cmdline_args = cmdline_parser.parse_args()
# Set up logging
if cmdline_args.log == "stdout":
log = sys.stdout
elif cmdline_args.log == "stderr":
log = sys.stderr
elif cmdline_args.log is not None:
log = open(cmdline_args.log, "w")
else:
log = open("/dev/null", "w")
# Create solver package pool.
pool = solv.Pool()
pool.setarch(os.uname()[4])
pool.set_loadcallback(load_stub)
# Read all repo configs
repos = []
for reponame in sorted(glob.glob("/etc/yum.repos.d/*.repo")):
text = open(reponame).read()
# TODO: properly handle releasever and basearch. To get
# releasever run `rpm -q --queryformat '%{VERSION}'
# fedora-release`. Basearch should come from `uname -i`.
text = text.replace("$releasever", "14").replace("$basearch", "i386")
textfile = StringIO.StringIO(text)
cfg = iniparse.INIConfig(textfile)
for alias in cfg:
repoattr = {'enabled': 0, 'priority': 99, 'autorefresh': 1,
'type': 'rpm-md', 'metadata_expire': 900}
for k in cfg[alias]:
repoattr[k] = cfg[alias][k]
if 'mirrorlist' in repoattr and 'metalink' not in repoattr:
if repoattr['mirrorlist'].find('/metalink'):
repoattr['metalink'] = repoattr['mirrorlist']
del repoattr['mirrorlist']
if repoattr['type'] == 'rpm-md':
repo = MetadataRepo(alias, 'repomd', cmdline_args.md_cache_dir, repoattr)
else:
sys.exit("Unknown repository type for {0}.".format(alias))
repos.append(repo)
# Enable repositories depending on a wildcard. Ignore enabled attribute.
for repo in repos:
for repo_wildcard in cmdline_args.repos:
if fnmatch.fnmatch(repo.name, repo_wildcard):
repo.load(pool)
# Update pool
addedprovides = pool.addfileprovides_ids()
if addedprovides:
for repo in repos:
repo.update_added_provides(addedprovides)
pool.createwhatprovides()
# Get eu-unstrip output, which contains build-ids and binary object
# paths
log.write("Running eu-unstrip...\n")
unstrip_args = ['eu-unstrip', '--core={0}'.format(cmdline_args.coredump), '-n']
unstrip_proc = subprocess.Popen(unstrip_args, stdout=subprocess.PIPE)
unstrip = unstrip_proc.communicate()[0]
log.write("{0}\n".format(unstrip))
if unstrip is None:
sys.exit("Missing output from eu-unstrip.")
class UnstripOutput:
"""
Represents a parsed output of `eu-unstrip -n --core=coredump`. It
contains a list of lines with build ids and paths, where the first
line corresponds to the executable program and the rest are
dynamic libraries.
"""
def __init__(self):
self.lines = []
self.program_entry_line = None
def missing_build_ids(self):
build_ids = []
for line in self.lines:
empty = True
for bin_packages in line.debuginfo_packages.values():
if len(bin_packages) > 0:
empty = False
break
if empty:
build_ids.append((line.build_id, line.binobj_path))
return build_ids
def missing_packages(self):
packages = []
for line in self.lines:
for debuginfo, bin_packages in line.debuginfo_packages.items():
if len(bin_packages) == 0:
packages.append((debuginfo, line.binobj_path))
return packages
def packages(self):
"""
Build a list of all packages, including debuginfo. There might
be several versions of single package.
"""
packages = set()
for line in self.lines:
packages |= set(line.debuginfo_packages.keys())
for binary_packages in line.debuginfo_packages.values():
packages |= set(binary_packages)
return packages
def program_packages(self):
packages = set()
for binary_packages in self.program_entry_line.debuginfo_packages.values():
packages |= set(binary_packages)
return packages
def build_install_variants(self):
for line in self.lines:
line.build_install_variants()
self.install_variants_list = [line.install_variants for line in self.lines
if len(line.install_variants) > 0]
def max_install_variant_len(self):
max_list = set()
for install_variants in self.install_variants_list:
max_list |= set(max(install_variants, key=len))
return len(max_list)
class UnstripLine:
"""
Represents a line from `eu-unstrip -n --core=coredump` output,
including debuginfo packages that match the build id and
corresponding packages containing the binary.
"""
def __init__(self, build_id, binobj_path):
self.build_id = build_id
self.binobj_path = binobj_path
self.debuginfo_packages = {}
def build_install_variants(self):
self.install_variants = []
for debuginfo, binary_packages in self.debuginfo_packages.items():
if len(binary_packages) == 0:
self.install_variants.append([debuginfo])
else:
for package in binary_packages:
self.install_variants.append([debuginfo, package])
@functools.total_ordering
class Package:
"""
Represents a single package from repository.
"""
def __init__(self, solvable):
self.solvable = solvable
def source_name(self):
source_name_id = self.solvable.lookup_id(solv.SOLVABLE_SOURCENAME)
return pool.id2str(source_name_id) if source_name_id > 0 else self.solvable.name
def nevra(self):
return "{0}-{1}.{2}".format(self.solvable.name, self.solvable.evr,
self.solvable.arch)
def download(self):
location = self.solvable.lookup_location()[0]
chksum = self.solvable.lookup_checksum(solv.SOLVABLE_CHECKSUM)
return self.solvable.repo.appdata.download(location, False, [chksum])
# Oneliners
name = lambda self: self.solvable.name
evr = lambda self: self.solvable.evr
arch = lambda self: self.solvable.arch
__str__ = lambda self: self.nevra()
__repr__ = lambda self: "<Package {0}>".format(self.nevra())
__eq__ = lambda self, other: self.nevra() == other.nevra()
__lt__ = lambda self, other: self.nevra() < other.nevra()
__hash__ = lambda self: hash(self.nevra())
# Parse the build-ids and paths to a structure. Store the build id of
# a program. Build_id is an unique hash of a binary. Single identical
# binary might be located in several packages, or in several versions
# of single package.
unstrip_output = UnstripOutput()
for line in unstrip.split('\n'):
parts = line.split()
if not parts or len(parts) < 3:
continue
build_id = parts[1].split('@')[0]
binobj_path = parts[2]
if binobj_path[0] != '/' and parts[4] != '[exe]':
continue
unstrip_output.lines.append(UnstripLine(build_id, binobj_path))
if unstrip_output.program_entry_line is None:
unstrip_output.program_entry_line = unstrip_output.lines[-1]
# Find debuginfo packages corresponding to every build id. Create a
# new structure for this. Debuginfo_package is a structure with epoch,
# ver, rel, and arch attributes.
for line in unstrip_output.lines:
# Ask for a known path from debuginfo package.
debuginfo_path = "/usr/lib/debug/.build-id/{0}/{1}.debug".format(
line.build_id[:2], line.build_id[2:])
log.write("Searching repositories for {0}.\n".format(debuginfo_path))
debuginfo_package_list = pool.Dataiterator(
0, solv.SOLVABLE_FILELIST, debuginfo_path,
solv.Dataiterator.SEARCH_STRING | solv.Dataiterator.SEARCH_FILES |
solv.Dataiterator.SEARCH_COMPLETE_FILELIST)
for package in debuginfo_package_list:
assert Package(package.solvable) not in line.debuginfo_packages
line.debuginfo_packages[Package(package.solvable)] = []
count = len(line.debuginfo_packages.keys())
formatted_packages = [str(package) for package in line.debuginfo_packages.keys()]
log.write(" - found {0} result{1}{2}\n".format(
count,
"s" if count != 1 else "",
": {0}".format(", ".join(formatted_packages)) if count > 0 else ""))
# For every debuginfo package, find associated binary packages that
# might contain the binary (specified either by a path or build id if
# path is not available). Usually, the list for single debuginfo
# package contains only one item. Empty list means that no package was
# found, this might be caused by a bug in the package. List with
# multiple items indicate that there are multiple packages to select
# from, which indicates either a packaging bug or mutually exclusive
# packages within single component.
for line in unstrip_output.lines:
for debuginfo_package in line.debuginfo_packages:
# Binobj_paths is a list of path strings, that are used to detect
# which package(s) associated with the debuginfo_package contains
# the binary or binaries. It is a list because one build_id might
# correspond to several identical binaries installed to different
# paths when the path is not known from coredump, but retrived
# using build_id. Usually the list contain a single item.
binobj_paths = []
if line.binobj_path == "-": # [exe] without binary name
# Build_id is used to find the binary package when binobj_path
# is "-". Let's download and extract the debuginfo package. We
# need to know the value of the build_id symlink from the
# inside.
log.write("Downloading {0} for examination.\n".format(debuginfo_package))
temp_dir = tempfile.mkdtemp(prefix="coredump2packages")
downloaded = debuginfo_package.download()
local = os.path.join(temp_dir, debuginfo_package.nevra())
cpio_file = open(local + ".cpio", "wb+")
rpm2cpio_proc = subprocess.Popen(["rpm2cpio", "-"], stdout=cpio_file,
stdin=solv.xfileno(downloaded))
rpm2cpio_proc.wait()
solv.xfclose(downloaded)
if rpm2cpio_proc.returncode != 0:
sys.exit("Failed to convert RPM to cpio using rpm2cpio.")
cpio_file.seek(0)
unpack_dir = os.path.join(temp_dir, "unpacked")
os.makedirs(unpack_dir)
cpio_proc = subprocess.Popen(["cpio", "--extract", "-d", "--quiet"],
stdin=cpio_file, cwd=unpack_dir)
cpio_proc.wait()
if cpio_proc.returncode != 0:
sys.exit("Failed to unpack RPM using cpio.")
cpio_file.close()
build_id_reldir = os.path.join("usr", "lib", "debug", ".build-id",
line.build_id[:2])
build_id_file = os.path.join(unpack_dir, build_id_reldir,
line.build_id[2:])
if os.path.islink(build_id_file):
binary_relpath = os.readlink(build_id_file)
binobj_paths.append("/" + os.path.normpath(os.path.join(
build_id_reldir, binary_relpath)))
for i in range(1, 8):
build_id_file_i = "{0}.{1}".format(build_id_file, i)
if os.path.islink(build_id_file_i):
binary_relpath = os.readlink(build_id_file_i)
binobj_paths.append("/" + os.path.normpath(os.path.join(
build_id_reldir, binary_relpath)))
shutil.rmtree(temp_dir)
log.write("Found exe paths {0}\n".format(binobj_paths))
else:
binobj_paths = [line.binobj_path]
for binobj_path in binobj_paths:
log.write("Searching for {0}.\n".format(binobj_path))
binobj_package_list = pool.Dataiterator(
0, solv.SOLVABLE_FILELIST, binobj_path,
solv.Dataiterator.SEARCH_STRING | solv.Dataiterator.SEARCH_FILES |
solv.Dataiterator.SEARCH_COMPLETE_FILELIST)
for binobj_package_solvable in binobj_package_list:
binobj_package = Package(binobj_package_solvable.solvable)
log.write(" - {0}".format(binobj_package))
if debuginfo_package.source_name() != binobj_package.source_name() or \
debuginfo_package.evr() != binobj_package.evr():
log.write(": EVR or base package name doesn't match {0} {1}\n".format(
debuginfo_package.source_name(), debuginfo_package.evr()))
continue
log.write(": EVR and base package name matches\n")
line.debuginfo_packages[debuginfo_package].append(binobj_package)
def limit_jobs(pool, jobs, flags, evrstr):
njobs = []
evr = pool.str2id(evrstr)
for j in jobs:
how = j.how
sel = how & solv.Job.SOLVER_SELECTMASK
what = pool.rel2id(j.what, evr, flags)
if flags == solv.REL_ARCH:
how |= solv.Job.SOLVER_SETARCH
elif flags == solv.REL_EQ and sel == solv.Job.SOLVER_SOLVABLE_NAME:
if evrstr.find('-') >= 0:
how |= solv.Job.SOLVER_SETEVR
else:
how |= solv.Job.SOLVER_SETEV
njobs.append(pool.Job(how, what))
return njobs
def dep_glob(pool, name, globname, globdep):
id = pool.str2id(name, False)
if id:
match = False
for s in pool.whatprovides(id):
if globname and s.nameid == id:
return [pool.Job(solv.Job.SOLVER_SOLVABLE_NAME, id)]
match = True
if match:
if globname and globdep:
log.write("[using capability match for '{0}']\n".format(name))
return [pool.Job(Job.SOLVER_SOLVABLE_PROVIDES, id)]
if not re.search(r'[[*?]', name):
return []
if globname:
# try name glob
idmatches = {}
for d in pool.Dataiterator(0, solv.SOLVABLE_NAME, name,
solv.Dataiterator.SEARCH_GLOB):
s = d.solvable
if s.installable():
idmatches[s.nameid] = True
if idmatches:
return [pool.Job(Job.SOLVER_SOLVABLE_NAME, id)
for id in sorted(idmatches.keys())]
if globdep:
# try dependency glob
idmatches = pool.matchprovidingids(name, solv.Dataiterator.SEARCH_GLOB)
if idmatches:
log.write("[using capability match for '{0}']\n".format(name))
return [pool.Job(Job.SOLVER_SOLVABLE_PROVIDES, id)
for id in sorted(idmatches)]
return []
unstrip_output.build_install_variants()
max_len = unstrip_output.max_install_variant_len()
best_installable_variant = None
best_installable_variant_len = 0
for variant in itertools.product(*unstrip_output.install_variants_list):
log.write("Solving an installation variant.\n")
flat_variant = reduce(lambda a,p:a|set(p), variant, set())
jobs = []
for package in flat_variant:
mid_jobs = dep_glob(pool, package.name(), True, True)
if mid_jobs:
jobs += limit_jobs(pool, mid_jobs, solv.REL_EQ, package.evr())
jobs += limit_jobs(pool, mid_jobs, solv.REL_ARCH, package.arch())
continue
for job in jobs:
job.how |= solv.Job.SOLVER_INSTALL
solver = pool.Solver()
problems = solver.solve(jobs)
if problems:
log.write(" - this variant is unresolvable\n")
for problem in problems:
log.write(" - {0}\n".format(problem.findproblemrule().info().problemstr()))
del solver
continue
trans = solver.transaction()
del solver
assert not trans.isempty()
assert len(trans.classify()) == 1
installables = trans.classify()[0]
assert installables.type == solv.Transaction.SOLVER_TRANSACTION_INSTALL
if len(flat_variant) > best_installable_variant_len:
log.write(" - replacing older best installable variant\n")
best_installable_variant = (flat_variant, installables)
best_installable_variant_len = len(flat_variant)
else:
log.write(" - keeping older best installable variant\n")
if best_installable_variant_len == max_len:
log.write(" - found best variant, terminating\n")
break
else:
log.write(" - current best variant has {0} packages, maximum is {1}\n".format(
best_installable_variant_len, max_len))
def to_components(packages):
return set([package.source_name() for package in packages])
# Format and print output. Formatting depends on --fields command line
# argument.
output = []
for field in cmdline_args.fields:
array_formatted = lambda x:["{0}\n".format(item) for item in sorted(x)]
single_formatted = lambda x:"".join(array_formatted(x)) if len(x) > 0 else "-\n"
if field == "packages":
output.append(single_formatted(unstrip_output.packages()))
elif field == "components":
output.append(single_formatted(to_components(unstrip_output.packages())))
elif field == "program_packages":
output.append(single_formatted(unstrip_output.program_packages()))
elif field == "program_components":
output.append(single_formatted(to_components(unstrip_output.program_packages())))
elif field == "installable_packages":
output.append(single_formatted(best_installable_variant[0]))
elif field == "installable_components":
output.append(single_formatted(to_components(best_installable_variant[0])))
elif field == "installable_program_component":
comp = to_components(best_installable_variant[0] &
unstrip_output.program_packages())
assert len(comp) <= 1
output.append(single_formatted(comp))
elif field == "installable_program_package":
package = best_installable_variant[0] & unstrip_output.program_packages()
assert len(package) <= 1
output.append(single_formatted(package))
elif field == "full_installable_packages":
output.append(single_formatted(best_installable_variant[1].solvables()))
elif field == "missing_build_ids":
formatted = "".join(["{0} {1}\n".format(build_id, path)
for build_id, path in unstrip_output.missing_build_ids()])
output.append(formatted if len(formatted) > 0 else "-\n")
elif field == "missing_packages":
formatted = "".join(["{0} {1}\n".format(package, path)
for package, path in unstrip_output.missing_packages()])
output.append(formatted if len(formatted) > 0 else "-\n")
else:
sys.exit("Unknown field '{0}'.".format(field))
sys.stdout.write("\n".join(output))
coredump2packages(1)
====================
NAME
----
coredump2packages - Extract package information from a coredump.
SYNOPSIS
--------
'coredump2packages' COREDUMP [--repos WILDCARD...] [--log FILENAME] [--fields FIELD...]
DESCRIPTION
-----------
This tool matches a coredump to packages from the provided repositories.
OPTIONS
-------
--repos WILDCARD...::
Names of repositories that should be searched. Multiple wildcards or
repository names can be specified. Default value is '*' (search all
repositories, including the disabled).
--log FILENAME::
Store debugging information to a specified file. When 'stdout' or
'stderr' is provided as FILENAME, the debugging output is redirected
to standard (erorr) output.
--md-cache-dir DIR::
Directory to store repository metadata cache, which speeds up
repository metadata initialization. If the provided directory does
not exist, it is created.
--fields FIELD...::
Specifies the output of the tool. The order of provided fields is
used for coredump2packages output. The fields are separated by an
empty line in the output. An empty field output is indicated by a
single line containing the '-' character. Default value is
'installable_packages'.
Fields
~~~~~~
'packages'::
Prints all packages (name-version-release) that are possiby
referenced from the coredump. The list includes multiple versions of
debuginfo packages if they matches a build_id and multiple versions
of binary packages that correspond to debuginfo packages.
'components'::
Prints all components that are possibly referenced from the
coredump.
'program_packages'::
Prints a list of packages that contain the binary referenced by the
coredump with the matching build_id.
'program_components'::
Prints a list of components which package contains the binary
referenced by the coredump via build_id.
'installable_packages'::
Prints a list of packages that are referenced from the coredump and
that are installable. This means there are no conflicts between them
or their dependencies.
'installable_components'::
Prints a list of components covering the installable packages.
'installable_program_package'::
Prints a package containing the binary referenced from the coredump.
'installable_program_component'::
Prints a component that contains the binary referenced from the
coredump.
'full_installable_packages'::
Prints an installable full set of packages that can be used to setup
an environment for coredump analysis via chroot GDB.
'missing_build_ids'::
Prints a list of build ids from the coredump without corresponding
debuginfo package found in provided repositories. Every line
contains a build id and a path to binary.
'missing_packages'::
Prints a list of debuginfo packages that were referenced from the
coredump, but no binary was found in corresponding binary packages.
In other words, the debugging symbols are available, but the binary
is not. Every line contains a debuginfo package name-version-release
and a path to binary that was not found in packages.
AUTHORS
-------
* Karel Klic
12 years, 6 months
[PATCH] added search box to search thru all the elements
by Jiri Moskovcak
Hi,
this patch adds a search box to the "confirmation" page in the wizard.
It allows user to search thru all the items in the problems_data. Should
at least partially fix rhbz#748457. Run-tested, but it needs some
polishing, so I'm posting this "early hack" to hear your feedback before
I spend more time on it.
Waiting for feedback,
Jirka
12 years, 6 months
[libreport 2.0.6.51.gcb1c] testsuite: 5 failed
by Richard Marko
Testsuite failure report.
Btw: make check doesn't return non-zero value when one of the tests
fails (would be nice to have this fixed because of automated testing).
--
Regards,
Richard
12 years, 6 months
Subject: [libreport 2.0.6.51.gcb1c] testsuite: 5 failed
by Richard Marko
## ------------------------------------ ##
## libreport 2.0.6.51.gcb1c test suite. ##
## ------------------------------------ ##
testsuite: command line was:
$ ./testsuite
## --------- ##
## Platform. ##
## --------- ##
hostname =<censored>
uname -m = x86_64
uname -r = 2.6.40.6-0.fc15.x86_64
uname -s = Linux
uname -v = #1 SMP Tue Oct 4 00:39:50 UTC 2011
/usr/bin/uname -p = unknown
/bin/uname -X = unknown
/bin/arch = x86_64
/usr/bin/arch -k = unknown
/usr/convex/getsysinfo = unknown
/usr/bin/hostinfo = unknown
/bin/machine = unknown
/usr/bin/oslevel = unknown
/bin/universe = unknown
PATH: /tmp/tmp.6ZZ6xaqYrE/libreport/tests
PATH: /usr/lib64/ccache
PATH: /usr/local/sbin
PATH: /usr/local/bin
PATH: /sbin
PATH: /bin
PATH: /usr/sbin
PATH: /usr/bin
ib
testsuite: atconfig:
| # Configurable variable values for building test suites.
| # Generated by ./config.status.
| # Copyright (C) 2010 Free Software Foundation, Inc.
|
| # The test suite will define top_srcdir=/../.. etc.
| at_testdir='tests'
| abs_builddir='/tmp/tmp.6ZZ6xaqYrE/libreport/tests'
| at_srcdir='.'
| abs_srcdir='/tmp/tmp.6ZZ6xaqYrE/libreport/tests'
| at_top_srcdir='..'
| abs_top_srcdir='/tmp/tmp.6ZZ6xaqYrE/libreport'
| at_top_build_prefix='../'
| abs_top_builddir='/tmp/tmp.6ZZ6xaqYrE/libreport'
|
| # Backward compatibility with Autotest<= 2.59b:
| at_top_builddir=$at_top_build_prefix
|
| AUTOTEST_PATH='tests'
|
| SHELL=${CONFIG_SHELL-'/bin/sh'}
testsuite: atlocal:
| # tests/atlocal. Generated from atlocal.in by configure. -*- shell-script -*-
| # Configurable variable values for btparser test suite.
|
| # We need a C compiler.
| CC='gcc'
| LIBTOOL="$abs_top_builddir/libtool"
|
| # We want no optimization.
| CFLAGS="-g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -fno-strict-aliasing -std=gnu99 -Wall -I$abs_top_builddir/src/include -I$abs_top_builddir/src/gtk-helpers -D_GNU_SOURCE -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include "
|
| # Are special link options needed?
| LDFLAGS=" $abs_top_builddir/src/lib/libreport.la $abs_top_builddir/src/gtk-helpers/libreport-gtk.la"
|
| # Are special libraries needed?
| LIBS=""
## ---------------- ##
## Tested programs. ##
## ---------------- ##
## ------------------ ##
## Running the tests. ##
## ------------------ ##
testsuite: starting at: Mon Oct 24 11:27:07 EDT 2011
1. strbuf_append_char (strbuf.at:9): ok (0m0.356s 0m0.163s)
2. strbuf_append_str (strbuf.at:37): ok (0m0.349s 0m0.175s)
3. parse_release_for_bz (osrelease.at:9): ok (0m0.355s 0m0.169s)
4. parse_release_for_rhts (osrelease.at:73): ok (0m0.348s 0m0.175s)
testsuite: ending at: Mon Oct 24 11:27:10 EDT 2011
testsuite: test suite duration: 0h 0m 3s
## ------------- ##
## Test results. ##
## ------------- ##
ERROR: All 5 tests were run,
1 failed unexpectedly.
## ------------------------ ##
## Summary of the failures. ##
## ------------------------ ##
Failed tests:
libreport 2.0.6.51.gcb1c test suite test groups:
NUM: FILE-NAME:LINE TEST-GROUP-NAME
KEYWORDS
5: taghyperlinks.at:9 gtk_labels
## ---------------------- ##
## Detailed failed tests. ##
## ---------------------- ##
# -*- compilation -*-
5. taghyperlinks.at:9: testing gtk_labels ...
./taghyperlinks.at:9: $LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o gtk_labels gtk_labels.c $LIBS
stderr:
stdout:
libtool: link: gcc -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -fno-strict-aliasing -std=gnu99 -Wall -I/tmp/tmp.6ZZ6xaqYrE/libreport/src/include -I/tmp/tmp.6ZZ6xaqYrE/libreport/src/gtk-helpers -D_GNU_SOURCE -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -o .libs/gtk_labels gtk_labels.c /tmp/tmp.6ZZ6xaqYrE/libreport/src/lib/.libs/libreport.so /tmp/tmp.6ZZ6xaqYrE/libreport/src/gtk-helpers/.libs/libreport-gtk.so -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lpng12 -lm -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lgnome-keyring -lglib-2.0 -pthread
./taghyperlinks.at:9: ./gtk_labels
stderr:
lt-gtk_labels: gtk_labels.c:34: main: Assertion `test(&tmp) == 0' failed.
/tmp/tmp.6ZZ6xaqYrE/libreport/tests/testsuite.dir/at-groups/5/test-source: line 76: 20015 Aborted (core dumped) ./gtk_labels
stdout:
'<a href="https://bugzilla.redhat.com/show_bug.cgi?id=743198">https://bugzilla.redhat.com/show_bug.cgi?id=743198</a>' =='<a href="https://bugzilla.redhat.com/show_bug.cgi?id=743198">https://bugzilla.redhat.com/show_bug.cgi?id=743198</a>'
'SOMETEXT<a href="https://bugzilla.redhat.com/show_bug.cgi?id=743198">https://bugzilla.redhat.com/show_bug.cgi?id=743198</a>' == 'SOMETEXT<a href="https://bugzilla.redhat.com/show_bug.cgi?id=743198">https://bugzilla.redhat.com/show_bug.cgi?id=743198</a>'
'' == '����'
./taghyperlinks.at:9: exit code was 134, expected 0
5. taghyperlinks.at:9: 5. gtk_labels (taghyperlinks.at:9): FAILED (taghyperlinks.at:9)
## ------------- ##
## ../config.log ##
## ------------- ##
| This file contains any messages produced by compilers while
| running configure, to aid debugging if configure makes a mistake.
|
| It was created by libreport configure 2.0.6.51.gcb1c, which was
| generated by GNU Autoconf 2.68. Invocation command line was
|
| $ ./configure --build=x86_64-unknown-linux-gnu --host=x86_64-unknown-linux-gnu --program-prefix= --disable-dependency-tracking --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/var/lib --mandir=/usr/share/man --infodir=/usr/share/info
|
| ## --------- ##
| ## Platform. ##
| ## --------- ##
|
| hostname =<censored>
| uname -m = x86_64
| uname -r = 2.6.40.6-0.fc15.x86_64
| uname -s = Linux
| uname -v = #1 SMP Tue Oct 4 00:39:50 UTC 2011
|
| /usr/bin/uname -p = unknown
| /bin/uname -X = unknown
|
| /bin/arch = x86_64
| /usr/bin/arch -k = unknown
| /usr/convex/getsysinfo = unknown
| /usr/bin/hostinfo = unknown
| /bin/machine = unknown
| /usr/bin/oslevel = unknown
| /bin/universe = unknown
|
| PATH: /usr/lib64/ccache
| PATH: /usr/local/sbin
| PATH: /usr/local/bin
| PATH: /sbin
| PATH: /bin
| PATH: /usr/sbin
| PATH: /usr/bin
| PATH: /root/bin
|
|
| ## ----------- ##
| ## Core tests. ##
| ## ----------- ##
|
| configure:2396: checking for a BSD-compatible install
| configure:2464: result: /usr/bin/install -c
| configure:2475: checking whether build environment is sane
| configure:2525: result: yes
| configure:2666: checking for a thread-safe mkdir -p
| configure:2705: result: /bin/mkdir -p
| configure:2718: checking for gawk
| configure:2734: found /bin/gawk
| configure:2745: result: gawk
| configure:2756: checking whether make sets $(MAKE)
| configure:2778: result: yes
| configure:2943: checking build system type
| configure:2957: result: x86_64-unknown-linux-gnu
| configure:2977: checking host system type
| configure:2990: result: x86_64-unknown-linux-gnu
| configure:3031: checking how to print strings
| configure:3058: result: printf
| configure:3091: checking for style of include used by make
| configure:3119: result: GNU
| configure:3149: checking for x86_64-unknown-linux-gnu-gcc
| configure:3179: result: no
| configure:3189: checking for gcc
| configure:3205: found /usr/lib64/ccache/gcc
| configure:3216: result: gcc
| configure:3445: checking for C compiler version
| configure:3454: gcc --version>&5
| gcc (GCC) 4.6.1 20110908 (Red Hat 4.6.1-9)
| Copyright (C) 2011 Free Software Foundation, Inc.
| This is free software; see the source for copying conditions. There is NO
| warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
| configure:3465: $? = 0
| configure:3454: gcc -v>&5
| Using built-in specs.
| COLLECT_GCC=/usr/bin/gcc
| COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.6.1/lto-wrapper
| Target: x86_64-redhat-linux
| Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-java-awt=gtk --disable-dssi --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-ppl --with-cloog --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
| Thread model: posix
| gcc version 4.6.1 20110908 (Red Hat 4.6.1-9) (GCC)
| configure:3465: $? = 0
| configure:3454: gcc -V>&5
| gcc: error: unrecognized option '-V'
| gcc: fatal error: no input files
| compilation terminated.
| configure:3465: $? = 4
| configure:3454: gcc -qversion>&5
| gcc: error: unrecognized option '-qversion'
| gcc: fatal error: no input files
| compilation terminated.
| configure:3465: $? = 4
| configure:3485: checking whether the C compiler works
| configure:3507: gcc -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic conftest.c>&5
| configure:3511: $? = 0
| configure:3559: result: yes
| configure:3562: checking for C compiler default output file name
| configure:3564: result: a.out
| configure:3570: checking for suffix of executables
| configure:3577: gcc -o conftest -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic conftest.c>&5
| configure:3581: $? = 0
| configure:3603: result:
| configure:3625: checking whether we are cross compiling
| configure:3633: gcc -o conftest -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic conftest.c>&5
| configure:3637: $? = 0
| configure:3644: ./conftest
| configure:3648: $? = 0
| configure:3663: result: no
| configure:3668: checking for suffix of object files
| configure:3690: gcc -c -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic conftest.c>&5
| configure:3694: $? = 0
| configure:3715: result: o
| configure:3719: checking whether we are using the GNU C compiler
| configure:3738: gcc -c -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic conftest.c>&5
| configure:3738: $? = 0
| configure:3747: result: yes
| configure:3756: checking whether gcc accepts -g
| configure:3776: gcc -c -g conftest.c>&5
| configure:3776: $? = 0
| configure:3817: result: yes
| configure:3834: checking for gcc option to accept ISO C89
| configure:3898: gcc -c -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic conftest.c>&5
| configure:3898: $? = 0
| configure:3911: result: none needed
| configure:3933: checking dependency style of gcc
| configure:4043: result: none
| configure:4058: checking for a sed that does not truncate output
| configure:4122: result: /bin/sed
| configure:4140: checking for grep that handles long lines and -e
| configure:4198: result: /bin/grep
| configure:4203: checking for egrep
| configure:4265: result: /bin/grep -E
| configure:4270: checking for fgrep
| configure:4332: result: /bin/grep -F
| configure:4367: checking for ld used by gcc
| configure:4434: result: /usr/bin/ld
| configure:4441: checking if the linker (/usr/bin/ld) is GNU ld
| configure:4456: result: yes
| configure:4468: checking for BSD- or MS-compatible name lister (nm)
| configure:4517: result: /usr/bin/nm -B
| configure:4647: checking the name lister (/usr/bin/nm -B) interface
| configure:4654: gcc -c -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic conftest.c>&5
| configure:4657: /usr/bin/nm -B "conftest.o"
| configure:4660: output
| 0000000000000000 B some_variable
| configure:4667: result: BSD nm
| configure:4670: checking whether ln -s works
| configure:4674: result: yes
| configure:4682: checking the maximum length of command line arguments
| configure:4807: result: 1572864
| configure:4824: checking whether the shell understands some XSI constructs
| configure:4834: result: yes
| configure:4838: checking whether the shell understands "+="
| configure:4844: result: yes
| configure:4879: checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format
| configure:4919: result: func_convert_file_noop
| configure:4926: checking how to convert x86_64-unknown-linux-gnu file names to toolchain format
| configure:4946: result: func_convert_file_noop
| configure:4953: checking for /usr/bin/ld option to reload object files
| configure:4960: result: -r
| configure:4994: checking for x86_64-unknown-linux-gnu-objdump
| configure:5024: result: no
| configure:5034: checking for objdump
| configure:5050: found /usr/bin/objdump
| configure:5061: result: objdump
| configure:5093: checking how to recognize dependent libraries
| configure:5295: result: pass_all
| configure:5340: checking for x86_64-unknown-linux-gnu-dlltool
| configure:5370: result: no
| configure:5380: checking for dlltool
| configure:5410: result: no
| configure:5440: checking how to associate runtime and link libraries
| configure:5467: result: printf %s\n
| configure:5484: checking for x86_64-unknown-linux-gnu-ar
| configure:5514: result: no
| configure:5528: checking for ar
| configure:5544: found /usr/bin/ar
| configure:5555: result: ar
| configure:5592: checking for archiver @FILE support
| configure:5609: gcc -c -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic conftest.c>&5
| configure:5609: $? = 0
| configure:5612: ar cru libconftest.a @conftest.lst>&5
| configure:5615: $? = 0
| configure:5620: ar cru libconftest.a @conftest.lst>&5
| ar: conftest.o: No such file or directory
| configure:5623: $? = 1
| configure:5635: result: @
| configure:5653: checking for x86_64-unknown-linux-gnu-strip
| configure:5683: result: no
| configure:5693: checking for strip
| configure:5709: found /usr/bin/strip
| configure:5720: result: strip
| configure:5752: checking for x86_64-unknown-linux-gnu-ranlib
| configure:5782: result: no
| configure:5792: checking for ranlib
| configure:5808: found /usr/bin/ranlib
| configure:5819: result: ranlib
| configure:5921: checking command to parse /usr/bin/nm -B output from gcc object
| configure:6040: gcc -c -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic conftest.c>&5
| configure:6043: $? = 0
| configure:6047: /usr/bin/nm -B conftest.o \| sed -n -e 's/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p' | sed '/ __gnu_lto/d' \> conftest.nm
| configure:6050: $? = 0
| configure:6116: gcc -o conftest -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic conftest.c conftstm.o>&5
| configure:6119: $? = 0
| configure:6157: result: ok
| configure:6194: checking for sysroot
| configure:6224: result: no
| configure:6301: gcc -c -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic conftest.c>&5
| configure:6304: $? = 0
| configure:6427: checking for x86_64-unknown-linux-gnu-mt
| configure:6457: result: no
| configure:6467: checking for mt
| configure:6497: result: no
| configure:6517: checking if : is a manifest tool
| configure:6523: : '-?'
| configure:6531: result: no
| configure:7163: checking how to run the C preprocessor
| configure:7194: gcc -E conftest.c
| configure:7194: $? = 0
| configure:7208: gcc -E conftest.c
| conftest.c:11:28: fatal error: ac_nonexistent.h: No such file or directory
| compilation terminated.
| configure:7208: $? = 1
| configure: failed program was:
| | /* confdefs.h */
| | #define PACKAGE_NAME "libreport"
| | #define PACKAGE_TARNAME "libreport"
| | #define PACKAGE_VERSION "2.0.6.51.gcb1c"
| | #define PACKAGE_STRING "libreport 2.0.6.51.gcb1c"
| | #define PACKAGE_BUGREPORT "crash-catcher(a)fedorahosted.org"
| | #define PACKAGE_URL ""
| | #define PACKAGE "libreport"
| | #define VERSION "2.0.6.51.gcb1c"
| | /* end confdefs.h. */
| | #include<ac_nonexistent.h>
| configure:7233: result: gcc -E
| configure:7253: gcc -E conftest.c
| configure:7253: $? = 0
| configure:7267: gcc -E conftest.c
| conftest.c:11:28: fatal error: ac_nonexistent.h: No such file or directory
| compilation terminated.
| configure:7267: $? = 1
| configure: failed program was:
| | /* confdefs.h */
| | #define PACKAGE_NAME "libreport"
| | #define PACKAGE_TARNAME "libreport"
| | #define PACKAGE_VERSION "2.0.6.51.gcb1c"
| | #define PACKAGE_STRING "libreport 2.0.6.51.gcb1c"
| | #define PACKAGE_BUGREPORT "crash-catcher(a)fedorahosted.org"
| | #define PACKAGE_URL ""
| | #define PACKAGE "libreport"
| | #define VERSION "2.0.6.51.gcb1c"
| | /* end confdefs.h. */
| | #include<ac_nonexistent.h>
| configure:7296: checking for ANSI C header files
| configure:7316: gcc -c -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic conftest.c>&5
| configure:7316: $? = 0
| configure:7389: gcc -o conftest -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic conftest.c>&5
| configure:7389: $? = 0
| configure:7389: ./conftest
| configure:7389: $? = 0
| configure:7400: result: yes
| configure:7413: checking for sys/types.h
| configure:7413: gcc -c -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic conftest.c>&5
| configure:7413: $? = 0
| configure:7413: result: yes
| configure:7413: checking for sys/stat.h
| configure:7413: gcc -c -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic conftest.c>&5
| configure:7413: $? = 0
| configure:7413: result: yes
| configure:7413: checking for stdlib.h
| configure:7413: gcc -c -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic conftest.c>&5
| configure:7413: $? = 0
| configure:7413: result: yes
| configure:7413: checking for string.h
| configure:7413: gcc -c -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic conftest.c>&5
| configure:7413: $? = 0
| configure:7413: result: yes
| configure:7413: checking for memory.h
| configure:7413: gcc -c -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic conftest.c>&5
| configure:7413: $? = 0
| configure:7413: result: yes
| configure:7413: checking for strings.h
| configure:7413: gcc -c -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic conftest.c>&5
| configure:7413: $? = 0
| configure:7413: result: yes
| configure:7413: checking for inttypes.h
| configure:7413: gcc -c -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic conftest.c>&5
| configure:7413: $? = 0
| configure:7413: result: yes
| configure:7413: checking for stdint.h
| configure:7413: gcc -c -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic conftest.c>&5
| configure:7413: $? = 0
| configure:7413: result: yes
| configure:7413: checking for unistd.h
| configure:7413: gcc -c -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic conftest.c>&5
| configure:7413: $? = 0
| configure:7413: result: yes
| configure:7427: checking for dlfcn.h
| configure:7427: gcc -c -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic conftest.c>&5
| configure:7427: $? = 0
| configure:7427: result: yes
| configure:7584: checking for objdir
| configure:7599: result: .libs
| configure:7866: checking if gcc supports -fno-rtti -fno-exceptions
| configure:7884: gcc -c -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fno-rtti -fno-exceptions conftest.c>&5
| cc1: warning: command line option '-fno-rtti' is valid for C++/ObjC++ but not for C [enabled by default]
| cc1: warning: command line option '-fno-rtti' is valid for C++/ObjC++ but not for C [enabled by default]
| configure:7888: $? = 0
| configure:7901: result: no
| configure:8211: checking for gcc option to produce PIC
| configure:8218: result: -fPIC -DPIC
| configure:8226: checking if gcc PIC flag -fPIC -DPIC works
| configure:8244: gcc -c -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC -DPIC -DPIC conftest.c>&5
| configure:8248: $? = 0
| configure:8261: result: yes
| configure:8290: checking if gcc static flag -static works
| configure:8318: result: no
| configure:8333: checking if gcc supports -c -o file.o
| configure:8354: gcc -c -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -o out/conftest2.o conftest.c>&5
| configure:8358: $? = 0
| configure:8380: result: yes
| configure:8388: checking if gcc supports -c -o file.o
| configure:8435: result: yes
| configure:8468: checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries
| configure:9626: result: yes
| configure:9663: checking whether -lc should be explicitly linked in
| configure:9671: gcc -c -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic conftest.c>&5
| configure:9674: $? = 0
| configure:9689: gcc -shared -fPIC -DPIC conftest.o -v -Wl,-soname -Wl,conftest -o conftest 2\>\&1 \| /bin/grep -lc \>/dev/null 2\>\&1
| configure:9692: $? = 0
| configure:9706: result: no
| configure:9871: checking dynamic linker characteristics
| configure:10385: gcc -o conftest -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -Wl,-rpath -Wl,/foo conftest.c>&5
| configure:10385: $? = 0
| configure:10611: result: GNU/Linux ld.so
| configure:10718: checking how to hardcode library paths into programs
| configure:10743: result: immediate
| configure:11283: checking whether stripping libraries is possible
| configure:11288: result: yes
| configure:11323: checking if libtool supports shared libraries
| configure:11325: result: yes
| configure:11328: checking whether to build shared libraries
| configure:11349: result: yes
| configure:11352: checking whether to build static libraries
| configure:11356: result: no
| configure:11399: checking for x86_64-unknown-linux-gnu-gcc
| configure:11426: result: gcc
| configure:11695: checking for C compiler version
| configure:11704: gcc --version>&5
| gcc (GCC) 4.6.1 20110908 (Red Hat 4.6.1-9)
| Copyright (C) 2011 Free Software Foundation, Inc.
| This is free software; see the source for copying conditions. There is NO
| warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
| configure:11715: $? = 0
| configure:11704: gcc -v>&5
| Using built-in specs.
| COLLECT_GCC=/usr/bin/gcc
| COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.6.1/lto-wrapper
| Target: x86_64-redhat-linux
| Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-java-awt=gtk --disable-dssi --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-ppl --with-cloog --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
| Thread model: posix
| gcc version 4.6.1 20110908 (Red Hat 4.6.1-9) (GCC)
| configure:11715: $? = 0
| configure:11704: gcc -V>&5
| gcc: error: unrecognized option '-V'
| gcc: fatal error: no input files
| compilation terminated.
| configure:11715: $? = 4
| configure:11704: gcc -qversion>&5
| gcc: error: unrecognized option '-qversion'
| gcc: fatal error: no input files
| compilation terminated.
| configure:11715: $? = 4
| configure:11719: checking whether we are using the GNU C compiler
| configure:11747: result: yes
| configure:11756: checking whether gcc accepts -g
| configure:11817: result: yes
| configure:11834: checking for gcc option to accept ISO C89
| configure:11911: result: none needed
| configure:11933: checking dependency style of gcc
| configure:12043: result: none
| configure:12058: checking whether ln -s works
| configure:12062: result: yes
| configure:12077: checking for special C compiler options needed for large files
| configure:12122: result: no
| configure:12128: checking for _FILE_OFFSET_BITS value needed for large files
| configure:12153: gcc -c -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic conftest.c>&5
| configure:12153: $? = 0
| configure:12185: result: no
| configure:12286: checking whether NLS is requested
| configure:12295: result: yes
| configure:12336: checking for msgfmt
| configure: trying /usr/bin/msgfmt...
| 0 translated messages.
| configure:12368: result: /usr/bin/msgfmt
| configure:12377: checking for gmsgfmt
| configure:12408: result: /usr/bin/msgfmt
| configure:12459: checking for xgettext
| configure: trying /usr/bin/xgettext...
| /usr/bin/xgettext: warning: file `/dev/null' extension `' is unknown; will try C
| configure:12491: result: /usr/bin/xgettext
| configure:12537: checking for msgmerge
| configure: trying /usr/bin/msgmerge...
| configure:12568: result: /usr/bin/msgmerge
| configure:12625: checking for ld used by GCC
| configure:12689: result: /usr/bin/ld -m elf_x86_64
| configure:12696: checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld
| configure:12709: result: yes
| configure:12716: checking for shared library run path origin
| configure:12729: result: done
| configure:13301: checking for CFPreferencesCopyAppValue
| configure:13319: gcc -o conftest -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -fno-strict-aliasing -std=gnu99 -Wall conftest.c -Wl,-framework -Wl,CoreFoundation>&5
| conftest.c:24:42: fatal error: CoreFoundation/CFPreferences.h: No such file or directory
| compilation terminated.
| configure:13319: $? = 1
| configure: failed program was:
| | /* confdefs.h */
| | #define PACKAGE_NAME "libreport"
| | #define PACKAGE_TARNAME "libreport"
| | #define PACKAGE_VERSION "2.0.6.51.gcb1c"
| | #define PACKAGE_STRING "libreport 2.0.6.51.gcb1c"
| | #define PACKAGE_BUGREPORT "crash-catcher(a)fedorahosted.org"
| | #define PACKAGE_URL ""
| | #define PACKAGE "libreport"
| | #define VERSION "2.0.6.51.gcb1c"
| | #define STDC_HEADERS 1
| | #define HAVE_SYS_TYPES_H 1
| | #define HAVE_SYS_STAT_H 1
| | #define HAVE_STDLIB_H 1
| | #define HAVE_STRING_H 1
| | #define HAVE_MEMORY_H 1
| | #define HAVE_STRINGS_H 1
| | #define HAVE_INTTYPES_H 1
| | #define HAVE_STDINT_H 1
| | #define HAVE_UNISTD_H 1
| | #define HAVE_DLFCN_H 1
| | #define LT_OBJDIR ".libs/"
| | #define GETTEXT_PACKAGE "libreport"
| | /* end confdefs.h. */
| | #include<CoreFoundation/CFPreferences.h>
| | int
| | main ()
| | {
| | CFPreferencesCopyAppValue(NULL, NULL)
| | ;
| | return 0;
| | }
| configure:13328: result: no
| configure:13335: checking for CFLocaleCopyCurrent
| configure:13353: gcc -o conftest -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -fno-strict-aliasing -std=gnu99 -Wall conftest.c -Wl,-framework -Wl,CoreFoundation>&5
| conftest.c:24:37: fatal error: CoreFoundation/CFLocale.h: No such file or directory
| compilation terminated.
| configure:13353: $? = 1
| configure: failed program was:
| | /* confdefs.h */
| | #define PACKAGE_NAME "libreport"
| | #define PACKAGE_TARNAME "libreport"
| | #define PACKAGE_VERSION "2.0.6.51.gcb1c"
| | #define PACKAGE_STRING "libreport 2.0.6.51.gcb1c"
| | #define PACKAGE_BUGREPORT "crash-catcher(a)fedorahosted.org"
| | #define PACKAGE_URL ""
| | #define PACKAGE "libreport"
| | #define VERSION "2.0.6.51.gcb1c"
| | #define STDC_HEADERS 1
| | #define HAVE_SYS_TYPES_H 1
| | #define HAVE_SYS_STAT_H 1
| | #define HAVE_STDLIB_H 1
| | #define HAVE_STRING_H 1
| | #define HAVE_MEMORY_H 1
| | #define HAVE_STRINGS_H 1
| | #define HAVE_INTTYPES_H 1
| | #define HAVE_STDINT_H 1
| | #define HAVE_UNISTD_H 1
| | #define HAVE_DLFCN_H 1
| | #define LT_OBJDIR ".libs/"
| | #define GETTEXT_PACKAGE "libreport"
| | /* end confdefs.h. */
| | #include<CoreFoundation/CFLocale.h>
| | int
| | main ()
| | {
| | CFLocaleCopyCurrent();
| | ;
| | return 0;
| | }
| configure:13362: result: no
| configure:13411: checking for GNU gettext in libc
| configure:13431: gcc -o conftest -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -fno-strict-aliasing -std=gnu99 -Wall conftest.c>&5
| configure:13431: $? = 0
| configure:13440: result: yes
| configure:14231: checking whether to use NLS
| configure:14233: result: yes
| configure:14236: checking where the gettext function comes from
| configure:14247: result: libc
| configure:14317: checking for intltool>= 0.35.0
| configure:14324: result: 0.41.1 found
| configure:14332: checking for intltool-update
| configure:14350: found /usr/bin/intltool-update
| configure:14362: result: /usr/bin/intltool-update
| configure:14372: checking for intltool-merge
| configure:14390: found /usr/bin/intltool-merge
| configure:14402: result: /usr/bin/intltool-merge
| configure:14412: checking for intltool-extract
| configure:14430: found /usr/bin/intltool-extract
| configure:14442: result: /usr/bin/intltool-extract
| configure:14573: checking for xgettext
| configure:14603: result: /usr/bin/xgettext
| configure:14613: checking for msgmerge
| configure:14643: result: /usr/bin/msgmerge
| configure:14653: checking for msgfmt
| configure:14683: result: /usr/bin/msgfmt
| configure:14693: checking for gmsgfmt
| configure:14724: result: /usr/bin/msgfmt
| configure:14744: checking for perl
| configure:14762: found /usr/bin/perl
| configure:14774: result: /usr/bin/perl
| configure:14785: checking for perl>= 5.8.1
| configure:14792: result: 5.12.4
| configure:14796: checking for XML::Parser
| configure:14799: result: ok
| configure:14824: gcc -o conftest -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -fno-strict-aliasing -std=gnu99 -Wall conftest.c>&5
| configure:14824: $? = 0
| configure:14862: checking for python
| configure:14880: found /usr/bin/python
| configure:14892: result: /usr/bin/python
| configure:14913: checking for python version
| configure:14920: result: 2.7
| configure:14932: checking for python platform
| configure:14939: result: linux2
| configure:14946: checking for python script directory
| configure:14975: result: ${prefix}/lib/python2.7/site-packages
| configure:14984: checking for python extension module directory
| configure:15013: result: ${exec_prefix}/lib64/python2.7/site-packages
| configure:15033: checking for asciidoc
| configure:15051: found /usr/bin/asciidoc
| configure:15064: result: /usr/bin/asciidoc
| configure:15082: checking for xmlto
| configure:15100: found /usr/bin/xmlto
| configure:15113: result: /usr/bin/xmlto
| configure:15139: checking for x86_64-unknown-linux-gnu-pkg-config
| configure:15172: result: no
| configure:15182: checking for pkg-config
| configure:15200: found /usr/bin/pkg-config
| configure:15212: result: /usr/bin/pkg-config
| configure:15237: checking pkg-config is at least version 0.9.0
| configure:15240: result: yes
| configure:15250: checking for GTK
| configure:15257: $PKG_CONFIG --exists --print-errors "gtk+-2.0"
| configure:15260: $? = 0
| configure:15273: $PKG_CONFIG --exists --print-errors "gtk+-2.0"
| configure:15276: $? = 0
| configure:15335: result: yes
| configure:15341: checking for GLIB
| configure:15348: $PKG_CONFIG --exists --print-errors "glib-2.0>= 2.21"
| configure:15351: $? = 0
| configure:15364: $PKG_CONFIG --exists --print-errors "glib-2.0>= 2.21"
| configure:15367: $? = 0
| configure:15426: result: yes
| configure:15432: checking for DBUS
| configure:15439: $PKG_CONFIG --exists --print-errors "dbus-1"
| configure:15442: $? = 0
| configure:15455: $PKG_CONFIG --exists --print-errors "dbus-1"
| configure:15458: $? = 0
| configure:15517: result: yes
| configure:15523: checking for LIBXML
| configure:15530: $PKG_CONFIG --exists --print-errors "libxml-2.0"
| configure:15533: $? = 0
| configure:15546: $PKG_CONFIG --exists --print-errors "libxml-2.0"
| configure:15549: $? = 0
| configure:15608: result: yes
| configure:15614: checking for NSS
| configure:15621: $PKG_CONFIG --exists --print-errors "nss"
| configure:15624: $? = 0
| configure:15637: $PKG_CONFIG --exists --print-errors "nss"
| configure:15640: $? = 0
| configure:15699: result: yes
| configure:15705: checking for XMLRPC
| configure:15712: $PKG_CONFIG --exists --print-errors "xmlrpc"
| configure:15715: $? = 0
| configure:15728: $PKG_CONFIG --exists --print-errors "xmlrpc"
| configure:15731: $? = 0
| configure:15790: result: yes
| configure:15796: checking for XMLRPC_CLIENT
| configure:15803: $PKG_CONFIG --exists --print-errors "xmlrpc_client"
| configure:15806: $? = 0
| configure:15819: $PKG_CONFIG --exists --print-errors "xmlrpc_client"
| configure:15822: $? = 0
| configure:15881: result: yes
| configure:15887: checking for CURL
| configure:15894: $PKG_CONFIG --exists --print-errors "libcurl"
| configure:15897: $? = 0
| configure:15910: $PKG_CONFIG --exists --print-errors "libcurl"
| configure:15913: $? = 0
| configure:15972: result: yes
| configure:15978: checking for GNOME_KEYRING
| configure:15985: $PKG_CONFIG --exists --print-errors "gnome-keyring-1"
| configure:15988: $? = 0
| configure:16001: $PKG_CONFIG --exists --print-errors "gnome-keyring-1"
| configure:16004: $? = 0
| configure:16063: result: yes
| configure:16071: checking for PYTHON
| configure:16078: $PKG_CONFIG --exists --print-errors "python"
| configure:16081: $? = 0
| configure:16094: $PKG_CONFIG --exists --print-errors "python"
| configure:16097: $? = 0
| configure:16140: result: yes
| configure:16146: checking for NEWT
| configure:16153: $PKG_CONFIG --exists --print-errors "libnewt"
| configure:16156: $? = 0
| configure:16169: $PKG_CONFIG --exists --print-errors "libnewt"
| configure:16172: $? = 0
| configure:16231: result: yes
| configure:16246: checking for x86_64-unknown-linux-gnu-pkg-config
| configure:16276: result: /usr/bin/pkg-config
| configure:16344: checking pkg-config is at least version 0.9.0
| configure:16347: result: yes
| configure:16356: checking libtar.h usability
| configure:16356: gcc -c -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -fno-strict-aliasing -std=gnu99 -Wall conftest.c>&5
| configure:16356: $? = 0
| configure:16356: result: yes
| configure:16356: checking libtar.h presence
| configure:16356: gcc -E conftest.c
| configure:16356: $? = 0
| configure:16356: result: yes
| configure:16356: checking for libtar.h
| configure:16356: result: yes
| configure:16555: creating ./config.status
|
| ## ---------------------- ##
| ## Running config.status. ##
| ## ---------------------- ##
|
| This file was extended by libreport config.status 2.0.6.51.gcb1c, which was
| generated by GNU Autoconf 2.68. Invocation command line was
|
| CONFIG_FILES =
| CONFIG_HEADERS =
| CONFIG_LINKS =
| CONFIG_COMMANDS =
| $ ./config.status
|
| on<censored>
|
| config.status:1230: creating tests/Makefile
| config.status:1230: creating tests/atlocal
| config.status:1230: creating Makefile
| config.status:1230: creating libreport.pc
| config.status:1230: creating src/include/Makefile
| config.status:1230: creating src/lib/Makefile
| config.status:1230: creating src/report-python/Makefile
| config.status:1230: creating src/Makefile
| config.status:1230: creating src/gtk-helpers/Makefile
| config.status:1230: creating src/gtk-helpers/libreport-gtk.pc
| config.status:1230: creating src/gui-wizard-gtk/Makefile
| config.status:1230: creating src/cli/Makefile
| config.status:1230: creating src/report-newt/Makefile
| config.status:1230: creating src/plugins/Makefile
| config.status:1230: creating src/client-python/Makefile
| config.status:1230: creating po/Makefile.in
| config.status:1230: creating config.h
| config.status:1459: executing depfiles commands
| config.status:1459: executing libtool commands
| config.status:1459: executing po-directories commands
| config.status:1459: executing tests/atconfig commands
| config.status:1459: executing po/stamp-it commands
|
| ## ---------------- ##
| ## Cache variables. ##
| ## ---------------- ##
|
| ac_cv_build=x86_64-unknown-linux-gnu
| ac_cv_c_compiler_gnu=yes
| ac_cv_env_CC_set=
| ac_cv_env_CC_value=
| ac_cv_env_CFLAGS_set=set
| ac_cv_env_CFLAGS_value='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic'
| ac_cv_env_CPPFLAGS_set=
| ac_cv_env_CPPFLAGS_value=
| ac_cv_env_CPP_set=
| ac_cv_env_CPP_value=
| ac_cv_env_CURL_CFLAGS_set=
| ac_cv_env_CURL_CFLAGS_value=
| ac_cv_env_CURL_LIBS_set=
| ac_cv_env_CURL_LIBS_value=
| ac_cv_env_DBUS_CFLAGS_set=
| ac_cv_env_DBUS_CFLAGS_value=
| ac_cv_env_DBUS_LIBS_set=
| ac_cv_env_DBUS_LIBS_value=
| ac_cv_env_GLIB_CFLAGS_set=
| ac_cv_env_GLIB_CFLAGS_value=
| ac_cv_env_GLIB_LIBS_set=
| ac_cv_env_GLIB_LIBS_value=
| ac_cv_env_GNOME_KEYRING_CFLAGS_set=
| ac_cv_env_GNOME_KEYRING_CFLAGS_value=
| ac_cv_env_GNOME_KEYRING_LIBS_set=
| ac_cv_env_GNOME_KEYRING_LIBS_value=
| ac_cv_env_GTK_CFLAGS_set=
| ac_cv_env_GTK_CFLAGS_value=
| ac_cv_env_GTK_LIBS_set=
| ac_cv_env_GTK_LIBS_value=
| ac_cv_env_LDFLAGS_set=
| ac_cv_env_LDFLAGS_value=
| ac_cv_env_LIBS_set=
| ac_cv_env_LIBS_value=
| ac_cv_env_LIBXML_CFLAGS_set=
| ac_cv_env_LIBXML_CFLAGS_value=
| ac_cv_env_LIBXML_LIBS_set=
| ac_cv_env_LIBXML_LIBS_value=
| ac_cv_env_NEWT_CFLAGS_set=
| ac_cv_env_NEWT_CFLAGS_value=
| ac_cv_env_NEWT_LIBS_set=
| ac_cv_env_NEWT_LIBS_value=
| ac_cv_env_NSS_CFLAGS_set=
| ac_cv_env_NSS_CFLAGS_value=
| ac_cv_env_NSS_LIBS_set=
| ac_cv_env_NSS_LIBS_value=
| ac_cv_env_PKG_CONFIG_LIBDIR_set=
| ac_cv_env_PKG_CONFIG_LIBDIR_value=
| ac_cv_env_PKG_CONFIG_PATH_set=
| ac_cv_env_PKG_CONFIG_PATH_value=
| ac_cv_env_PKG_CONFIG_set=
| ac_cv_env_PKG_CONFIG_value=
| ac_cv_env_PYTHON_CFLAGS_set=
| ac_cv_env_PYTHON_CFLAGS_value=
| ac_cv_env_PYTHON_LIBS_set=
| ac_cv_env_PYTHON_LIBS_value=
| ac_cv_env_XMLRPC_CFLAGS_set=
| ac_cv_env_XMLRPC_CFLAGS_value=
| ac_cv_env_XMLRPC_CLIENT_CFLAGS_set=
| ac_cv_env_XMLRPC_CLIENT_CFLAGS_value=
| ac_cv_env_XMLRPC_CLIENT_LIBS_set=
| ac_cv_env_XMLRPC_CLIENT_LIBS_value=
| ac_cv_env_XMLRPC_LIBS_set=
| ac_cv_env_XMLRPC_LIBS_value=
| ac_cv_env_build_alias_set=set
| ac_cv_env_build_alias_value=x86_64-unknown-linux-gnu
| ac_cv_env_host_alias_set=set
| ac_cv_env_host_alias_value=x86_64-unknown-linux-gnu
| ac_cv_env_target_alias_set=
| ac_cv_env_target_alias_value=
| ac_cv_header_dlfcn_h=yes
| ac_cv_header_inttypes_h=yes
| ac_cv_header_libtar_h=yes
| ac_cv_header_memory_h=yes
| ac_cv_header_stdc=yes
| ac_cv_header_stdint_h=yes
| ac_cv_header_stdlib_h=yes
| ac_cv_header_string_h=yes
| ac_cv_header_strings_h=yes
| ac_cv_header_sys_stat_h=yes
| ac_cv_header_sys_types_h=yes
| ac_cv_header_unistd_h=yes
| ac_cv_host=x86_64-unknown-linux-gnu
| ac_cv_objext=o
| ac_cv_path_ASCIIDOC=/usr/bin/asciidoc
| ac_cv_path_EGREP='/bin/grep -E'
| ac_cv_path_FGREP='/bin/grep -F'
| ac_cv_path_GMSGFMT=/usr/bin/msgfmt
| ac_cv_path_GREP=/bin/grep
| ac_cv_path_INTLTOOL_EXTRACT=/usr/bin/intltool-extract
| ac_cv_path_INTLTOOL_MERGE=/usr/bin/intltool-merge
| ac_cv_path_INTLTOOL_PERL=/usr/bin/perl
| ac_cv_path_INTLTOOL_UPDATE=/usr/bin/intltool-update
| ac_cv_path_MSGFMT=/usr/bin/msgfmt
| ac_cv_path_MSGMERGE=/usr/bin/msgmerge
| ac_cv_path_PKG_CONFIG=/usr/bin/pkg-config
| ac_cv_path_PYTHON=/usr/bin/python
| ac_cv_path_SED=/bin/sed
| ac_cv_path_XGETTEXT=/usr/bin/xgettext
| ac_cv_path_XMLTO=/usr/bin/xmlto
| ac_cv_path_ac_pt_PKG_CONFIG=/usr/bin/pkg-config
| ac_cv_path_install='/usr/bin/install -c'
| ac_cv_path_mkdir=/bin/mkdir
| ac_cv_prog_AWK=gawk
| ac_cv_prog_CC=gcc
| ac_cv_prog_CPP='gcc -E'
| ac_cv_prog_ac_ct_AR=ar
| ac_cv_prog_ac_ct_CC=gcc
| ac_cv_prog_ac_ct_OBJDUMP=objdump
| ac_cv_prog_ac_ct_RANLIB=ranlib
| ac_cv_prog_ac_ct_STRIP=strip
| ac_cv_prog_cc_c89=
| ac_cv_prog_cc_g=yes
| ac_cv_prog_make_make_set=yes
| ac_cv_sys_file_offset_bits=no
| ac_cv_sys_largefile_CC=no
| acl_cv_hardcode_direct=no
| acl_cv_hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
| acl_cv_hardcode_libdir_separator=
| acl_cv_hardcode_minus_L=no
| acl_cv_libext=a
| acl_cv_libname_spec='lib$name'
| acl_cv_library_names_spec='$libname$shrext'
| acl_cv_path_LD='/usr/bin/ld -m elf_x86_64'
| acl_cv_prog_gnu_ld=yes
| acl_cv_rpath=done
| acl_cv_shlibext=so
| acl_cv_wl=-Wl,
| am_cv_CC_dependencies_compiler_type=none
| am_cv_python_platform=linux2
| am_cv_python_pyexecdir='${exec_prefix}/lib64/python2.7/site-packages'
| am_cv_python_pythondir='${prefix}/lib/python2.7/site-packages'
| am_cv_python_version=2.7
| gt_cv_func_CFLocaleCopyCurrent=no
| gt_cv_func_CFPreferencesCopyAppValue=no
| gt_cv_func_gnugettext1_libc=yes
| lt_cv_ar_at_file=@
| lt_cv_archive_cmds_need_lc=no
| lt_cv_deplibs_check_method=pass_all
| lt_cv_file_magic_cmd='$MAGIC_CMD'
| lt_cv_file_magic_test_file=
| lt_cv_ld_reload_flag=-r
| lt_cv_nm_interface='BSD nm'
| lt_cv_objdir=.libs
| lt_cv_path_LD=/usr/bin/ld
| lt_cv_path_NM='/usr/bin/nm -B'
| lt_cv_path_mainfest_tool=no
| lt_cv_prog_compiler_c_o=yes
| lt_cv_prog_compiler_pic='-fPIC -DPIC'
| lt_cv_prog_compiler_pic_works=yes
| lt_cv_prog_compiler_rtti_exceptions=no
| lt_cv_prog_compiler_static_works=no
| lt_cv_prog_gnu_ld=yes
| lt_cv_sharedlib_from_linklib_cmd='printf %s\n'
| lt_cv_shlibpath_overrides_runpath=no
| lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p'\'' | sed '\''/ __gnu_lto/d'\'''
| lt_cv_sys_global_symbol_to_c_name_address='sed -n -e '\''s/^: \([^ ]*\)[ ]*$/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"\2", (void *) \&\2},/p'\'''
| lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='sed -n -e '\''s/^: \([^ ]*\)[ ]*$/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \(lib[^ ]*\)$/ {"\2", (void *) \&\2},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"lib\2", (void *) \&\2},/p'\'''
| lt_cv_sys_global_symbol_to_cdecl='sed -n -e '\''s/^T .* \(.*\)$/extern int \1();/p'\'' -e '\''s/^[ABCDGIRSTW]* .* \(.*\)$/extern char \1;/p'\'''
| lt_cv_sys_max_cmd_len=1572864
| lt_cv_to_host_file_cmd=func_convert_file_noop
| lt_cv_to_tool_file_cmd=func_convert_file_noop
| pkg_cv_CURL_CFLAGS=' '
| pkg_cv_CURL_LIBS='-lcurl '
| pkg_cv_DBUS_CFLAGS='-I/usr/include/dbus-1.0 -I/usr/lib64/dbus-1.0/include '
| pkg_cv_DBUS_LIBS='-L/lib64 -ldbus-1 -lpthread -lrt '
| pkg_cv_GLIB_CFLAGS='-I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include '
| pkg_cv_GLIB_LIBS='-lglib-2.0 '
| pkg_cv_GNOME_KEYRING_CFLAGS='-I/usr/include/gnome-keyring-1 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include '
| pkg_cv_GNOME_KEYRING_LIBS='-lgnome-keyring -lglib-2.0 '
| pkg_cv_GTK_CFLAGS='-pthread -I/usr/include/gtk-2.0 -I/usr/lib64/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 '
| pkg_cv_GTK_LIBS='-pthread -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lpng12 -lm -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0 '
| pkg_cv_LIBXML_CFLAGS='-I/usr/include/libxml2 '
| pkg_cv_LIBXML_LIBS='-lxml2 '
| pkg_cv_NEWT_CFLAGS=' '
| pkg_cv_NEWT_LIBS='-lnewt '
| pkg_cv_NSS_CFLAGS='-I/usr/include/nss3 -I/usr/include/nspr4 '
| pkg_cv_NSS_LIBS='-lssl3 -lsmime3 -lnss3 -lnssutil3 -lplds4 -lplc4 -lnspr4 -lpthread -ldl '
| pkg_cv_PYTHON_CFLAGS='-I/usr/include/python2.7 '
| pkg_cv_PYTHON_LIBS='-lpython2.7 '
| pkg_cv_XMLRPC_CFLAGS='-I/usr/include/libxml2 '
| pkg_cv_XMLRPC_CLIENT_CFLAGS='-I/usr/include/libxml2 '
| pkg_cv_XMLRPC_CLIENT_LIBS='-lxmlrpc_client '
| pkg_cv_XMLRPC_LIBS='-lxmlrpc '
|
| ## ----------------- ##
| ## Output variables. ##
| ## ----------------- ##
|
| ACLOCAL='${SHELL} /tmp/tmp.6ZZ6xaqYrE/libreport/missing --run aclocal-1.11'
| ALL_LINGUAS=''
| AMDEPBACKSLASH=''
| AMDEP_FALSE=''
| AMDEP_TRUE='#'
| AMTAR='${SHELL} /tmp/tmp.6ZZ6xaqYrE/libreport/missing --run tar'
| AM_BACKSLASH='\'
| AM_DEFAULT_VERBOSITY='1'
| AR='ar'
| ASCIIDOC='/usr/bin/asciidoc'
| AUTOCONF='${SHELL} /tmp/tmp.6ZZ6xaqYrE/libreport/missing --run autoconf'
| AUTOHEADER='${SHELL} /tmp/tmp.6ZZ6xaqYrE/libreport/missing --run autoheader'
| AUTOM4TE='${SHELL} /tmp/tmp.6ZZ6xaqYrE/libreport/missing --run autom4te'
| AUTOMAKE='${SHELL} /tmp/tmp.6ZZ6xaqYrE/libreport/missing --run automake-1.11'
| AWK='gawk'
| CC='gcc'
| CCDEPMODE='depmode=none'
| CFLAGS='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -fno-strict-aliasing -std=gnu99 -Wall'
| CONF_DIR='${sysconfdir}/${PACKAGE_NAME}'
| CPP='gcc -E'
| CPPFLAGS=''
| CURL_CFLAGS=' '
| CURL_LIBS='-lcurl '
| CYGPATH_W='echo'
| DATADIRNAME='share'
| DBUS_CFLAGS='-I/usr/include/dbus-1.0 -I/usr/lib64/dbus-1.0/include '
| DBUS_LIBS='-L/lib64 -ldbus-1 -lpthread -lrt '
| DEBUG_DUMPS_DIR='${localstatedir}/spool/abrt'
| DEFS='-DHAVE_CONFIG_H'
| DEPDIR='.deps'
| DLLTOOL='false'
| DSYMUTIL=''
| DUMPBIN=''
| ECHO_C=''
| ECHO_N='-n'
| ECHO_T=''
| EGREP='/bin/grep -E'
| EVENTS_CONF_DIR='${sysconfdir}/${PACKAGE_NAME}/events.d'
| EVENTS_DIR='${sysconfdir}/${PACKAGE_NAME}/events'
| EXEEXT=''
| FGREP='/bin/grep -F'
| GETTEXT_MACRO_VERSION='0.18'
| GETTEXT_PACKAGE='libreport'
| GLIB_CFLAGS='-I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include '
| GLIB_LIBS='-lglib-2.0 '
| GMSGFMT='/usr/bin/msgfmt'
| GMSGFMT_015='/usr/bin/msgfmt'
| GNOME_KEYRING_CFLAGS='-I/usr/include/gnome-keyring-1 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include '
| GNOME_KEYRING_LIBS='-lgnome-keyring -lglib-2.0 '
| GREP='/bin/grep'
| GTK_CFLAGS='-pthread -I/usr/include/gtk-2.0 -I/usr/lib64/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 '
| GTK_LIBS='-pthread -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lpng12 -lm -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0 '
| INSTALL_DATA='${INSTALL} -m 644'
| INSTALL_PROGRAM='${INSTALL}'
| INSTALL_SCRIPT='${INSTALL}'
| INSTALL_STRIP_PROGRAM='$(install_sh) -c -s'
| INTLLIBS=''
| INTLTOOL_CAVES_RULE='%.caves: %.caves.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
| INTLTOOL_DESKTOP_RULE='%.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
| INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
| INTLTOOL_EXTRACT='/usr/bin/intltool-extract'
| INTLTOOL_KBD_RULE='%.kbd: %.kbd.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
| INTLTOOL_KEYS_RULE='%.keys: %.keys.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
| INTLTOOL_MERGE='/usr/bin/intltool-merge'
| INTLTOOL_OAF_RULE='%.oaf: %.oaf.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -p $(top_srcdir)/po $< $@'
| INTLTOOL_PERL='/usr/bin/perl'
| INTLTOOL_POLICY_RULE='%.policy: %.policy.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
| INTLTOOL_PONG_RULE='%.pong: %.pong.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
| INTLTOOL_PROP_RULE='%.prop: %.prop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
| INTLTOOL_SCHEMAS_RULE='%.schemas: %.schemas.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
| INTLTOOL_SERVER_RULE='%.server: %.server.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
| INTLTOOL_SERVICE_RULE='%.service: %.service.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
| INTLTOOL_SHEET_RULE='%.sheet: %.sheet.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
| INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
| INTLTOOL_THEME_RULE='%.theme: %.theme.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
| INTLTOOL_UI_RULE='%.ui: %.ui.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
| INTLTOOL_UPDATE='/usr/bin/intltool-update'
| INTLTOOL_XAM_RULE='%.xam: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
| INTLTOOL_XML_NOMERGE_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u /tmp $< $@'
| INTLTOOL_XML_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
| INTL_MACOSX_LIBS=''
| LD='/usr/bin/ld -m elf_x86_64'
| LDFLAGS=''
| LIBEXEC_DIR='${libexecdir}'
| LIBICONV='-liconv'
| LIBINTL=''
| LIBOBJS=''
| LIBS=''
| LIBTOOL='$(SHELL) $(top_builddir)/libtool'
| LIBXML_CFLAGS='-I/usr/include/libxml2 '
| LIBXML_LIBS='-lxml2 '
| LIPO=''
| LN_S='ln -s'
| LTLIBICONV='-liconv'
| LTLIBINTL=''
| LTLIBOBJS=''
| MAKEINFO='${SHELL} /tmp/tmp.6ZZ6xaqYrE/libreport/missing --run makeinfo'
| MANIFEST_TOOL=':'
| MKDIR_P='/bin/mkdir -p'
| MSGFMT='/usr/bin/msgfmt'
| MSGFMT_015='/usr/bin/msgfmt'
| MSGMERGE='/usr/bin/msgmerge'
| NEWT_CFLAGS=' '
| NEWT_LIBS='-lnewt '
| NM='/usr/bin/nm -B'
| NMEDIT=''
| NSS_CFLAGS='-I/usr/include/nss3 -I/usr/include/nspr4 '
| NSS_LIBS='-lssl3 -lsmime3 -lnss3 -lnssutil3 -lplds4 -lplc4 -lnspr4 -lpthread -ldl '
| O0CFLAGS='-g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -fno-strict-aliasing -std=gnu99 -Wall'
| OBJDUMP='objdump'
| OBJEXT='o'
| OTOOL64=''
| OTOOL=''
| PACKAGE='libreport'
| PACKAGE_BUGREPORT='crash-catcher(a)fedorahosted.org'
| PACKAGE_NAME='libreport'
| PACKAGE_STRING='libreport 2.0.6.51.gcb1c'
| PACKAGE_TARNAME='libreport'
| PACKAGE_URL=''
| PACKAGE_VERSION='2.0.6.51.gcb1c'
| PATH_SEPARATOR=':'
| PKG_CONFIG='/usr/bin/pkg-config'
| PKG_CONFIG_LIBDIR=''
| PKG_CONFIG_PATH=''
| PLUGINS_CONF_DIR='${sysconfdir}/${PACKAGE_NAME}/plugins'
| PLUGINS_LIB_DIR='${libdir}/${PACKAGE_NAME}'
| POSUB='po'
| PYTHON='/usr/bin/python'
| PYTHON_CFLAGS='-I/usr/include/python2.7 '
| PYTHON_EXEC_PREFIX='${exec_prefix}'
| PYTHON_LIBS='-lpython2.7 '
| PYTHON_PLATFORM='linux2'
| PYTHON_PREFIX='${prefix}'
| PYTHON_VERSION='2.7'
| RANLIB='ranlib'
| REPORT_PLUGINS_CONF_DIR='${sysconfdir}/libreport/plugins'
| SED='/bin/sed'
| SET_MAKE=''
| SHELL='/bin/sh'
| STRIP='strip'
| USE_NLS='yes'
| VAR_RUN='${localstatedir}/run'
| VERSION='2.0.6.51.gcb1c'
| XGETTEXT='/usr/bin/xgettext'
| XGETTEXT_015='/usr/bin/xgettext'
| XGETTEXT_EXTRA_OPTIONS=''
| XMLRPC_CFLAGS='-I/usr/include/libxml2 '
| XMLRPC_CLIENT_CFLAGS='-I/usr/include/libxml2 '
| XMLRPC_CLIENT_LIBS='-lxmlrpc_client '
| XMLRPC_LIBS='-lxmlrpc '
| XMLTO='/usr/bin/xmlto'
| ac_ct_AR='ar'
| ac_ct_CC='gcc'
| ac_ct_DUMPBIN=''
| am__EXEEXT_FALSE=''
| am__EXEEXT_TRUE='#'
| am__fastdepCC_FALSE=''
| am__fastdepCC_TRUE='#'
| am__include='include'
| am__isrc=''
| am__leading_dot='.'
| am__quote=''
| am__tar='${AMTAR} chof - "$$tardir"'
| am__untar='${AMTAR} xf -'
| bindir='/usr/bin'
| build='x86_64-unknown-linux-gnu'
| build_alias='x86_64-unknown-linux-gnu'
| build_cpu='x86_64'
| build_os='linux-gnu'
| build_vendor='unknown'
| datadir='/usr/share'
| datarootdir='${prefix}/share'
| docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
| dvidir='${docdir}'
| exec_prefix='/usr'
| host='x86_64-unknown-linux-gnu'
| host_alias='x86_64-unknown-linux-gnu'
| host_cpu='x86_64'
| host_os='linux-gnu'
| host_vendor='unknown'
| htmldir='${docdir}'
| includedir='/usr/include'
| infodir='/usr/share/info'
| install_sh='${SHELL} /tmp/tmp.6ZZ6xaqYrE/libreport/install-sh'
| libdir='/usr/lib64'
| libexecdir='/usr/libexec'
| localedir='${datarootdir}/locale'
| localstatedir='/var'
| mandir='/usr/share/man'
| mkdir_p='/bin/mkdir -p'
| oldincludedir='/usr/include'
| pdfdir='${docdir}'
| pkgpyexecdir='${pyexecdir}/libreport'
| pkgpythondir='${pythondir}/libreport'
| prefix='/usr'
| program_transform_name='s&^&&'
| psdir='${docdir}'
| pyexecdir='${exec_prefix}/lib64/python2.7/site-packages'
| pythondir='${prefix}/lib/python2.7/site-packages'
| sbindir='/usr/sbin'
| sharedstatedir='/var/lib'
| sysconfdir='/etc'
| target_alias=''
|
| ## ----------- ##
| ## confdefs.h. ##
| ## ----------- ##
|
| /* confdefs.h */
| #define PACKAGE_NAME "libreport"
| #define PACKAGE_TARNAME "libreport"
| #define PACKAGE_VERSION "2.0.6.51.gcb1c"
| #define PACKAGE_STRING "libreport 2.0.6.51.gcb1c"
| #define PACKAGE_BUGREPORT "crash-catcher(a)fedorahosted.org"
| #define PACKAGE_URL ""
| #define PACKAGE "libreport"
| #define VERSION "2.0.6.51.gcb1c"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define GETTEXT_PACKAGE "libreport"
| #define ENABLE_NLS 1
| #define HAVE_GETTEXT 1
| #define HAVE_DCGETTEXT 1
|
| configure: exit 0
12 years, 6 months