From 53b59aa2cf78d465f471916c7fae60b9f212840b Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Wed, 11 Feb 2009 18:44:57 +0100 Subject: [PATCH] Use convenience function for finding setup_dir based on location of python module. --- source4/scripting/python/samba/provision.py | 17 +++++++++++++++++ source4/setup/provision | 4 ++-- source4/setup/provision-backend | 4 ++-- source4/setup/upgrade | 3 ++- 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/source4/scripting/python/samba/provision.py b/source4/scripting/python/samba/provision.py index 1d7011d305c..d77b487512a 100644 --- a/source4/scripting/python/samba/provision.py +++ b/source4/scripting/python/samba/provision.py @@ -45,6 +45,23 @@ from ldb import SCOPE_SUBTREE, SCOPE_ONELEVEL, SCOPE_BASE, LdbError, \ __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): diff --git a/source4/setup/provision b/source4/setup/provision index eab5d09424d..5cb851ceb79 100755 --- a/source4/setup/provision +++ b/source4/setup/provision @@ -35,7 +35,7 @@ from samba.credentials import DONT_USE_KERBEROS 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?? @@ -168,7 +168,7 @@ creds.set_kerberos_state(DONT_USE_KERBEROS) 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: diff --git a/source4/setup/provision-backend b/source4/setup/provision-backend index e4e2d560203..eca209cb187 100755 --- a/source4/setup/provision-backend +++ b/source4/setup/provision-backend @@ -34,7 +34,7 @@ from samba import param 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) @@ -94,7 +94,7 @@ else: 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, diff --git a/source4/setup/upgrade b/source4/setup/upgrade index 9c1a0cfce81..3d1316949f7 100755 --- a/source4/setup/upgrade +++ b/source4/setup/upgrade @@ -65,13 +65,14 @@ else: 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 -- 2.11.4.GIT