import os
import sys
+import samba.param
-def in_source_tree():
- """Check whether the script is being run from the source dir. """
- return os.path.exists("%s/../../../selftest/skip" % os.path.dirname(__file__))
+def source_tree_topdir():
+ '''return the top level directory (the one containing the source4 directory)'''
+ paths = [ "../../..", "../../../.." ]
+ for p in paths:
+ topdir = os.path.normpath(os.path.join(os.path.dirname(__file__), p))
+ if os.path.exists(os.path.join(topdir, 'source4')):
+ return topdir
+ raise RuntimeError("unable to find top level source directory")
+def in_source_tree():
+ '''return True if we are running from within the samba source tree'''
+ try:
+ topdir = source_tree_topdir()
+ except RuntimeError:
+ return False
+ return True
-# When running, in-tree, make sure bin/python is in the PYTHONPATH
-if in_source_tree():
- srcdir = "%s/../../.." % os.path.dirname(__file__)
- sys.path.append("%s/bin/python" % srcdir)
- default_ldb_modules_dir = "%s/bin/modules/ldb" % srcdir
-else:
- default_ldb_modules_dir = None
import ldb
if modules_dir is not None:
self.set_modules_dir(modules_dir)
- elif default_ldb_modules_dir is not None:
- self.set_modules_dir(default_ldb_modules_dir)
- elif lp is not None:
- self.set_modules_dir(os.path.join(lp.get("modules dir"), "ldb"))
+ else:
+ self.set_modules_dir(os.path.join(samba.param.modules_dir(), "ldb"))
if session_info is not None:
self.set_session_info(session_info)
${srcdir}/lib)
"""
if in_source_tree():
- sys.path.insert(0,
- os.path.join(os.path.dirname(__file__),
- "../../../../lib", location))
- __import__(modulename)
+ sys.path.insert(0, os.path.join(source_tree_topdir(), "lib", location))
+ sys.modules[modulename] = __import__(modulename)
else:
sys.modules[modulename] = __import__(
"samba.external.%s" % modulename, fromlist=["samba.external"])
-def force_bundled_package(packagename, location):
- """Forcibly use the bundled package.
-
- This will first unload the system module and then load the bundled one.
-
- :param packagename: The package name
- :param location: Location to add to sys.path (can be relative to
- ${srcdir}/lib)
- """
- for m in sys.modules.keys():
- if m.startswith("%s." % packagename):
- del sys.modules[m]
- import_bundled_package(packagename, location)
-
-
def ensure_external_module(modulename, location):
"""Add a location to sys.path if an external dependency can't be found.
nttime2unix = _glue.nttime2unix
unix2nttime = _glue.unix2nttime
generate_random_password = _glue.generate_random_password
+strcasecmp_m = _glue.strcasecmp_m
+strstr_m = _glue.strstr_m