s4-python: Install external packages to a different directory but import into
authorJelmer Vernooij <jelmer@samba.org>
Thu, 1 Apr 2010 13:20:25 +0000 (15:20 +0200)
committerJelmer Vernooij <jelmer@samba.org>
Thu, 1 Apr 2010 13:33:07 +0000 (15:33 +0200)
the normal namespace when the system doesn't have it available.

source4/script/installmisc.sh
source4/scripting/bin/samba_dnsupdate
source4/scripting/python/samba/__init__.py

index 6a53b988f5ce3593b941cb1c495bb15d3c41f49e..5538681c52641f9e4e29795f735116a8718d5f40 100755 (executable)
@@ -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"
index 8a7b8a4e344e8180032c78dce8a0b39f90bbd37c..b3956aa2c499ff80b01897db85727f851e8aaf93 100755 (executable)
@@ -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
index 87753b5a1dd9cfa8ba5e87a22985f7dbc6c06afc..50ecde282978a128db8cf0dd8e4bfb71fb3ec21e 100644 (file)
@@ -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