tdb2: tie it into build process if --enable-tdb2-breaks-compat
authorRusty Russell <rusty@rustcorp.com.au>
Mon, 20 Jun 2011 09:10:34 +0000 (18:40 +0930)
committerRusty Russell <rusty@rustcorp.com.au>
Mon, 20 Jun 2011 09:18:36 +0000 (11:18 +0200)
This is simplistic.  We need to support making TDB2 a standalone library,
but for now, we simply built it in-tree.

Once we have tdb1 compatibility in tdb2, we can rename this option to
--enable-tdb2.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
buildtools/wafsamba/samba3.py
lib/tdb2/TODO [new file with mode: 0644]
lib/tdb2/wscript [new file with mode: 0644]
lib/tdb_compat/wscript
source4/lib/ldb/wscript

index d73fa3a..c11e7d8 100644 (file)
@@ -57,8 +57,12 @@ def s3_fix_kwargs(bld, kwargs):
                             '../source4/heimdal/lib/gssapi',
                             '../source4/heimdal_build' ]
 
-    if not bld.CONFIG_SET('USING_SYSTEM_TDB'):
-        extra_includes += [ '../lib/tdb/include' ]
+    if bld.CONFIG_SET('BUILD_TDB2'):
+        if not bld.CONFIG_SET('USING_SYSTEM_TDB2'):
+            extra_includes += [ '../lib/tdb2' ]
+    else:
+        if not bld.CONFIG_SET('USING_SYSTEM_TDB'):
+            extra_includes += [ '../lib/tdb/include' ]
 
     if not bld.CONFIG_SET('USING_SYSTEM_TEVENT'):
         extra_includes += [ '../lib/tevent' ]
diff --git a/lib/tdb2/TODO b/lib/tdb2/TODO
new file mode 100644 (file)
index 0000000..0a9374f
--- /dev/null
@@ -0,0 +1,4 @@
+- tdb2restore, tdb2dump, tdb2backup
+- tdb2tool man page
+- Integrate ccan testsuite
+- Integrate tdb2 testsuite
diff --git a/lib/tdb2/wscript b/lib/tdb2/wscript
new file mode 100644 (file)
index 0000000..386768f
--- /dev/null
@@ -0,0 +1,99 @@
+#!/usr/bin/env python
+
+APPNAME = 'tdb'
+VERSION = '2.0-alpha'
+
+blddir = 'bin'
+
+import sys, os
+
+# find the buildtools directory
+srcdir = '.'
+while not os.path.exists(srcdir+'/buildtools') and len(srcdir.split('/')) < 5:
+    srcdir = '../' + srcdir
+sys.path.insert(0, srcdir + '/buildtools/wafsamba')
+
+import wafsamba, samba_dist, Options, Logs
+
+samba_dist.DIST_DIRS('lib/tdb2:. lib/replace:lib/replace buildtools:buildtools')
+
+def set_options(opt):
+    opt.BUILTIN_DEFAULT('replace')
+    opt.PRIVATE_EXTENSION_DEFAULT('tdb2', noextension='tdb2')
+    opt.RECURSE('lib/replace')
+    opt.add_option('--enable-tdb2-breaks-compat',
+                   help=("Build tdb2 instead of tdb1 (BREAKS TDB1!) [False]"),
+                   action="store_true", dest='BUILD_TDB2', default=False)
+    if opt.IN_LAUNCH_DIR():
+        opt.add_option('--disable-python',
+                       help=("disable the pytdb module"),
+                       action="store_true", dest='disable_python', default=False)
+
+def configure(conf):
+    if conf.env.BUILD_TDB2:
+        conf.DEFINE('BUILD_TDB2', 1)
+        conf.RECURSE('lib/replace')
+        conf.RECURSE('lib/ccan')
+
+        conf.env.standalone_tdb2 = conf.IN_LAUNCH_DIR()
+        conf.env.disable_python = getattr(Options.options, 'disable_python', False)
+
+#        if not conf.env.standalone_tdb2:
+#            if conf.CHECK_BUNDLED_SYSTEM('tdb', minversion=VERSION,
+#                                         implied_deps='replace'):
+#                conf.define('USING_SYSTEM_TDB2', 1)
+
+        conf.SAMBA_CONFIG_H()
+
+def build(bld):
+    if bld.env.BUILD_TDB2:
+        bld.RECURSE('lib/replace')
+
+        if bld.env.standalone_tdb2:
+            bld.env.PKGCONFIGDIR = '${LIBDIR}/pkgconfig'
+            bld.PKG_CONFIG_FILES('tdb2.pc', vnum=VERSION)
+            bld.INSTALL_FILES('${INCLUDEDIR}', 'tdb2.h', flat=True)
+            private_library = False
+        else:
+            private_library = True
+
+        if not bld.CONFIG_SET('USING_SYSTEM_TDB2'):
+            # FIXME: hide_symbols=True, abi_directory='ABI', abi_match='tdb_*',  vnum=VERSION,
+            bld.SAMBA_LIBRARY('tdb',
+                              '''check.c free.c hash.c io.c lock.c open.c
+                                 summary.c tdb.c transaction.c traverse.c''',
+                              deps='replace ccan',
+                              private_library=private_library)
+
+            bld.SAMBA_BINARY('tdb2torture',
+                             'tools/tdb2torture.c',
+                             'tdb',
+                             install=False)
+
+            bld.SAMBA_BINARY('tdb2tool',
+                             'tools/tdb2tool.c',
+                             'tdb')
+
+            bld.SAMBA_BINARY('tdb2dump',
+                             'tools/tdb2dump.c',
+                             'tdb')
+
+            bld.SAMBA_BINARY('tdb2restore',
+                             'tools/tdb2restore.c',
+                             'tdb')
+
+        bld.SAMBA_PYTHON('pytdb',
+                         'pytdb.c',
+                         deps='tdb',
+                         enabled=not bld.env.disable_python,
+                         realname='tdb.so',
+                         cflags='-DPACKAGE_VERSION=\"%s\"' % VERSION)
+
+def dist():
+    '''makes a tarball for distribution'''
+    samba_dist.dist()
+
+def reconfigure(ctx):
+    '''reconfigure if config scripts have changed'''
+    import samba_utils
+    samba_utils.reconfigure(ctx)
index 8a6f69a..574e67e 100644 (file)
@@ -1,15 +1,26 @@
 #!/usr/bin/env python
 
