Fix build with systemd libraries
systemd-related fixes did not land in Samba 4.2.1 release, they are in v4-2-test branch _past_ 4.2.1 release. We need to keep going with a local patch until 4.2.2 release.
This commit is contained in:
parent
d419eb78bd
commit
b98cbcdfa0
236
samba-4.2.2-lib-util-fix-detection-of-systemd-libraries.patch
Normal file
236
samba-4.2.2-lib-util-fix-detection-of-systemd-libraries.patch
Normal file
@ -0,0 +1,236 @@
|
||||
From 9cad09f8df8e080189fe274a6032c8fa70f0c2aa Mon Sep 17 00:00:00 2001
|
||||
From: Christof Schmitt <cs@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@samba.org>
|
||||
Reviewed-by: Amitay Isaacs <amitay@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@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@samba.org>
|
||||
Reviewed-by: Alexander Bokovoy <ab@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
|
||||
|
@ -6,7 +6,7 @@
|
||||
# ctdb is enabled by default, you can disable it with: --without clustering
|
||||
%bcond_without clustering
|
||||
|
||||
%define main_release 3
|
||||
%define main_release 4
|
||||
|
||||
%define samba_version 4.2.1
|
||||
%define talloc_version 2.1.2
|
||||
@ -93,6 +93,7 @@ URL: http://www.samba.org/
|
||||
Source0: samba-%{version}%{pre_release}.tar.xz
|
||||
|
||||
Patch0: samba-4.2.2-fix_debug_macro.patch
|
||||
Patch1: samba-4.2.2-lib-util-fix-detection-of-systemd-libraries.patch
|
||||
|
||||
# Red Hat specific replacement-files
|
||||
Source1: samba.log
|
||||
@ -642,6 +643,7 @@ and use CTDB instead.
|
||||
%setup -q -n samba-%{version}%{pre_release}
|
||||
|
||||
%patch0 -p1 -b .samba-4.2.2-fix_debug_macro.patch
|
||||
%patch1 -p1 -b .samba-4.2.2-lib-util-fix-detection-of-systemd-libraries.patch
|
||||
|
||||
%build
|
||||
%global _talloc_lib ,talloc,pytalloc,pytalloc-util
|
||||
@ -1930,6 +1932,9 @@ rm -rf %{buildroot}
|
||||
%endif # with_clustering_support
|
||||
|
||||
%changelog
|
||||
* Sat Apr 25 2015 Alexander Bokovoy <abokovoy@redhat.com> - 4.2.1-4
|
||||
- Fix systemd library detection (incomplete patch upstream)
|
||||
|
||||
* Fri Apr 24 2015 Andreas Schneider <asn@redhat.com> - 4.2.1-3
|
||||
- resolves: #1214973 - Fix libwbclient alternatives link.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user