6 from waflib import Options, Utils
8 # work out what python external libraries we need to install
10 "dns.resolver": "dnspython/dns",
11 "iso8601": "pyiso8601/iso8601",
15 def find_third_party_module(conf, module, package):
16 conf.COMPOUND_START("Checking for third party Python module %s" % module)
22 # Installed on the system
23 conf.COMPOUND_END("system")
27 sys.path.append(os.path.join(conf.path.abspath(), os.path.dirname(package)))
31 if samba_git.has_submodules(conf.srcnode.abspath()):
32 raise Utils.WafError("""\
33 Unable to find Python module '%s'. Please install the system package or check \
34 out the relevant submodule by running 'git submodule update --init'.
37 raise Utils.WafError("""\
38 Unable to find Python module '%s'. Please install the system package or place a copy in
40 """ % (module, package))
42 conf.COMPOUND_END("bundled")
48 for module, package in external_pkgs.items():
49 find_third_party_module(conf, module, package)
50 conf.RECURSE('cmocka')
53 conf.RECURSE('aesni-intel')
54 if conf.CONFIG_GET('ENABLE_SELFTEST'):
55 conf.RECURSE('socket_wrapper')
56 conf.RECURSE('nss_wrapper')
57 conf.RECURSE('resolv_wrapper')
58 conf.RECURSE('uid_wrapper')
59 if Options.options.with_pam:
60 conf.RECURSE('pam_wrapper')
66 for module, package in external_pkgs.items():
73 bld.INSTALL_WILDCARD('${PYTHONARCHDIR}/samba/third_party', e + '/**/*', flat=False,
74 exclude='*.pyc', trim_path=os.path.dirname(e))
76 bld.SAMBA_GENERATOR('third_party_init_py',
80 bld.INSTALL_FILES('${PYTHONARCHDIR}/samba/third_party', 'empty_file', destname='__init__.py')
84 bld.RECURSE('aesni-intel')
85 if bld.CONFIG_GET('SOCKET_WRAPPER'):
86 bld.RECURSE('socket_wrapper')
87 if bld.CONFIG_GET('NSS_WRAPPER'):
88 bld.RECURSE('nss_wrapper')
89 if bld.CONFIG_GET('RESOLV_WRAPPER'):
90 bld.RECURSE('resolv_wrapper')
91 if bld.CONFIG_GET('UID_WRAPPER'):
92 bld.RECURSE('uid_wrapper')
93 if bld.CONFIG_GET('PAM_WRAPPER'):
94 bld.RECURSE('pam_wrapper')