asn pushed to samba (f22). "Fix libsystemd detection. (..more)"

notifications at fedoraproject.org notifications at fedoraproject.org
Wed Apr 8 15:12:11 UTC 2015


>From 1df9cd10c0efd5aa6d8f48bf137863d6b72e9cd9 Mon Sep 17 00:00:00 2001
From: Andreas Schneider <asn at cryptomilk.org>
Date: Wed, 8 Apr 2015 16:17:14 +0200
Subject: Fix libsystemd detection.

resolves: #1207381

diff --git a/samba-4.2.1-fix_systemd_detection.patch b/samba-4.2.1-fix_systemd_detection.patch
new file mode 100644
index 0000000..deb25bf
--- /dev/null
+++ b/samba-4.2.1-fix_systemd_detection.patch
@@ -0,0 +1,236 @@
+From 9cad09f8df8e080189fe274a6032c8fa70f0c2aa Mon Sep 17 00:00:00 2001
+From: Christof Schmitt <cs at samba.org>
+Date: Fri, 20 Mar 2015 12:13:14 -0700
+Subject: [PATCH 1/2] build: Move systemd checks to lib/util
+
+Only lib/util uses the systemd library, so it makes sense to have the
+checks there. This also removes the need for the ctdb build script to
+specify an empty tag for the systemd library.
+
+Signed-off-by: Christof Schmitt <cs at samba.org>
+Reviewed-by: Amitay Isaacs <amitay at gmail.com>
+
+(cherry picked from commit 0509790ec3696e09f6d5e6db969e46e8fd975efb)
+---
+ ctdb/wscript               |  2 --
+ lib/util/wscript           |  8 ++++++++
+ lib/util/wscript_configure | 14 ++++++++++++++
+ wscript                    | 22 ----------------------
+ 4 files changed, 22 insertions(+), 24 deletions(-)
+
+diff --git a/ctdb/wscript b/ctdb/wscript
+index 3e2a992..6f5f469 100755
+--- a/ctdb/wscript
++++ b/ctdb/wscript
+@@ -212,8 +212,6 @@ def configure(conf):
+             conf.ADD_EXTRA_INCLUDES('#ctdb')
+         conf.ADD_EXTRA_INCLUDES('#lib #lib/replace')
+ 
+-        conf.SET_TARGET_TYPE('systemd-daemon', 'EMPTY')
+-
+         del(conf.env.defines['PYTHONDIR'])
+         del(conf.env.defines['PYTHONARCHDIR'])
+ 
+diff --git a/lib/util/wscript b/lib/util/wscript
+index d296e75..2371689 100644
+--- a/lib/util/wscript
++++ b/lib/util/wscript
+@@ -1,3 +1,11 @@
+ def set_options(opt):
+     ''' This is a bit strange, but disable is the flag, not enable. '''
+     opt.add_option('--disable-fault-handling', action='store_true', dest='disable_fault_handling', help=('disable the fault handlers'), default=False)
++
++    opt.add_option('--with-systemd',
++                   help=("Enable systemd integration"),
++                   action='store_true', dest='enable_systemd')
++
++    opt.add_option('--without-systemd',
++                   help=("Disable systemd integration"),
++                   action='store_false', dest='enable_systemd')
+diff --git a/lib/util/wscript_configure b/lib/util/wscript_configure
+index 1270ab3..1cfba3e 100644
+--- a/lib/util/wscript_configure
++++ b/lib/util/wscript_configure
+@@ -99,3 +99,17 @@ conf.CHECK_CODE('struct statvfs buf; buf.f_flags = 0',
+                 headers='sys/statvfs.h',
+                 local_include=False,
+                 execute=False)
++
++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')
+diff --git a/wscript b/wscript
+index ad2e2a8..f4241f1 100644
+--- a/wscript
++++ b/wscript
+@@ -70,14 +70,6 @@ def set_options(opt):
+                   help=("Disable RELRO builds"),
+                   action="store_false", dest='enable_relro')
+ 
+-    opt.add_option('--with-systemd',
+-                   help=("Enable systemd integration"),
+-                   action='store_true', dest='enable_systemd')
+-
+-    opt.add_option('--without-systemd',
+-                   help=("Disable systemd integration"),
+-                   action='store_false', dest='enable_systemd')
+-
+     gr = opt.option_group('developer options')
+ 
+     opt.tool_options('python') # options for disabling pyc or pyo compilation
+@@ -214,20 +206,6 @@ def configure(conf):
+                          msg="Checking compiler for full RELRO support"):
+             conf.env['ENABLE_RELRO'] = True
+ 
+-    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.SAMBA_CONFIG_H('include/config.h')
+ 
+ def etags(ctx):
+-- 
+2.3.5
+
+
+From 42e03b23cf8850cfb6df383a6b69627ffe1ce369 Mon Sep 17 00:00:00 2001
+From: Andreas Schneider <asn at samba.org>
+Date: Tue, 7 Apr 2015 16:30:30 +0200
+Subject: [PATCH 2/2] waf: Fix systemd detection
+
+https://bugzilla.samba.org/show_bug.cgi?id=11200
+
+Signed-off-by: Andreas Schneider <asn at samba.org>
+Reviewed-by: Alexander Bokovoy <ab at samba.org>
+
+(cherry picked from commit 5ee27b4ead57c15db7168d80f6fdf821663c44fc)
+---
+ lib/util/become_daemon.c   | 12 ++++++------
+ lib/util/wscript_build     |  2 +-
+ lib/util/wscript_configure | 27 +++++++++++++++------------
+ 3 files changed, 22 insertions(+), 19 deletions(-)
+
+diff --git a/lib/util/become_daemon.c b/lib/util/become_daemon.c
+index 78bebfc..4622971 100644
+--- a/lib/util/become_daemon.c
++++ b/lib/util/become_daemon.c
+@@ -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));
+diff --git a/lib/util/wscript_build b/lib/util/wscript_build
+index 5db7e35..cb9e8e5 100755
+--- a/lib/util/wscript_build
++++ b/lib/util/wscript_build
+@@ -54,7 +54,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,
+diff --git a/lib/util/wscript_configure b/lib/util/wscript_configure
+index 1cfba3e..8d8dc87 100644
+--- a/lib/util/wscript_configure
++++ b/lib/util/wscript_configure
+@@ -100,16 +100,19 @@ 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)
+-- 
+2.3.5
+
diff --git a/samba.spec b/samba.spec
index 0b8a5d0..706b66f 100644
--- a/samba.spec
+++ b/samba.spec
@@ -6,7 +6,7 @@
 # ctdb is enabled by default, you can disable it with: --without clustering
 %bcond_without clustering
 
