diff options
author | Rusty Russell <rusty@rustcorp.com.au> | 2011-06-20 18:40:34 +0930 |
---|---|---|
committer | Rusty Russell <rusty@rustcorp.com.au> | 2011-06-20 11:18:36 +0200 |
commit | 985e83ef520da68a60899f0ad977cb28a77b8cbe (patch) | |
tree | 4da2f88a0879b86ada629441dc79f67be17b7a29 | |
parent | 5eecc854236f0b943aaa89e0c3a46f9fbd208ca9 (diff) | |
download | samba-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.py | 8 | ||||
-rw-r--r-- | lib/tdb2/TODO | 4 | ||||
-rw-r--r-- | lib/tdb2/wscript | 99 | ||||
-rw-r--r-- | lib/tdb_compat/wscript | 15 | ||||
-rwxr-xr-x | source4/lib/ldb/wscript | 2 |
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''') |