1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-22 13:34:15 +03:00

python:waf: Correctly check for python-dateutil

Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Alexander Bokovoy <ab@samba.org>
This commit is contained in:
Andreas Schneider 2021-07-21 09:17:31 +02:00 committed by Andreas Schneider
parent 84b9f58616
commit e51e9d0145

View File

@ -5,7 +5,6 @@ from waflib import Options, Errors
# work out what python external libraries we need to be successful # work out what python external libraries we need to be successful
selftest_pkgs = { selftest_pkgs = {
'iso8601': 'python3-iso8601',
'cryptography': 'python3-cryptography', 'cryptography': 'python3-cryptography',
'pyasn1': 'python3-pyasn1' 'pyasn1': 'python3-pyasn1'
} }
@ -16,12 +15,14 @@ ad_dc_pkgs = {
} }
def find_third_party_module(conf, module, package): def find_third_party_module(conf, module, package, required=True):
conf.COMPOUND_START("Checking for system installation of Python module %s" % module) conf.COMPOUND_START("Checking for system installation of Python module %s" % module)
try: try:
__import__(module) __import__(module)
except ImportError: except ImportError:
conf.COMPOUND_END(False) conf.COMPOUND_END(False)
if not required:
return False
raise Errors.WafError("""\ raise Errors.WafError("""\
Unable to find Python module '%s'. Please install the system package: %s'. Unable to find Python module '%s'. Please install the system package: %s'.
""" % (module, package)) """ % (module, package))
@ -29,6 +30,8 @@ def find_third_party_module(conf, module, package):
# Installed on the system # Installed on the system
conf.COMPOUND_END("system") conf.COMPOUND_END("system")
return True
def configure(conf): def configure(conf):
if conf.env.disable_python: if conf.env.disable_python:
@ -73,6 +76,20 @@ def configure(conf):
for module, package in selftest_pkgs.items(): for module, package in selftest_pkgs.items():
find_third_party_module(conf, module, package) find_third_party_module(conf, module, package)
# Prefer dateutil.parser which is much more widely used.
if not find_third_party_module(conf,
'dateutil.parser',
'python3-dateutilis',
required=False):
if not find_third_party_module(conf,
'iso8601',
'python3-iso8601',
required=False):
raise Errors.WafError("Could not find Python package "
"'python3-dateutils' nor "
"'python3-iso8601'. Please install "
"one of the packages.")
if not Options.options.without_ad_dc: if not Options.options.without_ad_dc:
for module, package in ad_dc_pkgs.items(): for module, package in ad_dc_pkgs.items():
find_third_party_module(conf, module, package) find_third_party_module(conf, module, package)
@ -117,5 +134,5 @@ def build(bld):
bld.SAMBA_SCRIPT('samba_python_files', bld.SAMBA_SCRIPT('samba_python_files',
pattern='samba/**/*.py', pattern='samba/**/*.py',
installdir='python') installdir='python')
bld.INSTALL_WILDCARD('${PYTHONARCHDIR}', 'samba/**/*.py', flat=False) bld.INSTALL_WILDCARD('${PYTHONARCHDIR}', 'samba/**/*.py', flat=False)