| 1 | #!/usr/bin/env python
|
|---|
| 2 |
|
|---|
| 3 | import samba_git
|
|---|
| 4 | import Utils
|
|---|
| 5 | import os
|
|---|
| 6 | import sys
|
|---|
| 7 |
|
|---|
| 8 | # work out what python external libraries we need to install
|
|---|
| 9 | external_pkgs = {
|
|---|
| 10 | "dns.resolver": "dnspython/dns",
|
|---|
| 11 | "iso8601": "pyiso8601/iso8601",
|
|---|
| 12 | }
|
|---|
| 13 |
|
|---|
| 14 |
|
|---|
| 15 | def find_third_party_module(conf, module, package):
|
|---|
| 16 | conf.COMPOUND_START("Checking for third party Python module %s" % module)
|
|---|
| 17 | try:
|
|---|
| 18 | __import__(module)
|
|---|
| 19 | except ImportError:
|
|---|
| 20 | pass
|
|---|
| 21 | else:
|
|---|
| 22 | # Installed on the system
|
|---|
| 23 | conf.COMPOUND_END("system")
|
|---|
| 24 |
|
|---|
| 25 | old_path = sys.path
|
|---|
| 26 | try:
|
|---|
| 27 | sys.path.append(os.path.join(conf.curdir, os.path.dirname(package)))
|
|---|
| 28 | try:
|
|---|
| 29 | __import__(module)
|
|---|
| 30 | except ImportError:
|
|---|
| 31 | if samba_git.has_submodules(conf.srcdir):
|
|---|
| 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'.
|
|---|
| 35 | """ % module)
|
|---|
| 36 | else:
|
|---|
| 37 | raise Utils.WafError("""\
|
|---|
| 38 | Unable to find Python module '%s'. Please install the system package or place a copy in
|
|---|
| 39 | %s.
|
|---|
| 40 | """ % (module, package))
|
|---|
| 41 | else:
|
|---|
| 42 | conf.COMPOUND_END("bundled")
|
|---|
| 43 | finally:
|
|---|
| 44 | sys.path = old_path
|
|---|
| 45 |
|
|---|
| 46 |
|
|---|
| 47 | def configure(conf):
|
|---|
| 48 | for module, package in external_pkgs.items():
|
|---|
| 49 | find_third_party_module(conf, module, package)
|
|---|
| 50 | conf.RECURSE('popt')
|
|---|
| 51 | conf.RECURSE('zlib')
|
|---|
| 52 |
|
|---|
| 53 |
|
|---|
| 54 | def build(bld):
|
|---|
| 55 | list = []
|
|---|
| 56 |
|
|---|
| 57 | for module, package in external_pkgs.items():
|
|---|
| 58 | try:
|
|---|
| 59 | __import__(module)
|
|---|
| 60 | except ImportError:
|
|---|
| 61 | list.append(package)
|
|---|
| 62 |
|
|---|
| 63 | for e in list:
|
|---|
| 64 | bld.INSTALL_WILDCARD('${PYTHONARCHDIR}/samba/third_party', e + '/**/*', flat=False,
|
|---|
| 65 | exclude='*.pyc', trim_path=os.path.dirname(e))
|
|---|
| 66 |
|
|---|
| 67 | bld.SAMBA_GENERATOR('third_party_init_py',
|
|---|
| 68 | rule='touch ${TGT}',
|
|---|
| 69 | target='empty_file')
|
|---|
| 70 |
|
|---|
| 71 | bld.INSTALL_FILES('${PYTHONARCHDIR}/samba/third_party', 'empty_file', destname='__init__.py')
|
|---|
| 72 | bld.RECURSE('zlib')
|
|---|
| 73 | bld.RECURSE('popt')
|
|---|