diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2010-04-01 15:20:25 +0200 |
---|---|---|
committer | Jelmer Vernooij <jelmer@samba.org> | 2010-04-01 15:33:07 +0200 |
commit | 84891b048d577e52da91c64d310f7bafa115d015 (patch) | |
tree | 959c0794c00b484553ac876e21ee55cc3fa27d7c /source4 | |
parent | 64c564291d9ce60d934273aaac15150386d22127 (diff) | |
download | samba-84891b048d577e52da91c64d310f7bafa115d015.tar.gz samba-84891b048d577e52da91c64d310f7bafa115d015.tar.bz2 samba-84891b048d577e52da91c64d310f7bafa115d015.zip |
s4-python: Install external packages to a different directory but import into
the normal namespace when the system doesn't have it available.
Diffstat (limited to 'source4')
-rwxr-xr-x | source4/script/installmisc.sh | 7 | ||||
-rwxr-xr-x | source4/scripting/bin/samba_dnsupdate | 2 | ||||
-rw-r--r-- | source4/scripting/python/samba/__init__.py | 13 |
3 files changed, 14 insertions, 8 deletions
diff --git a/source4/script/installmisc.sh b/source4/script/installmisc.sh index 6a53b988f5..5538681c52 100755 --- a/source4/script/installmisc.sh +++ b/source4/script/installmisc.sh @@ -83,12 +83,13 @@ cp setup/provision.smb.conf.standalone $SETUPDIR || exit 1 echo "Installing external python libraries" mkdir -p $DESTDIR$PYTHONDIR || exit 1 -for p in $($PYTHON scripting/python/samba_external/missing.py); +MISSING="$($PYTHON scripting/python/samba_external/missing.py)" +for p in $MISSING do package=`basename $p` echo "Installing missing python package $package" - mkdir -p $DESTDIR$PYTHONDIR/$package - cp -r ../lib/$p/* $DESTDIR$PYTHONDIR/$package/ || exit 1 + mkdir -p $DESTDIR$PYTHONDIR/samba/external/$package + cp -r ../lib/$p/* $DESTDIR$PYTHONDIR/samba/external/$package/ || exit 1 done echo "Installing stuff in $PRIVATEDIR" diff --git a/source4/scripting/bin/samba_dnsupdate b/source4/scripting/bin/samba_dnsupdate index 8a7b8a4e34..b3956aa2c4 100755 --- a/source4/scripting/bin/samba_dnsupdate +++ b/source4/scripting/bin/samba_dnsupdate @@ -38,7 +38,7 @@ from samba import glue from samba.auth import system_session from samba.samdb import SamDB -samba.ensure_external_module("dns.resolver", "dnspython") +samba.ensure_external_module("dns", "dnspython") import dns.resolver as resolver default_ttl = 900 diff --git a/source4/scripting/python/samba/__init__.py b/source4/scripting/python/samba/__init__.py index 87753b5a1d..50ecde2829 100644 --- a/source4/scripting/python/samba/__init__.py +++ b/source4/scripting/python/samba/__init__.py @@ -402,10 +402,15 @@ def ensure_external_module(modulename, location): try: __import__(modulename) except ImportError: - sys.path.insert(0, - os.path.join(os.path.dirname(__file__), - "../../../../lib", location)) - __import__(modulename) + import sys + if _in_source_tree(): + sys.path.insert(0, + os.path.join(os.path.dirname(__file__), + "../../../../lib", location)) + __import__(modulename) + else: + sys.modules[modulename] = __import__( + "samba.external.%s" % modulename, fromlist=["samba.external"]) version = glue.version |