python module.
__docformat__ = "restructuredText"
+
+def find_setup_dir():
+ """Find the setup directory used by provision."""
+ dirname = os.path.dirname(__file__)
+ if "/site-packages/" in dirname:
+ prefix = dirname[:dirname.index("/site-packages/")]
+ for suffix in ["share/setup", "share/samba/setup", "setup"]:
+ ret = os.path.join(prefix, suffix)
+ if os.path.isdir(ret):
+ return ret
+ # In source tree
+ ret = os.path.join(dirname, "../../../setup")
+ if os.path.isdir(ret):
+ return ret
+ raise Exception("Unable to find setup directory.")
+
+
DEFAULTSITE = "Default-First-Site-Name"
class InvalidNetbiosName(Exception):
from samba.auth import system_session
import samba.getopt as options
from samba import param
-from samba.provision import provision, FILL_FULL, FILL_NT4SYNC, FILL_DRS
+from samba.provision import provision, FILL_FULL, FILL_NT4SYNC, FILL_DRS, find_setup_dir
# how do we make this case insensitive??
setup_dir = opts.setupdir
if setup_dir is None:
- setup_dir = os.path.dirname(__file__)
+ setup_dir = find_setup_dir()
samdb_fill = FILL_FULL
if opts.blank:
from samba.auth import system_session
import samba.getopt as options
-from samba.provision import provision_backend
+from samba.provision import provision_backend, find_setup_dir
parser = optparse.OptionParser("provision [options]")
sambaopts = options.SambaOptions(parser)
setup_dir = opts.setupdir
if setup_dir is None:
- setup_dir = os.path.dirname(__file__)
+ setup_dir = find_setup_dir()
provision_backend(setup_dir=setup_dir, message=message, smbconf=smbconf, targetdir=opts.targetdir,
realm=opts.realm, domain=opts.domain,
smbconf = os.path.join(libdir, "smb.conf")
samba3 = Samba3(libdir, smbconf)
+from samba.provision import find_setup_dir
from samba.upgrade import upgrade_provision
message("Provisioning\n")
setup_dir = opts.setupdir
if setup_dir is None:
- setup_dir = os.path.dirname(__file__)
+ setup_dir = find_setup_dir()
lp = sambaopts.get_loadparm()
smbconf = lp.configfile