Abort if Python.h isn’t found.

Fixes #3254.
This commit is contained in:
Emmanuel Gil Peyrot 2018-03-31 02:01:03 +02:00
parent 4e5a1c6581
commit 5c45252a2b

View file

@ -36,6 +36,30 @@ def find_doc(before, path):
_files.append((join(before, relative_root), files_path))
return _files
def check_include(library_name, header):
command = [os.environ.get('PKG_CONFIG', 'pkg-config'), '--cflags', library_name]
try:
cflags = check_output(command).decode('utf-8').split()
except FileNotFoundError:
print('pkg-config not found.')
return False
except CalledProcessError:
# pkg-config already prints the missing libraries on stderr.
return False
command = [os.environ.get('CC', 'cc')] + cflags + ['-E', '-']
with TemporaryFile('w+') as c_file:
c_file.write('#include <%s>' % header)
c_file.seek(0)
try:
return call(command, stdin=c_file, stdout=DEVNULL, stderr=DEVNULL) == 0
except FileNotFoundError:
print('%s headers not found.' % library_name)
return False
if not check_include('python3', 'Python.h'):
import sys
sys.exit(0)
module_poopt = Extension('poezio.poopt',
extra_compile_args=['-Wno-declaration-after-statement'],
sources=['poezio/pooptmodule.c'])