summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiri Moskovcak <jmoskovc@redhat.com>2009-11-02 15:37:30 +0100
committerJiri Moskovcak <jmoskovc@redhat.com>2009-11-02 15:37:30 +0100
commit90d6a5be050eac9d0f6dc7a7216e412227312bc5 (patch)
treeef1b16a843915004549c0c895717a84c5bf19c38
parente1be4826551cc7aa396d0e4b28770fb8eb12946b (diff)
parent1eec1e1b5c5f5c7a032b32165139274b170ec06f (diff)
downloadabrt-90d6a5be050eac9d0f6dc7a7216e412227312bc5.tar.gz
abrt-90d6a5be050eac9d0f6dc7a7216e412227312bc5.tar.xz
abrt-90d6a5be050eac9d0f6dc7a7216e412227312bc5.zip
Merge branch 'master' of ssh://git.fedorahosted.org/git/abrt
-rw-r--r--lib/Utils/DBusCommon.h6
-rwxr-xr-xscripts/dbg_mkrpm27
-rwxr-xr-xscripts/dbg_rpmbuildlocal11
-rwxr-xr-xscripts/dbg_rpminst23
-rwxr-xr-xscripts/dbg_unpkrpm8
-rw-r--r--src/Applet/Applet.cpp2
-rw-r--r--src/CLI/dbus.cpp8
-rw-r--r--src/Daemon/CommLayerServerDBus.cpp6
-rw-r--r--src/Daemon/Daemon.cpp15
-rw-r--r--src/Daemon/com.redhat.abrt.service8
10 files changed, 95 insertions, 19 deletions
diff --git a/lib/Utils/DBusCommon.h b/lib/Utils/DBusCommon.h
index b3e3af2c..2e3ed8a5 100644
--- a/lib/Utils/DBusCommon.h
+++ b/lib/Utils/DBusCommon.h
@@ -22,8 +22,8 @@
#include "CrashTypes.h"
-#define CC_DBUS_NAME "com.redhat.abrt"
-#define CC_DBUS_PATH "/com/redhat/abrt"
-#define CC_DBUS_IFACE "com.redhat.abrt"
+#define ABRTD_DBUS_NAME "com.redhat.abrt"
+#define ABRTD_DBUS_PATH "/com/redhat/abrt"
+#define ABRTD_DBUS_IFACE "com.redhat.abrt"
#endif
diff --git a/scripts/dbg_mkrpm b/scripts/dbg_mkrpm
new file mode 100755
index 00000000..28b040e5
--- /dev/null
+++ b/scripts/dbg_mkrpm
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+test -f abrt.spec || exit 1
+ABRTVER=`grep ^Version: abrt.spec | head -n1 | sed 's/.* //'`
+
+if ! test -f configure; then
+ echo "Autogenerating configure"
+ ./autogen.sh || { rm -f configure; exit 1; }
+fi
+
+
+T=/tmp/$$_$RANDOM
+test -d "$T" && exit 1
+
+rm -rf BUILDROOT "abrt-$ABRTVER" "abrt-$ABRTVER".tar "abrt-$ABRTVER".tar.gz \
+ abrt*.rpm \
+ 2>/dev/null
+
+mkdir -p "$T"/"abrt-$ABRTVER" || exit
+cp -a * "$T"/"abrt-$ABRTVER" || exit
+(cd "$T" && tar -c "abrt-$ABRTVER") >"abrt-$ABRTVER".tar || exit
+rm -rf "$T" || exit
+
+gzip "abrt-$ABRTVER".tar || exit
+
+
+./dbg_rpmbuildlocal -bb abrt.spec 2>&1 | tee -a "$0.log"
diff --git a/scripts/dbg_rpmbuildlocal b/scripts/dbg_rpmbuildlocal
new file mode 100755
index 00000000..e0ed7add
--- /dev/null
+++ b/scripts/dbg_rpmbuildlocal
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+exec rpmbuild \
+--define "_topdir $PWD" \
+--define "_builddir $PWD" \
+--define "_rpmdir $PWD" \
+--define "_sourcedir $PWD" \
+--define "_specdir $PWD" \
+--define "_srcrpmdir $PWD" \
+--define "_build_name_fmt %%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm" \
+"$@"
diff --git a/scripts/dbg_rpminst b/scripts/dbg_rpminst
new file mode 100755
index 00000000..8255777a
--- /dev/null
+++ b/scripts/dbg_rpminst
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+while rpm -qa | grep abrt >/dev/null; do
+ rpm -qa | grep abrt | while read package; do
+ echo "$package: rpm -e `basename "$package" .rpm`"
+ rpm -e "`basename "$package" .rpm`"
+ done
+done
+
+while true; do
+ r=0
+ for package in *.rpm; do
+ test -f "$package" || continue
+ # Is it installed?
+ rpm -q "`basename "$package" .rpm`" >/dev/null && continue
+ # Try to install, record failure
+ echo "$package: rpm -i `basename "$package" .rpm`"
+ rpm -i "$package" || r=1
+ done
+ test $r = 0 && break
+done
+
+killall -HUP dbus-daemon
diff --git a/scripts/dbg_unpkrpm b/scripts/dbg_unpkrpm
new file mode 100755
index 00000000..143d4afa
--- /dev/null
+++ b/scripts/dbg_unpkrpm
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+rm -rf UNPACKED
+mkdir -p UNPACKED
+
+for rpm in *.rpm; do
+ rpm2cpio "$rpm" | ( cd UNPACKED && cpio -i --make-directories)
+done
diff --git a/src/Applet/Applet.cpp b/src/Applet/Applet.cpp
index c2d5467d..ea58b253 100644
--- a/src/Applet/Applet.cpp
+++ b/src/Applet/Applet.cpp
@@ -246,7 +246,7 @@ int main(int argc, char** argv)
"Problem connecting to dbus, or applet is already running");
/* Show disabled icon if daemon is not running */
- if (!dbus_bus_name_has_owner(system_conn, CC_DBUS_NAME, &err))
+ if (!dbus_bus_name_has_owner(system_conn, ABRTD_DBUS_NAME, &err))
{
const char* msg = _("ABRT service is not running");
puts(msg);
diff --git a/src/CLI/dbus.cpp b/src/CLI/dbus.cpp
index f59633ec..3f7b0ae8 100644
--- a/src/CLI/dbus.cpp
+++ b/src/CLI/dbus.cpp
@@ -27,7 +27,7 @@ DBusConnection* s_dbus_conn;
/* helpers */
static DBusMessage* new_call_msg(const char* method)
{
- DBusMessage* msg = dbus_message_new_method_call(CC_DBUS_NAME, CC_DBUS_PATH, CC_DBUS_IFACE, method);
+ DBusMessage* msg = dbus_message_new_method_call(ABRTD_DBUS_NAME, ABRTD_DBUS_PATH, ABRTD_DBUS_IFACE, method);
if (!msg)
die_out_of_memory();
return msg;
@@ -72,7 +72,7 @@ static DBusMessage* send_get_reply_and_unref(DBusMessage* msg)
DBusError err;
dbus_error_init(&err);
- if (dbus_message_is_signal(received, CC_DBUS_IFACE, "Update"))
+ if (dbus_message_is_signal(received, ABRTD_DBUS_IFACE, "Update"))
{
const char *update_msg;
if (!dbus_message_get_args(received, &err,
@@ -83,7 +83,7 @@ static DBusMessage* send_get_reply_and_unref(DBusMessage* msg)
}
printf(">> %s\n", update_msg);
}
- else if (dbus_message_is_signal(received, CC_DBUS_IFACE, "Warning"))
+ else if (dbus_message_is_signal(received, ABRTD_DBUS_IFACE, "Warning"))
{
const char *warning_msg;
if (!dbus_message_get_args(received, &err,
@@ -181,5 +181,5 @@ void handle_dbus_err(bool error_flag, DBusError *err)
error_msg_and_die(
"error requesting DBus name %s, possible reasons: "
"abrt run by non-root; dbus config is incorrect",
- CC_DBUS_NAME);
+ ABRTD_DBUS_NAME);
}
diff --git a/src/Daemon/CommLayerServerDBus.cpp b/src/Daemon/CommLayerServerDBus.cpp
index dd904e4f..7fa75313 100644
--- a/src/Daemon/CommLayerServerDBus.cpp
+++ b/src/Daemon/CommLayerServerDBus.cpp
@@ -28,7 +28,7 @@
static DBusMessage* new_signal_msg(const char* member, const char* peer = NULL)
{
/* path, interface, member name */
- DBusMessage* msg = dbus_message_new_signal(CC_DBUS_PATH, CC_DBUS_IFACE, member);
+ DBusMessage* msg = dbus_message_new_signal(ABRTD_DBUS_PATH, ABRTD_DBUS_IFACE, member);
if (!msg)
die_out_of_memory();
/* Send unicast dbus signal if peer is known */
@@ -537,7 +537,7 @@ static void handle_dbus_err(bool error_flag, DBusError *err)
error_msg_and_die(
"Error requesting DBus name %s, possible reasons: "
"abrt run by non-root; dbus config is incorrect",
- CC_DBUS_NAME);
+ ABRTD_DBUS_NAME);
}
CCommLayerServerDBus::CCommLayerServerDBus()
@@ -553,7 +553,7 @@ CCommLayerServerDBus::CCommLayerServerDBus()
attach_dbus_conn_to_glib_main_loop(conn, "/com/redhat/abrt", message_received);
VERB3 log("dbus_bus_request_name");
- int rc = dbus_bus_request_name(conn, CC_DBUS_NAME, DBUS_NAME_FLAG_REPLACE_EXISTING, &err);
+ int rc = dbus_bus_request_name(conn, ABRTD_DBUS_NAME, DBUS_NAME_FLAG_REPLACE_EXISTING, &err);
//maybe check that r == DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER instead?
handle_dbus_err(rc < 0, &err);
VERB3 log("dbus init done");
diff --git a/src/Daemon/Daemon.cpp b/src/Daemon/Daemon.cpp
index 188cd0d1..0e81dfdc 100644
--- a/src/Daemon/Daemon.cpp
+++ b/src/Daemon/Daemon.cpp
@@ -106,8 +106,9 @@ typedef struct cron_callback_data_t
} cron_callback_data_t;
-static uint8_t s_sig_caught;
+static uint8_t s_sig_caught; /* must be one byte */
static int s_signal_pipe[2];
+static int s_signal_pipe_write = -1;
static unsigned s_timeout;
static bool s_exiting;
@@ -443,10 +444,12 @@ static int Lock()
/* we leak opened lfd intentionally */
}
-static void handle_fatal_signal(int signal)
+static void handle_fatal_signal(int signo)
{
- s_sig_caught = signal;
- write(s_signal_pipe[1], &s_sig_caught, 1);
+ s_sig_caught = signo;
+ VERB3 log("Got signal %d", signo);
+ if (s_signal_pipe_write >= 0)
+ write(s_signal_pipe_write, &s_sig_caught, 1);
}
/* Signal pipe handler */
@@ -458,6 +461,7 @@ static gboolean handle_signal_cb(GIOChannel *gio, GIOCondition condition, gpoint
if (len == 1)
{
/* we did receive a signal */
+ VERB3 log("Got signal %d through signal pipe", signo);
s_exiting = 1;
return TRUE;
}
@@ -828,6 +832,9 @@ int main(int argc, char** argv)
start_syslog_logging();
}
+ /* Only now we want signal pipe to work */
+ s_signal_pipe_write = s_signal_pipe[1];
+
/* Enter the event loop */
try
{
diff --git a/src/Daemon/com.redhat.abrt.service b/src/Daemon/com.redhat.abrt.service
index e12c7ee3..b251ef7f 100644
--- a/src/Daemon/com.redhat.abrt.service
+++ b/src/Daemon/com.redhat.abrt.service
@@ -1,7 +1,7 @@
[D-BUS Service]
Name=com.redhat.abrt
-# We use small timeout of 33 seconds in order to make
-# "abrtd exited while clients existed but were idle" situations
-# to be triggered more often and thus better tested
-Exec=/usr/sbin/abrtd -ds -t33
+# For testing, you may add -t33 to use small timeout of 33 seconds.
+# This will make "abrtd exited while clients existed but were idle"
+# situations easy to trigger
+Exec=/usr/sbin/abrtd -ds
User=root