1
0
mirror of https://github.com/samba-team/samba.git synced 2025-08-04 08:22:08 +03:00

s4-python: Install external packages to a different directory but import into

the normal namespace when the system doesn't have it available.
This commit is contained in:
Jelmer Vernooij
2010-04-01 15:20:25 +02:00
parent 64c564291d
commit 84891b048d
3 changed files with 14 additions and 8 deletions

View File

@ -83,12 +83,13 @@ cp setup/provision.smb.conf.standalone $SETUPDIR || exit 1
echo "Installing external python libraries" echo "Installing external python libraries"
mkdir -p $DESTDIR$PYTHONDIR || exit 1 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 do
package=`basename $p` package=`basename $p`
echo "Installing missing python package $package" echo "Installing missing python package $package"
mkdir -p $DESTDIR$PYTHONDIR/$package mkdir -p $DESTDIR$PYTHONDIR/samba/external/$package
cp -r ../lib/$p/* $DESTDIR$PYTHONDIR/$package/ || exit 1 cp -r ../lib/$p/* $DESTDIR$PYTHONDIR/samba/external/$package/ || exit 1
done done
echo "Installing stuff in $PRIVATEDIR" echo "Installing stuff in $PRIVATEDIR"

View File

@ -38,7 +38,7 @@ from samba import glue
from samba.auth import system_session from samba.auth import system_session
from samba.samdb import SamDB from samba.samdb import SamDB
samba.ensure_external_module("dns.resolver", "dnspython") samba.ensure_external_module("dns", "dnspython")
import dns.resolver as resolver import dns.resolver as resolver
default_ttl = 900 default_ttl = 900

View File

@ -402,10 +402,15 @@ def ensure_external_module(modulename, location):
try: try:
__import__(modulename) __import__(modulename)
except ImportError: except ImportError:
import sys
if _in_source_tree():
sys.path.insert(0, sys.path.insert(0,
os.path.join(os.path.dirname(__file__), os.path.join(os.path.dirname(__file__),
"../../../../lib", location)) "../../../../lib", location))
__import__(modulename) __import__(modulename)
else:
sys.modules[modulename] = __import__(
"samba.external.%s" % modulename, fromlist=["samba.external"])
version = glue.version version = glue.version