summaryrefslogtreecommitdiff
path: root/source4/scripting
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2010-03-29 16:21:26 +0200
committerJelmer Vernooij <jelmer@samba.org>2010-03-29 18:05:29 +0200
commitc87332950043471e52b924f7498b63982ec4302c (patch)
tree017a7dd8364d63bf17d9b746695f6cf208528243 /source4/scripting
parent4bbc3ff037026c72f3249f59c1b5af69a6ad6d69 (diff)
downloadsamba-c87332950043471e52b924f7498b63982ec4302c.tar.gz
samba-c87332950043471e52b924f7498b63982ec4302c.tar.bz2
samba-c87332950043471e52b924f7498b63982ec4302c.zip
s4-python: Simplify mechanism for finding included Python modules.
Diffstat (limited to 'source4/scripting')
-rwxr-xr-xsource4/scripting/bin/samba_dnsupdate4
-rw-r--r--source4/scripting/python/samba/__init__.py15
-rw-r--r--source4/scripting/python/samba/external.py31
3 files changed, 17 insertions, 33 deletions
diff --git a/source4/scripting/bin/samba_dnsupdate b/source4/scripting/bin/samba_dnsupdate
index fab112e2bd..8a7b8a4e34 100755
--- a/source4/scripting/bin/samba_dnsupdate
+++ b/source4/scripting/bin/samba_dnsupdate
@@ -37,9 +37,9 @@ from ldb import SCOPE_BASE
from samba import glue
from samba.auth import system_session
from samba.samdb import SamDB
-import samba.external
-resolver = samba.external.dns_resolver()
+samba.ensure_external_module("dns.resolver", "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 24bb45a003..87753b5a1d 100644
--- a/source4/scripting/python/samba/__init__.py
+++ b/source4/scripting/python/samba/__init__.py
@@ -392,6 +392,21 @@ def valid_netbios_name(name):
return True
+def ensure_external_module(modulename, location):
+ """Add a location to sys.path if an external dependency can't be found.
+
+ :param modulename: Module name to import
+ :param location: Location to add to sys.path (can be relative to
+ ${srcdir}/lib
+ """
+ try:
+ __import__(modulename)
+ except ImportError:
+ sys.path.insert(0,
+ os.path.join(os.path.dirname(__file__),
+ "../../../../lib", location))
+ __import__(modulename)
+
version = glue.version
# "userAccountControl" flags
diff --git a/source4/scripting/python/samba/external.py b/source4/scripting/python/samba/external.py
deleted file mode 100644
index 40d13fd7e5..0000000000
--- a/source4/scripting/python/samba/external.py
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/usr/bin/python
-
-# Unix SMB/CIFS implementation.
-# Copyright (C) Andrew Tridgell 2010
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-#
-
-import os, sys
-
-def dns_resolver():
- '''try and import the dns.resolver library, and if it fails
- then use a local copy from the external directory'''
-
- try:
- import dns.resolver as dns
- except ImportError:
- sys.path.insert(0, os.path.join(os.path.dirname(__file__), "../../../../lib/dnspython"))
- import dns.resolver as dns
- return dns