booth/0005-Feature-allow-skipping-coredump-nursing-phase.patch

116 lines
3.3 KiB
Diff
Raw Normal View History

From b0eee73d593b0d8c884b01d5691857506f24daba Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jan=20Pokorn=C3=BD?= <jpokorny@redhat.com>
Date: Tue, 26 Apr 2016 16:50:50 +0200
Subject: [PATCH 5/6] Feature: allow skipping "coredump nursing" phase
This effectively eliminates the last dependency on glue libraries.
---
configure.ac | 11 +++++++++++
src/Makefile.am | 6 +++++-
src/main.c | 12 +++++++++---
3 files changed, 25 insertions(+), 4 deletions(-)
diff --git a/configure.ac b/configure.ac
index bb2e3a8..cb4eeb1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -289,6 +289,16 @@ libsystemd)
esac
AM_CONDITIONAL([NAMETAG_LIBSYSTEMD], [test "x$nametag_provider" = "xlibsystemd"])
+# figure out if "coredump nursing" supported and desired
+coredump_nursing="no"
+if test "x$with_glue" != "xno"; then
+ AC_CHECK_LIB([plumb], [cl_enable_coredumps], [coredump_nursing="libplumb"])
+fi
+if test "x$coredump_nursing" != "xno"; then
+ AC_DEFINE(COREDUMP_NURSING, [], [eligible for coredump nursing])
+fi
+AM_CONDITIONAL([COREDUMP_NURSING], [test "x$coredump_nursing" != "xno"])
+
# OS detection
# THIS SECTION MUST DIE!
CP=cp
@@ -520,6 +530,7 @@ AC_MSG_RESULT([ Features = ${PACKAGE_FEATURES}])
AC_MSG_RESULT([ Logging provider = ${logging_provider}])
AC_MSG_RESULT([ Range2random provider = ${range2random_provider}])
AC_MSG_RESULT([ Nametag provider = ${nametag_provider}])
+AC_MSG_RESULT([ Coredump nursing = ${coredump_nursing}])
AC_MSG_RESULT([])
AC_MSG_RESULT([$PACKAGE build info:])
AC_MSG_RESULT([ Library SONAME = ${SONAME}])
diff --git a/src/Makefile.am b/src/Makefile.am
index 69b7b48..2a985ae 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -22,7 +22,7 @@ boothd_SOURCES += auth.c
endif
boothd_LDFLAGS = $(OS_DYFLAGS) -L./
-boothd_LDADD = -lplumb -lm $(GLIB_LIBS) $(ZLIB_LIBS)
+boothd_LDADD = -lm $(GLIB_LIBS) $(ZLIB_LIBS)
boothd_CFLAGS = $(GLIB_CFLAGS)
if !LOGGING_LIBQB
@@ -49,5 +49,9 @@ boothd_SOURCES += alt/nametag_libsystemd.c
noinst_HEADERS += alt/nametag_libsystemd.h
endif
+if COREDUMP_NURSING
+boothd_LDADD += -lplumb
+endif
+
lint:
-splint $(INCLUDES) $(LINT_FLAGS) $(CFLAGS) *.c
diff --git a/src/main.c b/src/main.c
index 27d285c..0693f18 100644
--- a/src/main.c
+++ b/src/main.c
@@ -33,9 +33,6 @@
#include <sys/un.h>
#include <sys/poll.h>
#include <sys/wait.h>
-#include <pacemaker/crm/services.h>
-#include <sys/prctl.h>
-#include <clplumbing/coredumps.h>
#include <fcntl.h>
#include <string.h>
#include <ctype.h>
@@ -47,12 +44,19 @@
#include <netdb.h>
#include <arpa/inet.h>
#include <sys/types.h>
+
+#include <pacemaker/crm/services.h>
+
#include "b_config.h"
#ifndef NAMETAG_LIBSYSTEMD
#include <clplumbing/setproctitle.h>
#else
#include "alt/nametag_libsystemd.h"
#endif
+#ifdef COREDUMP_NURSING
+#include <sys/prctl.h>
+#include <clplumbing/coredumps.h>
+#endif
#include "log.h"
#include "booth.h"
#include "config.h"
@@ -1457,11 +1461,13 @@ static int do_server(int type)
if (rv)
return rv;
+#ifdef COREDUMP_NURSING
if (cl_enable_coredumps(TRUE) < 0){
log_error("enabling core dump failed");
}
cl_cdtocoredir();
prctl(PR_SET_DUMPABLE, (unsigned long)TRUE, 0UL, 0UL, 0UL);
+#endif
signal(SIGCHLD, (__sighandler_t)wait_child);
rv = loop(lock_fd);
--
2.4.11