From c87332950043471e52b924f7498b63982ec4302c Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Mon, 29 Mar 2010 16:21:26 +0200 Subject: [PATCH] s4-python: Simplify mechanism for finding included Python modules. --- source4/scripting/bin/samba_dnsupdate | 4 ++-- source4/scripting/python/samba/__init__.py | 15 +++++++++++++++ source4/scripting/python/samba/external.py | 31 ------------------------------ 3 files changed, 17 insertions(+), 33 deletions(-) delete mode 100644 source4/scripting/python/samba/external.py diff --git a/source4/scripting/bin/samba_dnsupdate b/source4/scripting/bin/samba_dnsupdate index fab112e2bd9..8a7b8a4e344 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 24bb45a003f..87753b5a1dd 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 40d13fd7e5d..00000000000 --- 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 . -# - -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 -- 2.11.4.GIT