+import Options
+
 def set_options(opt):
+    opt.RECURSE('lib/tdb2')
     opt.RECURSE('lib/tdb')
 
 def configure(conf):
-    conf.RECURSE('lib/tdb')
+    conf.env.BUILD_TDB2 = getattr(Options.options, 'BUILD_TDB2', False)
+
+    if conf.env.BUILD_TDB2:
+        conf.RECURSE('lib/tdb2')
+    else:
+        conf.RECURSE('lib/tdb')
     conf.RECURSE('lib/ccan')
 
 def build(bld):
-    bld.RECURSE('lib/tdb')
     bld.RECURSE('lib/ccan')
+    if bld.env.BUILD_TDB2:
+        bld.RECURSE('lib/tdb2')
+    else:
+        bld.RECURSE('lib/tdb')
     bld.SAMBA_LIBRARY('tdb_compat',
                       source='tdb_compat.c',
                      deps='replace tdb ccan',
index 393f99f..7de9549 100755 (executable)
@@ -16,7 +16,7 @@ sys.path.insert(0, srcdir + '/buildtools/wafsamba')
 import wafsamba, samba_dist, Options
 
 samba_dist.DIST_DIRS('''source4/lib/ldb:. lib/replace:lib/replace lib/talloc:lib/talloc
-                        lib/tdb:lib/tdb lib/tdb_compat:lib/tdb_compat lib/ccan:lib/ccan lib/tevent:lib/tevent lib/popt:lib/popt
+                        lib/tdb:lib/tdb lib/tdb2:lib/tdb2 lib/tdb_compat:lib/tdb_compat lib/ccan:lib/ccan lib/tevent:lib/tevent lib/popt:lib/popt
                         buildtools:buildtools''')