summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRusty Russell <rusty@rustcorp.com.au>2011-06-20 18:40:34 +0930
committerRusty Russell <rusty@rustcorp.com.au>2011-06-20 11:18:36 +0200
commit985e83ef520da68a60899f0ad977cb28a77b8cbe (patch)
tree4da2f88a0879b86ada629441dc79f67be17b7a29
parent5eecc854236f0b943aaa89e0c3a46f9fbd208ca9 (diff)
downloadsamba-985e83ef520da68a60899f0ad977cb28a77b8cbe.tar.gz
samba-985e83ef520da68a60899f0ad977cb28a77b8cbe.tar.bz2
samba-985e83ef520da68a60899f0ad977cb28a77b8cbe.zip
tdb2: tie it into build process if --enable-tdb2-breaks-compat
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>
-rw-r--r--buildtools/wafsamba/samba3.py8
-rw-r--r--lib/tdb2/TODO4
-rw-r--r--lib/tdb2/wscript99
-rw-r--r--lib/tdb_compat/wscript15
-rwxr-xr-xsource4/lib/ldb/wscript2
5 files changed, 123 insertions, 5 deletions
diff --git a/buildtools/wafsamba/samba3.py b/buildtools/wafsamba/samba3.py
index d73fa3a829..c11e7d8f2a 100644
--- a/buildtools/wafsamba/samba3.py
+++ b/buildtools/wafsamba/samba3.py
@@ -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
index 0000000000..0a9374f016
--- /dev/null
+++ b/lib/tdb2/TODO
@@ -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
index 0000000000..386768f0fc
--- /dev/null
+++ b/lib/tdb2/wscript
@@ -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)
diff --git a/lib/tdb_compat/wscript b/lib/tdb_compat/wscript
index 8a6f69a96a..574e67e8ef 100644
--- a/lib/tdb_compat/wscript
+++ b/lib/tdb_compat/wscript
@@ -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',
diff --git a/source4/lib/ldb/wscript b/source4/lib/ldb/wscript
index 393f99f630..7de95494c7 100755
--- a/source4/lib/ldb/wscript
+++ b/source4/lib/ldb/wscript
@@ -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''')