waf: Fix systemd detection
authorAndreas Schneider <asn@samba.org>
Tue, 7 Apr 2015 14:30:30 +0000 (16:30 +0200)
committerAndreas Schneider <asn@cryptomilk.org>
Wed, 8 Apr 2015 13:06:26 +0000 (15:06 +0200)
https://bugzilla.samba.org/show_bug.cgi?id=11200

Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Alexander Bokovoy <ab@samba.org>
Autobuild-User(master): Andreas Schneider <asn@cryptomilk.org>
Autobuild-Date(master): Wed Apr  8 15:06:26 CEST 2015 on sn-devel-104

lib/util/become_daemon.c
lib/util/debug.c
lib/util/wscript_build
lib/util/wscript_configure

index 78bebfc83099f732befd5d727fd0124606c4e6ac..46229719078ff42a4fff4f7dfa9a2d5f170a43bf 100644 (file)
@@ -24,7 +24,7 @@
 #include "includes.h"
 #include "system/filesys.h"
 #include "system/locale.h"
-#if HAVE_SYSTEMD
+#if HAVE_LIBSYSTEMD_DAEMON
 #include <systemd/sd-daemon.h>
 #endif
 #include "lib/util/close_low_fd.h"
@@ -69,9 +69,9 @@ _PUBLIC_ void become_daemon(bool do_fork, bool no_process_group, bool log_stdout
        if (do_fork) {
                newpid = fork();
                if (newpid) {
-#if HAVE_SYSTEMD
+#if HAVE_LIBSYSTEMD_DAEMON
                        sd_notifyf(0, "READY=0\nSTATUS=Starting process...\nMAINPID=%lu", (unsigned long) newpid);
-#endif /* HAVE_SYSTEMD */
+#endif /* HAVE_LIBSYSTEMD_DAEMON */
                        _exit(0);
                }
        }
@@ -98,7 +98,7 @@ _PUBLIC_ void become_daemon(bool do_fork, bool no_process_group, bool log_stdout
 
 _PUBLIC_ void exit_daemon(const char *msg, int error)
 {
-#ifdef HAVE_SYSTEMD
+#ifdef HAVE_LIBSYSTEMD_DAEMON
        if (msg == NULL) {
                msg = strerror(error);
        }
@@ -117,7 +117,7 @@ _PUBLIC_ void daemon_ready(const char *name)
        if (name == NULL) {
                name = "Samba";
        }
-#ifdef HAVE_SYSTEMD
+#ifdef HAVE_LIBSYSTEMD_DAEMON
        sd_notifyf(0, "READY=1\nSTATUS=%s: ready to serve connections...", name);
 #endif
        DEBUG(0, ("STATUS=daemon '%s' finished starting up and ready to serve "
@@ -129,7 +129,7 @@ _PUBLIC_ void daemon_status(const char *name, const char *msg)
        if (name == NULL) {
                name = "Samba";
        }
-#ifdef HAVE_SYSTEMD
+#ifdef HAVE_LIBSYSTEMD_DAEMON
        sd_notifyf(0, "\nSTATUS=%s: %s", name, msg);
 #endif
        DEBUG(0, ("STATUS=daemon '%s' : %s", name, msg));
index 91b02b450857a5fe7fbe2bc47eb4a715f5ee1b98..81d0cf6a848d4b1dfc9d3b938d81d80b766be16d 100644 (file)
@@ -102,7 +102,7 @@ static struct {
        .fd = 2 /* stderr by default */
 };
 
-#if defined(WITH_SYSLOG) || defined(HAVE_SYSTEMD_JOURNAL)
+#if defined(WITH_SYSLOG) || defined(HAVE_LIBSYSTEMD_JOURNAL)
 static int debug_level_to_priority(int level)
 {
        /*
@@ -174,7 +174,7 @@ static void debug_syslog_log(int msg_level,
 }
 #endif /* WITH_SYSLOG */
 
-#ifdef HAVE_SYSTEMD_JOURNAL
+#ifdef HAVE_LIBSYSTEMD_JOURNAL
 #include <systemd/sd-journal.h>
 static void debug_systemd_log(int msg_level,
                              const char *msg, const char *msg_no_nl)
@@ -246,7 +246,7 @@ static struct debug_backend {
        },
 #endif
 
-#ifdef HAVE_SYSTEMD_JOURNAL
+#ifdef HAVE_LIBSYSTEMD_JOURNAL
        {
                .name = "systemd",
                .log = debug_systemd_log,
index 50d53ed63f1f406274bc75a04fa77e32cf8b658e..92f25455b827f5b7bcf3a61bb06b493928463454 100755 (executable)
@@ -41,7 +41,7 @@ if bld.CONFIG_SET('HAVE_GPFS'):
 bld.SAMBA_LIBRARY('samba-debug',
                   source='debug.c',
                   deps='replace time-basic close-low-fd talloc socket-blocking' + samba_debug_add_deps,
-                  public_deps='systemd-journal lttng-ust',
+                  public_deps='systemd systemd-journal lttng-ust',
                   local_include=False,
                   private_library=True)
 
@@ -73,7 +73,7 @@ if not bld.env.SAMBA_UTIL_CORE_ONLY:
                     tevent_debug.c util_process.c memcache.c''',
                   deps='samba-util-core DYNCONFIG close-low-fd tini tiniparser',
 
-                  public_deps='talloc tevent execinfo pthread LIBCRYPTO charset util_setid systemd-daemon',
+                  public_deps='talloc tevent execinfo pthread LIBCRYPTO charset util_setid systemd systemd-daemon',
                   public_headers='debug.h attr.h byteorder.h data_blob.h memory.h safe_string.h time.h talloc_stack.h xfile.h dlinklist.h samba_util.h string_wrappers.h idtree.h idtree_random.h blocking.h signal.h substitute.h fault.h',
                   header_path= [ ('dlinklist.h samba_util.h', '.'), ('*', 'util') ],
                   local_include=False,
index ddd488241213b7449b986e077aba805a0f174c59..e52ba4a76238a9724584d44d6d3479ad1261b131 100644 (file)
@@ -100,33 +100,28 @@ conf.CHECK_CODE('struct statvfs buf; buf.f_flags = 0',
                 local_include=False,
                 execute=False)
 
+#
+# systemd removed the libsystemd-daemon and libsystemd-journal libraries. In newer
+# versions it is only libsystemd. As waf pkg-config handling does not provide
+# targets which could be used as a dependency based on the package name we need
+# to look for them on our own. This enabled one of the library targets based on
+# which version we detect.
+#
+conf.SET_TARGET_TYPE('systemd-daemon', 'EMPTY')
+conf.SET_TARGET_TYPE('systemd-journal', 'EMPTY')
+conf.SET_TARGET_TYPE('systemd', 'EMPTY')
+
 if Options.options.enable_systemd != False:
-    conf.CHECK_CFG(package='libsystemd-daemon', args='--cflags --libs',
-                   msg='Checking for libsystemd-daemon', uselib_store="SYSTEMD-DAEMON")
-    conf.CHECK_HEADERS('systemd/sd-daemon.h', lib='systemd-daemon')
-    conf.CHECK_LIB('systemd-daemon', shlib=True)
-
-if (conf.CONFIG_SET('HAVE_SYSTEMD_SD_DAEMON_H') and
-    conf.CONFIG_SET('HAVE_LIBSYSTEMD_DAEMON')):
-    conf.DEFINE('HAVE_SYSTEMD', '1')
-    conf.env['ENABLE_SYSTEMD'] = True
-else:
-    conf.SET_TARGET_TYPE('systemd-daemon', 'EMPTY')
-    conf.undefine('HAVE_SYSTEMD')
+    conf.check_cfg(package='libsystemd-daemon', args='--cflags --libs',
+                   msg='Checking for libsystemd-daemon')
+    if not conf.CHECK_LIB('systemd-daemon', shlib=True):
+        conf.CHECK_LIB('systemd', shlib=True)
 
 if Options.options.enable_systemd != False:
     conf.check_cfg(package='libsystemd-journal', args='--cflags --libs',
-                   msg='Checking for libsystemd-journal',
-                   uselib_store="SYSTEMD-JOURNAL")
-    conf.CHECK_HEADERS('systemd/sd-journal.h', lib='systemd-journal')
-    conf.CHECK_LIB('systemd-journal', shlib=True)
-
-if (conf.CONFIG_SET('HAVE_SYSTEMD_SD_JOURNAL_H') and
-    conf.CONFIG_SET('HAVE_LIBSYSTEMD_JOURNAL')):
-    conf.DEFINE('HAVE_SYSTEMD_JOURNAL', '1')
-else:
-    conf.SET_TARGET_TYPE('systemd-journal', 'EMPTY')
-    conf.undefine('HAVE_SYSTEMD_JOURNAL')
+                   msg='Checking for libsystemd-journal')
+    if not conf.CHECK_LIB('systemd-journal', shlib=True):
+        conf.CHECK_LIB('systemd', shlib=True)
 
 if Options.options.enable_lttng != False:
     conf.check_cfg(package='lttng-ust', args='--cflags --libs',