-%define main_release 2
+%define main_release 3
 
 %define samba_version 4.2.0
 %define talloc_version 2.1.1
@@ -91,6 +91,8 @@ URL:            http://www.samba.org/
 
 Source0:        samba-%{version}%{pre_release}.tar.xz
 
+Patch0:         samba-4.2.1-fix_systemd_detection.patch
+
 # Red Hat specific replacement-files
 Source1: samba.log
 Source2: samba.xinetd
@@ -148,9 +150,11 @@ BuildRequires: python-devel
 BuildRequires: python-tevent
 BuildRequires: quota-devel
 BuildRequires: readline-devel
-BuildRequires: systemd-devel
 BuildRequires: sed
 BuildRequires: zlib-devel >= 1.2.3
+
+BuildRequires: pkgconfig(systemd-daemon)
+
 %if %{with_vfs_glusterfs}
 BuildRequires: glusterfs-api-devel >= 3.4.0.16
 BuildRequires: glusterfs-devel >= 3.4.0.16
@@ -631,6 +635,8 @@ and use CTDB instead.
 %prep
 %setup -q -n samba-%{version}%{pre_release}
 
+%patch0 -p1 -b .samba-4.2.1-fix_systemd_detection.patch
+
 %build
 %global _talloc_lib ,talloc,pytalloc,pytalloc-util
 %global _tevent_lib ,tevent,pytevent
@@ -1912,6 +1918,9 @@ rm -rf %{buildroot}
 %endif # with_clustering_support
 
 %changelog
+* Wed Apr 08 2015 Andreas Schneider <asn at redhat.com> - 4.2.0-3
+- resolves: #1207381 - Fix libsystemd detection.
+
 * Tue Mar 10 2015 Andreas Schneider <asn at redhat.com> - 4.2.0-2
 - Fix the AD build.
 - Create samba-client-libs subpackage.
-- 
cgit v0.10.2


	http://pkgs.fedoraproject.org/cgit/samba.git/commit/?h=f22&id=1df9cd10c0efd5aa6d8f48bf137863d6b72e9cd9


More information about the scm-commits mailing list