The branch, master has been updated via fb39c6f Move dnspython to third_party. via 776424e Add samba.ensure_third_party_module() function, loading external python modules from third_party/ if the system doesn't provide them. via 0de6799 s3-keytab: fix keytab array NULL termination. from 2d44498 s3:smb2_break: First test for NT_STATUS_INVALID_OPLOCK_PROTOCOL, then for in_oplock_level being reasonable
https://git.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit fb39c6fb5edf70097ee31e1b8638838dfc081892 Author: Jelmer Vernooij <jel...@samba.org> Date: Fri Nov 7 20:09:10 2014 +0000 Move dnspython to third_party. Signed-off-by: Jelmer Vernooij <jel...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> Autobuild-User(master): Jeremy Allison <j...@samba.org> Autobuild-Date(master): Wed Nov 12 22:40:53 CET 2014 on sn-devel-104 commit 776424e99113a3ffc6679c583093e2892304a7fd Author: Jelmer Vernooij <jel...@samba.org> Date: Fri Oct 17 00:48:20 2014 -0700 Add samba.ensure_third_party_module() function, loading external python modules from third_party/ if the system doesn't provide them. Signed-off-by: Jelmer Vernooij <jel...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 0de6799996955fbf8e19ace8c4b7b61f5a262cb5 Author: Matt Rogers <mrog...@redhat.com> Date: Wed Nov 12 17:21:05 2014 +0100 s3-keytab: fix keytab array NULL termination. Signed-off-by: Matt Rogers <mrog...@redhat.com> Reviewed-by: Guenther Deschner <g...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> ----------------------------------------------------------------------- Summary of changes: lib/wscript_build | 1 - python/samba/__init__.py | 35 ++++++++++++++++++---- source3/libads/kerberos_keytab.c | 3 +- source4/scripting/bin/samba_dnsupdate | 2 +- source4/scripting/bin/samba_upgradedns | 2 +- {lib => third_party}/dnspython/.gitignore | 0 {lib => third_party}/dnspython/ChangeLog | 0 {lib => third_party}/dnspython/LICENSE | 0 {lib => third_party}/dnspython/MANIFEST.in | 0 {lib => third_party}/dnspython/Makefile | 0 {lib => third_party}/dnspython/README | 0 {lib => third_party}/dnspython/TODO | 0 {lib => third_party}/dnspython/dns/__init__.py | 0 {lib => third_party}/dnspython/dns/dnssec.py | 0 {lib => third_party}/dnspython/dns/e164.py | 0 {lib => third_party}/dnspython/dns/edns.py | 0 {lib => third_party}/dnspython/dns/entropy.py | 0 {lib => third_party}/dnspython/dns/exception.py | 0 {lib => third_party}/dnspython/dns/flags.py | 0 {lib => third_party}/dnspython/dns/hash.py | 0 {lib => third_party}/dnspython/dns/inet.py | 0 {lib => third_party}/dnspython/dns/ipv4.py | 0 {lib => third_party}/dnspython/dns/ipv6.py | 0 {lib => third_party}/dnspython/dns/message.py | 0 {lib => third_party}/dnspython/dns/name.py | 0 {lib => third_party}/dnspython/dns/namedict.py | 0 {lib => third_party}/dnspython/dns/node.py | 0 {lib => third_party}/dnspython/dns/opcode.py | 0 {lib => third_party}/dnspython/dns/query.py | 0 {lib => third_party}/dnspython/dns/rcode.py | 0 {lib => third_party}/dnspython/dns/rdata.py | 0 {lib => third_party}/dnspython/dns/rdataclass.py | 0 {lib => third_party}/dnspython/dns/rdataset.py | 0 {lib => third_party}/dnspython/dns/rdatatype.py | 0 .../dnspython/dns/rdtypes/ANY/AFSDB.py | 0 .../dnspython/dns/rdtypes/ANY/CERT.py | 0 .../dnspython/dns/rdtypes/ANY/CNAME.py | 0 .../dnspython/dns/rdtypes/ANY/DLV.py | 0 .../dnspython/dns/rdtypes/ANY/DNAME.py | 0 .../dnspython/dns/rdtypes/ANY/DNSKEY.py | 0 .../dnspython/dns/rdtypes/ANY/DS.py | 0 .../dnspython/dns/rdtypes/ANY/GPOS.py | 0 .../dnspython/dns/rdtypes/ANY/HINFO.py | 0 .../dnspython/dns/rdtypes/ANY/HIP.py | 0 .../dnspython/dns/rdtypes/ANY/ISDN.py | 0 .../dnspython/dns/rdtypes/ANY/LOC.py | 0 .../dnspython/dns/rdtypes/ANY/MX.py | 0 .../dnspython/dns/rdtypes/ANY/NS.py | 0 .../dnspython/dns/rdtypes/ANY/NSEC.py | 0 .../dnspython/dns/rdtypes/ANY/NSEC3.py | 0 .../dnspython/dns/rdtypes/ANY/NSEC3PARAM.py | 0 .../dnspython/dns/rdtypes/ANY/PTR.py | 0 .../dnspython/dns/rdtypes/ANY/RP.py | 0 .../dnspython/dns/rdtypes/ANY/RRSIG.py | 0 .../dnspython/dns/rdtypes/ANY/RT.py | 0 .../dnspython/dns/rdtypes/ANY/SOA.py | 0 .../dnspython/dns/rdtypes/ANY/SPF.py | 0 .../dnspython/dns/rdtypes/ANY/SSHFP.py | 0 .../dnspython/dns/rdtypes/ANY/TXT.py | 0 .../dnspython/dns/rdtypes/ANY/X25.py | 0 .../dnspython/dns/rdtypes/ANY/__init__.py | 0 {lib => third_party}/dnspython/dns/rdtypes/IN/A.py | 0 .../dnspython/dns/rdtypes/IN/AAAA.py | 0 .../dnspython/dns/rdtypes/IN/APL.py | 0 .../dnspython/dns/rdtypes/IN/DHCID.py | 0 .../dnspython/dns/rdtypes/IN/IPSECKEY.py | 0 .../dnspython/dns/rdtypes/IN/KX.py | 0 .../dnspython/dns/rdtypes/IN/NAPTR.py | 0 .../dnspython/dns/rdtypes/IN/NSAP.py | 0 .../dnspython/dns/rdtypes/IN/NSAP_PTR.py | 0 .../dnspython/dns/rdtypes/IN/PX.py | 0 .../dnspython/dns/rdtypes/IN/SRV.py | 0 .../dnspython/dns/rdtypes/IN/WKS.py | 0 .../dnspython/dns/rdtypes/IN/__init__.py | 0 .../dnspython/dns/rdtypes/__init__.py | 0 .../dnspython/dns/rdtypes/dsbase.py | 0 .../dnspython/dns/rdtypes/mxbase.py | 0 .../dnspython/dns/rdtypes/nsbase.py | 0 .../dnspython/dns/rdtypes/txtbase.py | 0 {lib => third_party}/dnspython/dns/renderer.py | 0 {lib => third_party}/dnspython/dns/resolver.py | 0 {lib => third_party}/dnspython/dns/reversename.py | 0 {lib => third_party}/dnspython/dns/rrset.py | 0 {lib => third_party}/dnspython/dns/set.py | 0 {lib => third_party}/dnspython/dns/tokenizer.py | 0 {lib => third_party}/dnspython/dns/tsig.py | 0 {lib => third_party}/dnspython/dns/tsigkeyring.py | 0 {lib => third_party}/dnspython/dns/ttl.py | 0 {lib => third_party}/dnspython/dns/update.py | 0 {lib => third_party}/dnspython/dns/version.py | 0 {lib => third_party}/dnspython/dns/wiredata.py | 0 {lib => third_party}/dnspython/dns/zone.py | 0 {lib => third_party}/dnspython/examples/ddns.py | 0 {lib => third_party}/dnspython/examples/e164.py | 0 {lib => third_party}/dnspython/examples/mx.py | 0 {lib => third_party}/dnspython/examples/name.py | 0 {lib => third_party}/dnspython/examples/reverse.py | 0 .../dnspython/examples/reverse_name.py | 0 {lib => third_party}/dnspython/examples/xfr.py | 0 .../dnspython/examples/zonediff.py | 0 {lib => third_party}/dnspython/setup.py | 0 {lib => third_party}/dnspython/tests/Makefile | 0 {lib => third_party}/dnspython/tests/bugs.py | 0 {lib => third_party}/dnspython/tests/dnssec.py | 0 {lib => third_party}/dnspython/tests/example | 0 {lib => third_party}/dnspython/tests/example1.good | 0 {lib => third_party}/dnspython/tests/example2.good | 0 {lib => third_party}/dnspython/tests/flags.py | 0 {lib => third_party}/dnspython/tests/message.py | 0 {lib => third_party}/dnspython/tests/name.py | 0 {lib => third_party}/dnspython/tests/namedict.py | 0 {lib => third_party}/dnspython/tests/ntoaaton.py | 0 .../dnspython/tests/rdtypeandclass.py | 0 {lib => third_party}/dnspython/tests/resolver.py | 0 {lib => third_party}/dnspython/tests/rrset.py | 0 {lib => third_party}/dnspython/tests/set.py | 0 {lib => third_party}/dnspython/tests/tokenizer.py | 0 {lib => third_party}/dnspython/tests/update.py | 0 {lib => third_party}/dnspython/tests/zone.py | 0 {lib => third_party}/dnspython/util/COPYRIGHT | 0 {lib => third_party}/dnspython/util/copyrights | 0 third_party/wscript_build | 28 +++++++++++++++++ wscript_build | 3 +- 123 files changed, 62 insertions(+), 12 deletions(-) rename {lib => third_party}/dnspython/.gitignore (100%) rename {lib => third_party}/dnspython/ChangeLog (100%) rename {lib => third_party}/dnspython/LICENSE (100%) rename {lib => third_party}/dnspython/MANIFEST.in (100%) rename {lib => third_party}/dnspython/Makefile (100%) rename {lib => third_party}/dnspython/README (100%) rename {lib => third_party}/dnspython/TODO (100%) rename {lib => third_party}/dnspython/dns/__init__.py (100%) rename {lib => third_party}/dnspython/dns/dnssec.py (100%) rename {lib => third_party}/dnspython/dns/e164.py (100%) rename {lib => third_party}/dnspython/dns/edns.py (100%) rename {lib => third_party}/dnspython/dns/entropy.py (100%) rename {lib => third_party}/dnspython/dns/exception.py (100%) rename {lib => third_party}/dnspython/dns/flags.py (100%) rename {lib => third_party}/dnspython/dns/hash.py (100%) rename {lib => third_party}/dnspython/dns/inet.py (100%) rename {lib => third_party}/dnspython/dns/ipv4.py (100%) rename {lib => third_party}/dnspython/dns/ipv6.py (100%) rename {lib => third_party}/dnspython/dns/message.py (100%) rename {lib => third_party}/dnspython/dns/name.py (100%) rename {lib => third_party}/dnspython/dns/namedict.py (100%) rename {lib => third_party}/dnspython/dns/node.py (100%) rename {lib => third_party}/dnspython/dns/opcode.py (100%) rename {lib => third_party}/dnspython/dns/query.py (100%) rename {lib => third_party}/dnspython/dns/rcode.py (100%) rename {lib => third_party}/dnspython/dns/rdata.py (100%) rename {lib => third_party}/dnspython/dns/rdataclass.py (100%) rename {lib => third_party}/dnspython/dns/rdataset.py (100%) rename {lib => third_party}/dnspython/dns/rdatatype.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/ANY/AFSDB.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/ANY/CERT.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/ANY/CNAME.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/ANY/DLV.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/ANY/DNAME.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/ANY/DNSKEY.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/ANY/DS.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/ANY/GPOS.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/ANY/HINFO.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/ANY/HIP.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/ANY/ISDN.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/ANY/LOC.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/ANY/MX.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/ANY/NS.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/ANY/NSEC.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/ANY/NSEC3.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/ANY/NSEC3PARAM.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/ANY/PTR.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/ANY/RP.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/ANY/RRSIG.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/ANY/RT.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/ANY/SOA.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/ANY/SPF.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/ANY/SSHFP.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/ANY/TXT.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/ANY/X25.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/ANY/__init__.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/IN/A.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/IN/AAAA.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/IN/APL.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/IN/DHCID.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/IN/IPSECKEY.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/IN/KX.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/IN/NAPTR.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/IN/NSAP.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/IN/NSAP_PTR.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/IN/PX.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/IN/SRV.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/IN/WKS.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/IN/__init__.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/__init__.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/dsbase.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/mxbase.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/nsbase.py (100%) rename {lib => third_party}/dnspython/dns/rdtypes/txtbase.py (100%) rename {lib => third_party}/dnspython/dns/renderer.py (100%) rename {lib => third_party}/dnspython/dns/resolver.py (100%) rename {lib => third_party}/dnspython/dns/reversename.py (100%) rename {lib => third_party}/dnspython/dns/rrset.py (100%) rename {lib => third_party}/dnspython/dns/set.py (100%) rename {lib => third_party}/dnspython/dns/tokenizer.py (100%) rename {lib => third_party}/dnspython/dns/tsig.py (100%) rename {lib => third_party}/dnspython/dns/tsigkeyring.py (100%) rename {lib => third_party}/dnspython/dns/ttl.py (100%) rename {lib => third_party}/dnspython/dns/update.py (100%) rename {lib => third_party}/dnspython/dns/version.py (100%) rename {lib => third_party}/dnspython/dns/wiredata.py (100%) rename {lib => third_party}/dnspython/dns/zone.py (100%) rename {lib => third_party}/dnspython/examples/ddns.py (100%) rename {lib => third_party}/dnspython/examples/e164.py (100%) rename {lib => third_party}/dnspython/examples/mx.py (100%) rename {lib => third_party}/dnspython/examples/name.py (100%) rename {lib => third_party}/dnspython/examples/reverse.py (100%) rename {lib => third_party}/dnspython/examples/reverse_name.py (100%) rename {lib => third_party}/dnspython/examples/xfr.py (100%) rename {lib => third_party}/dnspython/examples/zonediff.py (100%) rename {lib => third_party}/dnspython/setup.py (100%) rename {lib => third_party}/dnspython/tests/Makefile (100%) rename {lib => third_party}/dnspython/tests/bugs.py (100%) rename {lib => third_party}/dnspython/tests/dnssec.py (100%) rename {lib => third_party}/dnspython/tests/example (100%) rename {lib => third_party}/dnspython/tests/example1.good (100%) rename {lib => third_party}/dnspython/tests/example2.good (100%) rename {lib => third_party}/dnspython/tests/flags.py (100%) rename {lib => third_party}/dnspython/tests/message.py (100%) rename {lib => third_party}/dnspython/tests/name.py (100%) rename {lib => third_party}/dnspython/tests/namedict.py (100%) rename {lib => third_party}/dnspython/tests/ntoaaton.py (100%) rename {lib => third_party}/dnspython/tests/rdtypeandclass.py (100%) rename {lib => third_party}/dnspython/tests/resolver.py (100%) rename {lib => third_party}/dnspython/tests/rrset.py (100%) rename {lib => third_party}/dnspython/tests/set.py (100%) rename {lib => third_party}/dnspython/tests/tokenizer.py (100%) rename {lib => third_party}/dnspython/tests/update.py (100%) rename {lib => third_party}/dnspython/tests/zone.py (100%) rename {lib => third_party}/dnspython/util/COPYRIGHT (100%) rename {lib => third_party}/dnspython/util/copyrights (100%) create mode 100644 third_party/wscript_build Changeset truncated at 500 lines: diff --git a/lib/wscript_build b/lib/wscript_build index 97c3cfa..c7bf621 100644 --- a/lib/wscript_build +++ b/lib/wscript_build @@ -4,7 +4,6 @@ import os, Options # work out what python external libraries we need to install external_libs = { - "dns.resolver": "dnspython/dns", "subunit": "subunit/python/subunit", "testtools": "testtools/testtools"} diff --git a/python/samba/__init__.py b/python/samba/__init__.py index cd2a309..0cbdec7 100644 --- a/python/samba/__init__.py +++ b/python/samba/__init__.py @@ -314,7 +314,8 @@ def valid_netbios_name(name): return True -def import_bundled_package(modulename, location): +def import_bundled_package(modulename, location, source_tree_container, + namespace): """Import the bundled version of a package. :note: This should only be called if the system version of the package @@ -322,14 +323,35 @@ def import_bundled_package(modulename, location): :param modulename: Module name to import :param location: Location to add to sys.path (can be relative to - ${srcdir}/lib) + ${srcdir}/${source_tree_container}) + :param source_tree_container: Directory under source root that + contains the bundled third party modules. + :param namespace: Namespace to import module from, when not in source tree """ if in_source_tree(): - sys.path.insert(0, os.path.join(source_tree_topdir(), "lib", location)) + extra_path = os.path.join(source_tree_topdir(), source_tree_container, + location) + if not extra_path in sys.path: + sys.path.insert(0, extra_path) sys.modules[modulename] = __import__(modulename) else: sys.modules[modulename] = __import__( - "samba.external.%s" % modulename, fromlist=["samba.external"]) + "%s.%s" % (namespace, modulename), fromlist=[namespace]) + + +def ensure_third_party_module(modulename, location): + """Add a location to sys.path if a third party dependency can't be found. + + :param modulename: Module name to import + :param location: Location to add to sys.path (can be relative to + ${srcdir}/third_party) + """ + try: + __import__(modulename) + except ImportError: + import_bundled_package(modulename, location, + source_tree_container="third_party", + namespace="samba.third_party") def ensure_external_module(modulename, location): @@ -339,10 +361,13 @@ def ensure_external_module(modulename, location): :param location: Location to add to sys.path (can be relative to ${srcdir}/lib) """ + # This is deprecated - please use ensure_third_party_module for + # new modules instead, and put them in third_party/. try: __import__(modulename) except ImportError: - import_bundled_package(modulename, location) + import_bundled_package(modulename, location, + source_tree_container="lib", namespace="samba.external") def dn_from_dns_name(dnsdomain): diff --git a/source3/libads/kerberos_keytab.c b/source3/libads/kerberos_keytab.c index 43c755c..ae3d80e39 100644 --- a/source3/libads/kerberos_keytab.c +++ b/source3/libads/kerberos_keytab.c @@ -667,14 +667,13 @@ int ads_keytab_create_default(ADS_STRUCT *ads) goto done; } - oldEntries = talloc_array(frame, char *, found); + oldEntries = talloc_zero_array(frame, char *, found + 1); if (!oldEntries) { DEBUG(1, (__location__ ": Failed to allocate space to store " "the old keytab entries (talloc failed?).\n")); ret = -1; goto done; } - memset(oldEntries, '\0', found * sizeof(char *)); ret = krb5_kt_start_seq_get(context, keytab, &cursor); if (ret == KRB5_KT_END || ret == ENOENT) { diff --git a/source4/scripting/bin/samba_dnsupdate b/source4/scripting/bin/samba_dnsupdate index 181e67f..c2ee3ec 100755 --- a/source4/scripting/bin/samba_dnsupdate +++ b/source4/scripting/bin/samba_dnsupdate @@ -47,7 +47,7 @@ from samba.auth import system_session from samba.samdb import SamDB from samba.dcerpc import netlogon, winbind -samba.ensure_external_module("dns", "dnspython") +samba.ensure_third_party_module("dns", "dnspython") import dns.resolver import dns.exception diff --git a/source4/scripting/bin/samba_upgradedns b/source4/scripting/bin/samba_upgradedns index 4d49770..689c9a4 100755 --- a/source4/scripting/bin/samba_upgradedns +++ b/source4/scripting/bin/samba_upgradedns @@ -67,7 +67,7 @@ from samba.provision.sambadns import ( create_named_txt ) from samba.dcerpc import security -samba.ensure_external_module("dns", "dnspython") +samba.ensure_third_party_module("dns", "dnspython") import dns.zone, dns.rdatatype __docformat__ = 'restructuredText' diff --git a/lib/dnspython/.gitignore b/third_party/dnspython/.gitignore similarity index 100% rename from lib/dnspython/.gitignore rename to third_party/dnspython/.gitignore diff --git a/lib/dnspython/ChangeLog b/third_party/dnspython/ChangeLog similarity index 100% rename from lib/dnspython/ChangeLog rename to third_party/dnspython/ChangeLog diff --git a/lib/dnspython/LICENSE b/third_party/dnspython/LICENSE similarity index 100% rename from lib/dnspython/LICENSE rename to third_party/dnspython/LICENSE diff --git a/lib/dnspython/MANIFEST.in b/third_party/dnspython/MANIFEST.in similarity index 100% rename from lib/dnspython/MANIFEST.in rename to third_party/dnspython/MANIFEST.in diff --git a/lib/dnspython/Makefile b/third_party/dnspython/Makefile similarity index 100% rename from lib/dnspython/Makefile rename to third_party/dnspython/Makefile diff --git a/lib/dnspython/README b/third_party/dnspython/README similarity index 100% rename from lib/dnspython/README rename to third_party/dnspython/README diff --git a/lib/dnspython/TODO b/third_party/dnspython/TODO similarity index 100% rename from lib/dnspython/TODO rename to third_party/dnspython/TODO diff --git a/lib/dnspython/dns/__init__.py b/third_party/dnspython/dns/__init__.py similarity index 100% rename from lib/dnspython/dns/__init__.py rename to third_party/dnspython/dns/__init__.py diff --git a/lib/dnspython/dns/dnssec.py b/third_party/dnspython/dns/dnssec.py similarity index 100% rename from lib/dnspython/dns/dnssec.py rename to third_party/dnspython/dns/dnssec.py diff --git a/lib/dnspython/dns/e164.py b/third_party/dnspython/dns/e164.py similarity index 100% rename from lib/dnspython/dns/e164.py rename to third_party/dnspython/dns/e164.py diff --git a/lib/dnspython/dns/edns.py b/third_party/dnspython/dns/edns.py similarity index 100% rename from lib/dnspython/dns/edns.py rename to third_party/dnspython/dns/edns.py diff --git a/lib/dnspython/dns/entropy.py b/third_party/dnspython/dns/entropy.py similarity index 100% rename from lib/dnspython/dns/entropy.py rename to third_party/dnspython/dns/entropy.py diff --git a/lib/dnspython/dns/exception.py b/third_party/dnspython/dns/exception.py similarity index 100% rename from lib/dnspython/dns/exception.py rename to third_party/dnspython/dns/exception.py diff --git a/lib/dnspython/dns/flags.py b/third_party/dnspython/dns/flags.py similarity index 100% rename from lib/dnspython/dns/flags.py rename to third_party/dnspython/dns/flags.py diff --git a/lib/dnspython/dns/hash.py b/third_party/dnspython/dns/hash.py similarity index 100% rename from lib/dnspython/dns/hash.py rename to third_party/dnspython/dns/hash.py diff --git a/lib/dnspython/dns/inet.py b/third_party/dnspython/dns/inet.py similarity index 100% rename from lib/dnspython/dns/inet.py rename to third_party/dnspython/dns/inet.py diff --git a/lib/dnspython/dns/ipv4.py b/third_party/dnspython/dns/ipv4.py similarity index 100% rename from lib/dnspython/dns/ipv4.py rename to third_party/dnspython/dns/ipv4.py diff --git a/lib/dnspython/dns/ipv6.py b/third_party/dnspython/dns/ipv6.py similarity index 100% rename from lib/dnspython/dns/ipv6.py rename to third_party/dnspython/dns/ipv6.py diff --git a/lib/dnspython/dns/message.py b/third_party/dnspython/dns/message.py similarity index 100% rename from lib/dnspython/dns/message.py rename to third_party/dnspython/dns/message.py diff --git a/lib/dnspython/dns/name.py b/third_party/dnspython/dns/name.py similarity index 100% rename from lib/dnspython/dns/name.py rename to third_party/dnspython/dns/name.py diff --git a/lib/dnspython/dns/namedict.py b/third_party/dnspython/dns/namedict.py similarity index 100% rename from lib/dnspython/dns/namedict.py rename to third_party/dnspython/dns/namedict.py diff --git a/lib/dnspython/dns/node.py b/third_party/dnspython/dns/node.py similarity index 100% rename from lib/dnspython/dns/node.py rename to third_party/dnspython/dns/node.py diff --git a/lib/dnspython/dns/opcode.py b/third_party/dnspython/dns/opcode.py similarity index 100% rename from lib/dnspython/dns/opcode.py rename to third_party/dnspython/dns/opcode.py diff --git a/lib/dnspython/dns/query.py b/third_party/dnspython/dns/query.py similarity index 100% rename from lib/dnspython/dns/query.py rename to third_party/dnspython/dns/query.py diff --git a/lib/dnspython/dns/rcode.py b/third_party/dnspython/dns/rcode.py similarity index 100% rename from lib/dnspython/dns/rcode.py rename to third_party/dnspython/dns/rcode.py diff --git a/lib/dnspython/dns/rdata.py b/third_party/dnspython/dns/rdata.py similarity index 100% rename from lib/dnspython/dns/rdata.py rename to third_party/dnspython/dns/rdata.py diff --git a/lib/dnspython/dns/rdataclass.py b/third_party/dnspython/dns/rdataclass.py similarity index 100% rename from lib/dnspython/dns/rdataclass.py rename to third_party/dnspython/dns/rdataclass.py diff --git a/lib/dnspython/dns/rdataset.py b/third_party/dnspython/dns/rdataset.py similarity index 100% rename from lib/dnspython/dns/rdataset.py rename to third_party/dnspython/dns/rdataset.py diff --git a/lib/dnspython/dns/rdatatype.py b/third_party/dnspython/dns/rdatatype.py similarity index 100% rename from lib/dnspython/dns/rdatatype.py rename to third_party/dnspython/dns/rdatatype.py diff --git a/lib/dnspython/dns/rdtypes/ANY/AFSDB.py b/third_party/dnspython/dns/rdtypes/ANY/AFSDB.py similarity index 100% rename from lib/dnspython/dns/rdtypes/ANY/AFSDB.py rename to third_party/dnspython/dns/rdtypes/ANY/AFSDB.py diff --git a/lib/dnspython/dns/rdtypes/ANY/CERT.py b/third_party/dnspython/dns/rdtypes/ANY/CERT.py similarity index 100% rename from lib/dnspython/dns/rdtypes/ANY/CERT.py rename to third_party/dnspython/dns/rdtypes/ANY/CERT.py diff --git a/lib/dnspython/dns/rdtypes/ANY/CNAME.py b/third_party/dnspython/dns/rdtypes/ANY/CNAME.py similarity index 100% rename from lib/dnspython/dns/rdtypes/ANY/CNAME.py rename to third_party/dnspython/dns/rdtypes/ANY/CNAME.py diff --git a/lib/dnspython/dns/rdtypes/ANY/DLV.py b/third_party/dnspython/dns/rdtypes/ANY/DLV.py similarity index 100% rename from lib/dnspython/dns/rdtypes/ANY/DLV.py rename to third_party/dnspython/dns/rdtypes/ANY/DLV.py diff --git a/lib/dnspython/dns/rdtypes/ANY/DNAME.py b/third_party/dnspython/dns/rdtypes/ANY/DNAME.py similarity index 100% rename from lib/dnspython/dns/rdtypes/ANY/DNAME.py rename to third_party/dnspython/dns/rdtypes/ANY/DNAME.py diff --git a/lib/dnspython/dns/rdtypes/ANY/DNSKEY.py b/third_party/dnspython/dns/rdtypes/ANY/DNSKEY.py similarity index 100% rename from lib/dnspython/dns/rdtypes/ANY/DNSKEY.py rename to third_party/dnspython/dns/rdtypes/ANY/DNSKEY.py diff --git a/lib/dnspython/dns/rdtypes/ANY/DS.py b/third_party/dnspython/dns/rdtypes/ANY/DS.py similarity index 100% rename from lib/dnspython/dns/rdtypes/ANY/DS.py rename to third_party/dnspython/dns/rdtypes/ANY/DS.py diff --git a/lib/dnspython/dns/rdtypes/ANY/GPOS.py b/third_party/dnspython/dns/rdtypes/ANY/GPOS.py similarity index 100% rename from lib/dnspython/dns/rdtypes/ANY/GPOS.py rename to third_party/dnspython/dns/rdtypes/ANY/GPOS.py diff --git a/lib/dnspython/dns/rdtypes/ANY/HINFO.py b/third_party/dnspython/dns/rdtypes/ANY/HINFO.py similarity index 100% rename from lib/dnspython/dns/rdtypes/ANY/HINFO.py rename to third_party/dnspython/dns/rdtypes/ANY/HINFO.py diff --git a/lib/dnspython/dns/rdtypes/ANY/HIP.py b/third_party/dnspython/dns/rdtypes/ANY/HIP.py similarity index 100% rename from lib/dnspython/dns/rdtypes/ANY/HIP.py rename to third_party/dnspython/dns/rdtypes/ANY/HIP.py diff --git a/lib/dnspython/dns/rdtypes/ANY/ISDN.py b/third_party/dnspython/dns/rdtypes/ANY/ISDN.py similarity index 100% rename from lib/dnspython/dns/rdtypes/ANY/ISDN.py rename to third_party/dnspython/dns/rdtypes/ANY/ISDN.py diff --git a/lib/dnspython/dns/rdtypes/ANY/LOC.py b/third_party/dnspython/dns/rdtypes/ANY/LOC.py similarity index 100% rename from lib/dnspython/dns/rdtypes/ANY/LOC.py rename to third_party/dnspython/dns/rdtypes/ANY/LOC.py diff --git a/lib/dnspython/dns/rdtypes/ANY/MX.py b/third_party/dnspython/dns/rdtypes/ANY/MX.py similarity index 100% rename from lib/dnspython/dns/rdtypes/ANY/MX.py rename to third_party/dnspython/dns/rdtypes/ANY/MX.py diff --git a/lib/dnspython/dns/rdtypes/ANY/NS.py b/third_party/dnspython/dns/rdtypes/ANY/NS.py similarity index 100% rename from lib/dnspython/dns/rdtypes/ANY/NS.py rename to third_party/dnspython/dns/rdtypes/ANY/NS.py diff --git a/lib/dnspython/dns/rdtypes/ANY/NSEC.py b/third_party/dnspython/dns/rdtypes/ANY/NSEC.py similarity index 100% rename from lib/dnspython/dns/rdtypes/ANY/NSEC.py rename to third_party/dnspython/dns/rdtypes/ANY/NSEC.py diff --git a/lib/dnspython/dns/rdtypes/ANY/NSEC3.py b/third_party/dnspython/dns/rdtypes/ANY/NSEC3.py similarity index 100% rename from lib/dnspython/dns/rdtypes/ANY/NSEC3.py rename to third_party/dnspython/dns/rdtypes/ANY/NSEC3.py diff --git a/lib/dnspython/dns/rdtypes/ANY/NSEC3PARAM.py b/third_party/dnspython/dns/rdtypes/ANY/NSEC3PARAM.py similarity index 100% rename from lib/dnspython/dns/rdtypes/ANY/NSEC3PARAM.py rename to third_party/dnspython/dns/rdtypes/ANY/NSEC3PARAM.py diff --git a/lib/dnspython/dns/rdtypes/ANY/PTR.py b/third_party/dnspython/dns/rdtypes/ANY/PTR.py similarity index 100% rename from lib/dnspython/dns/rdtypes/ANY/PTR.py rename to third_party/dnspython/dns/rdtypes/ANY/PTR.py diff --git a/lib/dnspython/dns/rdtypes/ANY/RP.py b/third_party/dnspython/dns/rdtypes/ANY/RP.py similarity index 100% rename from lib/dnspython/dns/rdtypes/ANY/RP.py rename to third_party/dnspython/dns/rdtypes/ANY/RP.py diff --git a/lib/dnspython/dns/rdtypes/ANY/RRSIG.py b/third_party/dnspython/dns/rdtypes/ANY/RRSIG.py similarity index 100% rename from lib/dnspython/dns/rdtypes/ANY/RRSIG.py rename to third_party/dnspython/dns/rdtypes/ANY/RRSIG.py diff --git a/lib/dnspython/dns/rdtypes/ANY/RT.py b/third_party/dnspython/dns/rdtypes/ANY/RT.py similarity index 100% rename from lib/dnspython/dns/rdtypes/ANY/RT.py rename to third_party/dnspython/dns/rdtypes/ANY/RT.py diff --git a/lib/dnspython/dns/rdtypes/ANY/SOA.py b/third_party/dnspython/dns/rdtypes/ANY/SOA.py similarity index 100% rename from lib/dnspython/dns/rdtypes/ANY/SOA.py rename to third_party/dnspython/dns/rdtypes/ANY/SOA.py diff --git a/lib/dnspython/dns/rdtypes/ANY/SPF.py b/third_party/dnspython/dns/rdtypes/ANY/SPF.py similarity index 100% rename from lib/dnspython/dns/rdtypes/ANY/SPF.py rename to third_party/dnspython/dns/rdtypes/ANY/SPF.py diff --git a/lib/dnspython/dns/rdtypes/ANY/SSHFP.py b/third_party/dnspython/dns/rdtypes/ANY/SSHFP.py similarity index 100% rename from lib/dnspython/dns/rdtypes/ANY/SSHFP.py rename to third_party/dnspython/dns/rdtypes/ANY/SSHFP.py diff --git a/lib/dnspython/dns/rdtypes/ANY/TXT.py b/third_party/dnspython/dns/rdtypes/ANY/TXT.py similarity index 100% rename from lib/dnspython/dns/rdtypes/ANY/TXT.py rename to third_party/dnspython/dns/rdtypes/ANY/TXT.py diff --git a/lib/dnspython/dns/rdtypes/ANY/X25.py b/third_party/dnspython/dns/rdtypes/ANY/X25.py similarity index 100% rename from lib/dnspython/dns/rdtypes/ANY/X25.py rename to third_party/dnspython/dns/rdtypes/ANY/X25.py diff --git a/lib/dnspython/dns/rdtypes/ANY/__init__.py b/third_party/dnspython/dns/rdtypes/ANY/__init__.py similarity index 100% rename from lib/dnspython/dns/rdtypes/ANY/__init__.py rename to third_party/dnspython/dns/rdtypes/ANY/__init__.py diff --git a/lib/dnspython/dns/rdtypes/IN/A.py b/third_party/dnspython/dns/rdtypes/IN/A.py similarity index 100% rename from lib/dnspython/dns/rdtypes/IN/A.py rename to third_party/dnspython/dns/rdtypes/IN/A.py diff --git a/lib/dnspython/dns/rdtypes/IN/AAAA.py b/third_party/dnspython/dns/rdtypes/IN/AAAA.py similarity index 100% rename from lib/dnspython/dns/rdtypes/IN/AAAA.py rename to third_party/dnspython/dns/rdtypes/IN/AAAA.py diff --git a/lib/dnspython/dns/rdtypes/IN/APL.py b/third_party/dnspython/dns/rdtypes/IN/APL.py similarity index 100% rename from lib/dnspython/dns/rdtypes/IN/APL.py rename to third_party/dnspython/dns/rdtypes/IN/APL.py diff --git a/lib/dnspython/dns/rdtypes/IN/DHCID.py b/third_party/dnspython/dns/rdtypes/IN/DHCID.py similarity index 100% rename from lib/dnspython/dns/rdtypes/IN/DHCID.py rename to third_party/dnspython/dns/rdtypes/IN/DHCID.py diff --git a/lib/dnspython/dns/rdtypes/IN/IPSECKEY.py b/third_party/dnspython/dns/rdtypes/IN/IPSECKEY.py similarity index 100% rename from lib/dnspython/dns/rdtypes/IN/IPSECKEY.py rename to third_party/dnspython/dns/rdtypes/IN/IPSECKEY.py diff --git a/lib/dnspython/dns/rdtypes/IN/KX.py b/third_party/dnspython/dns/rdtypes/IN/KX.py similarity index 100% rename from lib/dnspython/dns/rdtypes/IN/KX.py rename to third_party/dnspython/dns/rdtypes/IN/KX.py diff --git a/lib/dnspython/dns/rdtypes/IN/NAPTR.py b/third_party/dnspython/dns/rdtypes/IN/NAPTR.py similarity index 100% rename from lib/dnspython/dns/rdtypes/IN/NAPTR.py rename to third_party/dnspython/dns/rdtypes/IN/NAPTR.py diff --git a/lib/dnspython/dns/rdtypes/IN/NSAP.py b/third_party/dnspython/dns/rdtypes/IN/NSAP.py similarity index 100% rename from lib/dnspython/dns/rdtypes/IN/NSAP.py rename to third_party/dnspython/dns/rdtypes/IN/NSAP.py diff --git a/lib/dnspython/dns/rdtypes/IN/NSAP_PTR.py b/third_party/dnspython/dns/rdtypes/IN/NSAP_PTR.py similarity index 100% rename from lib/dnspython/dns/rdtypes/IN/NSAP_PTR.py rename to third_party/dnspython/dns/rdtypes/IN/NSAP_PTR.py diff --git a/lib/dnspython/dns/rdtypes/IN/PX.py b/third_party/dnspython/dns/rdtypes/IN/PX.py similarity index 100% rename from lib/dnspython/dns/rdtypes/IN/PX.py rename to third_party/dnspython/dns/rdtypes/IN/PX.py diff --git a/lib/dnspython/dns/rdtypes/IN/SRV.py b/third_party/dnspython/dns/rdtypes/IN/SRV.py similarity index 100% rename from lib/dnspython/dns/rdtypes/IN/SRV.py rename to third_party/dnspython/dns/rdtypes/IN/SRV.py diff --git a/lib/dnspython/dns/rdtypes/IN/WKS.py b/third_party/dnspython/dns/rdtypes/IN/WKS.py similarity index 100% rename from lib/dnspython/dns/rdtypes/IN/WKS.py rename to third_party/dnspython/dns/rdtypes/IN/WKS.py diff --git a/lib/dnspython/dns/rdtypes/IN/__init__.py b/third_party/dnspython/dns/rdtypes/IN/__init__.py similarity index 100% rename from lib/dnspython/dns/rdtypes/IN/__init__.py rename to third_party/dnspython/dns/rdtypes/IN/__init__.py diff --git a/lib/dnspython/dns/rdtypes/__init__.py b/third_party/dnspython/dns/rdtypes/__init__.py similarity index 100% rename from lib/dnspython/dns/rdtypes/__init__.py rename to third_party/dnspython/dns/rdtypes/__init__.py diff --git a/lib/dnspython/dns/rdtypes/dsbase.py b/third_party/dnspython/dns/rdtypes/dsbase.py similarity index 100% rename from lib/dnspython/dns/rdtypes/dsbase.py rename to third_party/dnspython/dns/rdtypes/dsbase.py diff --git a/lib/dnspython/dns/rdtypes/mxbase.py b/third_party/dnspython/dns/rdtypes/mxbase.py similarity index 100% rename from lib/dnspython/dns/rdtypes/mxbase.py rename to third_party/dnspython/dns/rdtypes/mxbase.py diff --git a/lib/dnspython/dns/rdtypes/nsbase.py b/third_party/dnspython/dns/rdtypes/nsbase.py similarity index 100% rename from lib/dnspython/dns/rdtypes/nsbase.py rename to third_party/dnspython/dns/rdtypes/nsbase.py diff --git a/lib/dnspython/dns/rdtypes/txtbase.py b/third_party/dnspython/dns/rdtypes/txtbase.py similarity index 100% rename from lib/dnspython/dns/rdtypes/txtbase.py rename to third_party/dnspython/dns/rdtypes/txtbase.py diff --git a/lib/dnspython/dns/renderer.py b/third_party/dnspython/dns/renderer.py similarity index 100% rename from lib/dnspython/dns/renderer.py rename to third_party/dnspython/dns/renderer.py diff --git a/lib/dnspython/dns/resolver.py b/third_party/dnspython/dns/resolver.py similarity index 100% rename from lib/dnspython/dns/resolver.py rename to third_party/dnspython/dns/resolver.py diff --git a/lib/dnspython/dns/reversename.py b/third_party/dnspython/dns/reversename.py similarity index 100% rename from lib/dnspython/dns/reversename.py rename to third_party/dnspython/dns/reversename.py diff --git a/lib/dnspython/dns/rrset.py b/third_party/dnspython/dns/rrset.py similarity index 100% rename from lib/dnspython/dns/rrset.py rename to third_party/dnspython/dns/rrset.py diff --git a/lib/dnspython/dns/set.py b/third_party/dnspython/dns/set.py similarity index 100% rename from lib/dnspython/dns/set.py rename to third_party/dnspython/dns/set.py diff --git a/lib/dnspython/dns/tokenizer.py b/third_party/dnspython/dns/tokenizer.py similarity index 100% rename from lib/dnspython/dns/tokenizer.py rename to third_party/dnspython/dns/tokenizer.py diff --git a/lib/dnspython/dns/tsig.py b/third_party/dnspython/dns/tsig.py similarity index 100% rename from lib/dnspython/dns/tsig.py rename to third_party/dnspython/dns/tsig.py diff --git a/lib/dnspython/dns/tsigkeyring.py b/third_party/dnspython/dns/tsigkeyring.py similarity index 100% rename from lib/dnspython/dns/tsigkeyring.py rename to third_party/dnspython/dns/tsigkeyring.py diff --git a/lib/dnspython/dns/ttl.py b/third_party/dnspython/dns/ttl.py similarity index 100% rename from lib/dnspython/dns/ttl.py rename to third_party/dnspython/dns/ttl.py diff --git a/lib/dnspython/dns/update.py b/third_party/dnspython/dns/update.py similarity index 100% rename from lib/dnspython/dns/update.py rename to third_party/dnspython/dns/update.py diff --git a/lib/dnspython/dns/version.py b/third_party/dnspython/dns/version.py similarity index 100% rename from lib/dnspython/dns/version.py rename to third_party/dnspython/dns/version.py diff --git a/lib/dnspython/dns/wiredata.py b/third_party/dnspython/dns/wiredata.py similarity index 100% rename from lib/dnspython/dns/wiredata.py rename to third_party/dnspython/dns/wiredata.py diff --git a/lib/dnspython/dns/zone.py b/third_party/dnspython/dns/zone.py similarity index 100% rename from lib/dnspython/dns/zone.py rename to third_party/dnspython/dns/zone.py diff --git a/lib/dnspython/examples/ddns.py b/third_party/dnspython/examples/ddns.py similarity index 100% rename from lib/dnspython/examples/ddns.py rename to third_party/dnspython/examples/ddns.py diff --git a/lib/dnspython/examples/e164.py b/third_party/dnspython/examples/e164.py similarity index 100% rename from lib/dnspython/examples/e164.py rename to third_party/dnspython/examples/e164.py diff --git a/lib/dnspython/examples/mx.py b/third_party/dnspython/examples/mx.py similarity index 100% rename from lib/dnspython/examples/mx.py rename to third_party/dnspython/examples/mx.py diff --git a/lib/dnspython/examples/name.py b/third_party/dnspython/examples/name.py similarity index 100% rename from lib/dnspython/examples/name.py rename to third_party/dnspython/examples/name.py diff --git a/lib/dnspython/examples/reverse.py b/third_party/dnspython/examples/reverse.py similarity index 100% rename from lib/dnspython/examples/reverse.py rename to third_party/dnspython/examples/reverse.py diff --git a/lib/dnspython/examples/reverse_name.py b/third_party/dnspython/examples/reverse_name.py similarity index 100% rename from lib/dnspython/examples/reverse_name.py rename to third_party/dnspython/examples/reverse_name.py diff --git a/lib/dnspython/examples/xfr.py b/third_party/dnspython/examples/xfr.py similarity index 100% -- Samba Shared Repository