[PATCHSET] cluster configure check improvements

Michael Adam obnox at samba.org
Wed Oct 31 10:07:54 MDT 2012


Hi,

here is an update to the patchset from yesterday,

it adds one patch that fixes the behaviour of configure
with respect to the presence of --with[out]-cluster-support
and the success of the ctdb checks:

If --with-cluster-support is specified and the cluster checks
fail, we up to now succeede the configure and built without
cluster support. With this patch, we correctly fail the
configure.

This change can serve as a model to fix various other
--with[out]-.. options.

I expect more patches along these lines from Björn in the next
couple of days.

Cheers - Michael


On 2012-10-30 at 17:15 +0100, Michael Adam wrote:
> Hi,
> 
> attached find a patchset for review that improves our cluster (ctdb)
> configure checks in Samba master (for waf and autoconf).
> 
> * the build against older (pre 1.2) ctdb versions is fixed
> * the configure checks are fixed on system without libtalloc
>   installed
> 
> These should go into master if found to be correct.
> 
> Cheers - Michael
> 
> PS:
> * branch master-cluster-checks under git://git.samba.org/obnox/samba/samba-obnox.git
> * gitweb: https://gitweb.samba.org/?p=obnox/samba/samba-obnox.git;a=log;h=refs/heads/master-cluster-checks
> 

-------------- next part --------------
From 7b56256165df5ea6d4f36a2a4237dca55dd39395 Mon Sep 17 00:00:00 2001
From: Michael Adam <obnox at samba.org>
Date: Tue, 30 Oct 2012 14:41:04 +0100
Subject: [PATCH 1/8] build(waf): fix a tab indentation to spaces

Signed-off-by: Michael Adam <obnox at samba.org>
---
 source3/wscript |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/source3/wscript b/source3/wscript
