summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2010-04-01 15:20:25 +0200
committerJelmer Vernooij <jelmer@samba.org>2010-04-01 15:33:07 +0200
commit84891b048d577e52da91c64d310f7bafa115d015 (patch)
tree959c0794c00b484553ac876e21ee55cc3fa27d7c
parent64c564291d9ce60d934273aaac15150386d22127 (diff)
downloadsamba-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.
-rwxr-xr-xsource4/script/installmisc.sh7
-rwxr-xr-xsource4/scripting/bin/samba_dnsupdate2
-rw-r--r--source4/scripting/python/samba/__init__.py13
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