diff options
Diffstat (limited to 'lib/tdb2/wscript')
-rw-r--r-- | lib/tdb2/wscript | 278 |
1 files changed, 0 insertions, 278 deletions
diff --git a/lib/tdb2/wscript b/lib/tdb2/wscript deleted file mode 100644 index ef30f1b778..0000000000 --- a/lib/tdb2/wscript +++ /dev/null @@ -1,278 +0,0 @@ -#!/usr/bin/env python - -APPNAME = 'tdb' -VERSION = '2.0.1' - -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, glob - -samba_dist.DIST_DIRS('lib/tdb2:. lib/replace:lib/replace lib/ccan:lib/ccan buildtools:buildtools') - -def set_options(opt): - opt.BUILTIN_DEFAULT('replace,ccan') - opt.PRIVATE_EXTENSION_DEFAULT('tdb2', noextension='tdb2') - opt.RECURSE('lib/replace') - opt.add_option('--enable-developer', - help=("Turn on developer warnings and debugging"), - action="store_true", dest='developer', default=False) - opt.add_option('--enable-tdb2', - help=("Use tdb2 API instead of tdb1 [True]"), - action="store_true", dest='BUILD_TDB2', default=True) - opt.add_option('--disable-tdb2', - help=("Use old tdb1 API instead of tdb2"), - action="store_false", dest='BUILD_TDB2') - opt.add_option('--valgrind', - help=("use valgrind on tests programs"), - action="store_true", dest='VALGRIND', default=False) - opt.add_option('--valgrind-log', - help=("where to put the valgrind log"), - action="store", dest='VALGRINDLOG', default=None) - 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 Options.options.developer: - conf.env.DEVELOPER_MODE = True - - conf.env.TEST_RUN_SRC=['test/run-001-encode.c', - 'test/run-001-fls.c', - 'test/run-01-new_database.c', - 'test/run-02-expand.c', - 'test/run-03-coalesce.c', - 'test/run-04-basichash.c', - 'test/run-05-readonly-open.c', - 'test/run-10-simple-store.c', - 'test/run-11-simple-fetch.c', - 'test/run-12-check.c', - 'test/run-15-append.c', - 'test/run-20-growhash.c', - 'test/run-25-hashoverload.c', - 'test/run-30-exhaust-before-expand.c', - 'test/run-35-convert.c', - 'test/run-50-multiple-freelists.c', - 'test/run-56-open-during-transaction.c', - 'test/run-57-die-during-transaction.c', - 'test/run-64-bit-tdb.c', - 'test/run-90-get-set-attributes.c', - 'test/run-capabilities.c', - 'test/run-expand-in-transaction.c', - 'test/run-features.c', - 'test/run-lockall.c', - 'test/run-remap-in-read_traverse.c', - 'test/run-seed.c', - 'test/run-tdb_errorstr.c', - 'test/run-tdb_foreach.c', - 'test/run-traverse.c'] - conf.env.TEST_API_SRC=['test/api-12-store.c', - 'test/api-13-delete.c', - 'test/api-14-exists.c', - 'test/api-16-wipe_all.c', - 'test/api-21-parse_record.c', - 'test/api-55-transaction.c', - 'test/api-80-tdb_fd.c', - 'test/api-81-seqnum.c', - 'test/api-82-lockattr.c', - 'test/api-83-openhook.c', - 'test/api-91-get-stats.c', - 'test/api-92-get-set-readonly.c', - 'test/api-93-repack.c', - 'test/api-add-remove-flags.c', - 'test/api-check-callback.c', - 'test/api-firstkey-nextkey.c', - 'test/api-fork-test.c', - 'test/api-locktimeout.c', - 'test/api-missing-entries.c', - 'test/api-open-multiple-times.c', - 'test/api-record-expand.c', - 'test/api-simple-delete.c', - 'test/api-summary.c'] - conf.env.TEST_API_HELPER_SRC=['test/helpapi-external-agent.c'] - conf.env.TEST_RUN_HELPER_SRC=['test/helprun-external-agent.c', - 'test/helprun-layout.c'] - conf.env.TEST_HELPER_SRC=['test/external-agent.c', - 'test/failtest_helper.c', - 'test/lock-tracking.c', - 'test/logging.c', - 'test/tap-interface.c'] - - if Options.options.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) - if conf.CHECK_BUNDLED_SYSTEM_PYTHON('pytdb', 'tdb', minversion=VERSION): - conf.define('USING_SYSTEM_PYTDB', 1) - - if not conf.env.disable_python: - # also disable if we don't have the python libs installed - conf.find_program('python', var='PYTHON') - conf.check_tool('python') - conf.check_python_version((2,4,2)) - conf.SAMBA_CHECK_PYTHON_HEADERS(mandatory=False) - if not conf.env.HAVE_PYTHON_H: - Logs.warn('Disabling pytdb as python devel libs not found') - conf.env.disable_python = True - - # This make #include <ccan/...> work. - conf.ADD_EXTRA_INCLUDES('''#lib''') - - conf.SAMBA_CONFIG_H() - -def build(bld): - if bld.env.BUILD_TDB2: - bld.RECURSE('lib/replace') - bld.RECURSE('lib/ccan') - - if bld.env.standalone_tdb2: - bld.env.PKGCONFIGDIR = '${LIBDIR}/pkgconfig' - private_library = False - else: - private_library = True - - SRC = '''check.c free.c hash.c io.c lock.c open.c - summary.c tdb.c transaction.c traverse.c''' - - if not bld.CONFIG_SET('USING_SYSTEM_TDB2'): - bld.SAMBA_LIBRARY('tdb', - SRC, - deps='replace ccan', - includes='.', - abi_directory='ABI', - abi_match='tdb_*', - hide_symbols=True, - vnum=VERSION, - public_headers='tdb2.h', - public_headers_install=not private_library, - pc_files='tdb.pc', - private_library=private_library) - - bld.SAMBA_BINARY('tdbtorture', - 'tools/tdb2torture.c', - deps='tdb', - install=False) - - bld.SAMBA_BINARY('tdbtool', - 'tools/tdb2tool.c', - deps='tdb') - - bld.SAMBA_BINARY('tdbdump', - 'tools/tdb2dump.c', - deps='tdb') - - bld.SAMBA_BINARY('tdbrestore', - 'tools/tdb2restore.c', - deps='tdb') - - bld.SAMBA_BINARY('tdbbackup', - 'tools/tdb2backup.c', - deps='tdb') - - if not bld.CONFIG_SET('USING_SYSTEM_PYTDB'): - bld.SAMBA_PYTHON('pytdb', - source='pytdb.c', - deps='tdb', - enabled=not bld.env.disable_python, - realname='tdb.so', - cflags='-DPACKAGE_VERSION=\"%s\"' % VERSION) - - if bld.env.DEVELOPER_MODE: - # FIXME: We need CCAN for some API tests, but waf thinks it's - # already available via tdb2. It is, but not publicly. - # Workaround is to build a private, non-hiding version. - bld.SAMBA_SUBSYSTEM('tdb2-testing', - SRC, - deps='replace ccan', - includes='.') - - bld.SAMBA_SUBSYSTEM('tdb2-test-helpers', bld.env.TEST_HELPER_SRC, - deps='replace') - bld.SAMBA_SUBSYSTEM('tdb2-run-helpers', bld.env.TEST_RUN_HELPER_SRC, - deps='replace') - bld.SAMBA_SUBSYSTEM('tdb2-api-helpers', bld.env.TEST_API_HELPER_SRC, - deps='replace tdb2-testing') - - for f in bld.env.TEST_RUN_SRC: - base = os.path.splitext(os.path.basename(f))[0] - bld.SAMBA_BINARY('tdb2-' + base, f, - deps='ccan replace tdb2-test-helpers tdb2-run-helpers ccan-failtest', - install=False) - - for f in bld.env.TEST_API_SRC: - base = os.path.splitext(os.path.basename(f))[0] - bld.SAMBA_BINARY('tdb2-' + base, f, - deps='ccan replace tdb2-test-helpers tdb2-api-helpers', - install=False) - -def testonly(ctx): - '''run tdb2 testsuite''' - import Utils, samba_utils, shutil - ecode = 0; - - env = samba_utils.LOAD_ENVIRONMENT() - - if env.BUILD_TDB2 and env.standalone_tdb2 and env.DEVELOPER_MODE: - - # FIXME: This is horrible :( - test_prefix = "%s/st" % (Utils.g_module.blddir) - shutil.rmtree(test_prefix, ignore_errors=True) - os.makedirs(test_prefix) - - # Create scratch directory for tests. - testdir = os.path.join(test_prefix, 'tdb2-tests') - samba_utils.mkdir_p(testdir) - # Symlink back to source dir so it can find tests in test/ - link = os.path.join(testdir, 'test') - if not os.path.exists(link): - os.symlink(os.path.abspath(os.path.join(env.cwd, 'test')), link) - - if Options.options.VALGRIND: - os.environ['VALGRIND'] = 'valgrind -q --num-callers=30' - if Options.options.VALGRINDLOG is not None: - os.environ['VALGRIND'] += ' --log-file=%s' % Options.options.VALGRINDLOG - - for f in env.TEST_RUN_SRC + env.TEST_API_SRC: - name = "tdb2-" + os.path.splitext(os.path.basename(f))[0] - cmd = "cd " + testdir + " && $VALGRIND " + os.path.abspath(os.path.join(Utils.g_module.blddir, name)) + " > test-output 2>&1" - print("..." + f) - ret = samba_utils.RUN_COMMAND(cmd) - if ret != 0: - print("%s (%s) failed:" % (name, f)) - samba_utils.RUN_COMMAND("cat " + os.path.join(testdir, 'test-output')) - ecode = ret; - break; - - sys.exit(ecode) - -# WAF doesn't build the unit tests for this, maybe because they don't link with tdb? -# This forces it -def test(ctx): - import Scripting - Scripting.commands.append('build') - Scripting.commands.append('testonly') - -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) |