index cc94053..9db03ec 100644
--- a/source3/wscript
+++ b/source3/wscript
@@ -1302,7 +1302,7 @@ main() {
         else:
             includes = ''
 
-	if not conf.env.USING_SYSTEM_TDB:
+        if not conf.env.USING_SYSTEM_TDB:
             includes = includes + ' ' + srcdir + '/lib/tdb/include'
 
         have_cluster_support = True
-- 
1.7.9.5


From 8db54c82083d16b3eb862d463ac0e003a7b392f5 Mon Sep 17 00:00:00 2001
From: Michael Adam <obnox at samba.org>
Date: Tue, 30 Oct 2012 14:43:42 +0100
Subject: [PATCH 2/8] build(waf): fix the cluster(ctdb) build without system
 talloc installed
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This is analogous to the earlier patch for tdb.
It temporarily adds the talloc include path to the
includes search list for the ctdb-header configure checks.

Signed-off-by: Michael Adam <obnox at samba.org>
Tested-by: Björn Baumbach <bb at sernet.de>
---
 source3/wscript |    3 +++
 1 file changed, 3 insertions(+)

diff --git a/source3/wscript b/source3/wscript
index 9db03ec..5cbfd35 100644
--- a/source3/wscript
+++ b/source3/wscript
@@ -1305,6 +1305,9 @@ main() {
         if not conf.env.USING_SYSTEM_TDB:
             includes = includes + ' ' + srcdir + '/lib/tdb/include'
 
+        if not conf.env.USING_SYSTEM_TALLOC:
+            includes = includes + ' ' + srcdir + '/lib/talloc'
+
         have_cluster_support = True
         ctdb_broken = ""
 
-- 
1.7.9.5


From 3d05e002002c6963e0cea94ab32fa67b7e9888f8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20Baumbach?= <bb at sernet.de>
Date: Tue, 30 Oct 2012 13:40:48 +0100
Subject: [PATCH 3/8] build(autoconf): fix check for ctdb_private.h
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Björn Baumbach <bb at sernet.de>
Reviewed-by: Michael Adam <obnox at samba.org>
---
 source3/configure.in |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/source3/configure.in b/source3/configure.in
index fb00fee..327e55e 100644
--- a/source3/configure.in
+++ b/source3/configure.in
@@ -4989,7 +4989,7 @@ then
 fi
 
 if test "x$have_cluster_support" = "xyes" -a \
-	"x$ac_cv_header_ctdb_h" != "xyes"
+	"x$ac_cv_header_ctdb_private_h" != "xyes"
 then
 	have_cluster_support=no
 	ctdb_broken="ctdb_private.h is required for cluster support"
-- 
1.7.9.5


From 739a315d61be71d2ffe6746af30c9538f77b1cd7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20Baumbach?= <bb at sernet.de>
Date: Tue, 30 Oct 2012 13:26:24 +0100
Subject: [PATCH 4/8] build(autoconf): check if we have ctdb_protocol.h in the
 cluster checks
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Björn Baumbach <bb at sernet.de>
Reviewed-by: Michael Adam <obnox at samba.org>
---
 source3/configure.in |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/source3/configure.in b/source3/configure.in
index 327e55e..179d12d 100644
--- a/source3/configure.in
+++ b/source3/configure.in
@@ -4969,7 +4969,7 @@ ctdb_broken="no"
 SAVED_CPPFLAGS="$CPPFLAGS"
 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS} $CTDB_CPPFLAGS"
 
-AC_CHECK_HEADERS(ctdb.h ctdb_private.h,,,[
+AC_CHECK_HEADERS(ctdb.h ctdb_private.h ctdb_protocol.h ,,,[
 #include "confdefs.h"
 #define NO_CONFIG_H
 #include "replace.h"
-- 
1.7.9.5


From cba81bdf52d7cf4ea45bba62f4e3477f255b2660 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20Baumbach?= <bb at sernet.de>
Date: Tue, 30 Oct 2012 13:59:41 +0100
Subject: [PATCH 5/8] build(waf): check if we have ctdb_protocol.h in the
 cluster checks
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Björn Baumbach <bb at sernet.de>
Reviewed-by: Michael Adam <obnox at samba.org>
---
 source3/wscript |   22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/source3/wscript b/source3/wscript
index 5cbfd35..157a8c9 100644
--- a/source3/wscript
+++ b/source3/wscript
@@ -1367,6 +1367,28 @@ main() {
                 #include "replace.h"
                 #include "system/wait.h"
                 #include "system/network.h"
+                #define private #error __USED_RESERVED_WORD_private__
+                #include <talloc.h>
+                #include <tdb.h>
+                #include <ctdb.h>
+                #include <ctdb_protocol.h>
+
+                int main(void)
+                {
+                    return 0;
+                }
+                ''',
+                'HAVE_CTDB_PROTOCOL_H',
+                addmain=False,
+                includes=includes,
+                msg='Checking for header ctdb_protocol.h')
+
+        if have_cluster_support:
+            conf.CHECK_CODE('''
+                #define NO_CONFIG_H
+                #include "replace.h"
+                #include "system/wait.h"
+                #include "system/network.h"
                 #include <talloc.h>
                 #include <tdb.h>
                 #include <ctdb.h>
-- 
1.7.9.5


From 0ca321c1ee79212b01864d6fae3c5951134d0c50 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20Baumbach?= <bb at sernet.de>
Date: Wed, 17 Oct 2012 16:54:33 +0200
Subject: [PATCH 6/8] s3:ctdb library: fix the build against older ctdb
 versions
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

by checking if we have the ctdb_protocol.h and including ctdb_private.h otherwise.

Signed-off-by: Björn Baumbach <bb at sernet.de>
Reviewed-by: Michael Adam <obnox at samba.org>
---
 source3/lib/ctdb_conn.h |    5 +++++
 1 file changed, 5 insertions(+)

diff --git a/source3/lib/ctdb_conn.h b/source3/lib/ctdb_conn.h
index 9229536..0d648c7 100644
--- a/source3/lib/ctdb_conn.h
+++ b/source3/lib/ctdb_conn.h
@@ -23,7 +23,12 @@
 #ifdef CLUSTER_SUPPORT
 
 #include <tdb.h>
+
+#ifdef HAVE_CTDB_PROTOCOL_H
 #include <ctdb_protocol.h>
+#else
+#include <ctdb_private.h>
+#endif
 
 #else /* CLUSTER_SUPPORT */
 
-- 
1.7.9.5


From d59ef3fcbea58f543482d5cd0de1e8edd3c4616d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20Baumbach?= <bb at sernet.de>
Date: Tue, 30 Oct 2012 16:45:30 +0100
Subject: [PATCH 7/8] s3-torture:test_ctdbconn: fix the build against older
 ctdb versions
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

by checking if we have the ctdb_protocol.h and including ctdb_private.h otherwise.

Signed-off-by: Björn Baumbach <bb at sernet.de>
Reviewed-by: Michael Adam <obnox at samba.org>
---
 source3/torture/test_ctdbconn.c |    6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/source3/torture/test_ctdbconn.c b/source3/torture/test_ctdbconn.c
index 539e224..d018352 100644
--- a/source3/torture/test_ctdbconn.c
+++ b/source3/torture/test_ctdbconn.c
@@ -25,7 +25,13 @@
 #include "ctdb_conn.h"
 #include "lib/util/tevent_unix.h"
 #include "tdb.h"
+
+#ifdef HAVE_CTDB_PROTOCOL_H
 #include "ctdb_protocol.h"
+#else
+#include "ctdb_private.h"
+#endif
+
 #include "messages.h"
 
 struct ctdb_conn_test_state {
-- 
1.7.9.5


From 5192e4adc5145d4dccf2ff1c034364e9241911e0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20Baumbach?= <bb at sernet.de>
Date: Tue, 30 Oct 2012 16:04:10 +0100
Subject: [PATCH 8/8] build(waf): Fail "configure --with-cluster-support" if
 ctdb support is not available.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Currently, configure only warns if cluster support is not found.

Signed-off-by: Björn Baumbach <bb at sernet.de>
Reviewed-by: Michael Adam <obnox at samba.org>
---
 source3/wscript |   14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/source3/wscript b/source3/wscript
index 157a8c9..5e3abbc 100644
--- a/source3/wscript
+++ b/source3/wscript
@@ -43,7 +43,7 @@ def set_options(opt):
     opt.SAMBA3_ADD_OPTION('aio-support')
     opt.SAMBA3_ADD_OPTION('profiling-data', default=False)
 
-    opt.SAMBA3_ADD_OPTION('cluster-support')
+    opt.SAMBA3_ADD_OPTION('cluster-support', default=None)
 
     opt.add_option('--with-ctdb-dir',
                    help=("Directory under which ctdb is installed"),
@@ -1288,7 +1288,9 @@ main() {
     #
     # checking for clustering extensions (CTDB)
     #
-    if not Options.options.with_cluster_support:
+    if Options.options.with_cluster_support == False:
+        # configure is called with --without-cluster-support,
+        # so don't check for and build w/o ctdb support.
         have_cluster_support = False
 
     else:
@@ -1519,14 +1521,16 @@ main() {
         Logs.info("building with cluster support")
         conf.DEFINE('CLUSTER_SUPPORT', 1);
     else:
-        if not Options.options.with_cluster_support:
-            Logs.info("building without cluster support")
+        if Options.options.with_cluster_support == False:
+            Logs.info("building without cluster support (--without-cluster-support)")
+        elif Options.options.with_cluster_support == True:
+            Logs.error("Cluster support not available: " + ctdb_broken)
+            conf.fatal("Cluster support not found, but --with-cluster-support was specified")
         else:
             Logs.warn("building without cluster support: " + ctdb_broken)
         conf.undefine('CLUSTER_SUPPORT')
 
 
-
     conf.CHECK_CODE('__attribute__((destructor)) static void cleanup(void) { }',
                     'HAVE_FUNCTION_ATTRIBUTE_DESTRUCTOR',
                     addmain=False,
-- 
1.7.9.5

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 206 bytes
Desc: not available
URL: <http://lists.samba.org/pipermail/samba-technical/attachments/20121031/d68f5545/attachment.pgp>


More information about the samba-technical mailing list